Как слой встраивания обучается в слое Keras Embedded


14

Как обучается слой внедрения в слое Keras Embedding? (скажем, используя тензор потока бэкэнда, то есть он похож на word2vec, glove или fasttext)

Предположим, мы не используем предварительно обученное вложение.


colah.github.io/posts/2014-07-NLP-RNNs-Representations -> в этом блоге четко объясняется, как обучается слой внедрения в слое Keras Embedding . Надеюсь это поможет.
Акшай У Прабху

Ответы:


24

Встраивание слоев в Keras обучается так же, как и любой другой уровень в вашей сетевой архитектуре: они настроены так, чтобы минимизировать функцию потерь с помощью выбранного метода оптимизации. Основное отличие от других слоев заключается в том, что их выходные данные не являются математической функцией входных данных. Вместо этого ввод в слой используется для индексации таблицы с векторами внедрения [1]. Однако базовый механизм автоматического дифференцирования не имеет проблем с оптимизацией этих векторов для минимизации функции потерь ...

Таким образом, вы не можете сказать, что слой Embedding в Keras делает то же самое, что и word2vec [2]. Помните, что word2vec относится к очень специфической настройке сети, которая пытается изучить вложение, которое фиксирует семантику слов. Со слоем встраивания Keras вы просто пытаетесь минимизировать функцию потерь, поэтому, если, например, вы работаете с проблемой классификации настроений, выученное встраивание, вероятно, не будет отражать полную семантику слов, а только их эмоциональную полярность ...

Например, следующее изображение, взятое из [3], показывает вложение трех предложений со слоем Keras Embedding, обученным с нуля, как часть контролируемой сети, предназначенной для обнаружения заголовков кликбейтов (слева) и предварительно обученных вложений word2vec (справа). Как видите, вложения word2vec отражают семантическое сходство фраз b) и c). И наоборот, вложения, генерируемые слоем Embedded Keras, могут быть полезны для классификации, но не отражают семантическое сходство b) и c).

введите описание изображения здесь

Это объясняет, почему, когда у вас ограниченное количество обучающих сэмплов, было бы неплохо инициализировать слой Embedding с весами word2vec , поэтому, по крайней мере, ваша модель распознает, что «Альпы» и «Гималаи» являются похожими вещами, даже если они не не встречаются в предложениях вашего учебного набора данных.

[1] Как работает слой «Встраивание» Keras?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

ПРИМЕЧАНИЕ. На самом деле изображение показывает активацию слоя после слоя Embedding, но для целей этого примера это не имеет значения ... Подробнее см. В [3].


2
Это именно то объяснение, которое я искал! Я думаю, что это предложение должно быть выделено жирным шрифтом: «Помните, что word2vec относится к очень специфической настройке сети, которая пытается изучить вложение, которое фиксирует семантику слов».
Кевин

0

Слой вложения - это просто проекция из дискретного и разреженного 1-горячего вектора в непрерывное и плотное скрытое пространство. Это матрица (n, m), где n - размер вашего словаря, а n - желаемые размеры скрытого пространства. Только на практике нет необходимости выполнять матричное умножение, и вместо этого вы можете сэкономить на вычислениях, используя индекс. Таким образом, на практике это слой, который отображает натуральные числа (индексы, соответствующие словам) в плотные векторы фиксированного размера (векторы вложения).

Вы можете обучить его созданию встраивания Word2Vec с помощью Skip-Gram или CBOW. Или вы можете обучить его конкретной проблеме, чтобы получить вложение, подходящее для вашей конкретной задачи. Вы также можете загрузить предварительно обученные вложения (такие как Word2Vec, GloVe и т. Д.), А затем продолжить обучение по вашей конкретной проблеме (форма трансферного обучения).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.