Natural language processing Глубокое обучение



Скачать 196.11 Kb.

Дата17.02.2017
Размер196.11 Kb.
Просмотров60
Скачиваний0

Natural language processing
Глубокое обучение
Обработка естественного языка
Сергей Николенко
Зимняя школа ВШЭ, 6 февраля 2016 г.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Outline
1
Natural language processing
Постановки задач
Нейронные сети: мотивация
2
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
План
Я расскажу о том, как в наше время люди обрабатывают естественный язык.
Это надо бы разделить на три части:
какие задачи стоят перед нами;
как их люди решают;
чего можно ожидать в будущем.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
План
Но, конечно, у нас и времени столько нет, и не знаю я ничего о большей части этого плана. :)
Поэтому мы сделаем так:
сначала действительно кратко поговорим о задачах NLP;
потом я расскажу о революции в методах, которая происходит во всей нашей науке, в том числе NLP, в последние десять лет;
а часть о будущем, скорее всего, останется на будущее. :)
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Какие бывают задачи
NLP – это про человеческие языки: русский, английский и всё такое.
Основная цель – научить компьютер понимать естественные языки и говорить на них.
Что это значит в реальности? Большие области:
1
лингвистические задачи;
2
information extraction: выделить информацию из текста;
3
information retrieval: выдать по запросу то, что надо (это то, что делают google и yandex);
4
работа со звуком: распознавание-синтез речи и смежные задачи;
5
и так далее...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Какие бывают задачи
Примеры конкретных задач:
категоризация текстов (классификация);
выделение тем текстов (topic modeling);
машинный перевод;
ответ на вопросы (question answering, не путать с IR);
sentiment analysis;
автоматическое реферирование (summarization);
выделение именованных сущностей (named entity recognition);
разбор синтаксиса (как построить синтаксическое дерево предложения);
разделение разных смыслов слов (word sense disambiguation);
разбор морфологии, анафора, части речи, ...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Какие бывают задачи
Но мы с вами поговорим не столько о конкретных задачах,
сколько о революции, связанной с глубоким обучением
(deep learning).
Это главная тема последних десяти лет в machine learning;
глубокое обучение привело к мощным прорывам во многих областях (мы о них кратко поговорим).
Например, две недели назад в Nature вышла статья о том,
как основанная на глубоком обучении модель AlphaGo победила чемпиона Европы по го, 2-й профессиональный дан, со счётом 5-0; раньше ничего подобного и близко не получалось.
Но давайте начнём немного издалека...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Почему мы лучше?
Компьютер считает быстрее человека.
Но гораздо хуже может:
понимать естественный язык,
узнавать людей и распознавать изображения,
обучаться в широком смысле этого слова,
Почему так?
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Строение мозга
Как человек всего этого добивается?
В мозге много нейронов; каждый нейрон:
через дендриты получает сигнал от других нейронов;
время от времени запускает сигнал по аксону;
через синапсы сигнал аксона доходит до дендритов других нейронов.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Строение мозга
Нейрон создаёт электрический импульс – spike в напряжении аксона.
Импульсы нейрон всегда подаёт с некоторой firing rate.
Если он неактивен, всё равно подаёт (spontaneous firing rate), но когда он видит активность на входе от других нейронов, его firing rate сильно увеличивается.
Связь в синапсе/дендрите может быть как положительная,
так и отрицательная (excitation/inhibition).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Строение мозга
Таким образом, получается, что нейрон – это такая стохастическая штука, которая время от времени выдаёт сигналы.
Нейрон довольно точно моделируется пуассоновским процессом, интенсивность которого зависит от входов.
Что немножко странно: нейроны на самом деле умеют довольно точно во времени сигнал подавать, могли бы передавать гораздо больше информации.
Мы об этом тоже поговорим.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Строение мозга
И ещё: firing rate бывает от 10 до 200 герц примерно.
Мы распознаём лицо за пару сотен миллисекунд.
То есть в распознавании не могло быть цепочки длиннее нескольких десятков штук, а скорее меньше!
Но всего нейронов очень много: 10 11
нейронов, в среднем
7000 связей у каждого, т.е. 10 15
синапсов.
Значит, мозг очень хорошо структурирован в этом смысле.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Мозг
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Обучение признаков
Другая сторона вопроса – обучение признаков.
Мозг очень хорошо умеет обучаться на очень-очень маленькой выборке данных.
Как он это делает?
Естественный язык – это один из самых удивительных здесь примеров, кстати; дети учат по несколько новых слов в день (в среднем!).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Пластичность
Другой аспект – пластичность мозга.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Обучение признаков
Мозг может адаптироваться к новым источникам информации.
Значит, не исключено, что у него есть какой-то единый алгоритм, который может обучаться на самых разных данных.
Можем ли мы его тоже как-то промоделировать?
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Обучение признаков
Системы обработки неструктурированной информации выглядят обычно так:
вход
→ признаки → классификатор
Люди много десятилетий пытались придумать хорошие признаки:
MFCC для распознавания речи;
SIFT для обработки изображений;
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Постановки задач
Нейронные сети: мотивация
Обучение признаков
Задача feature engineering: как сделать такие признаки?
Feature learning: может быть, можно найти признаки автоматически?
Мозг ведь это как-то делает...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Outline
1
Natural language processing
Постановки задач
Нейронные сети: мотивация
2
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Искусственные нейронные сети
Основная мысль нейронных сетей позаимствована у природы: есть связанные между собой нейроны, которые передают друг другу сигналы.
Есть нейронные сети, которые стараются максимально точно моделировать головной мозг.
В AI нейронные сети существуют давно, но лишь недавно их научились хорошо готовить (об этом мы и говорим сегодня).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
Warren McCulloch & Walter Pitts, 1943: идея.
Идею искусственных сетей, похожие на современные (с уровнями), предложил Алан Тьюринг (1948).
Rosenblatt, 1958: перцептрон. Линейная разделяющая поверхность плюс сигмоид.
Тогда же появился алгоритм обучения градиентным спуском.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
Тёплые ламповые реализации перцептрона сразу начали применять для распознавания букв; правда, результаты были не слишком впечатляющие.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
1960-е годы: изучали перцептрон.
(Minsky, Papert, 1969): XOR нельзя моделировать перцептроном.
Это почему-то восприняли как большую проблему, которая ставит крест на нейронных сетях.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
(Brison, Hoback, 1969): предложили алгоритм backpropagation (обратное распространение ошибки).
(Hinton, 1974): переоткрыл backpropagation, с тех пор он стал популярным.
Во второй половине 1970-х появились многоуровневые
ANN, была разработана современная теория.
Глубокие модели появились в первой половине 1980-х гг.!
Это вообще не очень хитрая идея сама по себе.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
(Morgan, Boulard, 1988): нейронные сети для распознавания речи.
(Waibel et al., 1989): TDNN (time-delay neural networks).
(Robinson et al., 1990): рекуррентные нейронные сети.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
Но к началу 1990-х решили, что сети использовать смысла нет.
Это было потому, что тогда их ни математически не умели, ни вычислительно не могли нормально обучить.
Нужно было обучать сети неделями, а качество, например,
на распознавании речи проигрывало HMM, в других задачах проигрывало другим методам.
John Denker, 1994: «neural networks are the second best way of doing just about anything».
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
История ANN
Deep learning начинается в 2006, когда Geoffrey Hinton изобрёл Deep Belief Networks (DBN, DNN).
Основная идея: научились делать предобучение при помощи машин Больцмана (RBM; появились в 1983),
благодаря которому сеть потом приходит в гораздо более разумный локальный максимум.
А компьютеры стали мощнее, и вычислительно тоже всё
стало доступно.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Структура сети
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Зачем нужны глубокие архитектуры
Одну и ту же функцию можно выразить более компактно и менее компактно.
Часто это связано с глубиной представления:
схема глубины 2 выражает любую булевскую функцию, но не все эффективно;
есть разница и между схемами глубины k и k + 1 (Hastad,
Yao).
Нечто в том же духе происходит и с арифметическими схемами, и со схемами с разными другими операциями...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Зачем нужны глубокие архитектуры
Примеры из машинного обучения:
линейная регрессия – схема глубины 1 с линейными гейтами;
логистическая регрессия – схема глубины 1 с гейтами вида
σ
от линейных;
нейронная сеть со скрытым уровнем – схема глубины 2 с гейтами-нейронами;
если добавить вычисление ядра K (x , x n
)
в набор операций,
то kernel machines (например, SVM) – это схемы глубины 2:
линейная комбинация K (x , x n
)
от всех тестовых примеров;
бустинг добавляет один уровень к его базовым слабым классификаторам;
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Зачем нужны глубокие архитектуры
Теорема (Hornik, 1991):
нейронная сеть с одним скрытым уровнем может приблизить любую непрерывную функцию с любой наперёд заданной точностью, если у неё будет достаточно много нейронов на скрытом уровне.
Теорема применима к разным функциям активации, в том числе σ, tanh и др.
Но, конечно, «достаточно» – это очень много, да и
«может приблизить» не означает, что мы сможем придумать алгоритм обучения.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Зачем нужны глубокие архитектуры
Можно ли как-то использовать более глубокие архитектуры, чтобы лучше обучать?
Есть методы, которые обучают локальные (local templates);
например, те же kernel machines вида f (x ) = b +
i
α
i
K (x , x i
)
с локальным ядром вроде
K (x , x i
) =
e

