Как работают нейронные сети, которые мы используем каждый день
Если вы используете новое приложение Photos от Google, Cortana от Microsoft или новую переводческую функцию Skype, вы используете искусственный интеллект на ежедневной основе. Хотя и некоторую его форму. ИИ оставался мечтой с 50-х годов и только недавно стал практически реальным - благодаря системам программного обеспечения под названием нейронные сети. Давайте разберемся, как они работают.
Поумневшие компьютеры
Многие вещи, которые людям кажутся трудновыполнимыми, можно сделать с помощью компьютеров. Решить дифференциальное уравнение? Без проблем. Создать точный прогноз погоды или превратить Интернет в одну веб-страницу? Несложно. Но попросите компьютер рассказать вам о разнице между порно и искусством эпохи Возрождения, и он обломается.
Компьютеры просто не могут рассуждать так же, как это делают люди. Они безуспешно пытаются интерпретировать контекст реальной ситуации или сделать решение, исходя из нюансов, которые жизненно важны для истинного понимания человеческого мира. Нейронные сети были разработаны в 50-х годах прошлого века как потенциальное решение этой проблемы.
Беря за основу человеческий мозг, нейронные сети являются системами программного обеспечения, которые могут самообучаться на основе получаемых знаний о мире людей. Они используют различные слои математической обработки, чтобы извлекать массу информации из всего, что получают, от человеческой речи до цифровых снимков. По сути, они учатся и меняются с течением времени. Вот почему они обеспечивают компьютеры более умным и тонким пониманием того, с чем те сталкиваются. Правда, потребовалось много времени, чтобы достичь такого результата.
Зима нейронных сетей
В 50-х годах ученые не знали, почему человеческий мозг разумен - в принципе, мы и сейчас этого не понимаем - но знали, что он разумен. Поэтому они спросили себя, как работает человеческий мозг в физическом смысле, и можно ли создать искусственную версию этого разума.
Мозг состоит из миллиардов нейронов, длинных тонких клеток, которые соединяются друг с другом в сеть, передающую информацию с помощью маломощных электрических зарядов. Так или иначе, из этой, казалось бы, простой биологической системы возникает что-то более глубокое: разум, который может распознавать лица, вырабатывать философию, с боем изучать физику частиц и так далее. Если бы мы могли воссоздать эту биологическую систему электронным путем, догадались инженеры, родился бы и искусственный интеллект.
Есть несколько успешных примеров ранних искусственных нейронных сетей вроде Perceptron Фрэнка Розенблатта, которая использовала аналоговые электрические компоненты, чтобы создать бинарный классификатор. Это такое умное название системы, которая принимает ввод - скажем, изображение или фигуру - и определяет его в одну из двух категорий типа «квадратный» и «неквадратный». Однако очень скоро ученые уперлись в стенку. Во-первых, компьютеры на то время не обладали достаточной вычислительной мощью, чтобы эффективно принимать множество таких решений. Во-вторых, ограниченное число синтетических нейронов также ограничивало сложность операций, которые могла проводить сеть.
В случае с Perceptron Розенблатта, например, один набор искусственных нейронов умел отличать квадраты от неквадратов. Но если бы вы захотели добавить способность воспринимать что-то еще о квадратах - красный он или нет, например - вам потребовался бы дополнительный набор.
В то время как биология мозга может быть простой на микроскопическом уровне, в своей целостности она невероятно сложная. И эта сложность на макроуровне была неподъемной для компьютеров 1950 года. В результате в течение следующих десятилетий нейронные сети получили забвение. Наступила «зима нейронных сетей», как говорит Джейсон Фрейденфельдс из Google.
Достижения неврологии
Зима для одного оборачивается летом для другого. С 1960-х годов наше понимание человеческого мозга прогрессировало не по дням, а по часам. В те первые дни неврологии большое внимание уделялось нашим визуальным системам. Объясняет профессор Чарльз Кадью:
«Это, пожалуй, лучше всего понятая сенсорная модальность и, вероятно, лучше всего понятая часть мозга. Десятилетиями мы знали, что нейроны по-разному активируются, когда вы проходите через визуальный поток. В сетчатке глаза нейроны восприимчивы к точкам света и тьмы; в первичной зрительной коре нейроны возбуждаются очертаниями и контурами; в высших областях зрительной коры нейроны отвечают на лица, руки, сложные объекты, природные и рукотворные. То есть там нейроны уже не реагируют на области света и тьмы или контуры в принципе».
Мы пользуемся нейронными сетями каждый день
Оказывается, различные части биологической сети мозга отвечают за различные аспекты так называемого визуального распознавания. И эти части выстроены иерархически.
Это справедливо и для других аспектов познания. Части мозга, обрабатывающие речь и, возможно, даже сам язык, работают аналогичным образом. Иерархия различных уровней нейронов на каждом из них получает собственную картину, затем передает ее на другой, более высокий уровень, чтобы наделить ее большим числом деталей. На каждом этапе рассуждения становятся более абстрактными, что позволяет потоку звуков превращаться в слова, которые что-то для нас означают, или же набор темных и светлых узоров в нашей сетчатке определяется как «кошка» в нашей голове.
Эти виды иерархий были решающим ключом для исследователей, которые до сих пор задумывались об искусственных нейронных сетях. «Все это стало путеводной звездой для нейронных сетей, - говорит Кадью. - Мы просто не знали, как заставить их вести себя таким образом».
Вдохновение биологией
По правде говоря, искусственные сети, используемые сегодня, в действительности не строятся на базе мозга, как вы могли бы ожидать. Они только «вдохновляются мозгом», отмечает Кадью, в том смысле, что они являются реальными системами ПО, которые задействуют слоевой подход для выработки понимания, а не сетью узлов, сообщающих информацию туда и обратно между собой.
Эти системы ПО используют один алгоритм для обработки представления ввода, а затем передают его следующему слою для обработки другим алгоритмом, который даст более высокоуровневое понимание, и так далее. Другими словами, есть больше смысла в том, чтобы думать об искусственных нейронных сетях как о каскадных математических уравнениях, которые могут различать отдельные детали и паттерны, считает Фрейденфельдс.
В случае распознавания образов, например, первый слой нейронной сети может анализировать яркость пикселя, а затем передавать его второму, чтобы определять кромки и линии, образованные полосками аналогичных пикселей. Следующие слои могут быть в состоянии идентифицировать формы и текстуры, а дальше по цепочке они могут определять кластеризацию деталей этих абстрактных изображений в виде реальных физических элементов вроде глаз или колес.
В самом конце кластеризация высокоуровневых деталей может интерпретироваться как реальный объект: два глаза, нос и рот образуют лицо, скажем, колеса, кресло и руль образуют велосипед. На конференции I/O в мае Google объявила, что нейронные сети, работающие в основе продуктов вроде Google Photos сейчас используют 30 разных слоев в общем, чтобы осмысленно обрабатывать изображения.
Нейронные сети не ограничиваются только распознаванием изображений, хотя это наш самый продвинутый способ их использования на данный момент. В случае распознавания речи нейронная сеть нарезает слышимую речь на короткие фрагменты, которые затем переводит в гласные звуки. Последующие слова могут определять звучание отдельных гласных звуков в сочетании друг с другом, формируя слова, слова сочетаются, образуя фразы, и, наконец, фразы образуют осмысленную речь, которую вы только что наговорили в телефон.
Вы уже догадываетесь, что это большой шаг от однослойной системы Perceptron. По сути, все это время было два ограничения на успешное развитие нейронных сетей. Первым была вычислительная мощь, которая у нас теперь есть. Второе - необходимый объем информации для правильного обучения корректной работе.
Метод обратного распространения ошибки и глубокое обучение
Нейронные сети не могут обучаться, пока вы не вбросите в них достаточно данных. Они нуждаются в больших объемах информации, чтобы понимать ее, пропускать через слои и пытаться классифицировать. Затем они могут сравнивать свои классификации с реальными ответами - и погладить себя по головке или же поднапрячься.
В случае анализа изображений это будет означать поддержку вашей нейронной сети набором помеченных фотографий, известных как обучающий сет. Google использовала YouTube, чтобы поддерживать такой обучающий сет в прошлом. В случае распознавания речи обучающий сет будет серией аудиоклипов с описанием сказанного. При большом объеме вводных данных нейронная сеть может попытаться классифицировать каждый объект и объединить информацию, полученную от разных слоев, чтобы сделать предположения о том, что она слышит или видит. В процессе обучения ответ машины сравнивается с созданным человеком описанием наблюдаемого объекта. Если все верно, сеть молодец.
А если нет?
«Если проанализированный объект был лицом, а она сказала, что это дом, она использует метод обратного распространения ошибки (back-propagation), чтобы поправить себя, - объясняет Кадью. - Она делает шаг назад по каждому предыдущему слою и каждый раз вносит математические поправки в этот слой, чтобы в следующий раз ответ был верным».
Сначала сеть будет ошибаться постоянно, но ее производительность постепенно улучшится, слои будут все более и более натренированными точно определять, что видят. Этот повторяющийся процесс прохождения образца через сеть и метод обратного распространения ошибки для автокоррек