Найти тему
Нейросети и ИИ

Как работают нейронные сети и почему они стали крупным бизнесом

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

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

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

Объясним, что такое нейронные сети, как они работают и откуда они пришли. И мы рассмотрим, почему, несмотря на многие десятилетия предыдущих исследований, нейронные сети действительно стали самостоятельными только с 2012 года.

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

Нейронные сети относятся к 1950-м годам

Нейронные сети - старая идея - по крайней мере, по стандартам информатики. Еще в 1957 году Франк Розенблатт из Корнелльского университета опубликовал отчет, описывающий раннюю концепцию нейронных сетей, называемую персептроном. В 1958 году при поддержке ВМС США он построил примитивную систему, которая могла анализировать изображение 20 на 20 и распознавать простые геометрические фигуры.

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

«Военно-морской флот показал сегодня эмбрион электронного компьютера, который, как он ожидает, сможет ходить, разговаривать, видеть, писать, воспроизводить себя и осознавать его существование», - сообщает New York Times.

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

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

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

Ранние нейронные сети Розенблатта имели только один или два обучаемых слоя. Минский и Паперт показали, что такие простые сети математически не способны моделировать сложные явления в реальном мире.

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

В результате нейронные сети перестали пользоваться популярностью в 1970-х и начале 1980-х годов - часть той зимы "ИИ" той эпохи.

Прорывной алгоритм

Состояние нейронных сетей было восстановлено в известной статье 1986 года, в которой была представлена ​​концепция обратного распространения, практического метода обучения глубоких нейронных сетей.

Предположим, вы инженер в вымышленной компании по разработке программного обеспечения, которому было поручено создать приложение, чтобы определить, содержит ли изображение хот-дог или нет. Вы начинаете со случайно инициализированной нейронной сети, которая принимает изображение в качестве входного сигнала и выдает значение от 0 до 1 - с 1 означает «хот-дог» и 0 означает «не хот-дог».

Чтобы обучить сеть, вы собираете тысячи изображений, каждое с меткой, указывающей, содержит ли изображение хот-дог или нет. Вы подаете первое изображение, которое содержит хот-дог, в нейронную сеть. Он выдает выходное значение 0,07, что указывает на отсутствие хот-дога. Это неправильный ответ; сеть должна была произвести значение, близкое к 1.

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

До сих пор я только что описал простой подход к восхождению на холмы, который был знаком исследователям в 1960-х годах. Прорывом обратного распространения явился следующий шаг: алгоритм использует частные производные для распределения «вины» за неправильный вывод среди входов нейрона. Алгоритм вычисляет, как на выход конечного нейрона повлияет небольшое изменение в каждом входном значении, и будет ли изменение подтолкнуть результат ближе к правильному ответу или от него.

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

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

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

Изобретение обратного распространения породило второй бум нейронных сетей, который начал приносить практические результаты. В 1998 году группа исследователей AT & T показала, как использовать нейронные сети для распознавания рукописных цифр, что позволяет автоматизировать обработку чеков.

«Основная идея этой статьи заключается в том, что лучшие системы распознавания образов можно построить, полагаясь больше на автоматическое обучение и меньше на ручную эвристику», - пишут авторы.

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

Большие данные показывают силу глубокого обучения

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

Затем знаменитая газета 2012 года, в которой описана нейронная сеть, получившая название AlexNet после того, как ведущий исследователь Алексей Крижевский, изменила мышление людей. Кардинально более глубокие сети могут обеспечить революционную производительность, но только в том случае, если они будут объединены с достаточной вычислительной мощностью и большим количеством данных.

AlexNet был разработан трио компьютерных ученых Университета Торонто, которые участвовали в академическом конкурсе под названием ImageNet. Организаторы конкурса очистили Интернет и собрали корпус из 1 миллиона изображений, каждое из которых было помечено одной из тысячи категорий объектов, таких как «вишня», «контейнеровоз» или «леопард». Исследователи ИИ были приглашены обучить свое программное обеспечение машинного обучения некоторым изображениям, а затем попытаться угадать правильные метки для других изображений, которые программное обеспечение еще не видело. Конкурирующее программное обеспечение выбрало пять возможных ярлыков из тысячи категорий для каждого изображения. Ответ был признан успешным, если одна из этих пяти меток соответствовала фактической метке в наборе данных.

Это была сложная проблема, и до 2012 года результаты были не очень хорошими. Победитель 2011 года имел топ-5 ошибок в 25%.

В 2012 году команда AlexNet выбила своих соперников из воды с 5-ю ошибками в топ-5, равными 16%. У ближайшего конкурента в этом году была 26% ошибок.

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

