Модель языка GPT-2: умножение вывода декодера-преобразователя на встраивание токенов или другую матрицу весов

Я читал код языковой модели GPT2. Преобразование скрытых состояний в распределение вероятностей по словарю выполнено в следующей строке:

lm_logits = self.lm_head(hidden_states)

Здесь,

self.lm_head = nn.Linear(config.n_embd, config.vocab_size, bias=False)

Однако в исходной статье они предложили умножать скрытые состояний с помощью матрицы встраивания токенов, тогда как реализация huggingface использовала другую матрицу.

Есть ли в этом преимущество? Я что-то упускаю?


person user3363813    schedule 12.02.2020    source источник
comment
Вы поднимали эту проблему в гитхабе библиотеки трансформаторов? Возможно, это лучшее место, чтобы спросить об этом конкретном выборе дизайна.   -  person dennlinger    schedule 12.02.2020


Ответы (1)


Оба слоя имеют одинаковые веса. https://github.com/huggingface/transformers/issues/2824

person user3363813    schedule 13.02.2020