Ландшафт исследований в области глубокого обучения

МЕНЮ


Искусственный интеллект. Новости
Поиск

ТЕМЫ


Внедрение ИИНовости ИИРобототехника, БПЛАПсихологияТрансгуманизмЛингвистика, обработка текстаБиология, теория эволюцииВиртулаьная и дополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информации

RSS


RSS новости

Авторизация



Новостная лента форума ailab.ru

Нейрофизиолог Михаил Бурцев о компьютерном зрении, рекуррентных нейронных сетях и комбинации разных методов обучения нейронных сетей:

Фактически сегодня существует три крупных направления исследований: первое связано с компьютерным зрением и обработкой изображений, второе — с работой с последовательностями и с временными рядами, а третье — с задачами управления и обучения какому-то поведению.

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

Задача ставится так, что у нас есть набор изображений (или видео, разбитое на кадры), и нам нужно определить, что находится на изображении для заданного числа классов: различные породы собак или различные дорожные знаки. Когда у нас есть изображения, на которых присутствует объект, относящийся к тому или иному классу, на их примерах мы тренируем алгоритм правильно предсказывать класс. Для решения этой задачи очень хорошо подходят сети, построенные на нейронах, которые реализуют функцию свертки. Например, у нас может быть свертка, которая детектирует усы у собак. Тогда, построив карту признаков и пройдя этой сверткой по всему изображению, мы получим максимальное значение функции свертки в тех местах, где на изображении находятся усы. Взяв много таких фильтров и инициализировав их случайными значениями, в процессе обучения мы будем подстраивать паттерны, которые мы ищем, в сторону лучшего детектирования все более и более информативных признаков. В конце концов окажется, что часть этих сверток настроилась на один тип признаков, часть на другой. Постепенно, обобщая и беря их на разных пространственных масштабах, мы получаем такое векторное сжатое представление нашей картинки, по которому алгоритм может легко определить, к какому классу относится объект.

Стоит сказать о приложениях, которые есть у этой области, для чего это используется. Сверточные сети используются сегодня практически повсеместно. В фотоальбоме на Google, куда вы загружаете фотографии, все изображения обрабатываются сверточными сетями, и вы потом можете в своем альбоме искать. Например, если у вас есть фотографии, на которых изображены дома, и вы наберете в поиске «дома», то, хотя вы никаким образом не помечали ваши фотографии, вы увидите фотографии, на которых есть дома. Или какие-то другие объекты. То есть это одно из очевидных применений нейронных сетей в компьютерном зрении.

Есть и более интересные применения. Например, есть эксперименты по описанию того, что происходит на изображении. То есть вы на вход подаете картинку, а нейронная сеть генерирует описание, предложение, которое описывает это изображение. Или вы можете задать нейросети вопрос, что изображено на заднем плане этой картинки, и она вам может ответить: «Магазин».

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

Если мы будем в лоб решать задачу предсказания последовательностей при помощи стандартных методов нейронных сетей, так называемых сетей прямого распространения, то окажется, что нам это не так просто сделать, потому что мы ограничены глубиной последовательности, длиной последовательности, которую мы можем подать на вход нашей нейронной сети. Сети прямого распространения в принципе не могут содержать информацию о предыдущих значениях нашего временного ряда. То есть они всегда отталкиваются только от того, что подано на вход им в данный момент. Если мы генерируем текст, мы хотим предсказать следующее слово не только на основании того слова, которое мы увидели последним, но и на основании многих слов, которые были перед этим. Чтобы предсказать слово, нам нужно понимать вообще, о чем идет речь, а также содержание текста в целом. Если мы будем подавать на вход стандартной нейросети по одному слову, то она не будет очень хорошо решать задачу, потому что она не знает всего контекста.

Чтобы учесть контекст, необходимо добавить память в нашу нейросеть. И это можно сделать, если мы будем подавать на вход нейросети не только текущее состояние задачи, но и свою собственную активность, то есть активность нейросети на предыдущих моментах времени. То есть таким образом нейросеть будет видеть, с одной стороны, то, что она сама думала на предыдущем такте, а с другой стороны, она будет видеть текущую ситуацию. Она будет иметь возможность как бы учесть свои предыдущие состояния и предыдущие состояния нашего временного ряда в своем прогнозе. Подача информации на вход самой себя как раз и обусловила название этой архитектуры нейронных сетей, потому что рекуррентная нейронная сеть, и это и есть рекуррентная связь.