1
σ2
x −x i
2
Если научиться строить глубокую архитектуру из них, сила может теоретически возрасти экспоненциально: local representations vs. distributed representations.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Как построить глубокую нейронную сеть, совершенно понятно.
Но с обучением проблемы: градиент застревает в локальных минимумах и плато.
Vanishing gradients: при backpropagation перемножаются маленькие числа, получается почти ноль.
Основная базовая идея (Hinton, 2006 и др.): давайте предобучать нижние уровни глубокой сети так, чтобы там появлялись признаки, описывающая особенности данных.
Т.е. давайте делать unsupervised предобучение, а потом уже обучать последний уровень: обучать p(data) вместо p(label
| data).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
В принципе, мозг именно это и делает.
Теперь надо научиться делать unsupervised learning /
feature extraction.
В качестве составных частей глубоких моделей используются три основных метода:
1
autoencoders;
2
restricted Boltzmann machines;
3
sparse coding.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Например, denoising autoencoders: получается manifold learning: возвращаем точки на многообразие входов в датасете.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Смысл сначала был в том, чтобы обучать каждый уровень по отдельности, снизу вверх, подавая нижние уровни на вход высшим.
Потом появились хорошие методы регуляризации
(dropout!), и сейчас часто обучают модели сразу целиком.
Кроме того, появились вычислительные мощности для этого (GPU!), модели сейчас всё больше и больше.
Мы подробно о математике говорить не будем, а скажем пару слов об архитектурах и перейдём к применениям,
связанным с естественным языком.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Классические DBN (2006): обучаем через жадное обучение
RBM, потом на последнем уровне можем сделать классификатор.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Нейронные сети: stacked autoencoders (denoising,
contractive).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
В любом случае сначала обучают признаки, а потом делаем fine-tuning всей сети.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Dropout: давайте выкидывать нейроны! Как в denoising autoencoder, но выкидываем не только вход, а ещё и скрытые уровни (Srivastava et al., 2013).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Глубокие свёрточные сети – это state of the art в компьютерном зрении и обработке изображений.
И они были таковым с начала 1990х. Но теперь мы будем обучать filter bank автоматически, а не подбирать руками.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокие нейронные сети
Рекуррентная нейронная сеть (RNN) – это «очень глубокая» сеть, которая последовательно раскручивает цепочку входов.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
От обычной классификации к RNN
Слева направо: фиксированный вход в фиксированный выход
(классификация), выход в виде последовательности (image captioning), вход в виде последовательности (sentiment analysis), и то и другое (машинный перевод).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
Первым большим успехом глубоких сетей было распознавание речи.
В распознавании речи обычно использовали HMM
(скрытые марковские модели) с GMM (смеси гауссианов) в качестве моделей наблюдаемых.
Но в последнее время перешли практически полностью на
DNN.
Apple Siri, Google Now, Microsoft, IBM – все сейчас на
DNN.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
Для речи используют Gaussian–Bernoulli RBM (GRBM):
E (v , h) =
i
1 2σ
2
i
(
v i

a i
)
2