«Это все равно, что взять трафарет или узор и сопоставить его с каждым пятном на изображении», - сказал Арсе исследователь Джи Тан в прошлом году. «У вас есть трафаретный рисунок собаки, и вы в основном сопоставляете верхний правый угол с вашим трафаретом - есть ли там собака? Если нет, вы перемещаете трафарет немного. Вы делаете это по всему изображению». Неважно, где на изображении появляется собака. Трафарет будет соответствовать ей. Вы не хотите, чтобы каждый подраздел сети изучал свой собственный отдельный классификатор собак ».

Еще одним ключом к успеху AlexNet стало использование видеокарт для ускорения тренировочного процесса. Графические карты содержат огромное количество параллельной вычислительной мощности, которая хорошо подходит для повторяющихся вычислений, необходимых для обучения нейронной сети. Разгружая вычисления на пару графических процессоров - Nvidia GTX 580, каждый с 3 ГБ памяти, - исследователи смогли спроектировать и обучить чрезвычайно большую и сложную сеть. В AlexNet было восемь обучаемых слоев, 650 000 нейронов и 60 миллионов параметров.

Наконец, успех AlexNet стал возможен благодаря большому размеру учебного набора ImageNet: миллиону изображений. Требуется много изображений, чтобы точно настроить его 60 миллионов параметров. Именно сочетание сложной сети и большого набора данных позволило AlexNet добиться решительной победы.

Интересный вопрос, который следует здесь задать, заключается в том, почему прорыв, похожий на AlexNet, не произошел много лет назад: пара потребительских графических процессоров, используемых исследователями AlexNet, была далеко не самым мощным вычислительным устройством, доступным в 2012 году. Более мощные компьютеры существовали пять и даже 10 лет назад. Более того, методика использования видеокарты для ускорения обучения нейронной сети была известна как минимум с 2004 года.

Миллион изображений был необычно большим набором данных для обучения алгоритмам машинного обучения в 2012 году, но интернет-очистка вряд ли была новой технологией в 2012 году. Для хорошо финансируемой исследовательской группы не было бы так сложно собрать такой большой набор данных пять или десять лет назад.

Основные алгоритмы, используемые AlexNet, не были новыми. Алгоритм обратного распространения существовал уже четверть века к 2012 году. Ключевые идеи, лежащие в основе сверточных сетей, были разработаны в 1980-х и 1990-х годах.

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

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

Бум глубокого обучения

Как только AlexNet продемонстрировал, насколько мощными могут быть глубокие нейронные сети с достаточным количеством обучающих данных, многие заметили, как в академических исследовательских кругах, так и в промышленности.

Самое непосредственное влияние было на сам конкурс ImageNet. До 2012 года большинство участников конкурса ImageNet использовали методы, отличные от глубокого обучения. В конкурсе 2013 года, как написали спонсоры ImageNet, «подавляющее большинство» участников основывались на глубоком обучении.

Процент победителей в конкурсе продолжал падать - с впечатляющих 16% AlexNet в 2012 году до 2,3% в 2017 году.

Глубокая революция в обучении быстро распространилась и на промышленность. В 2013 году Google приобрела стартап, созданный авторами статьи AlexNet, и использовала эту технологию в качестве основы для функции поиска изображений в Google «Фото». К 2014 году Facebook рекламировал собственное программное обеспечение для распознавания лиц, основанное на глубоком обучении. Apple использует глубокое изучение технологии распознавания лиц в iOS по крайней мере с 2016 года.

Глубокое обучение также привело к недавним улучшениям в технологии распознавания голоса. Apple Siri, Amazon Alexa, Microsoft Cortana и помощник Google используют глубокое обучение - либо для понимания слов пользователей, либо для создания более естественных голосов, либо для того и другого.

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

В 2016 году Google анонсировал специализированный чип нейронной сети под названием Tensor Processing Unit. В том же году Nvidia анонсировала новое оборудование для графических процессоров под названием Tesla P100, оптимизированное для нейронных сетей. В 2017 году Intel отреагировала собственным чипом AI. В 2018 году Amazon анонсировала собственный чип AI, который будет доступен для использования через облачные сервисы Amazon. По сообщениям, даже Microsoft работала над чипами ИИ.

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

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

Более широкая доступность вычислительной мощности, оптимизированной для AI, обусловила растущий спрос на данные для обучения все более сложным нейронным сетям. Эта динамика наиболее очевидна в секторе легковых автомобилей, где компании собрали миллионы миль данных с реальных дорог. Tesla может автоматически собирать такие данные с автомобилей клиентов, в то время как конкуренты, такие как Waymo и Cruise, платят водителям за безопасность, чтобы водить свои машины по дорогам общего пользования.

Жажда данных дает преимущество крупным онлайн-компаниям, которые уже имеют доступ к большим объемам пользовательских данных.

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

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

Но глубокое обучение позволило добиться значительных скачков производительности в удивительно широком спектре приложений. Мы можем ожидать большего прогресса в этой области в ближайшие годы.