Переведено с:столбец ah.GitHub.IO/posts/2014-…
Опубликовано 7 июля 2014 г.
Нейронные сети, Глубокое обучение, Представление, НЛП, Рекуррентные нейронные сети
вводить
За последние несколько лет глубокие нейронные сети доминировали в распознавании образов. Они раскрывают предыдущий уровень техники для многих задач компьютерного зрения. Таким же образом развивается и распознавание речи.
Но, несмотря на эти результаты, мы должны задаться вопросом, почему они так хорошо работают?
В этом посте рассматриваются некоторые очень замечательные результаты применения глубоких нейронных сетей для обработки естественного языка (NLP).
При этом я надеюсь найти понятный и многообещающий ответ на вопрос, почему работают глубокие нейронные сети. Я думаю, что это очень элегантная перспектива.
нейронная сеть с одним скрытым слоем
Нейронная сеть со скрытыми слоями универсальна: при достаточном количестве скрытых элементов она может аппроксимировать любую функцию. Это часто цитируемая — и еще чаще неправильно понимаемая и применяемая — теорема.
Да, в основном потому, что скрытый слой можно использовать в качестве таблицы поиска.
Для простоты давайте рассмотрим сеть PercePtron. PercePtron - это очень простой нейрон, который испускает сигнал, когда он пересекает определенный порог, и не сигнализирует, если порог не достигнут. Сеть PercePtron принимает двоичный (0 и 1) вход и дает двоичный выход.
Обратите внимание, что количество возможных входов ограничено. Для каждого возможного входа мы можем построить нейрон в скрытом слое, чтобы активировать вход, и только на этом конкретном входе. Затем мы можем использовать связь между этим нейроном и выходным нейроном для управления выходом в определенных ситуациях.
Поэтому нейронная сеть скрытого слоя действительно универсальна. Но ничего особенно впечатляющего или захватывающего в этом нет. Сказать, что ваша модель может делать то же самое, что и таблица поиска, не очень сильный аргумент. Это просто означает, что ваша модель не является невозможной.
Универсальность означает, что сеть может адаптироваться к любым обучающим данным, которые вы ей предоставляете. Это не означает, что он будет разумным образом интерполировать новые точки данных.
Нет, общность не объясняет, почему нейронные сети так эффективны. Настоящая причина кажется несколько более тонкой… Чтобы понять это, нам сначала нужно понять некоторые конкретные результаты.
вложение слов
Я хочу начать с особенно интересного исследования глубокого обучения: встраивания слов. По моему личному мнению, в настоящее время они являются одной из самых интересных областей исследований в области глубокого обучения, хотя впервые они были предложены Бенжио и др. более десяти лет назад. Помимо этого, я думаю, что это одно из лучших мест, где можно интуитивно понять, почему глубокое обучение работает так хорошо.
вложение одного слова— это параметризованная функция, которая отображает слова на некоторых языках в многомерные векторы (возможно, 200-500 измерений). Например, мы можем найти:
(Обычно функция представляет собой интерполяционную таблицу, состоящую из матрицыПараметризовано, по одной строке на слово:
)
инициализируется случайными векторами для каждого слова. Он изучает векторы, имеющие значение для выполнения определенных задач.
Например, одна задача, для которой мы можем обучить сеть, состоит в том, чтобы предсказать, является ли 5-грамм (последовательность из пяти слов) «действительной». Мы можем легко получить много 5-граммовых слов из Википедии (например: «кошка сидела на коврике») и заменить половину из них случайным словом (например: «кошка сидела песня на коврике»), потому что это почти наверняка сделало бы нашу 5-грамм бессмысленно.
Наша обученная модель прогоняет каждое слово в 5-граммовомчтобы получить вектор, представляющий его, и передать эти векторы в другой именованный
«Модуль» модели пытается предсказать, является ли 5-грамм «действительным» или «разорванным». Затем мы хотим:
Чтобы точно предсказать эти значения, сеть должна научитьсяи
хорошие параметры.
Сейчас эта задача не очень интересна. Может быть, полезно обнаружить грамматические ошибки в тексте или что-то в этом роде. но самое интересное
(На самом деле, для нас весь смысл миссии в том, чтобы научиться. Мы могли бы выполнить несколько других задач — еще одна распространенная задача — предсказать следующее слово в предложении. Но нам все равно. В оставшейся части этого раздела мы обсудим многие результаты встраивания слов, не делая различий между различными методами. )
Одна вещь, которую мы можем сделать, это визуализировать их с помощью t-SNE, сложного метода визуализации многомерных данных, который дает нам интуитивное представление о пространстве встраивания слов.
t-SNE визуализирует вложения слов. Слева: цифровая область, справа: рабочая область. ОтTurian et al. (2010), see complete image.
Эта буквальная «карта» имеет для нас большое интуитивное значение. Подобные слова похожи. Другой способ — посмотреть, какое слово ближе всего к заданному слову во встраивании. Опять же, эти слова имеют тенденцию быть похожими.
What words have embeddings closest to a given word? From Collobert et al. (2011)
Для сети кажется естественным иметь одинаковые векторы для слов с похожими значениями. Если вы замените слово синонимом (например, «несколько человек хорошо поют» -> «несколько человек хорошо поют»), правильность предложения не изменится. Однако с наивной точки зрения входное предложение сильно изменилось, еслиЧтобы тесно связать синонимы (такие как «несколько» и «пара»), то из
С точки зрения мало что изменилось.
Это очень мощно. Число 5-граммов может быть огромным, и у нас относительно мало точек данных, чтобы попытаться извлечь уроки. Группировка похожих слов вместе позволяет обобщить предложение в класс подобных предложений. Это означает не только преобразование слова в синоним, но и преобразование слова в слово аналогичного типа (например, «стена синяя» -> «стена красная»). Кроме того, мы можем изменить несколько слов (например, «стена синяя» -> «потолок красный»). Влияние этого на количество слов является экспоненциальным.
Итак, очевидно, что параЭто очень полезная вещь. Но как он научился этому? Кажется, что во многих случаях он видит предложение типа «стена синяя» и знает, что оно действительно, прежде чем увидит предложение типа «стена красная». Таким образом, небольшое перемещение «красного» на «синий» улучшит работу сети.
Нам все еще нужно увидеть примеры использования каждого слова, но аналогия позволяет нам обобщать новые словосочетания. Вы видели все слова, которые понимали раньше, но не видели все предложения, которые понимали раньше. То же самое касается нейронных сетей.
Вложения слов демонстрируют еще более замечательное свойство: аналогии между словами, по-видимому, закодированы в векторах различий между словами. Например, кажется, что существует постоянный вектор различий между мужчинами и женщинами:
Это не кажется слишком удивительным. В конце концов, родовые местоимения означают, что замена слова делает предложение грамматически неверным. Вы пишете «она тётя», но «он дядя». Точно так же «он король», но «она королева». Если кто-то увидит «она — дядя», наиболее вероятное объяснение — синтаксическая ошибка. Если в половине случаев это случайный переход, есть большая вероятность, что это произойдет здесь.
"Конечно!" Мы сказали потом: "Встраивание слова научится последовательно кодировать гендер. На самом деле, может быть гендерное измерение. То же самое касается единственного и множественного числа. Легко найти эти тривиальные отношения!"
Однако оказывается, что таким образом кодируются и более сложные отношения. Просто чудо!
Relationship pairs in a word embedding. From Mikolov et al. (2013b).
распознаватьВажно, что все эти свойства являются побочными эффектами. Мы не пытаемся соединить похожие слова. Мы не пробовали разные векторы для кодирования. Все, что нам нужно сделать, это выполнить простую задачу, например, предсказать, является ли предложение правильным. Эти свойства более или менее проявляются в процессе оптимизации.
Кажется, это одно из больших преимуществ нейронных сетей: они учатся лучшему способу автоматического представления данных. В свою очередь, правильное представление данных оказывается ключом к успеху во многих задачах машинного обучения. Встраивание слов — это лишь один особенно убедительный пример обучающих представлений.
совместное представление
Свойства встраивания слов, безусловно, интересны, но можем ли мы сделать с ними что-то полезное? Кроме того, чтобы предсказывать что-то глупое, например, «работают» ли 5 граммов?
Мы узнаем, что встраивания слов лучше справляются с простой задачей, но, основываясь на хороших свойствах, которые мы наблюдаем в вложениях слов, вы можете предположить, что они обычно полезны в задачах НЛП. На самом деле, подобные словесные представления очень важны:
В последние годы использование представлений слов стало ключевым «секретом» успеха многих систем НЛП, включая распознавание именованных сущностей, маркировку частей речи, синтаксический анализ и маркировку семантических ролей. (Luong et al. (2013))
Эта общая стратегия — научиться хорошо выполнять задачу А, а затем использовать ее для задачи Б — является одним из основных приемов в наборе инструментов глубокого обучения. Он имеет разные названия в зависимости от деталей: предварительное обучение, трансферное обучение и многозадачное обучение. Одним из самых больших преимуществ этого подхода является то, что он позволяет изучать представления из нескольких типов данных.
and
learn to perform task A. Later,
can learn to perform
based on
.
Есть соответствующий трюк. Вместо того, чтобы изучать способ представления одного типа данных и использовать его для выполнения нескольких задач, мы можем научиться отображать несколько видов данных в единое представление!
Хороший пример этого вСочер и др. (2013a)Двуязычные вложения слов, сделанные в . Мы можем научиться встраивать слова из двух разных языков в единое общее пространство. В этом случае мы учимся вставлять английские и мандаринские слова в одно и то же пространство.
Мы тренируем вложение для двух слов,и
аналогично тому, что мы делали выше. Однако мы знаем, что некоторые английские и китайские слова имеют схожие значения. Поэтому мы оптимизируем дополнительное свойство: слова, которые нам известны как близкие к переводу, должны быть вместе.
Конечно, мы замечаем, что слова, которые мы знаем, имеют схожие значения и в конечном итоге тесно связаны друг с другом. Это неудивительно, так как мы его оптимизировали. Что более интересно, так это то, что слово, которое мы не знаем, является окончательным переводом.
Это неудивительно, учитывая наш предыдущий опыт встраивания слов. Вложения слов объединяют похожие слова, поэтому, если мы знаем, что английское и китайское слово означает, что похожие вещи близки друг к другу, их синонимы также будут близки друг к другу. Мы также знаем, что такие вещи, как гендерные различия, обычно представляются постоянным вектором различий. Кажется, что эти разные векторы должны быть одинаковыми как в английском, так и в китайском встраиваниях. В результате, если мы знаем, что две мужские версии слова переводятся друг в друга, мы также должны переводить друг в друга женское слово.
Интуитивно кажется, что два языка имеют похожую «форму», и, заставляя их выстраиваться в разные точки, они перекрываются, в то время как другие точки подтягиваются в нужное место.
t-SNE visualization of the bilingual word embedding. Green is Chinese, Yellow is English. (Socher et al. (2013a))
При двуязычном встраивании слов мы изучаем общие представления для двух очень похожих типов данных.
Но мы также можем научиться встраивать очень разные типы данных в одно и то же пространство.
Совсем недавно глубокое обучение начало исследовать модели, которые объединяют изображения и слова в единое представление.
Его основная идея состоит в том, чтобы классифицировать изображения путем вывода вектора во встраивание слова.
Его основная идея состоит в том, чтобы классифицировать изображения путем вывода вектора во встраивание слова. Изображение собаки рисуется рядом с вектором слова «собака». Изображение лошади отображается рядом с вектором «лошадь». Изображение автомобиля находится рядом с вектором "автомобиль". и Т. Д.
Интересно, что происходит, когда вы тестируете модель на новом классе изображений. Например, если модель не обучена классифицировать кошек, то есть отображать их рядом с вектором «кошка», что происходит, когда мы пытаемся классифицировать изображения кошек?
Оказывается, сеть может разумно обрабатывать эти новые категории изображений. Изображения кошек не сопоставляются со случайными точками в пространстве вложения слов. Вместо этого они имеют тенденцию сопоставляться с общей окрестностью вектора «собака» и фактически близко к вектору «кошки». Точно так же изображение грузовика относительно близко к вектору «грузовик», который близок к вектору «автомобиль».
Это сделали члены Стэнфордской группы, у которых было всего 8 известных классов (и 2 неизвестных класса). Результаты уже впечатляют. Но поскольку известных категорий мало, то и точек для интерполяции отношения между образом и семантическим пространством мало.
Команда Google сделала версию покрупнее — вместо 8 категорий они использовали 1000 одновременно (Frome et al. (2013)), и принял новый вариант (Norouzi et al.(2014)). Оба основаны на очень мощных моделях классификации изображений (отKrizehvsky et al. (2012)), но по-другому для встраивания изображений в пространство для встраивания слов.
Результаты впечатляют. Хотя они могут быть не в состоянии преобразовать изображение неизвестного класса в точный вектор, представляющий этот класс, они могут попасть на нужную территорию. Поэтому, если вы попросите его классифицировать изображения неизвестных классов, а эти классы достаточно различны, он сможет различать разные классы.
Несмотря на то, что я никогда раньше не видел медицинской змеи или броненосца, если вы покажете мне картинку и еще одну картинку, я смогу сказать вам, что это такое, потому что у меня есть приблизительное представление о каждом слове для каждого животного, понятие о котором. Эти сети могут сделать то же самое.
(Все эти результаты основаны на рассуждении типа «эти слова похожи». Но, основываясь на отношениях между словами, кажется, что должны быть более сильные результаты. В нашем пространстве встраивания слов существует разница между мужской и женской версиями. слов Постоянные векторы несходства. Точно так же существуют постоянные отличительные черты между мужчинами и женщинами в пространстве изображений. Борода, усы и лысина — все это явные, хорошо заметные признаки мужчин. Грудь и не очень надежные длинные волосы, макияж и украшения - все это явные признаки женственности. Даже если вы никогда раньше не видели короля, если королева полна решимости стать королем и у нее внезапно появилась борода, есть веская причина придать мужской вариант.)
Общие встраивания — очень интересная область исследований, и они подчеркивают, почему точка зрения глубокого обучения, ориентированная на представление, настолько привлекательна.
Рекуррентная нейронная сеть
Мы начнем обсуждение встраивания слов со следующих сетей:
Modular Network that learns word embeddings (From Bottou (2011))
На приведенной выше диаграмме представлена модульная сеть,. Он состоит из двух модулей,
и
, этот подход, который строит нейронные сети из более мелких «модулей» нейронных сетей, которые можно сгруппировать вместе, не очень распространен. Тем не менее, это очень успешно в НЛП.
Модели, подобные приведенным выше, являются мощными, но у них есть досадное ограничение: они могут иметь только фиксированное количество входных данных.
Мы можем сделать это, добавив модуль ассоциацииЧтобы преодолеть эту проблему, он будет использовать два слова или фразы и объединять их.
(From Bottou (2011))
Комбинируя порядок слов,Переведите нас от представления слов к представлению фраз и даже целых предложений! Поскольку мы можем комбинировать разное количество слов, нам не нужно иметь фиксированное количество входных данных.
Линейная комбинация слов в предложении должна иметь смысл. Если кто-то думает, что «кошка сидела на коврике», то его естественно можно разделить на несколько частей: «((кот) (сидел(на(коврик))))». Мы можем подать заявку в соответствии с этой скобкой:
(From Bottou (2011))
Эти модели часто называют «рекуррентными нейронными сетями», потому что люди часто преобразуют выходные данные модуля в модуль того же типа. Их иногда называют «нейронными сетями с древовидной структурой».
Рекуррентные нейронные сети добились замечательных успехов во многих задачах НЛП. Например,Socher et al. (2013c)Используйте рекуррентную нейронную сеть для прогнозирования тональности предложения:
(From Socher et al. (2013c))
Если бы мы могли сделать что-то подобное, это был бы очень мощный инструмент. Например, мы можем попытаться создать двуязычное представление предложения и использовать его для перевода.
К сожалению, это очень сложно. Очень, очень сложно. Учитывая огромные перспективы, над этим работает много людей.
недавний,Cho et al. (2014)Некоторый прогресс был достигнут в представлении фраз: модель способна кодировать английские фразы и декодировать их на французском языке. Проверьте фразовые выражения, которые он узнает!
Small section of the t-SNE of the phrase representation
(From Cho et al. (2014))
критиковать
Я слышал критику некоторых из приведенных выше результатов от исследователей в других областях, особенно в НЛП и лингвистике. Основное внимание уделяется не самим результатам, а выводам, сделанным на их основе, и тому, как они сравниваются с другими методами.
Я не чувствую себя квалифицированным, чтобы задавать эти вопросы. Я призываю людей, которые так думают, описывать свои опасения в комментариях. Я не чувствую себя квалифицированным, чтобы задавать эти вопросы. Я призываю людей, которые так думают, описывать свои опасения в комментариях.
в заключении
Репрезентативная перспектива глубокого обучения — это мощная перспектива, которая, кажется, объясняет, почему глубокие нейронные сети настолько эффективны. В дополнение к этому, я думаю, есть еще одна замечательная вещь: почему нейронные сети работают? Потому что лучший способ представления данных может выйти за рамки оптимизированной иерархической модели.
Глубокое обучение — очень молодая область, в которой теория еще недостаточно устоялась, а перспективы быстро меняются. Сказав это, у меня сложилось впечатление, что взгляд на нейронные сети, ориентированный на производительность, сейчас популярен.
В этом посте рассматривается множество интересных исследований, которые я нашел, но моя главная мотивация — подготовить почву для будущего поста, исследующего связи между глубоким обучением, теорией типов и функциональным программированием. Если вам интересно, вы можете подписаться на мойНовостная лента, чтобы вы могли увидеть его, когда он будет опубликован.
(Мне бы хотелось услышать ваши комментарии и мысли: вы можете оставить комментарий внутри или в конце. В случае опечаток, технических ошибок или разъяснений, которые вы хотели бы видеть, мы рекомендуем вам комментироватьgithubИнициируйте запрос на вытягивание. )
Спасибо
Я благодарю Элиану Лорх, Йошуа Бенжио, Майкла Нильсена, Лору Болл, Роба Гилсона и Джейкоба Стейнхардта за их комментарии и поддержку.
- когда у тебя есть
входных нейронов, построение случая для каждого возможного входа требует
скрытый нейрон. На самом деле ситуация обычно не так уж и плоха. У вас могут быть случаи с несколькими входами. Вы можете добавлять перекрывающиеся случаи вместе, чтобы добиться правильного ввода на их пересечении.
- (Сети персептрона не только общие. Сети сигмовидных нейронов (и других функций активации) также являются общими: при наличии достаточного количества скрытых нейронов они могут хорошо аппроксимировать произвольные непрерывные функции. Это гораздо труднее увидеть, потому что нельзя просто изолировать Вход)
- Вложения слов первоначально появились в (Бенжио и др., 2001 г.;Бенжио и др., 2003 г.), за несколько лет до обновления глубокого обучения 2006 года, когда нейронные сети устарели. Идея распределенного символьного представления еще старше, например:
(Хинтон 1986). - новаторская бумага,Нейронно-вероятностные языковые модели (Бенжио и др.).
(2003) имеют много идей о том, почему встраивание слов является мощным. - Предыдущая работа моделировала совместное распространение меток и изображений, но использовала совсем другую точку зрения.
- Я прекрасно понимаю, что биологические индикаторы пола могут вводить в заблуждение. Я не имею в виду, что все лысые — мужчины или все, у кого есть грудь, — женщины. Просто они, как правило, показывают это и значительно корректируют наши априорные предположения.