![]() |
![]() |
![]() |
|||||
![]() |
LSTM – сети долгой краткосрочной памяти |
||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-06-21 14:04 ![]() Рекуррентные нейронные сети Люди не начинают думать с чистого листа каждую секунду. Читая этот пост, вы понимаете каждое слово, основываясь на понимании предыдущего слова. Мы не выбрасываем из головы все и не начинаем думать с нуля. Наши мысли обладают постоянством. Традиционные нейронные сети не обладают этим свойством, и в этом их главный недостаток. Представим, например, что мы хотим классифицировать события, происходящие в фильме. Непонятно, как традиционная нейронная сеть могла бы использовать рассуждения о предыдущих событиях фильма, чтобы получить информацию о последующих. Решить эту проблемы помогают рекуррентые нейронные сети (Recurrent Neural Networks, RNN). Это сети, содержащие обратные связи и позволяющие сохранять информацию. ![]() На схеме выше фрагмент нейронной сети Обратные связи придают рекуррентным нейронным сетям некую загадочность. Тем не менее, если подумать, они не так уж сильно отличаются от обычных нейронных сетей. Рекуррентную сеть можно рассматривать, как несколько копий одной и той же сети, каждая из которых передает информацию последующей копии. Вот, что произойдет, если мы развернем обратную связь: ![]() То, что RNN напоминают цепочку, говорит о том, что они тесно связаны с последовательностями и списками. RNN – самая естественная архитектура нейронных сетей для работы с данными такого типа. И конечно, их используют для подобных задач. За последние несколько лет RNN с невероятным успехом применили к целому ряду задач: распознавание речи, языковое моделирование, перевод, распознавание изображений… Список можно продолжать. О том, чего можно достичь с помощью RNN, рассказывает отличный блог-пост Андрея Карпатого (Andrej Karpathy) The Unreasonable Effectiveness of Recurrent Neural Networks. Немалая роль в этих успехах принадлежит LSTM – необычной модификация рекуррентной нейронной сети, которая на многих задачах значительно превосходит стандартную версию. Почти все впечатляющие результаты RNN достигнуты именно с помощью LSTM. Им-то и посвящена наша статья. Проблема долговременных зависимостей Одна из привлекательных идей RNN состоит в том, что они потенциально умеют связывать предыдущую информацию с текущей задачей, так, например, знания о предыдущем кадре видео могут помочь в понимании текущего кадра. Если бы RNN обладали такой способностью, они были бы чрезвычайно полезны. Но действительно ли RNN предоставляют нам такую возможность? Это зависит от некоторых обстоятельств. Иногда для выполнения текущей задачи нам необходима только недавняя информация. Рассмотрим, например, языковую модель, пытающуюся предсказать следующее слово на основании предыдущих. Если мы хотим предсказать последнее слово в предложении “облака плывут по небу”, нам не нужен более широкий контекст; в этом случае довольно очевидно, что последним словом будет “небу”. В этом случае, когда дистанция между актуальной информацией и местом, где она понадобилась, невелика, RNN могут обучиться использованию информации из прошлого. ![]() К сожалению, по мере роста этого расстояния, RNN теряют способность связывать информацию. ![]() К счастью, LSTM не знает таких проблем! Сети LSTM Долгая краткосрочная память (Long short-term memory; LSTM) – особая разновидность архитектуры рекуррентных нейронных сетей, способная к обучению долговременным зависимостям. Они были представлены Зеппом Хохрайтер и Юргеном Шмидхубером (J?rgen Schmidhuber) в 1997 году, а затем усовершенствованы и популярно изложены в работах многих других исследователей. Они прекрасно решают целый ряд разнообразных задач и в настоящее время широко используются. LSTM разработаны специально, чтобы избежать проблемы долговременной зависимости. Запоминание информации на долгие периоды времени – это их обычное поведение, а не что-то, чему они с трудом пытаются обучиться. Любая рекуррентная нейронная сеть имеет форму цепочки повторяющихся модулей нейронной сети. В обычной RNN структура одного такого модуля очень проста, например, он может представлять собой один слой с функцией активации tanh (гиперболический тангенс). ![]() Структура LSTM также напоминает цепочку, но модули выглядят иначе. Вместо одного слоя нейронной сети они содержат целых четыре, и эти слои взаимодействуют особенным образом. ![]() Не будем пока озадачиваться подробностями. Рассмотрим каждый шаг схемы LSTM позже. Пока познакомимся со специальными обозначениями, которыми мы будем пользоваться. ![]() На схеме выше каждая линия переносит целый вектор от выхода одного узла ко входу другого. Розовыми кружочками обозначены поточечные операции, такие, как сложение векторов, а желтые прямоугольники – это обученные слои нейронной сети. Сливающиеся линии означают объединение, а разветвляющиеся стрелки говорят о том, что данные копируются и копии уходят в разные компоненты сети. Основная идея LSTM Ключевой компонент LSTM – это состояние ячейки (cell state) – горизонтальная линия, проходящая по верхней части схемы. Состояние ячейки напоминает конвейерную ленту. Она проходит напрямую через всю цепочку, участвуя лишь в нескольких линейных преобразованиях. Информация может легко течь по ней, не подвергаясь изменениям. ![]() Фильтры позволяют пропускать информацию на основании некоторых условий. Они состоят из слоя сигмоидальной нейронной сети и операции поточечного умножения. ![]() В LSTM три таких фильтра, позволяющих защищать и контролировать состояние ячейки. Пошаговый разбор LSTM Первый шаг в LSTM – определить, какую информацию можно выбросить из состояния ячейки. Это решение принимает сигмоидальный слой, называемый “слоем фильтра забывания” (forget gate layer). Он смотрит на Вернемся к нашему примеру – языковой модели, предсказывающей следующее слово на основании всех предыдущих. В этом случае состояние ячейки должно сохранить существительного, чтобы затем использовать местоимения соответствующего рода. Когда мы видим новое существительное, мы можем забыть род старого. ![]() В нашем примере с языковой моделью на этом шаге мы хотим добавить род нового существительного, заменив при этом старый. ![]() Мы умножаем старое состояние на В случае нашей языковой модели это тот момент, когда мы выбрасываем информацию о роде старого существительного и добавляем новую информацию. ![]() Мы, возможно, захотим, чтобы наша языковая модель, обнаружив существительное, выводила информацию, важную для идущего после него глагола. Например, она может выводить, находится существительное в единственном или множественном числе, чтобы правильно определить форму последующего глагола. ![]() Вариации LSTM Мы только что рассмотрели обычную LSTM; но не все LSTM одинаковы. Вообще, кажется, что в каждой новой работе, посвященной LSTM, используется своя версия LSTM. Отличия между ними незначительны, но о некоторых из них стоит упомянуть. Одна из популярных вариаций LSTM, предложенная Герсом и Шмидхубером (Gers & Schmidhuber, 2000), характеризуется добавлением так называемых “смотровых глазков” (“peephole connections”). С их помощью слои фильтров могут видеть состояние ячейки. ![]() Другие модификации включают объединенные фильтры “забывания” и входные фильтры. В этом случае решения, какую информацию следует забыть, а какую запомнить, принимаются не отдельно, а совместно. Мы забываем какую-либо информацию только тогда, когда необходимо записать что-то на ее место. Мы добавляем новую информацию с состояние ячейки только тогда, когда забываем старую. ![]() ![]() Какой же вариант лучший? Какую роль играют различия между ними? Клаус Грефф (Klaus Greff) и соавторы приводят хорошее сравнение самых популярных вариаций LSTM и в своей работе приходят к выводу, что они все приблизительно одинаковы. Рафал Йозефович (Rafal Jozefowicz, et al) в своей работе 2015 года протестировали более десяти тысяч архитектур RNN и нашли несколько решений, работающих на определенных задачах лучше, чем LSTM. Заключение Ранее мы упоминали о выдающихся результатах, которые можно достигнуть с использованием RNN. В сущности все эти результаты были получены на LSTM. На большинстве задач они действительно работают лучше. LSTM, записанные в виде системы уравнений выглядят довольно устрашающе. Надеемся, что пошаговый разбор LSTM в этой статье сделал их более доступными. LSTM – большой шаг в развитии RNN. При этом возникает естественный вопрос: каким будет следующий большой шаг? По общему мнению исследователей, следующий большой шаг – «внимание» (attention). Идея состоит в следующем: каждый шаг RNN берет данные из более крупного хранилища информации. Например, если мы используем RNN для генерации подписи к изображению, то такая RNN может рассматривать изображение по частям и на основании каждой части генерировать отдельные слова. Работа Келвина Ксу (Xu, et al., 2015), посвященная как раз такой задаче, может служить хорошей отправной точкой для тех, кто хочет изучить такой механизм, как «внимание». Исследователям уже удалось достичь впечатляющих результатов с использованием этого принципа, и, кажется, впереди еще много открытий… Внимание — не единственная интересная область исследований в RNN. Например, Grid LSTM, описанные в работе Kalchbrenner, et al. (2015), кажутся весьма многообещающими. Исследования использования RNN в порождающих моделях (Gregor, et al. (2015), Chung, et al. (2015) или Bayer & Osendorfer (2015) также чрезвычайно интересны. Последние несколько лет — время расцвета рекуррентных нейронных сетей, и следующие годы обещают принести еще большие плоды.
Источник: habrahabr.ru ![]() Комментарии: |
||||||