Как учится машина. Революция в области нейронных сетей и глубокого обучения - Ян Лекун
s = w[0] * x[0] + w[1] * x[1], …, w[n-1] * x[n-1]
где s – взвешенная сумма, x[0], x[1], x[2],…, x[n-1] – входы, а w[0], w[1], w[2],…, w[n-1] – веса, то есть коэффициенты, входящие в взвешенную сумму. Такой набор из n чисел называется «n-мерным вектором». В векторе пронумеровано каждое число. В системе математических обозначений мы запишем эту формулу более компактно:
Такая операция между векторами называется скалярным произведением. На компьютере мы можем написать программу (на языке Python), которая выполняет следующие вычисления:
def dot(w, x):
s = 0
for i in range (len(w)):
s = s + w[i] * x[i]
return s
Данный код определяет функцию dot(w, x), аргументы которой – два вектора w и x. Функция вычисляет скалярное произведение между w и x и возвращает результат. Оператор for – это цикл, который накапливает в переменной s сумму произведений членов w и x; число итераций цикла равно размерности w и получено с помощью len(w). Последний оператор возвращает значение s вызывающей программе.
w = [–2, 3, 4]
x = [1, 0, 1]
s = dot(w, x)
Который поместит число 2 в переменную s, то есть результат будет выглядеть так:
– 2 * 1 + 3 * 0 + 4 * 1 = 2.
Поскольку порог равен 0, выход нейрона будет равен +1, если s строго больше 0, и –1, если s меньше 0 или равно 0. Небольшая программа в Python может это вычислить:
def sign(s):
if s > 0: return +1
else: return –1
def neurone(w, x):
s = dot(w, x)
return sign(s)
Функция sign, определенная выше, возвращает +1, если ее аргумент s больше 0, и –1 в противном случае.
Согласно Маккалоку и Питтсу, их бинарные нейроны выполняют логические вычисления, а мозг можно рассматривать как машину логического вывода[41].
Эта гипотеза вдохновила психолога Фрэнка Розенблатта. Его перцептрон использовал бинарные пороговые нейроны Маккаллока и Питтса. Он основан на принципе передачи сигнала нейрону, который вычисляет взвешенную сумму своих входов и активируется, когда эта сумма больше 0. Но Розенблатт пошел дальше в копировании биологического нейрона. Воодушевленный идеей, что обучение изменяет синаптическую эффективность в мозге, он разработал процедуру, которая позволяет машине адаптироваться путем исправления ошибок посредством изменения весов, составляющих взвешенную сумму. Последняя мысль восходит еще к работе испанского нейроанатома Сантьяго Рамона-и-Кахала, опубликованной в конце XIX в.
Розенблатт также читал работы канадского психолога Дональда Хебба, который в 1949 г. в своей книге «Организация поведения»[42] предложил идею о том, что синапс, соединяющий два нейрона, усиливается, когда эти два нейрона активируются одновременно. Гипотеза была подтверждена в 1960-х гг., а в 1970-х Эрик Кандел, изучая ставшую знаменитой аплизию, объяснил биохимические механизмы адаптации нейронов.
Перцептрон в своей простейшей форме представляет собой нейрон Маккаллока и Питтса, который обучается посредством изменения своего веса. На этапе обучения оператор показывает машине, например, изображение буквы C, и указывает ожидаемый выход: +1 для буквы C (и –1 для другой буквы). Затем машина регулирует веса входов так, чтобы ее выход приблизительно соответствовал ожидаемому. Эту процедуру необходимо было повторить с несколькими изображениями буквы C и других букв. Путем регулировки весовая конфигурация становится способной распознавать любую (или почти любую) букву C.
Чтобы убедиться в том, что машина обучена должным образом, мы тестируем ее, показывая ей изображения буквы C и изображения других букв, которые она не видела во время обучения. Если распознавание работает, то можно считать, что машина обучена и готова к практическому применению.
В 1957 г. в Буффало машина Фрэнка Розенблатта выглядела как большой металлический шкаф, из которого во все стороны торчали провода. У него была своего рода искусственная сетчатка, сеть фотоэлементов, которые принимали входное изображение, и сотни автоматизированных приводов, немного похожих на ручки регулировки громкости на усилителе, управлявших показателями весов. Каждый привод представлял собой переменный резистор, подключенный к небольшому электродвигателю. Электронная схема вычисляла взвешенную сумму напряжения входов на сетчатке, задаваемую переменными резисторами. Если эта взвешенная сумма превышала пороговое значение, загорался выходной индикатор. Если сумма не превышала пороговое значение, индикатор не загорался.
Новизна перцептрона заключалась именно в его способности к самообучению: он автоматически регулировал свои веса после демонстрации каждого нового изображения, приводя их в соответствие с желаемым выходом. На самом деле, идея корректировки параметров модели на основе данных существовала на протяжении многих веков. Инновация Розенблатта заключалась в применении этой идеи для машинного распознавания образов.
Решетка из 25 пикселей
Запомните следующий принцип: на входе в перцептрон сеть фотоэлементов считывает простые изображения с низким разрешением. На выходе световая индикация дает нам знать, распознано изображение или нет.
Возьмем следующий пример. Перцептрону представляется изображение размером 5×5 пикселей, то есть 25 пикселей, которое преобразуется сетчаткой в серию из 25 чисел: +1 для черного пикселя, – 1 для белого пикселя. Перцептрон представлял эти числа в виде электрических потенциалов на выходящих проводах. В наше время эти же числа – просто значения переменных в памяти компьютера. Для изображения буквы C на рис. 3.4 начало серии из 25 соответствующих чисел будет выглядеть так:
x[0]= –1, x[1]= –1, x[2]= –1, x[3]= –1, x[4]= –1,
x[5]= –1, x[6]= +1, x[7]= +1, x[8]= +1, x[9]= –1,
…
Ряд чисел, то есть вектор x[0],…, x[24], представляет собой изображение входа: первый пиксель соединен с первым входом x[0] нейрона, второй пиксель до вторым входом x[1] и т. д.
Рис. 3.4. Изображение буквы C на решетке 5 × 5 пикселей
Изображение – это матрица, составленная из пикселей, где каждый пиксель – это число, обозначающее цвет пикселя: +1 для черного и –1 для белого. Таким образом, изображение описывается таблицей чисел от единицы до минус единицы. В более привычных нам «черно-белых» изображениях, например, на черно-белых фотографиях, соответствующие числа представляют интенсивность серого цвета, обычно в диапазоне от нуля до 256. В цветном изображении каждый пиксель определен тремя числами, представляющими интенсивность красного, зеленого и синего цветов.
Рис. 3.5. Нейрон, связанный с изображением
Нейрон вычисляет взвешенную сумму своих входов. В данном случае нейрон имеет 25 входов, представляющих собой пиксели изображения, каждый из которых имеет значение +1 или –1. Значение каждого пикселя умножается на вес, присвоенный связанному с пикселем входу нейрона. Данные результаты суммируются для получения