Зачем смартфону искусственный интеллект?
[code]
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-115112575-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-115112575-1');
</script>
[/code]
Термины «искусственный интеллект» и «машинное обучение» в последнее время обрели невероятную популярность. И это не только благодаря достижениям в науке и технике, а потому, что интеллектуальные системы стали ближе к людям, и во многом это заслуга смартфонов. Уже сегодня смартфоны подсказывают нам дорогу по оптимальному маршруту с учетом пробок, советуют фильм на основе наших предпочтений, умеют стилизовать наши фотографии под произведения Ван Гога и многое другое. Производители смартфонов даже начали устанавливать специальные «нейронные cопроцессоры», которые призваны ускорить эти операции. Таким процессором, например, обладает новый Honor View 10 от Huawei. Но как мы пришли к этому? Давайте разбираться.
Так что же такое искусственный интеллект?
Для начала нужно определиться, какие системы можно называть интеллектуальными и чем они отличаются от обычной компьютерной программы.
Обычная программа представляет собой неизменяемый набор инструкций, единожды записанных человеком. Т. е. человек придумал алгоритм и объяснил его машине. Но может ли сама машина понять или придумать, что нужно делать для решения какой-то конкретной задачи? Именно таким вопросом задались люди в 1940-х годах и с тех пор перепробовали множество разных методов, основной целью которых является научить машину мыслить, как человек, хотя бы для решения одной конкретной задачи. То есть искусственный интеллект — это способность машины решать некоторые задачи так, как это делал бы размышляющий над их решением человек.
Одним из логичных подходов в решении этой задачи является попытка скопировать мыслительную деятельность человека. Например, мы привыкли, что видеть и распознавать предметы — это легко. Наш мозг справляется с этим без особых усилий, потому что однажды этому научился. В 1966 году группа ученых и студентов Массачусетского технологического института решила летом не ехать на каникулы, а остаться в кампусе и математически решить задачу распознавания объекта на картинке. Т. е. решить одну из задач компьютерного зрения — научить машину по картинке определять, что на ней изображено. Студенты назвали свою работу The summer vision project, подразумевая, что это настолько простая задача, что ее можно решить всего за одно лето. Сейчас, спустя более чем 50 лет, мы знаем, что это сложная задача, в решении которой ученые-исследователи и технические гиганты все еще соревнуются. Лишь в 2015 году машины стали распознавать изображения так же хорошо, как люди (и даже немного лучше). А тогда, в 1966 году специалисты из MIT не достигли поставленной цели, но получили результаты, полезные для дальнейших исследований.
[blockquote]Если самые яркие фантастические книги об ИИ были написаны в 50-х, а компьютер вошел в повседневность еще в 90-х, то почему прорыв применительно к системам искусственного интеллекта мы наблюдаем только сейчас, в последние 5–10 лет?[/blockquote]
Благодаря исследованиям нейробиологов сейчас у нас есть некоторое представление о том, как устроен человеческий мозг. Это огромный набор мозговых клеток — нейронов, каждый из которых выполняет одну очень простую функцию — получает сигнал от других нейронов, и при определенных условиях комбинации этих сигналов происходит так называемая активация нейрона и он выпускает сигнал дальше. Несмотря на всю простоту работы одного нейрона, их совокупность (а их количество в нашем мозгу исчисляется миллиардами) позволяет нам занимать место самых умных существ на этой планете, или хотя бы считать себя таковыми. Когда мы чему-то учимся, будь то ходить, кататься на лыжах, говорить или считать, нейроны головного мозга изменяют свою функцию активации, т. е. условия, при которых они пропускают сигнал дальше. Эти знания о работе головного мозга ученые и воплотили в искусственных нейронных сетях — одном из самых успешных методов искусственного интеллекта.
Но вот вопрос: если люди занимаются этими задачами с 40-х годов прошлого века, самые яркие фантастические книги об ИИ были написаны в 50-х, а компьютер вошел в повседневность еще в 90-х, то почему прорыв применительно к системам искусственного интеллекта мы наблюдаем только сейчас, в последние 5–10 лет? Для ответа на этот вопрос нужно посмотреть на историю.
Перцептрон и две зимы искусственного интеллекта
Первой попыткой смоделировать деятельность мозгового нейрона был предложенный в 1943 году искусственный нейрон Маккалока — Питтса — математическая модель естественного, т. е. человеческого нейрона. Так же как в реальном нейроне, в искусственный нейрон поступает сигнал (число 0 или 1), и после простых вычислений нейрон так же выпускает сигнал (0 или 1). Сеть из таких нейронов могла решать простейшие логические задачи — так было положено начало методу нейронных сетей. Правда, для сети нейронов Маккалока — Питтса еще не было придумано методов ее обучения, и поэтому все внутренние вычисления в каждом нейроне вручную настраивались человеком.
Первая модель нейрона, которая имела свой метод обучения на множестве входных данных и желаемых результатах, был так называемый перцептрон, описанный Фрэнком Розенблаттом в 1958 году.
Обе эти модели нейрона в качестве функции активации использовали самую простую — линейную функцию. Это сильно ограничивало их способности в решении сложных задач.
[blockquote]Метод, придуманный Хинтоном и Румельхартом, заключается в том, чтобы сравнить полученный ответ с желаемым, понять, насколько мы ошиблись, а затем последовательно, в обратном порядке пройти по слоям и переобучить нейроны[/blockquote]
В 1969 году в свет вышла работа Минского и Пейперта, в которой математически было доказано, что увеличение размеров сети, состоящей из перцептронов, не ведет к улучшению ее способностей, т. е. не увеличивает ее интеллект. Несмотря на то что этот вывод касался только конкретной модели нейрона — перцептрона, это сильно повлияло на интерес научного сообщества к нейронным сетям в целом. Наступила так называемая «зима искусственного интеллекта»: множество лабораторий, занимавшихся нейронными сетями, потеряли энтузиазм и лишились финансирования. Нейронные сети уступили место другим объектам исследования.
Конец первой зиме искусственного интеллекта пришел, когда группа канадских ученых (среди которых были Дэвид Румельхарт и, как сейчас говорят, дедушка нейронных сетей Джеффри Хинтон) в 1986 году придумала универсальный метод обучения нейронных сетей для любых, даже самых сложных функций активации нейронов. Если представить нейронную сеть как последовательность слоев из нейронов, то поступающий сигнал (например, картинка или звуковой файл с речью человека, если мы говорим о распознавании) проходит сквозь слои нейронов один за другим, и на последнем слое мы получаем ответ (текстовое описание того, что изображено на картинке, или текст, который был сказан человеком). Метод, придуманный Хинтоном и Румельхартом, заключается в том, чтобы сравнить полученный ответ с желаемым, понять, насколько мы ошиблись, а затем последовательно, в обратном порядке пройти по слоям и переобучить нейроны, чтобы они лучше работали на выбранном примере картинки/звука. Метод так и называли — метод обратного распространения ошибки, и он до сих пор является самым простым и надежным методом обучения нейронных сетей и используется повсеместно.
Полученный метод обучения сетей позволил создавать многослойные сети со сложными нелинейными зависимостями. Теперь, казалось бы, дело за малым — нужно использовать как можно больше нейронов с нелинейной функцией активации и как можно больше слоев, и тогда компьютер сможет обучиться чему угодно. Но оказалось, что не все так просто.
[blockquote]При обратном распространении ошибки хорошо обучались последние слои, а первым почти ничего не доставалось, т. к. влияние ошибки затухало по мере распространения назад[/blockquote]
Во-первых, стало очевидно, что для того, чтобы качественно обучать сети с большим количеством нейронов, необходимо большое количество обучающих примеров. Во-вторых, для глубоких сетей (т. е. состоящих из большого количества слоев) обучение переставало быть таким эффективным, а именно: при обратном распространении ошибки хорошо обучались последние слои, а первым почти ничего не доставалось, т. к. влияние ошибки затухало по мере распространения назад. В-третьих, большое число нейронов означает большое число параметров, и велика вероятность переобучения: имея так много степеней свободы, сеть идеально подстраивается под обучающие примеры, но начинает сходить с ума и показывать ерунду на новых задачах. И наконец, в-четвертых, для обучения сетей с большим количеством нейронов нужны большие компьютерные мощности. Эти проблемы привели к тому, что в середине 90-х наступила вторая «зима искусственного интеллекта».
В то время нейросети были вытеснены методом опорных векторов, предложенным еще в 1963 году советскими учеными Алексеем Червоненкисом и Владимиром Вапником. Суть метода легко понять, представив себе, что две сестры празднуют день рождения в один день и им дарят один торт на двоих. С одной стороны торта синие свечки для старшей, а с другой стороны красные для младшей. Задача — разрезать торт на две части так, чтобы каждой сестре достался кусок только с ее свечками и чтобы расстояние от линии разреза до красных и синих свечек было максимальным. Метод опорных векторов позволяет решить такую задачу математически, зная только координаты свечек. В контексте задач искусственного интеллекта обучением является выбор линии разреза, а узнав один раз эту линию, далее можно предсказывать, какого цвета окажется новая свечка на торте, зная ее координаты. В 1990 году Вапник эмигрировал в США, и в 1995 году он дорабатывает этот метод для обучения более сложным (нелинейным) зависимостям. Полученный метод на рубеже 2000-х использовался повсеместно, например, для распознавания рукописного текста, классификации изображений и многих других задач искусственного интеллекта. Кстати, Владимир Вапник сейчас преподает в Колумбийском университете и работает в Facebook.
Возвращение нейронных сетей
Так почему же нейронные сети вернулись, да еще с таким успехом? И почему именно сейчас наступил их рассвет? Как люди решили все описанные выше проблемы и научились обучать глубокие сети?
Основу для возвращения нейронных сетей заложил в 2006 году все тот же Джеффри Хинтон. Он изучил методы математической статистики, используемые в теоретической физике, и применил их к нейронным сетям. Раз уж нам не удается обучать глубокие сети, распространяя ошибку с конца в начало сети, решил он, то давайте обучаться от начала к концу. Хинтон предложил метод предобучения сети, основанный только на рассмотрении данных, которые подаются на вход сети, не используя ответов, которые должны получиться на выходе.
Необходимость использования больших объемов данных приводит к тому, что под каждую задачу нужно искать индивидуальное решение. Чаще всего используют «краудсорсинг» — привлечение большого числа наемных работников для разметки имеющихся данных и формирования большой базы обучающих примеров. Для того чтобы первые слои обучались при обратном распространении ошибки, были придуманы новые функции активации нейронов, благодаря которым влияние ошибки не затухает. А еще чуть позже придумали ResNet — архитектуру сетей, при которой каждый N-й слой связан не только с последующим слоем, но и с окончательной ошибкой напрямую.
[blockquote]В 2012 году Хинтон и его студенты придумали метод, который напоминает работу мозга во время похмелья[/blockquote]
Для борьбы с переобучением используется несколько приемов. Самым распространенным из них является классический метод регуляризации Тихонова. На каждый нейрон последующего слоя влияют нейроны с предыдущего слоя с некоторыми коэффициентами (или, как говорят, «весами»). Именно эти веса мы и стараемся определить во время обучения. Чем больше вес, тем больше влияние. Используя метод регуляризации Тихонова в процессе обучения, мы стараемся не только, чтобы полученный нами ответ совпал с заданным, но и чтобы вес связей между нейронами не имел очень больших значений. Т. е. мы пытаемся искусственно ограничить влияние предыдущих нейронов на последующие. В 2012 году Хинтон и его студенты придумали метод, который напоминает работу мозга во время похмелья. Известно, что вечеринки с алкоголем влекут за собой отмирание нейронов головного мозга. Однако наутро, несмотря на головную боль, человек продолжает функционировать, помнит, как его зовут, и так далее. Это говорит нам о том, что функции мозга распределены между нейронами, и смерть некоторых из них не означает выключение функции. Метод, предложенный Хинтоном, называется Dropout и работает похожим образом: на каждой итерации обучения нейросети часть нейронов случайным образом убивается, чтобы другие нейроны восполнили пробел и взяли на себя функцию убитых, а на следующей итерации обучения убиваются другие случайно выбранные нейроны. Это позволяет «размазать ответственность» между нейронами и уменьшить вероятность переобучения.
Итак, в формуле: «Обучение глубоких сетей = модель + теория обучения + большие данные + железо» оставался только последний элемент. И вот тут начинается самое интересное.
[blockquote]Использование графических карт для обучения и использования нейросетей вызвало настоящий прорыв в решении задач искусственного интеллекта[/blockquote]
Оказалось, что для обучения нейронных сетей идеально подходят компьютерные видеокарты. Графические карты (GPU — graphics processing unit) совершили скачок в развитии за счет интереса к видеоиграм. В видеоиграх на экране мы видим трехмерный виртуальный мир, в котором живут персонажи игры и их окружение.
Модель этого виртуального мира — это набор точек в трехмерном пространстве. Но на экране мы видим двухмерную картинку. Для проецирования трехмерного виртуального мира на наш плоский двухмерный экран необходимо выполнять множество параллельных однотипных операций, которые представляют собой простые матричные умножения (т. е. комбинации умножения и сложения). Кроме того, при отрисовке виртуального мира постоянно производятся обращения к большим объемам памяти, т. к. необходимо отображать текстуры. Поэтому при проектировании графических карт закладываются высокая степень параллелизма (т. е. выполнения большого числа однотипных операций, не зависящих друг от друга) и пропускная способность памяти, а расплачиваться за это приходится меньшей тактовой частотой и не столь развитыми средствами ветвления (конструкций «если ..., то ...»), как в традиционных процессорах.
Использование графических карт для обучения и использования нейросетей вызвало настоящий прорыв в решении задач искусственного интеллекта. Распознавание изображений, речи, беспилотное управление автомобилем, диагностика раковых опухолей по рентгеновским снимкам, перевод текста с одного языка на другой, а также рекомендательные системы, которые предлагают нам рекламу или новый фильм, — сейчас все эти технологии используют в своей основе нейросети.
Роботы вокруг нас
Сейчас уже можно с уверенностью сказать, что роботы и машины, использующие технологию нейронных сетей, широко внедряются в повседневную жизнь человека. В Японии, например, роботов начали использовать в качестве обслуживающего персонала в гостиницах: роботы на ресепшн на нескольких языках могут ответить на вопросы гостей, выдать ключи и рассказать об отеле. Уже существуют роботы-продавцы, роботы-консультанты в банковской сфере, автоматизированные няньки для младенцев, которые обучены распознаванию образов и могут коммуницировать со своими подопечными.
А вот на производствах часто используется связка «человек — машина», когда система с искусственным интеллектом сначала обучается тому, как человек, например, закручивает гайки (с какой амплитудой или усилием), и только после этого повторяет его действия.
Пристальное внимание направлено в последние несколько лет на беспилотный транспорт: от такси, которое может доставить из одной точки города в другую, до грузоперевозок на огромные расстояния без непосредственного участия человека.
И конечно, одна из самых интересных задач — непосредственное взаимодействие ИИ с человеком в повседневной его жизни, день за днем и час за часом — взаимодействие при помощи гаджетов.
Нейросети в вашем смартфоне
А теперь взгляните на свой смартфон. Сколько раз в день вы используете алгоритмы на основе нейросетей, не подозревая об этом? Смартфон распознает вашу речь, когда вы общаетесь с голосовым помощником или называете конечную точку маршрута. Он использует методы отделения полезного сигнала от шума при записи звука. Распознает лица или выравнивает баланс цветов на фотографии.
Использовать нейросети в смартфонах можно одним из двух способов. Первый способ: получить исходную информацию (фотографию или звуковую дорожку), отправить ее на удаленный сервер (как говорится, в облако), там обработать и затем загрузить ответ обратно в смартфон. Этот способ имеет ряд минусов. Во-первых, нужно иметь стабильное соединение с интернетом достаточно высокой скорости. Во-вторых, постоянная пересылка фотографий на сервер не очень нравится людям с точки зрения приватности. Поэтому более предпочтительным является второй способ — использование нейросетей непосредственно на самом смартфоне, без пересылки информации через интернет. Однако реализация этого влечет за собой другие трудности: необходимо где-то взять дополнительные ресурсы для проведения расчетов; большое количество вычислений (пусть даже параллельных) потребляет много энергии, и это тоже не очень нравится пользователям.
[blockquote]Смартфон наконец начинает оправдывать слово «смарт» в своем названии, получив процессор, ускоряющий решение задач искусственного интеллекта[/blockquote]
Именно поэтому производители смартфонов в настоящее время разрабатывают и внедряют специальный вид процессоров — NPU (neural processing unit), которые также называют ускорителями искусственного интеллекта (AI accelerator). Они призваны увеличить производительность выполнения параллельных вычислений аналогично GPU и потреблять меньше энергии. Эти процессоры наряду с GPU и обычными CPU устанавливаются на одном и том же чипе внутри смартфона.
К примеру, одним из первых чипов с внедренным ускорителем искусственного интеллекта является процессор Kirin 970 производства компании Huawei, который был представлен в сентябре 2017 года. Сейчас такой процессор установлен в новом смартфоне Honor View 10, поступившем в продажу в России в феврале 2018 года. Производитель заявляет, что уже сейчас этот чип выполняет ряд функций, что называется, «на борту»:
Часть статьи не может быть отображена, пожалуйста, откройте полную версию статьи.
Итого, что мы имеем? Смартфон наконец начинает оправдывать слово «смарт» в своем названии, получив процессор, ускоряющий решение задач искусственного интеллекта. Уже сейчас он напичкан множеством алгоритмов, которые решают сложные технические задачи иногда даже лучше, чем если бы их решал человек. При этом одной из таких задач является анализ действий владельца. Кажется, что еще чуть-чуть — и ваш смартфон будет знать о вас больше, чем родная мать. Будущее уже тут. И если вы думаете, что восстание машин начнется, когда skyNet объявит охоту на Джона Коннора, то вы ошибаетесь. Оно уже началось. И оно, быть может, уже сейчас в вашем кармане под видом привычного гаджета.