Оказалось, что такие нейросети можно успешно использовать для предсказания временных последовательностей. Что самое удивительное, что в принципе для обучения этих нейронных сетей также подходит алгоритм обучения, который используется и для стандартных нейронных сетей, — алгоритм обратного распространения ошибки, когда мы, предсказывая какой-то следующий элемент, подстраиваем веса нашей нейронной сети так, чтобы минимизировать ошибку при данном входе. Но, в отличие от стандартных сетей прямого распространения, здесь эта ошибка распространяется не только на последний вход нейросети, но и на некоторое число предыдущих входов. То есть мы ошибку распространяем вглубь времени, и это позволяет нам в предсказании учесть те состояния нашей последовательности или временного ряда, которые мы наблюдали до этого.

Нейросети сейчас применяются для задач моделирования языка. Это значит, что мы, когда по последовательности слов пытаемся предсказать следующее слово в задачах машинного перевода, последовательность слов во входном предложении сначала кодируем, последовательно подавая на вход нашей нейронной сети, а затем декодируем при помощи рекуррентной сети, когда она помнит уже переведенное слово, которое она выдавала на предыдущем такте времени.

Третье крупное направление — это обучение с подкреплением. Здесь уже немного меняется сама постановка задачи. И если в предыдущих случаях мы всегда имели некоторый пример, на котором мы учимся, или большое число таких примеров, то в обучении с подкреплением мы не даем сети правильного решения для каждого ее входа, а лишь даем ей сигнал того, насколько это решение приближает нас к цели или нет. В этом случае мы задаем некоторую функцию, определяющую цель нашего агента, нашей нейросети, так называемую функцию подкрепления, которая говорит, что в какие-то моменты агент получает награду, свидетельствующую о том, что он продвигается в сторону улучшения решения. И используя этот сигнал о том, хорошо он действует или плохо, он адаптируется, пытается найти такие действия, такие свои выходы, которые и максимизируют эту получаемую награду.

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

Если мы будем говорить о приложениях в области обучения с подкреплением, то это самые впечатляющие и самые громкие события в области искусственного интеллекта, о которых мы слышали за последнее время. Первое — когда компьютер обыграл в го чемпиона мира. Там используется компьютерное зрение, для того чтобы распознать признаки той или иной позиции на доске. По этим признакам предсказывалась ожидаемая награда для данной ситуации, потом обучение с подкреплением как раз позволяло спрогнозировать, в какие нам позиции нужно идти, а в какие позиции нам не нужно ходить в будущем.

Другое применение — можно построить алгоритм, который научится играть в сорок разных игр Atari лучше, чем человек. При этом на вход алгоритма подается только картинка, изображение с монитора, очки. Ни о каких правилах игры алгоритм ничего не знает. И он только по очкам учится выбирать правильные действия, управлять джойстиком и агентом, для того чтобы максимизировать набранные очки. Он может выучить для большинства игр, как в них нужно себя вести и как нужно управлять агентом даже лучше человека.

Глубокое обучение как направление исследований выделилось лет пять назад. Сначала было две четких области: компьютерное зрение и сверточные нейронные сети и последовательности и рекуррентные нейронные сети. Потом к ним добавилось обучение с подкреплением, которое частично интегрировало эти области. И сейчас мы видим, что происходит перекрестное переиспользование методов. Зачастую для решения задач анализа последовательности используют сверточные нейронные сети, и результаты сопоставимы с тем, что получают рекуррентные нейронные сети. Кто-то пытается использовать рекуррентные нейронные сети для задач анализа изображений. Для того чтобы делать каких-то интеллектуальных агентов, которые обладают поведением, нам необходимо скомбинировать все эти методы: и сверточные нейронные сети, и обучение с подкреплением, и рекуррентные нейронные сети.


Источник: postnauka.ru