Объясняем нейронные сети без математики

Рассказываем о нейронных сетях Искусственный интеллект
Технология, которая помогает компьютерам обыгрывать чемпиона мира по шахматам и рисовать, как Пикассо.

Перевод статьи Офира Танза с TechCrunch. Перевела Надежда Борисова

Термин «нейронная сеть» можно увидеть почти в любой статье про искусственный интеллект. Нейронные сети построены по принципу работы мозга и позволяют компьютеру учиться на информации, которую мы ему скармливаем.

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

В этом материале мы постараемся дать вам базовое понимание глубинного обучения. Глубоко погружаться в математику не будем, все объясним на примерах из обычной жизни.

«Думать» с помощью перебора вариантов

Один из первых подходов к ИИ был таким. Ученые предполагали: если в мощный компьютер загрузить огромный массив информации и дать ему столько направлений для анализа данных, сколько возможно, то компьютер сможет «думать». Эта идея легла в основу создания шахматного суперкомпьютера Deep Blue. Инженеры IBM тогда загрузили в систему все известные стратегии и возможные ходы, добавили достаточно мощности, и в итоге машина в 1997 году обыграла тогдашнего чемпиона мира Гарри Каспарова.

В данном случае компьютер полагается на заранее прописанные правила: если так, то так, если оппонент делает такой ход — отвечай так. То есть это совсем не то гибкое обучение, к которому способны люди. Это серьезные вычисления, но это не мыслительный процесс как таковой.

Научить компьютер учиться

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

Компьютеры такие же, как мы

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

Источник: GumGum

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

Так, распознавание изображений основано на сверточной нейронной сети. Она так называется из-за математической операции «свертки», которую она использует для анализа изображений. Сеть выявляет частично скрытые объекты или те, которые видны только под определенным углом. Есть и другие типы нейронных сетей, но для распознавания изображений они подходят хуже, так что ниже речь пойдет о сверточной сети.

Как обучается нейронная сеть

Есть очень простая и при этом эффективная процедура под названием «Обучение с учителем». Мы даем компьютеру большой объем данных и верные ярлыки для них, чтобы система проверяла сама себя.

Возьмем для примера картинки с яблоками и апельсинами. Изображения фруктов — это данные, «яблоко» и «апельсин» — это ярлыки. Система получает изображения и раскладывает их на базовые категории по углам, текстурам, форме. Затем эти категории складываются в более абстрактные концепции: кривые линии, разные цвета, а затем становится понятно, что это: ветка, апельсин, зеленое или красное яблоко.

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

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

Слои нейронной сети

Обычно в сверточной нейронной сети между входным и выходным слоями есть еще четыре:

  • слой свертки;
  • слой активации;
  • пулинг, или слой подвыборки;
  • полносвязная сеть.

Слой свертки

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

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

Самое крутое то, что все эти фильтры не заданы изначально вручную — как было, например, в Deep Blue. Фильтры учатся и настраиваются только благодаря изучению данных.

Слой свертки создает карты изображения. Каждая карта касается определенной особенности: здесь нейроны увидели что-то красное, здесь — черенок, здесь круглые формы, похожие на те, что есть у яблока. Но это достаточно грубый фильтр, и нужна вторая пара глаз, которая посмотрит внимательнее и проверит, что ничего не упустили.

Слой активации

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

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

Слой подвыборки (Pooling)

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

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

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

Источник: GumGum

Полносвязная сеть

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

Если система уже немного обучилась и у нее достаточно точные предсказания, а мы «скормили» ей изображение яблока, скорее всего на картах изображения будет много характеристик яблока. Дальше за работу берутся выходные нейроны. Задача яблочного и апельсинового нейрона — проголосовать за «свои» признаки. Если яблочный нейрон считает, что на определенной карте много яблочных признаков, он отдает за нее много голосов. Нейроны голосуют за каждую карту, и неважно, что на ней изображено. Апельсиновый не увидит на этой карте много признаков апельсина, и его голосов будет совсем немного.

В итоге тот выходной нейрон, который отправил больше голосов, считается ответом. В нашем случае это будет яблочный нейрон. Итоговое значение определяется в процентах. Если сеть уже чему-то научилась, ее результат может быть «на 75% яблоко, на 25% апельсин». А если это только начало обучения, нейронная сеть может счесть, что на картинке только 20% яблока и 80% апельсина.

Источник: GumGum

Если с первого раза не получилось, пробуем снова и снова

На ранних стадиях такие неверные предположения возникают очень часто. Но благодаря тому, что данные для обучения размечены (вот это — яблоко, а это — апельсин), нейронная сеть может понять, где и как произошла ошибка, и изменить процесс распознавания. Это называется «метод обратного распространения ошибки». Предыдущий слой получает сообщение о том, насколько он был далек от правильного ответа. Этот слой передает информацию дальше, как в игре про испорченный телефон, пока не дойдет до слоя свертки. Здесь вносят изменения и поправки, чтобы каждый нейрон точнее распознавал информацию.

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

Оцените статью
Ридер
Добавить комментарий