Ваш код не показывает какого-либо постепенного обновления старой модели новыми примерами.
Однако никогда не гарантируется, что инкрементное обновление (как в случае build_vocab(new_sentences, update=True)
, а затем train(new_sentences, ...)
) обязательно улучшит модель в целом.
Базовый алгоритм получает свою силу из большого набора данных, из тонко измененных примеров использования, которые чередуются вместе. Контрастирующие примеры «притягивают» модель различными способами, иногда усиливая друг друга, а иногда устраняя, что приводит к окончательному расположению слов-векторов, которое полезно для других целей.
Допустим, вы затем делаете инкрементное обновление с текстами, которые не совпадают с исходными данными обучения. (И, в конце концов, они должны существенно отличаться, иначе вы бы не стали больше тренироваться.) Во время этого нового обучения меняются только слова, затронутые новым (возможно, меньшим) набором данных. И они меняются, чтобы быть лучше в новых текстовых примерах. Любые слова (или смыслы слов), которые появились только в более ранних данных, не обновляются ... и поэтому новая тренировка неизбежно выводит текущие слова из сбалансированных отношений со старыми словами, которые существовали после совместного обучения.
В некоторых моделях нейронных сетей такая тренировка новых данных может привести к " катастрофическим помехам ", что значительно ухудшит работу сети в вещах, которые она когда-то знала.
Это может сработать нормально, если есть хорошее совпадение словарного запаса или выбран правильный уровень переподготовки и баланс скоростей обучения ... но нет жестких правил для выбора параметры / процессы, которые гарантируют, что такая «настройка» работает. Вы должны следить за качеством и оптимизировать его самостоятельно.
Самый безопасный и надежный способ получения значительных новых данных - это переобучать модель с нуля, используя все доступные данные - отбрасывая старую модель (поскольку координаты в новой модели не обязательно могут быть сопоставимы со старыми координатами) , Может случиться так, что запуск этой новой модели с векторами / весами из старой модели может помочь ей быстрее достичь качества / стабильности, чем начинать с нуля, но все равно не будет гарантировать совместимость координат или обязательно сделает безопасным исключение любых старые данные.