Может ли слой встраивания Keras дать случайный вектор для определенного индекса (например, -1) вместо фиксированного вектора - PullRequest
1 голос
/ 10 июля 2019

У меня проблема с тем, что у меня есть тексты (которые могут быть очень длинными, максимум ~ 9000 слов), которые мне нужно встроить в слой Keras. Я выбираю фиксированный размер 5000 для каждого текста, и мне нужно дополнить каждую последовательность, чтобы получить правильную форму. Классическим способом является использование pad_sequence Keras, которые принимают в качестве входного списка списков индексов и pad с нулями или сокращают списки индексов до 5000. Для своей последующей задачи я использую своего рода коннет, вдохновленный Kim's Paper (https://arxiv.org/abs/1408.5882).. Меня беспокоит то, что сеть в определенном смысле изучает Wordcount, обнаруживая шаблон векторов, в которые вставлен 0, который я использовал для заполнения поля. Последовательности. Я не говорю, что эта функция не важна, но я хотел бы заставить сеть изучать другие функции в настройках. Я думал о двух вещах, сначала используя дополнительную задачу (например, состязательную задачу), которая принимает скрытое представление. созданный моделью перед выводом и использующий ветвь модели для прогнозирования размера текста или кластера размера, например:

[,1000 words] -- cluster 1
[1001,2000words] -- cluster 2
 ect..

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

Поскольку я не нашел никаких документов по этой задаче заполнения нулями чем-то, кроме нулей, я обращаюсь к сообществу. Как вы думаете? Я прошел реализацию уровня Embedding, и я почти уверен, что реализация второй идеи довольно проста в keras, изменив K.gather () на флаг для правильных индексов (хотя это будет более длительное время выполнения).

Заранее спасибо за ваш отзыв и ваши ресурсы!

...