Как учится машина. Революция в области нейронных сетей и глубокого обучения - Ян Лекун

В период с 2006 по 2012 год, до революции сверточных сетей, научное сообщество не очень ценило работы Фукусимы. Однако исследователи компьютерного зрения все-таки подтвердили эффективность его подхода! Как и Фукусима, они были вдохновлены открытиями Хьюбела и Визеля о работе простых и сложных клеток. Экстракторы признаков, с которыми связаны такие понятия как SIFT (масштабно-инвариантная трансформация признаков; англ. Scale-Invariant Feature Fransform) или HOG (гистограмма направленных градиентов, англ. Histogram of Oriented Gradients, разработана во Франции), выполняют операции, похожие на то, что делают простые и сложные клетки. Но эти операции написаны от руки. Их ничему не обучали.
Краткий взгляд в прошлое
В 1986 г. я писал диссертацию и отказался от дальнейшей разработки HLM, чтобы сосредоточиться на методе обратного распространении ошибки. Основываясь на работах Хьюбела, Визеля и Фукусимы, я вообразил многослойную архитектуру сети, которая будет сочетать в себе чередование простых и сложных клеток и обучение с помощью обратного распространения. Мне казалось, что такой тип сети хорошо подходит для распознавания изображений. Позже я назову его сверточной сетью, или сверточной нейронной сетью. Некоторые сокращают название до CNN, а я предпочитаю говорить ConvNet.
Итак, в 1987 г. у меня появилась идея, но не было никаких программных инструментов для ее реализации, да их тогда и не существовало. Когда я писал диссертацию, со мной связался студент Политехнического университета Леон Ботту. Он как раз заканчивал аспирантуру по теме обратного распространения. Я предложил ему помочь написать мне новое программное обеспечение для построения и обучения нейронных сетей. Оно позволило бы применять локальные соединения и совместное использование параметров – два необходимых компонента для программного обеспечения сверточных сетей и сетей другого типа, известных как рекуррентные нейронные сети. Мы были тогда совсем новичками в этом!
Леон взялся написать интерпретатор Lisp для гибкого взаимодействия с той частью программного обеспечения, которая выполняет вычисления, – строительный блок, который важен для системы. Благодаря своим выдающимся навыкам разработки программного обеспечения он написал этот интерпретатор за несколько недель, и я смог взять его с собой в Торонто.
Когда я прибыл в Торонто в июле 1987 г. в лабораторию, возглавляемую выдающимся ученым Джеффри Хинтоном, который работал на стыке психологии, искусственного интеллекта, когнитивной науки и нейробиологии, я привез с собой свои идеи плюс проект, находившийся на ранней стадии разработки.
В последующие месяцы я продолжил разрабатывать программное обеспечение, которое помогло бы мне построить сверточные сети, обучать их, наблюдать за тем, как они работают и т. д. Леон же только закончил Политехнический университет и получил докторскую степень в Орсе по нейронным сетям, применяемым для распознавания речи.
Весной 1988 г. я построил свои первые сверточные сети и протестировал их на небольшом наборе данных. В то же время во Франции Леон применил сверточные сети для распознавания речи. Летом 1988 г. он присоединился ко мне в Торонто. Мы верили в свои идеи и будущее нашего проекта. Наше новое программное обеспечение мы называли SN (Simulateur Neuronal – нейронный симулятор).
Из-за отсутствия общедоступных обучающих данных мне удалось запустить сверточные сети лишь на очень небольшом наборе рукописных чисел, который я сделал сам (написав небольшую программу, которая позволяла рисовать цифры с помощью компьютерной мыши). Я создал 12 версий из 10 цифр от 0 до 9 и поместил каждую цифру в четырех разных положениях на изображении: вверху, внизу и т. д. Итак, у меня было 480 примеров. Согласен, это очень мало.
Рис. 6.2. Архитектуры сети, использованные во время первых экспериментов со сверточными сетями
Слева направо: однослойная сеть; двуслойная сеть; трехслойная сеть с локальными подключениями без распределения весов; трехслойная сеть, где первый слой является сверточным (локальные соединения с распределением весов), а второй слой – с локальными соединениями без распределения весов; трехслойная сеть с распределением весов на первых двух слоях.
Новая архитектура, которую я разработал, хорошо подошла для распознавания таких типов изображений. Это доказало, что мой принцип работал, и даже намного лучше, чем другие типы полносвязных нейронных сетей, то есть тех, где все нейроны одного слоя связаны со всеми нейронами следующего слоя: ConvNet добилась 98,4 %-го успеха на тестовом наборе. Для полносвязной сети этот показатель равнялся 87 %.
Технический отчет о моей работе был опубликован осенью 1988 г. К тому времени я уже перешел в Bell Labs и сразу же начал работать над «настоящим» приложением ConvNet: распознаванием почтовых индексов. Первый успех пришел менее чем через два месяца.
Мои коллеги и я быстро обнаружили для себя одну важную деталь: сверточную сеть можно обучить на изображениях с несколькими символами (таких как полный почтовый индекс), без необходимости заранее отделять символы друг от друга. Выглядит тривиально, но для нас это было крайне важно! До тех пор методы распознавания требовали «сегментирования» символов друг от друга перед их распознаванием. Теперь я мог применять эти сверточные сети к целому слову, не сообщая системе, где находятся буквы, и она дает нам последовательность символов на выходе.
Рис. 6.3. Небольшой набор данных, на котором я тренировал свои первые сверточные сети
Некоторые примеры из небольшой базы данных чисел, написанных с помощью мыши, на которой я обучал свои первые сверточные сети. База состояла из 12 экземпляров каждой из первых десяти цифр. Каждый из них отображался несколькими пикселями, находившимися в четырех различных положениях. Всего было 480 примеров, из них 320 для обучения и 120 для тестирования.
Вскоре вместе с группой инженеров из Bell Labs мы начали разрабатывать систему считывания чеков, которая была мгновенно продана NCR (National Cash Register), в то время дочерней компании AT&T. Через несколько лет система уже считывала от 10 до 20 % всех чеков, выписанных в Соединенных Штатах.
К моменту наших первых успехов исследования в области машинного обучения уже отказались от нейронных сетей. В научном сообществе теперь говорили только об альтернативных методах, конкурировавших с нейронными сетями: SVM (метод опорных векторов), изобретенный в нашей лаборатории, методы ускорения, найденные другой группой Bell Labs, вероятностные методы. Между 1995 и 2010 гг. существовало множество конкурирующих моделей.