Содержание страницы
Введение и план этого курса
Здравствуйте и добро пожаловать на занятия по теме «Рекуррентные нейронные сети на языке Python: глубокое обучение, часть 5».
Как и в случае только что выпущенного мною курса по скрытым марковским моделям, рекуррентные нейронные сети посвящены изучению последовательностей. Однако марковские модели ограничены марковским предположением, а рекуррентные нейронные сети – нет. В результате они более мощны и выразительны, нежели всё виденное ранее, в решении задач, по которым не было успехов в течение десятилетий.
Итак, что же будет в этом курсе и как он опирается на предыдущие курсы по нейронным сетям и скрытым марковским моделям.
В первой части курса мы добавим к нашим нейронным сетям время. Вы познакомитесь с простым рекуррентным нейроном, также именуемым нейроном Элмана. Мы вновь обратимся к проблеме XOR и расширим её, так что она превратится в проблему чётности. Вы увидите, что обычные нейронные сети прямого распространения сталкиваются с проблемами при решении этой задачи, но рекуррентные сети будут работать, поскольку ключевым тут является обработка входных данных в качестве последовательностей.
В следующей части курса мы вернёмся к одному из наиболее популярных приложений рекуррентных нейронных сетей – языковому моделированию. При изучении марковских моделей вы видели, как можно генерировать стихи, и они были не очень-то и ужасны. Мы даже могли различать творчество двух различных поэтов на основе используемых последовательностей частей речи. В этом курсе мы расширим языковую модель, так что она больше не будет нуждаться в марковском предположении.
Другим популярным приложением нейронных сетей для работы с языком являются слова-векторы, или векторное представление слов. Наиболее общий метод в этой сфере называется word2vec, но я покажу, как рекуррентные нейронные сети также могут быть использованы для создания слов-векторов.
В следующей части мы рассмотрим очень популярную LSTM, или сеть долгой краткосрочной памяти, а также более современный и эффективный GRU, то есть управляемый рекуррентный нейрон, который, как было доказано, даёт сопоставимую производительность. Мы применим их для решения некоторых практических задач, таких как обучение языковой модели на данных из Википедии и визуализации полученного в итоге векторного представления слов.
Хочу дать вам совет по прохождению курса. Прежде всего разберитесь с механикой, а потом уже беспокойтесь о понимании. Когда речь зайдёт о сетях долгой краткосрочной памяти, мы будем обсуждать их способность «помнить» и «забывать». Имейте в виду, что это лишь удобные названия, данные по аналогии. На самом деле мы не будем создавать структур, способных запоминать или забывать, это лишь математические формулы. Так что упирайте на математику и позвольте пониманию появиться самому в процессе обучения.
Чего особенно надо избегать – это противоположного, то есть попыток понять смысл без понимания механики. При таком подходе результатом обычно является сенсационная статья в прессе или научно-популярная книга. Но наш курс – не об этом. Нам нужно понимание происходящего на техническом уровне. Объяснение процессов для непрофессионалов или рассуждения об аналогиях из реальной жизни имеют ценность, только если вы понимаете методику.
Обзор важнейших понятий глубокого обучения
Если вы проходили 1-ю, 2-ю, 3-ю и 4-ю части цикла по глубокому обучению, а также изучали скрытые марковские модели, то у вас должно быть более чем достаточно опыта для прохождения этого курса.
Прежде всего поговорим о функции софтмакс. Она используется для классификации двух и более классов. Она несколько сложнее для работы, нежели сигмоида, в частности, труднее взять её производную, но мы предоставим эту работу библиотекам Theano и TensorFlow. Напомню, что мы берём массив чисел, помещаем в экспоненциальную функцию и делим на сумму, что в итоге позволяет рассматривать выходные данные софтмакс как вероятности:

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