LSTM размер num_units, ie размер скрытого слоя - PullRequest
1 голос
/ 23 января 2020

Я часто вижу, что natural language processing задачи используют LSTM таким образом, что они сначала используют embedding layer, за которым следует LSTM layer размера вложения, т. Е. Если слово представлено вектором 1x300 LSTM(300) используется.

Например:

model = Sequential()
model.add(Embedding(vocabulary, hidden_size, input_length=num_steps))
model.add(LSTM(hidden_size, return_sequences=True))

Есть ли для этого особая причина? Как лучшее представление значения?

1 Ответ

1 голос
/ 24 января 2020

Я не думаю, что для этого есть какая-то особая причина / необходимость, и, честно говоря, я сам не видел так много случаев, когда это так (например, использование LSTM скрытых единиц == Embedding размера). Единственный эффект, который это имеет, - это наличие единственной ячейки памяти для каждого элемента вектора встраивания (что я не считаю требованием или необходимостью).

Сказав это, я подумал, что мог бы упомянуть кое-что дополнительное. То есть есть причина для наличия слоя Embedding в этой настройке. На самом деле очень веская причина (ы). Давайте рассмотрим два варианта:

  1. Использование одного горячего кодирования для представления слова
  2. Использование Embeddings для представления слов

Вариант 2 имеет несколько преимуществ по сравнению с Вариант 1.

  • Размерность входов намного меньше, когда вы используете слой встраивания (например, 300 вместо 50000)
  • Вы обеспечиваете гибкость к модели, чтобы узнать представление слова, которое в действительности подходит для решения вашей задачи. Другими словами, вы не ограничиваете представление слов, чтобы оно оставалось постоянным в процессе обучения.
  • Если вы используете слой подготовки слов с предварительной подготовкой для инициализации слоя Embedding, еще лучше. Вы вносите семантику слов в задачу, которую решаете. Это всегда помогает лучше решить задачу. Это аналогично тому, чтобы попросить малыша, который не понимает значения слов, сделать что-то, связанное с текстом (например, слова в правильном грамматическом порядке), и попросить 3-летнего ребенка выполнить ту же задачу. Они оба могут в конечном итоге сделать это. Но каждый сделает это быстрее и лучше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...