j b
j h
j

i ,j v
i
σ
i h
j w
ij
,
p(h j
| v) =σ(b j
+
i v
i
σ
i h
j w
ij
),
p(v j
| h) =N (a i
+ σ
i j
h j
w ij
, σ
2
i
).
И дальше на ней строят глубокую сеть (DBN) из обычных бинарных RBM на следующих уровнях.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
Обучение DBN для речи:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
И это всё использовалось для распознавания фонем.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
Чтобы делать распознавание речи (слов, предложений),
надо добавить ещё уровень с контекстом. Можно добавлять просто HMM.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
И если добавить ещё данных, то становится ещё лучше.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
А можно добавить рекуррентные нейронные сети (RNN).
Теперь строим несколько первых уровней из autoencoders
(не рекуррентных), а потом на последнем уровне уже добавляем RNN, которая хранит текущее состояние и историю.
Для регуляризации используют dropout.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
(Hannun et al., 2014): система Deep Speech.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning в распознавании речи
Результаты превосходят всё, что было до этого.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning и музыка
Или музыка: (Boulanger-Lewandowski et al., 2012)
моделируют полифоническую музыку, предсказывая ноты.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Deep learning для NLP
Deep learning применяется для обработки естественного языка: обучаем распределённое представление (distributed representation) для каждого слова.
(Collobert et al., 2011): в результате фактически без учителя обучаются представления, из которых выводятся части речи, распознавание именованных сущностей,
обучение семантики и т.п.
Здесь тоже в каком-то смысле свёрточные сети
(сворачиваем некоторое окно в тексте), но не такие глубокие.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
DL в NLP
Как применять глубокое обучение для обработки естественного языка?
Это тоже неструктурированные данные, из которых нужно что-то извлечь; и задачи те же:
автоматическое выделение признаков;
задачи, грубо говоря, классификации (части речи,
грамматический парсинг и т.п.);
конечная цель – распознавание семантики происходящего.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
DL в NLP
(Mikolov et al., 2013):
обучаем вложение слов в n-мерное пространство признаков, предсказывая слово из контекста (cbow) или контекст из слова (skip-gram);
модель skip-gram: по слову пытаемся предсказать его контекст;
модель cbow (continuous bag of words): по контексту предсказываем слово;
положительные примеры – из данных; отрицательные –
берём n-граммы из данных и вставляем случайные слова.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
DL в NLP
На выходе обучаются линейные зависимости вида king − man + woman ≈ queen.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
DL в NLP
Примеры ближайших соседей (в сравнении с другой моделью):
Примеры ближайших соседей к запросам-словосочетаниям:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
DL в NLP
Word embeddings – это важно:
(Wang, Manning, 2013): сравнивают обычный CRF и SLNN
(sentence-level likelihood neural nets) для named entity recognition на стандартных датасетах – получается, что для дискретного представления CRF ничем не хуже, но на word embeddings по методу Collobert et al. SLNN сильно выигрывают.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
Пример: задача синтаксического парсинга предложений.
Т.е. мы хотим из предложения получить что-то в духе
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
Воспользуемся word embeddings, это понятно.
Но теперь проблема: предложения разной длины, т.е.
длина входа неизвестна. Это можно решить таким образом:
будем строить дерево шаг за шагом;
на каждом шаге будем нейронной сетью предсказывать,
насколько хорошо ли эти листья сейчас объединить;
а веса нейронной сети будем использовать всё время одни и те же, т.е. дерево представляет функцию f (Wf (Wf (. . . f (Wx ) . . .))).
Это и называется рекурсивными нейронными сетями.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
(Socher, Bauer, Manning, Ng, 2013): синтаксический парсинг: как построить дерево парсинга (функция ошибки смотрит, насколько дерево отличается от правильного); мы на самом деле обучаем одну или несколько матриц на все узлы.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
(Bordes, Weston, Collobert, Bengio, AAAI 2011): structured embeddings:
рассмотрим базу знаний как граф отношений;
обучим word embeddings – представления слов в R
d
;
в пространстве R
d отношение – это некая метрика похожести;
мы моделируем её двумя матрицами преобразований:
sim k
(
E
i
,
E
j
) =
R
lhs k
E
i

