Количество необходимых обновлений будет отражено в количестве эпох, необходимых для достижения определенной точности.
Если вы наблюдаете, что конвергенция занимает одинаковое количество эпох, но каждая эпоха занимает вдвое больше времени настенных часов, то это указывает на то, что простое выполнение поиска внедрения (и написание обновления таблицы внедрения) теперь занимает значительное часть вашего тренировочного времени.
Что может быть легко. 2 000 000 слов, умноженное на 4 байта на число с плавающей запятой, в 32 раза превышающее длину вашего вектора встраивания (что это? Давайте предположим, что 200) - это что-то вроде 1,6 гигабайта данных, к которым нужно обращаться в каждой мини-партии. Вы также не говорите, как вы тренируете это (CPU, GPU, какой GPU), что оказывает существенное влияние на то, как это должно получиться, например, из-за. эффекты кэша, так как для процессора, выполняющего одинаковое количество операций чтения / записи в несколько менее дружественной к кэш-среде форме (больше разреженности), можно легко удвоить время выполнения.
Кроме того, ваша предпосылка немного необычна. Сколько у вас помеченных данных, которых было бы достаточно для примеров # 2000000-го редчайшего слова для непосредственного вычисления значимого вложения? Это, вероятно, возможно, но было бы необычно, почти во всех наборах данных, в том числе очень больших, # 2000000-е слово было бы одноразовым и, следовательно, было бы вредно включать его в обучаемые вложения. Обычный сценарий заключается в том, чтобы рассчитывать большие вложения отдельно от больших немеченых данных и использовать их в качестве фиксированного невозобновляемого слоя и, возможно, объединять их с небольшими обучаемыми вложениями из помеченных данных для захвата таких вещей, как предметно-ориентированная терминология.