За последние 10 лет самые эффективные системы искусственного интеллекта, такие как распознаватели речи на смартфонах или новейший автоматический переводчик Google, были созданы с помощью техники, называемой "глубокое обучение".
На самом деле глубокое обучение — это новое название подхода к искусственному интеллекту, иначе именуемого нейронными сетями, который с переменным успехом изучался и применялся уже более 70 лет. Нейронные сети были впервые предложены в 1944 году Уорреном Маккалоу и Уолтером Питтсом, двумя исследователями из Чикагского университета, которые переехали в Массачусетский технологический институт в 1952 году в качестве членов-основателей того, что иногда называют первым отделом когнитивной науки.
Нейронные сети были основной областью исследований как в нейробиологии, так и в информатике до 1969 года, когда они были "приватезированы" математиками Массачусетского технологического института Марвином Мински и Сеймуром Папертом, которые через год стали содиректорами лаборатории искусственного интеллекта Массачусетского технологического института.
Затем эта техника возродилась в 1980-х, снова ушла в прошлое в первом десятилетии нового столетия и вернулась во втором, во многом благодаря возросшей вычислительной мощности графических чипов.
Что такое "глубокое обучение"?
Нейронные сети — это средство машинного обучения, при котором компьютер учится выполнять некоторые задачи, анализируя обучающие примеры. Обычно образцы маркируются заранее вручную. Система распознавания объектов, например, могла бы получать тысячи изображений автомобилей, домов, кофейных чашек и т. д. с названиями и находить на изображениях визуальные паттерны, которые постоянно соотносятся с определенными "ярлыками".
Нейронная сеть, смоделированная по образцу человеческого мозга, состоит из тысяч или даже миллионов простых узлов обработки, которые плотно связаны между собой. Большинство сегодняшних нейронных сетей организовано в слои узлов, и они имеют "прямую связь", что означает, что данные проходят через них только в одном направлении. Отдельный узел может быть подключен к нескольким узлам на нижнем уровне, от которого он получает данные, и к нескольким узлам на верхнем уровне, которым он отправляет данные.
Каждому из своих входящих соединений узел присваивает номер, известный как "вес". Когда сеть активна, узел получает другой элемент данных — другое число — по каждому из своих соединений и умножает его на соответствующий вес. Затем он складывает полученные продукты вместе, получая одно число. Если это число ниже порогового значения, узел не передает данные на следующий уровень. Если число превышает пороговое значение, узел "срабатывает", что в современных нейронных сетях обычно означает отправку числа — суммы взвешенных входных данных — по всем его исходящим соединениям.
Когда нейронная сеть обучается, все ее веса и пороги изначально устанавливаются на случайные значения. Обучающие данные поступают на нижний уровень — входной уровень — и проходят через последующие уровни, умножаются и складываются сложным образом, пока, наконец, не попадают, радикально преобразованные, на выходной уровень. Во время обучения веса и пороги постоянно корректируются до тех пор, пока данные обучения с одинаковыми метками не будут давать одинаковые результаты.
Нейронные сети, описанные Маккаллоу и Питтсом в 1944 году, имели пороговые значения и веса, но они не были организованы по слоям, и исследователи не указали какой-либо механизм обучения. Маккалоу и Питтс показали, что нейронная сеть, в принципе, может вычислить любую функцию, которую может выполнить цифровой компьютер. В результате получилось больше нейробиологии, чем информатики: суть заключалась в том, чтобы предположить, что человеческий мозг можно рассматривать как вычислительное устройство.
Нейронные сети продолжают оставаться ценным инструментом нейробиологических исследований. Например, определенные схемы сети или правила настройки весов и пороговых значений воспроизводят наблюдаемые особенности нейроанатомии и познания человека, что свидетельствует о том, что они фиксируют что-то о том, как мозг обрабатывает информацию.
Первая обучаемая нейронная сеть, Персептрон, была продемонстрирована психологом Корнельского университета Фрэнком Розенблаттом в 1957 году. Дизайн Персептрона был очень похож на современную нейронную сеть, за исключением того, что у нее был только один слой с регулируемыми весами и порогами, зажатый между входами и выходами.
Персептроны были активной областью исследований как в психологии, так и в молодой дисциплине информатики до 1959 года, когда Мински и Паперт опубликовали книгу под названием "Персептроны", которая продемонстрировала, что выполнение некоторых довольно распространенных вычислений на персептронах будет непрактично трудоемким.
Но вы должны поместить эти вещи в исторический контекст. Они выступали за программирование для таких языков, как Lisp. Не так давно люди все еще использовали аналоговые компьютеры. В то время было совершенно неясно, что программирование — это правильный путь. Пионеры неросетей немного переборщили, но, как обычно, это не черно-белое. Если вы думаете об этом как о конкуренции между аналоговыми вычислениями и цифровыми вычислениями, они боролись за то, что в то время было правильным.
Однако к 1980-м годам исследователи разработали алгоритмы для изменения весов и пороговых значений нейронных сетей, которые были достаточно эффективными для сетей с более чем одним слоем, устранив многие ограничения, указанные Мински и Папертом. Поле пережило ренессанс.
Но интеллектуально в нейронных сетях есть что-то неудовлетворительное. Достаточное обучение может изменить настройки сети до такой степени, что она сможет с пользой классифицировать данные, но что означают эти настройки? На какие особенности изображения смотрит распознаватель объектов и как он объединяет их в отличительные визуальные подписи автомобилей, домов и кофейных чашек? На этот вопрос нельзя ответить, глядя на веса отдельных связей.
В последние годы компьютерные ученые начали придумывать гениальные методы для вывода аналитических стратегий, используемых нейронными сетями. Но в 80-е годы стратегии сетей было невозможно расшифровать. Итак, на рубеже веков нейронные сети были вытеснены машинами опорных векторов, альтернативным подходом к машинному обучению, основанным на очень чистой и элегантной математике.
Недавнее возрождение нейронных сетей — революция глубокого обучения — произошло благодаря индустрии компьютерных игр. Сложные изображения и быстрый темп современных видеоигр требуют оборудования, способного не отставать, и в результате появился графический процессор (GPU), который объединяет тысячи относительно простых процессорных ядер на одном чипе. Исследователям не потребовалось много времени, чтобы понять, что архитектура графического процессора удивительно похожа на архитектуру нейронной сети.
Современные графические процессоры позволили однослойным сетям 1960-х годов и двух- или трехуровневым сетям 1980-х годов превратиться в современные 10-, 15- и даже 50-уровневые сети. Это то, что означает "глубокое обучение" в самом термине — глубина слоев сети. И в настоящее время глубокое обучение отвечает за самые эффективные системы почти во всех областях исследований искусственного интеллекта.