R
rhs k
E
j p
и обучаем матрицы.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
Получаются интересные результаты – ниже примеры, из которых исключили всё, что было в обучающем наборе:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
Сами embeddings – ближайшие соседи:
Извлечение знаний:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Рекурсивные нейронные сети
(Bordes, Glorot, Weston, Bengio, AISTATS 2012) – open-text semantic parsing:
модель (lhs, relation, rhs);
концепт – вектор, отношение – две матрицы; матрица работает как оператор;
ранжируем по энергии, низкая на тренировочных примерах, высокая вне.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Sentiment analysis
Пример применения: sentiment analysis (там ещё LSTM).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Глубокое обучение и NLP
Но важно заметить:
люди занимаются NLP давно, было много методов;
когда глубокие сети пришли в распознавание речи, они сразу победили всех и намного;
то же самое было с распознаванием изображений;
в NLP такого (пока) нет! пока скорее «мы делаем примерно так же или чуть лучше, чем вы, но ничего не зная о лингвистике и с нуля»;
это область, которая продолжает очень бурно развиваться,
и я всех приглашаю попробовать ей заняться.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Пример задачи
Пример сложной задачи: question answering. IBM Watson был уже давно, но на самом деле в плане понимания языка всё пока не очень хорошо.
На вот таких задачах лучший результат порядка 20-25%
ошибки:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
(Sutskever, Martens, Hinton, 2011): рекуррентные нейронные сети генерируют текст символ за символом.
RNN – это «очень глубокая» сеть, которая последовательно раскручивает цепочку входов.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
RNN:
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
RNN: по (x
1
, . . . ,
x
T
)
вычисляем h
t
=
tanh(W
hx x
t
+
W
hh h
t−1
+
b h
),
o t
=
W
oh h
t
+
b o
,
где все веса не зависят от времени.
Градиенты легко подсчитать (backpropagation through time), но обучить сложно: очень нестабильно, saturation мешает, vanishing/exploding gradients.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
(Martens, 2010; Martens, Sutskever, 2011): новый алгоритм второго порядка для RNN, hessian-free optimization.
Он позволяет обучать относительно большие RNN.
Но на самом деле в языке есть более сложные зависимости: нужно, чтобы следующее состояние определялось одновременно скрытым состоянием и текущим символом (основа глагола + i предсказывают n).
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
Получается Multiplicative RNN (MRNN):
f t
=
diag(W
fx x
t
)
W
fh h
t−1
,
h t
=
tanh(W
hf f
t
+
W
hh h
t−1
+
b h
),
o t
=
W
oh h
t
+
b o
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
И получается модель, которая обучает символ за символом и при этом может, например, закрывать скобки.
Вот пример сгенерированного текста (просто сэмплирование из модели):
Recurrent network with the Stiefel information for logistic regression methods. Along with either of the algorithms previously (two or more skewprecision) is more similar to the model with the same average mismatched graph.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Генерируем язык символ за символом
Вот что получится, если обучиться на Шекспире:
PANDARUS:
Alas, I think he shall be come approached and the day
When little srain would be attain’d into being never fed,
And who is but a chain and subjects of his death,
I should not sleep.
Second Senator:
They are away this miseries, produced upon my soul,
Breaking and strongly should be buried, when I perish
The earth and thoughts of many states.
DUKE VINCENTIO:
Well, your wit is in the care of side and that.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Пример
А можно попросить модель закончить фразу: генерировать фразу символ за символом (!) после заданного начала,
учитывая его как контекст.
The meaning of life is...
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Пример
А можно попросить модель закончить фразу: генерировать фразу символ за символом (!) после заданного начала,
учитывая его как контекст.
The meaning of life is the tradition of the ancient human reproduction: it is less favorable to the good boy for when to remove her bigger.
Сергей Николенко
NLP

Natural language processing
Глубокое обучение
Искусственные нейронные сети
Применения к естественному языку
Thank you!
Спасибо за внимание!
Сергей Николенко
NLP


Поделитесь с Вашими друзьями:


База данных защищена авторским правом ©nethash.ru 2017
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал