В этом репозитории мы обучаем три языковых моделя на каноническом корпусе Penn Treebank (PTB). Этот корпус разделен на наборы обучения и проверки токенов приблизительно 929K и 73K соответственно. Мы внедряем (1) традиционную модель триграммы с линейной интерполяцией, (2) модель нервного вероятностного языка, как описано (Bengio et al., 2003), и (3) регуляризованная рецидивирующая нейронная сеть (RNN) с подразделениями с длинной короткой памятью (LSTM) следующим образом (Zaremba et al., 2015). Мы также экспериментируем с серией модификаций в модель LSTM и достигаем недоумения 92,9 в наборе валидации с многослойной моделью.
В задаче классификации настроений Стэнфордского настроения нам предоставлено корпус предложений, взятых из обзоров фильмов. Каждое предложение было помечено как положительное, отрицательное или нейтральное; Мы следуем (Kim, 2014), чтобы удалить нейтральные примеры и формулировать задачу как двоичное решение между положительными и отрицательными предложениями.
Для каждого варианта модели мы формализуем прогноз
Для тестового примера
как

где
является функцией активации,
Наши ученые веса,
Наш вектор функций для ввода
, и
это вектор смещения. Обратите внимание, что в этом задании, набор, 

для всех
Поскольку мы рассматриваем только положительные и отрицательные входные данные в наборе данных SST-2. Мы используем Pytorch для всех реализаций моделей, и все модели обучаются по 10 эпохам, используя партии размера 10, скорость обучения 1E-4, оптимизатор ADAM и функцию отрицательного потери правдоподобия журнала. Единственное исключение из этой установки было для многономиального наивного байеса, которое подходило в одну эпоху с параметром обучения
= 1,0.
Позволять 

быть вектором подсчета функций для учебного случая
с классификационной меткой
Полем
набор функций и
представляет количество случаев функции
в учебном случае
Полем Определить векторы графства
как
=
+
, для параметра сглаживания
Полем Мы следуем за Ван и Мэннингом, чтобы бинаризовать графы;
= 
Полем Что касается уравнения (1),
это отношение логарифмического расхода между количеством положительных и отрицательных примеров,
= log (
/
) где
и
количество положительных и отрицательных учебных случаев в наборе данных обучения,
это количество случаев ввода
, и
это бинарная функция индикатора, которая карты
до 1, если больше 0 и 0 в противном случае. Мы рассматриваем только Unigrams как функции.
Мы изучаем матрицы веса и смещения
и
такова, чтобы оптимизировать

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

где 

и 

, и
=
для всех
являются измерениями встраивания предложения и встроения слов соответственно. Это кодирование
затем передается в один полностью подключенный слой, который отображается непосредственно на два выходных блока, представляющих классы выходных данных, под активацией Softmax.
Позволять 

быть
-дивменная вектор слов соответствует
-Т -то слово во входном предложении. После заполнения всех предложений в входной партии до той же длины
, где
является ли предложение максимальной длины всех предложений в партии, каждое предложение затем представлено как

где
это операция конкатенации. Позволять
представляют объединение слов
В
, ...,
Полем В сверточных нейронных сетях мы применяем операции свертки 

с размером фильтра
Для создания функций, где размер фильтра является фактически размером окна слов для конвертации. Позволять
быть функцией, сгенерированной этой операцией. Затем

где
является предвзятым термином и
является выпрямленной линейной единичной (RELU) функцией. Применение размера длины фильтра
На протяжении всех возможных окон слов в нашем входном предложении создает карту функций

В нашей реализации мы конвертируем размеры фильтра 

