Размер абзаца Vector или Doc2vec

Я использую java-библиотеку deeplearning4j для создания векторной модели абзаца (doc2vec) размерности 100. Я использую текстовый файл. В нем около 17 миллионов строк, а размер файла - 330 МБ. Я могу обучить модель и вычислить вектор абзаца, что дает достаточно хорошие результаты.

Проблема в том, что когда я пытаюсь сохранить модель (записывая на диск) с помощью WordVectorSerializer.writeParagraphVectors (метод dl4j), она занимает около 20 ГБ места. И около 30 ГБ, когда я использую собственный сериализатор Java.

Я думаю, что размер модели слишком велик для такого количества данных. Является ли размер модели 20 ГБ разумным для текстовых данных размером 300 МБ?

Комментарии также приветствуются от людей, которые использовали вектор doc2vec / абзаца в другой библиотеке / языке.

Спасибо!


person tired and bored dev    schedule 20.06.2018    source источник


Ответы (1)


Я не знаком с реализацией dl4j, но размер модели определяется количеством уникальных векторов слов / документов и выбранным размером вектора.

(330 МБ / 17 миллионов) означает, что каждый из ваших документов в среднем занимает всего 20 байт - очень мало для Doc2Vec!

Но если, например, вы тренируете 300-мерный документ-вектор для каждого документа, и каждое измерение (как обычно) является 4-байтовым веществом с плавающей запятой, тогда (17 миллионов * 300 тусклых * 4 байта / дим) = 20,4 ГБ . И тогда было бы больше места для слов-векторов и внутренних весов модели / словаря / и т. Д., Поэтому размеры хранилища, о которых вы сообщили, не являются неправдоподобными.

С размерами, которые вы описали, также есть большой риск переобучения - при использовании 300-размерностей вы будете моделировать документы из ‹20-байтового исходного материала как (300 * 4 =) 1200-байтовые документы-векторы.

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

person gojomo    schedule 20.06.2018
comment
Большое спасибо за ваш анализ. Текущее измерение модели - 100. Вы предлагаете, чтобы, если я уменьшу размер, я смогу снизить риск переобучения? - person tired and bored dev; 21.06.2018
comment
Да, сокращение векторов может быть способом сделать общий размер модели более подходящим для данных. Какова ваша настоящая нижняя задача - поиск информации по сходству? классификация? - если вы можете создать автоматический механизм оценки, а затем использовать набор расширенных тестов, вы сможете обнаружить переоснащение и отрегулировать размер вектора или другие аспекты, чтобы компенсировать его. - person gojomo; 21.06.2018
comment
Спасибо! Попробую, как вы предложили. - person tired and bored dev; 21.06.2018