Содержание статьи
Новости о нейронных сетях появляются каждый день. То сети научились определять пол и возраст людей по фотографии, то обыграли человека в очередную настольную игру, то начали генерировать научные тексты, код приложений и писать картины в духе Сальвадора Дали. А завтра Скайнет отберет у тебя работу, автомобиль, жизненное пространство, а тебя самого... нет, не утилизирует, а удобно разместит на диване и заставит ничего не делать, наслаждаясь безусловным доходом. Или все-таки нет?
Рождение мифа
Исследователи и компании, которые работают с большими объемами данных, применяют нейросети еще с восьмидесятых годов, а вот рядовые земляне обращают внимание на прогресс в этой области только после показательных побед машин над людьми. Deep Blue обыграл Каспарова! Watson обошел людей в Jeopardy! А теперь гугловский AlphaGo победил Ли Седоля — одного из лучших игроков в го на сегодняшний день.
Последний случай особенно интересен. Выигрышную стратегию в го просто невозможно запрограммировать традиционными методами. Количество вероятных комбинаций уже после первого хода здесь равно 129 960 (в шахматах, для сравнения, — четыреста), а за весь матч их набирается больше, чем атомов во Вселенной. Алгоритм просчета ходов не в состоянии продумать все возможные комбинации и проигрывает профессиональным игрокам, которые полагаются на интуицию, выработанную годами тренировок.
![Ли Седоль vs. AplhaGo](https://xakep.ru/wp-content/uploads/2016/06/1466137451_2833_alphago.jpg)
У AlphaGo есть если не интуиция, то кое-что очень на нее похожее. Система долгое время обучалась на сотнях тысяч сыгранных людьми партий и играла сама с собой. Она научилась «чувствовать» перспективные ходы и уже на их основе прогнозирует игру на несколько ходов вперед. То есть программа переняла ту человеческую черту, которую люди используют ежесекундно, а вот переложить в алгоритм затрудняются.
С легкой руки журналистов AlphaGo превратилась из банальной нейронной сети, описанной еще шестьдесят лет назад, в Искусственный Интеллект, которому недалеко и до обретения самосознания. На самом деле это, конечно же, не так. AlphaGo — это более-менее стандартный пример многослойной нейронной сети, которая способна эффективно решать одну конкретную задачу. Присущая ей «интуиция» — это известное свойство системы, обученной на множестве примеров. Однако считать нейронные сети чересчур разрекламированной игрушкой тоже не стоит.
Перцептрон и триста пород собак
Впервые идею искусственной нейронной сети предложил нейрофизиолог Фрэнк Розенблатт в 1957 году и реализовал ее в нейрокомпьютере «Марк-1» в 1960-м. Математическая модель такой сети получила имя «перцептрон», а само устройство представляло собой небольшой компьютер, снабженный табло из нескольких сотен фотоэлементов. Показывая компьютеру изображения, а затем корректируя весовые коэффициенты связей искусственных нейронов, можно было научить нейронную сеть распознавать геометрические фигуры и некоторые буквы алфавита.
По нынешним временам «Марк-1» — это игрушка. К тому же она страдала от множества проблем: к примеру, изображения не распознавались при деформации или повороте. Сейчас понятно, что при тогдашнем уровне вычислительной мощности многие вещи просто нельзя было реализовать. Перцептроны интересны скорее с исторической точки зрения — реальных задач они не решали. В 1969 году Марвин Минский и Сеймур Паперт описали эти опыты в книге «Перцептроны», после чего исследования в области нейросетей были свернуты в пользу, как тогда казалось, более перспективных символьных вычислений.
![Фрэнк Розенблатт и перцептрон](https://xakep.ru/wp-content/uploads/2016/06/1466137473_3dae_frank.jpg)
Новый всплеск интереса к нейронным сетям произошел лишь в 1986 году, когда появился способ машинного обучения по методу обратного распространения ошибки. Он позволил существенно повысить скорость и качество обучения нейросетей. Однако вычислительные ресурсы все еще были ограничены, да и действительно больших объемов данных для обучения нейросетей не было. Поэтому они существовали в основном как исследовательские проекты и применялись для решения очень ограниченного круга задач. Таких, которые не требуют слишком много мегагерцев или мегабайтов, — к примеру, распознавание текста.
В 2012 году произошло событие, которое коренным образом изменило отношение к нейросетям. Сеть SuperVision, разработанная в Торонтском университете, с большим отрывом выиграла конкурс распознавания объектов на изображениях ImageNet LSVRP (Large-Scale Visual Recognition Challenge). Число ее ошибок составило 16,4%, тогда как программа, занявшая второе место, ошибалась в 26% случаев. Для сравнения: человек делает ошибки в 5% случаев. Но удивительнее всего было то, что для предварительного обучения сети использовался не кластер, а обычный компьютер с двумя видеокартами NVIDIA. Тренировка заняла около недели.
Это был первый случай, когда нейросеть превзошла классические алгоритмы машинного зрения в очень сложном и специфичном тесте. База изображений включала в себя не только простые объекты вроде автомобилей, автобусов, столов и стульев, но еще и триста пород собак, из которых два десятка — разновидности терьеров.
Звучит курьезно? Пожалуй. Но вот что важно: тебе никогда не узнать столько пород собак, а машина их уверенно распознает. И речь не о каком-то огромном компьютере IBM, а о системе вроде тех, что собирают себе любители игр с крутой графикой.
Назад в будущее
SuperVision не случайно стала символом новой эры нейронных сетей. Классификация изображений — нечто гораздо более сложное и высокоуровневое, чем просто разбор буковок на бумаге. Сказать, что отличает букву А от всех остальных букв алфавита, сможет даже ребенок, но попробуй с ходу рассказать об отличительных признаках, допустим, облака. В чем конкретно его разница по сравнению с остальными объектами, которые ты видишь? В голову приходят слова «белый», «небо», «кучевые» и так далее. Это множество параметров, о каждом из которых тоже нужно иметь представление. Что такое «белый»? А «небо»?
Сейчас эту задачу решают при помощи метода Deep Learning (глубинное обучение), суть которого в том, чтобы объединить в сеть большое количество слоев нейронов (в SuperVision их было пять, в современных сетях доходит до сотен). Получается что-то вроде иерархии абстракций. А потом сети скармливаются примеры, по которым она «видит», как выглядит облако в различных ситуациях, и может понять, как его идентифицировать. В случае ошибки система перенастраивает сама себя.
Метод опробованный и действенный, но, чтобы он работал, должно соблюдаться два требования. Во-первых, примеров должно быть действительно много. Не сотни и даже не тысячи, а десятки и сотни тысяч, и чем больше, тем лучше будут результаты. Во-вторых, сеть должна быть действительно большой и состоять из сотен тысяч или даже миллионов нейронов, объединенных во множество слоев. В процессе обучения такого ИИ примеры прогоняются через всю сеть с постоянной коррекцией ошибок. Требования к вычислительным мощностям получаются соответствующие.
Раньше подобные задачи пытались решить с помощью кластеров из тысяч машин. К примеру, в Google делали нейросеть, которая работала на 16 тысячах процессорных ядер. Что, конечно же, делало ее использование совершенно нерентабельным.
В 2014 году в Google предприняли новую попытку и на этот раз использовали глубинное обучение. Результатом стала сеть GoogLeNet из 22 слоев, которая, по словам авторов, так же как и SuperVision, может быть обучена на нескольких высококлассных GPU за неделю. На конкурсе ImageNet гугловская сеть показала себя великолепно: число ошибок снизилось до 6,7%. Почти как у человека!
Если ты думаешь, что это впечатляет, то ты не знаешь последних новостей. Сегодняшние нейросети распознают объекты не только не хуже, но даже лучше человека, а также умеют рассказывать, что изображено на фотографии. Еще в конце 2014 года исследователи из Google и Стэнфордского университета показали нейросеть, способную генерировать осмысленные подписи к фотографиям. Даже несмотря на большой процент ошибок, это впечатляло.
Позже Андрей Карпатый из Стэнфордского университета опубликовал исходный код нейросети neuraltalk2, которая уже намного лучше угадывала сюжет изображения. Причем настолько лучше, что с ее помощью удалось записать видеоролик, в котором описания появлялись на экране практически моментально:
Как ты думаешь, где сегодня применяются данные технологии? Правильно, в поисковых движках. Здесь они заменили примитивный и часто некорректный алгоритм оценки содержания изображения на основе окружающего его текста (если в статье про котов есть изображение, то, наверное, на нем кот). В Google нейросети уже используют не только для классификации изображений из интернета, но и в недавно открытом сервисе Google Photos.
Если ты используешь смартфон с Android, то ты наверняка пользователь Google Photos. На первый взгляд это ничем не примечательная галерея с автоматической загрузкой фотографий в облако. Но если ты откроешь раздел поиска, то увидишь, что гугловский алгоритм собрал для тебя фотографии по ключевым словам. Ты можешь сделать запрос и посмотреть, как глубокая нейросеть распознала объекты на твоих фотках.
![Поиск изображений в Google Photo](https://xakep.ru/wp-content/uploads/2016/06/1466137523_430c_google-photo.png)
Facebook тоже не отстает, но его нейросеть более узкоспециализированная. Она предназначена для распознавания лиц, причем довольно изощренным способом — с помощью создания 3D-модели лица из фотографии. О том, зачем это нужно, я думаю, говорить не стоит.
А вот зачем нужна сеть, которая угадывает возраст и настроение человека, — это уже вопрос поинтереснее. Речь, конечно, идет о нашумевших сервисах Microsoft How-Old.net и Emotion Recognotion. Конечно, в них тоже использованы нейросети.
![Восемь шагов работы DeepFace](https://xakep.ru/wp-content/uploads/2016/06/1466137537_bf92_deepface.jpg)
Отличились и наши соотечественники. Нашумевший сервис FindFace, особо любимый публикой с «Двача», которая с ее помощью разоблачает порноактрис, базируется на разработках российской же компании NTechLAB. В 2015 году эта программа заняла первое место в международном конкурсе The MegaFace Benchmark. То есть выиграла у аналогов Facebook и Google.
Думаю, ты слышал и о DeepArt, сервисе, который позволяет взять стиль одного изображения и применить его к другому. Берешь в качестве первого изображения картину известного художника, а в качестве второго — собственную фотку, вот и готов автопортрет в стиле Ван Гога, но с обоими ушами. Алгоритм настолько хорош, что далекий от искусства человек не всегда сможет отличить подделку от оригинала. Можешь проверить себя и пройти тест «Ван Гог или робот», созданный «Медузой» в кооперации с «Яндексом».
А что, если пойти дальше и в качестве второго изображения взять не фотографию, а мазню двухлетнего ребенка? Сможет ли нейросеть сделать из нее произведение искусства? В каком-то смысле — да. Выложенная в открытый доступ обученная нейросеть neural-doodle делает именно это. Открываешь Paint, двадцать секунд малюешь и скармливаешь оба изображения скрипту doodle.py. Остается подождать, пока машина сделает шедевр из твоей мазни.
![Освоил Paint — стал Ренуаром](https://xakep.ru/wp-content/uploads/2016/06/1466137553_104b_neural-doodle.jpg)
Ну и конечно же, если что-то работает с картинками, то фокус можно повторить и с видеороликами. Сотрудники Фрайбургского университета взяли ту самую нейронную сеть VGG из предыдущих экспериментов, дополнили ее алгоритмом для отбраковки чрезмерных отличий между соседними кадрами и получили мультфильмы, нарисованные Ван Гогом и Мунком:
Производительность системы: один кадр с разрешением 1024 × 463 за три минуты при обработке одновременно на основном и графическом процессорах.
Ты и сам можешь опробовать описанные алгоритмы в действии, и для этого совсем не обязательно разворачивать нейросеть у себя на компе. Кроме DeepArt, есть и другие онлайновые сервисы, которые к тому же работают намного быстрее. Например, Instapainting и российский Ostagram. Развлекайся!
Не только картинки
Неужели нейросети годятся только для поиска и обработки изображений? Конечно, нет. Второй наглядный пример использования нейросетей — это распознавание речи. В 2011 году в Google перевели сервис Google Voice Search (сейчас он входит в Google Now) на нейросети и получили снижение ошибок распознавания на 25%. В 2014 году то же самое в Apple сделали с Siri, а спустя полгода в Microsoft запустили функцию мгновенного перевода речи в Skype. И она тоже базируется на нейросети.
Еще одно перспективное направление — это семантическое распознавание и синтез текста, то есть вычленение из поданного на вход текста смысла и возврат вразумительного ответа. Такая функция уже используется в Google Inbox для генерации автоответов. В Google постоянно работают над улучшением нейросети, в том числе скармливая системе тексты любовных романов.
Уже упомянутый Андрей Карпатый в прошлом году опубликовал свои исследования на схожую тему. Ему удалось получить бессмысленный, но на первый взгляд правдоподобно выглядящий научный текст.
![Псевдонаучный текст, сгенерированный нейросетью](https://xakep.ru/wp-content/uploads/2016/06/1466137568_3f41_text1.jpeg)
Примерно в то же время свое исследование опубликовали сотрудники Google. Они попытались научить нейросеть выполнять обязанности оператора службы поддержки, и, судя по приведенным примерам диалогов с пользователем, это у них неплохо получилось. Сеть действительно помогла пользователю решить проблему. Но следует, конечно же, сделать скидку на то, что проблема была очень простая и часто встречающаяся.
![Фрагмент диалога роботизированной службы поддержки с пользователем](https://xakep.ru/wp-content/uploads/2016/06/1466137578_211b_text2.png)
Нейросетям по плечу и некоторые компьютерные игры. Ребята из подразделения Google DeepMind, прославившиеся своей сетью DeepArt и той самой сетью AlphaGo, еще в начале прошлого года создали ИИ, который самостоятельно научился играть в 49 классических игр с Atari и победил лучших игроков в 22 из них. При этом сеть не была встроена внутрь игры и ориентировалась только по изображению — как и обычный игрок.
![В большинстве игр нейросеть значительно превзошла человека](https://xakep.ru/wp-content/uploads/2016/06/1466137588_eab5_games.png)
Примитивных игровых ботов раньше писали и без глубинных нейросетей. К примеру, Super Mario проходится при помощи обычного алгоритма поиска пути (он еще называется A*). Важно то, что нейросеть сама учится распознавать объекты на экране и приспосабливается под правила любой игры — будь то платформер или, к примеру, Asteroids:
Еще интереснее наблюдать, как глубинные нейросети приспосабливают для более интеллектуальных игр. Последний эксперимент Google — попытка научить нейросеть разбирать текст на картах Magic the Gathering и Hearthstone. Эти тексты сообщают игроку, как сработает та или иная карта после того, как он сыграет ее. Поэтому, чтобы научиться играть, нейросеть первым делом пытается перевести эти правила в программный код.
![Карты из Hearthstone в интерпретации нейросети Google](https://xakep.ru/wp-content/uploads/2016/06/1466137598_4c98_hearthstone.png)
То есть, по сути, ИИ воссоздает исходный код игры. Вдумайся в это: мы почти дожили до того, что программа пишет программу! Впрочем, пока что с оговорками: нейросеть настраивают под конкретную игру; текст на картах написан почти формализованным языком, что облегчает задачу, да и код в итоге часто выходит нерабочий.
Опыт, полученный при разработке ИИ для игр, может пригодиться и в других областях. Наиболее очевидная из них — самоуправляемые автомобили и беспилотные летательные аппараты. В NVIDIA недавно опубликовали результаты исследования: экспериментаторы пытались создать систему управления автомобилем, которая полагается исключительно на данные с установленной перед лобовым стеклом камеры. На основе этой информации нейросеть принимала решение о нажатии педалей или повороте руля. И снова результат оказался обнадеживающим. После недолгого обучения с водителем сеть научилась ездить по загруженным дорогам без разметки. И это без дополнительных датчиков вроде лидара и без специальных алгоритмов. Нейросеть увидела, как водить машину, нейросеть поняла.
Еще одно важное применение нейросетей — аналитика. Существует множество стартапов, которые используют нейросети исключительно для предсказаний всевозможных событий: изменения погоды, колебаний акций или продаж, таргетирования рекламы и многого другого. Во всех сферах, где так или иначе задействована аналитика, ИИ медленно, но уверенно вытесняет человека.
Выводы
И все-таки: завоюет ли искусственный интеллект мир? Несмотря на впечатляющие результаты работы исследователей, нейросети в своем сегодняшнем виде — это очень узкоспециализированные системы, которые имеют мало общего как с принципами работы мозга, так и с ИИ, каким его показывают в фильмах и научно-фантастических романах.
Да, нейросети способны отличать терьеров по фотографии, угадывать твой возраст и настроение, обыгрывают человека в настольные и компьютерные игры и даже пишут картины, если эти произведения можно так называть. Но все это всего лишь системы для обработки массивов данных. Нейросети не умны, не разумны, не обладают разносторонними способностями. Это инструмент, который применяют в ситуациях, когда есть массив данных, но нет действенного алгоритма его обработки: «вот изображение, я хочу знать, есть ли на нем кошка; я понятия не имею, как ее найти, но у меня есть много других изображений с кошками для сравнения».
Поэтому не будем в очередной раз повторять разговоры о компьютерном сверхразуме, который поработит мир, — достаточно того, что о нем говорят Илон Маск, Рэй Курцвейл, Стивен Хокинг и Билл Гейтс. Давай лучше послушаем Бетховена, над которым поиздевался очередной «крутой искусственный интеллект».