Как работает языковая модель Ulmfit применительно к проблеме классификации текста? - PullRequest
1 голос
/ 09 октября 2019

В последнее время я много играл с Ulmfit и до сих пор не могу понять, как способность языковой модели делать правильные предсказания относительно следующего слова влияет на классификацию текстов. Я предполагаю, что моя настоящая проблема заключается в том, что я не понимаю, что происходит на низком уровне сети. Так что поправьте меня, если я ошибаюсь, но процедура выглядит так (?):

Языковая модель проходит предварительную подготовку и затем настраивается. Эта часть кажется мне понятной: на основе текущих и предыдущих слов вы формируете вероятности следующих слов. Затем модель снимается со слоя softmax, предназначенного для создания распределения вероятностей. Вы добавляете декодер, состоящий из reLU-Layer (что на самом деле делает этот слой?) И другого слоя softmax, который выводит вероятность членства в классе данного текстового документа. Итак, вот много вещей, которые я не понимаю: как текстовый документ принимается и обрабатывается? Слово за слово я предполагаю? Итак, как вы в конечном итоге с предсказанием в конце? Усреднено ли оно по всем словам? Хм, вы видите, я очень смущен. Надеюсь, вы поможете мне лучше понять Ульмфит! Заранее спасибо!

1 Ответ

2 голосов
/ 10 октября 2019

Модель ULMFiT представляет собой «обычный LSTM», который является частным случаем Рекуррентной нейронной сети (RNN).

RNN «съедают» вводимый текст слово за словом (иногда символ за символом), ипосле каждого «укуса» они:

  • производят вывод
  • обновляют внутреннее скрытое состояние

В классификации текста выходные данные отбрасываются до самогоконец. обновленное скрытое состояние вместо этого добавляется к следующему слову кусаться. После того, как RNN съел последнее слово, вы можете проверить выходной слой (обычно это слой softmax с таким количеством нейронов, что и ваши метки), вычислить потери по отношению к истинной метке, а затем соответствующим образом обновить веса.

Послена этапе обучения, предположим, вы хотите классифицировать новый документ. RNN «съедает» ввод снова и обновляет свое скрытое состояние после каждого слова. Вы игнорируете выходной слой до тех пор, пока не увидите последнее слово: в этот момент максимальный элемент выходного слоя softmax будет вашей предсказанной меткой.

Я нашел особенно полезным это PyTorch tutorial .

enter image description here

...