а затем объединить особенности каждого
в один вектор. Мы применяем максимальную операцию объединения (Collobert et al, 2011) к этому вектору сознательных карт, обозначенных
и получить
= Макс (
) Затем мы применяем отступление с
= 0,50 до
В качестве измерения регуляризации по сравнению с переосмыслением передайте его в полностью подключенный слой и вычислите Softmax через выход.
Наконец, мы также реализовали с помощью ряда модификаций в архитектуру CNN, чтобы привести к небольшому улучшению производительности на наборе данных SST-2. В этой реализации мы используем предварительно обученные векторы Стэнфорда (Pennington et al., 2014), мы вносим эти изменения:
Следуя (Kim, 2014), мы используем две копии таблицы встраивания Word во время свертки и шагов максимального количества-это не статична или обновлена во время обучения в качестве обычного модуля в модели, а другой, который опущен от оптимизатора и сохраняется как статический в течение учебного запуска. В прямом промежутке модели эти два набора встроений объединяются вдоль «канала», а затем передаются в три сверточных слоя в виде одного тензора, с двумя значениями для каждого из 300 измерений в модели перчатки.
После создания комбинированного вектора функций, представляющих функции максимального питания из трех сверточных ядер, мы просто добавляем нетехнутые слова ввода в качестве одного дополнительного измерения, создавая тензор 301-мерного измерения, который затем отображается с выходом из 2 единиц. С технической точки зрения мы обнаруживаем, что это незначительно повышает производительность на наборе данных SST-2, где в среднем положительные предложения немного длиннее отрицательных-19,41 слова против 19,17. Не ясно, будет ли это содержать в разных наборах данных, или это специфично для SST-2. (Хотя это также не совсем ясно, что это не так, и, кажется, подразумевает интересный вопрос корпус-лингвистического-«позитивные» предложения, как правило, длиннее «негативных»?)
В дополнение к двум изменениям, описанным выше, мы также экспериментировали с широким спектром других модификаций в архитектуре CNN, включая:
Объединение модели CBOW с архитектурой CNN путем объединения векторов CNN MaxPooled с усредненным вектором CBOW перед отображением с конечными выходными единицами.
Заменил встраиваемые перчатки вторжениями Googlenews (Mikolov et al., 2013). Эта идея возникла из мысли, что для PTB может быть какая -то полезная специфичность домены, так как эти встраивания были обучены новостным статьям.
Реализованные «многоканальные» встроены, как описано (Kim, 2014) в контексте архитектур CNN. Вместо того, чтобы просто использовать один слой встроенных встроков, который обновляется во время обучения, предварительно обученная матрица веса копируется в два отдельных встроенных слоя: один, который обновляется во время обучения, и другой, который исключается из оптимизатора и разрешено оставаться неизменным во время тренировок. Во время прямого прохода индексы слов отображаются в каждую таблицу отдельно, а затем два тензора объединяются вдоль измерения встраивания, чтобы создать единый 600-мерный тензор для каждого токена.
Экспериментировал с различными подходами к партии. Вместо того, чтобы моделировать корпус как единую непрерывную последовательность во время обучения (например, с BPTTIterator Torchxtext), мы попытались разделить корпус на отдельные предложения, а затем создать отдельные учебные случаи для каждого токена в каждом предложении. Например, для предложения «Мне нравятся черные кошки», мы произвели пять контекстов:
а « <SOS> я»
беременный « <SOS> мне нравится»
в « <SOS> мне нравится черный»
дюймовый « <SOS> мне нравятся черные кошки»
эн. « <SOS> мне нравятся черные кошки <EOS> »
И модель обучена прогнозировать последний токен в каждом контексте на шаге времени t из первых токенов T -1. Мы использовали функцию pytorch pack_padded_sequence для обработки входов переменной длины в LSTM. Практически, это было привлекательным, потому что это облегчает разработку более широкого диапазона функций из контекста перед словом -например, становится легко реализовать двунаправленные LSTM как с прямым, так и обратным проходом по контексту T -1, который, насколько нам известно, будет сложным или невозможным в соответствии с первоначальным режимом обучения, принудительным BPTTIterator . Однако после того, как мы попытались, мы поняли, что он никогда не будет конкурентоспособным с непрерывным представлением корпуса BPTTIterator , поскольку предложения в корпусе сгруппированы по статье- и, таким образом, также на тематическом / концептуальном уровне. Это означает, что модель может изучить полезную информацию по границам предложений о том, какой тип слова должен быть дальше.
Экспериментировал с различными стратегиями регуляризации, такими как изменение процента отсева, применение отсева к первоначальным встраивающим слоям и т. Д.
Ни одно из этих изменений не улучшилось на начальном однослойном LSTM 1000-Unit. Наша лучшая модель была описана в разделе 3.4. Обиточности, которые мы достигли с каждой из наших моделей Раздела 3, описана в таблице 1.
| Модель | Недоумение |
|---|---|
| Линейно интерполированная триграмма | 178.03 |
| Модель нейронного языка (5 грамм) | 162.2 |
| 1-й слой LSTM | 101.5 |
| 3-слойные LSTM + соединения | 92,9 |
Хотя многослойный LSTM с соединениями превзойдет простой базовый уровень LSTM, мы не смогли повторить производительность озадачивания 78,4, описанные (Zaremba et al., 2015), используя тот же корпус и аналогичные архитектуры. А именно, при использовании конфигураций, описанных в статье (2-слойные архитектуры, 650 и 1500 единиц), наши модели переполняют эпохи 5-6, даже при применении отсева таким образом, чтобы соответствовать подходу, описанному в статье. Напротив, (Zaremba et al., 2015) упоминают обучение за 55 эпох.)
Мы обучили четыре класса моделей - традиционную модель триграммы с линейной интерполяцией, с весами, изученными с максимизацией ожиданий; Простая модель языка нейронной сети следующей (Bengio et al., 2003); однослойный базовый уровень LSTM; и расширение этой модели, которая использует три уровня разных размеров, пропускает соединения для первых двух слоев и регуляризации, как описано (Zaremba et al., 2015). Окончательная модель достигает недоумения 92,9 по сравнению с 78,4 и 82,7, о которых сообщается (Zaremba et al., 2015) с использованием примерно эквивалентных гиперпараметров.
Y. Bengio, R. Ducharme, P. Vincent, C. Jauvin. «Нейронная вероятностная языковая модель». Журнал исследований машинного обучения 3, страницы 1137–1155. 2003.
Д. Джуруфский. «Языковое моделирование: введение в n-граммы». Лекция. Стэнфордский университет CS124. 2012
Ю. Ким. «Развитые нейронные сети для классификации предложений». Труды конференции 2014 года по эмпирическим методам в обработке естественного языка (EMNLP), страницы 1746–1751. 2014.
Т. Миколов, К. Чен, Г. Коррадо, Дж. Дин. «Эффективная оценка представлений слов в векторном пространстве». Arxiv Preprint arxiv: 1301.3781. 2013.
Дж. Пеннингтон, Р. Сочер, С. Мэннинг. «Перчатка: глобальные векторы для представления слов». Труды Конференции 2014 года по эмпирическим методам в обработке естественного языка (EMNLP), стр. 1532-1543. 2014.
W. Zaremba, I. Sutskever, O. vinynals. 2015. «Рецидивирующая регуляризация нейронной сети». Arxiv Preprint arxiv: 1409.2329. 2015.