![](/books_files/covers/thumbs_240/kak-uchitsya-mashina-revolyuciya-v-oblasti-neyronnyh-setey-i-glubokogo-obucheniya-217295.jpg)
Автор книги: Ян Лекун
Жанр: Техническая литература, Наука и Образование
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 7 (всего у книги 25 страниц) [доступный отрывок для чтения: 7 страниц]
Решетка из 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] и т. д.
![](i_022.png)
Рис. 3.4. Изображение буквы C на решетке 5 × 5 пикселей
Изображение – это матрица, составленная из пикселей, где каждый пиксель – это число, обозначающее цвет пикселя: +1 для черного и –1 для белого. Таким образом, изображение описывается таблицей чисел от единицы до минус единицы. В более привычных нам «черно-белых» изображениях, например, на черно-белых фотографиях, соответствующие числа представляют интенсивность серого цвета, обычно в диапазоне от нуля до 256. В цветном изображении каждый пиксель определен тремя числами, представляющими интенсивность красного, зеленого и синего цветов.
![](i_023.png)
Рис. 3.5. Нейрон, связанный с изображением
Нейрон вычисляет взвешенную сумму своих входов. В данном случае нейрон имеет 25 входов, представляющих собой пиксели изображения, каждый из которых имеет значение +1 или –1. Значение каждого пикселя умножается на вес, присвоенный связанному с пикселем входу нейрона. Данные результаты суммируются для получения взвешенной суммы. Это веса, которые машина может использовать для коррекции результата. Затем взвешенная сумма сравнивается с пороговым значением. Если взвешенная сумма больше порога, выход нейрона равен +1, в противном случае равен –1. Совокупность весов входящих связей – это память системы. (Для ясности схемы показана только часть соединений.)
В машине 25 весов, каждый из которых связан с пикселем. Эти 25 параметров и схема их подключения составляют архитектуру машины. Такая схема подключения является фиксированной: один и тот же пиксель всегда подключен к одному входу и связанному с ним весу. До начала этапа обучения все веса равны 0. Таким образом, взвешенная сумма будет равна 0, а результат –1, независимо от изображения.
Как отличить букву C от буквы D?
В процессе обучения машина регулирует свои веса. Научим ее отличать букву С от буквы D. Мы уже знакомы с этим методом: предоставляем машине несколько последовательных примеров каждой буквы. Каждый раз, когда машина выдает правильный ответ, мы не предпринимаем ничего. Если она ошибается, мы корректируем веса (мы «поворачиваем ручки регулировки громкости»), чтобы изменить взвешенную сумму таким образом, чтобы она стала положительной для буквы C и отрицательной для буквы D.
Рассмотрим процедуру более подробно. Если в качестве примера используется буква C, а машина ошиблась, это означает, что веса установлены неправильно и взвешенная сумма ниже 0 (порога), а не выше. Поэтому машина (точнее, алгоритм обучения, написанный инженером), должна изменить веса так, чтобы взвешенная сумма увеличилась. Она увеличивает значение для тех весов, соответствующий вход которых равен +1, и уменьшает значение для весов, у которых соответствующий вход равен –1.
И наоборот, если пример – буква D, и машина дает неправильный ответ (+1, «Это C»), это означает, что взвешенная сумма больше 0, а не меньше. В этих условиях алгоритм обучения должен уменьшать веса, соответствующие входы которых равны +1, и увеличивать веса, соответствующие входы которых равны –1.
Вес каждый раз меняется на небольшую величину. Новое значение веса после настройки перезаписывает предыдущее значение. Одной итерации недостаточно. Правильный ответ будет получен только после последовательных обновлений.
При некотором везении повторение этих манипуляций для представления / распознавания / корректировки весов для букв C и D приведет к тому, что конфигурации весов, определяемые алгоритмом, будут сходиться к стабильной ситуации, когда любая буква C и любая буква D будут распознаны.
В обучающем наборе значения 25 пикселей находятся в векторе x, веса – в векторе w. Переменная y содержит желаемый выход (+1 или –1), а переменная yp – это выход, вычисляемый нейроном (также +1 или –1). Разница (y – yp) будет равна 0, если машина выдает правильный ответ, +2, если желаемый ответ равен +1, но полученный ответ будет –1, и –2, если наоборот. По следующей формуле каждый вес w[i] обновляется, как описано выше, с использованием соответствующего входа x[i]:
w[i] = w[i] + e * (y – yp) * x[i]
Переменная e содержит положительную константу, определяющую уровень корректировки. Взвешенная сумма будет увеличиваться или уменьшаться в правильном направлении в результате изменения весов.
Такая процедура может быть представлена в виде программы из нескольких строк. Предположим, что у нас буква C, поэтому желаемый выход равен +1. Мы вычисляем взвешенную сумму, используя функцию нейрона (w, x), определенную выше, затем обновляем все веса, переписывая каждый из них один за другим следующим образом:
yp = neurone(w, x)
for i in range(len(w)):
w[i] = w[i] + e * (y – yp) * x[i]
Перцептрон Розенблатта был электронной машиной весом в несколько тонн. Магия современных технологий заменяет ее этой маленькой программой из нескольких строк, исполняемой на небольшом компьютере.
В примере, который мы привели, машина изучает «трафаретные» отличия букв C и D. Пиксели, специфичные для буквы C, имеют положительный вес; пиксели, специфичные для буквы D, имеют отрицательный вес, а другие пиксели, которые не появляются в C или D, или те, которые появляются в обоих, имеют нулевой вес.
Но мы также можем рассматривать процедуру обучения перцептрона как минимизацию функции стоимости, параметры которой являются регулируемыми весами системы. Как тот, что описан в примере с автомобилем, который мы рассматривали выше. Мы вернемся к этому в Главе 4.
Позвольте мне уже сейчас раскрыть интригу: в тот момент существовала тривиальная техника распознавания фигур независимо от их вариаций – метод «ближайшего соседа». Совсем другой метод, нежели перцептрон. Он состоит из простого сравнения одного изображения с другим. Компьютер хранит в своей памяти все тренировочные образы. Когда появляется изображение, которое нужно распознать, машина сравнивает его с изображениями в своем каталоге. Она находит наиболее похожее изображение, например, подсчитывая количество разных пикселей между двумя изображениями. Выводится категория ближайшего изображения: если это D, вывод будет «D». Этот метод хорошо подходит для простых изображений, таких как печатные буквы (в небольшом наборе шрифтов). Но для рукописных символов он менее эффективен, к тому же он слишком трудоемок. Если бы мы использовали метод ближайшего соседа для распознавания собаки или стула, нам потребовались бы миллионы фотографий собак и стульев в разных положениях, освещении, конфигурациях и средах. Такой прием практически никогда не работает, но даже там, где он может сработать, он останется крайне непрактичным.
Обучение с учителем и обобщение
Важнейшее свойство обучающейся машины – это ее способность к обобщению, то есть умение давать правильный ответ для примеров, которые она не видела во время обучения. Если обучающий набор содержит достаточно примеров букв C и D с небольшими вариациями стиля, перцептрон может распознавать и такие варианты C и D, которые он никогда раньше не видел. Правда, при условии, что они не слишком сильно отличаются от примеров обучения.
Проиллюстрируем данный принцип обобщения при помощи аналогии. Чтобы найти результат умножения 346 на 2067, человек не учит наизусть результаты перемножения всех возможных чисел: он – находит сам принцип, позволяющий производить умножение. Перцептрон делает нечто подобное. Он не хранит все возможные формы C, чтобы в дальнейшем их распознать. Он разрабатывает модель, шаблон, который позволяет ему выполнять распознавание по запросу. Посмотрим, как это происходит.
Оператор, который обучает систему, собирает множество примеров, может быть, сотни, а то и тысячи, букв C, разных размеров, с разными шрифтами, размещенных в разных местах 25-пиксельной сетки. Он делает то же самое с буквой D.
Если обучить перцептрон выдавать +1 для примеров C и –1 для примеров D, процедура обучения перцептрона даст положительный вес пикселям, которые являются черными для C и белыми для D, и отрицательный вес для пикселей, которые белые для C и черные для D. В целом веса представляют информацию, позволяющую отличать C от D.
«Магия» обучения заключается в том, что «обученная» машина способна выйти за рамки того, что ей было показано.
Пределы возможностей перцептрона
Метод, который мы только что описали, работает, когда примеры букв C и D не слишком сильно отличаются. Если различия в форме, размере или ориентации слишком велики, например, одна буква C крошечная, другая находится в углу изображения – перцептрон не сможет найти комбинацию весов, которая может различать примеры букв C и D. Таким образом, он оказывается неспособным различать определенные типы форм. Этот предел является общим для всех линейных классификаторов, примером которых является перцептрон. Рассмотрим, почему это так.
Входом линейного классификатора является список из n чисел, который также может быть представлен n-мерным вектором. С математической точки зрения вектор – это точка в пространстве, координатами которой являются числа, составляющие его. Для нейрона с двумя входами входное пространство является двумерным (это плоскость), а входной вектор обозначает точку на плоскости. Если нейрон имеет три входа, входной вектор обозначает точку в трехмерном пространстве. В нашем примере для букв C и D пространство входа имеет 25 измерений (25 пикселей изображения один за другим связаны с 25 входами нейрона). Таким образом, изображение представляет собой вектор, состоящий из значений 25 пикселей, которые обозначают точку в этом 25-мерном пространстве. Однако представить себе гиперпространство очень трудно.
Линейный классификатор, то есть пороговый нейрон Маккаллока и Питтса, разделяет свое входное пространство на две половины: например, изображения C и изображения D. Если пространство представляет собой плоскость (для нейрона с двумя входами), граница между двумя половинами представляет собой линию. Если пространство имеет три измерения, граница – это плоскость между двумя половинами. Если пространство имеет 25 измерений, граница представляет собой 24-мерную гиперплоскость. В более общем случае, если количество входов равно n, пространство имеет n измерений, а поверхность разделения представляет собой (n – 1)-мерную гиперплоскость.
Чтобы убедиться в том, что эта граница действительно является гиперплоскостью, перепишем формулу для взвешенной суммы в размерности 2, то есть скалярное произведение вектора w (весов) и вектора x (значения пикселей входа)
S = w[0] * x[0] + w[1] * x[1]
Когда эта взвешенная сумма равна нулю, мы находимся на границе между двумя половинами пространства, разделенными линейным классификатором. Таким образом, точки границы удовлетворяют уравнению:
w[0] * x[0] + w[1] * x[1] = 0
Мы также можем написать:
x[1] = –w[0] / w[1] * x[0]
Это и есть уравнение прямой.
При вычислении скалярного произведения двух векторов, если эти два вектора ортогональны, скалярное произведение равно нулю. Если векторы расположены под углом менее 90° друг к другу, скалярное произведение положительно. Если векторы расположены под углом более 90°, скалярное произведение отрицательное. Таким образом, набор векторов x плоскости, скалярное произведение которого на вектор w равно нулю, является набором векторов, ортогональных вектору w. В размерности n они образуют гиперплоскость размерности n – 1.
Однако на самом деле это не всегда так. Продемонстрируем, почему.
Представим себе перцептрон не с 25 входами (сетка 5×5 пикселей), а с двумя входами, т. е. он снабжен нейроном с двумя входами. Теперь добавим к этому перцептрону третий «виртуальный» вход, значение которого всегда будет равно –1. Без этого дополнительного параметра разделительная линия всегда будет проходить через начало координат. Но разделительная линия не обязательно должна проходить через начало координат плоскости: изменяя соответствующий вес, ее можно свободно перемещать.
Эта очень простая машина оказывается неспособной различить между собой определенные изображения входа. Четыре обучающих примера (0, 0), (1, 0), (1, 1) и (0, 1) могут быть представлены четырьмя оценками. Разместим их на графике (см. рис. 3.6).
Функции, которые может выполнять перцептрон, – это те функции, которые позволяют классифицировать точки в два набора, разделяя их для классификации.
Наблюдая за графиком, мы видим, что можем провести линии, отделяющие (0, 0), (1, 0) и (0, 1) от (1, 1).
Мы можем провести прямые линии, отделяющие (0, 0) от (1, 0), (1, 1) и (0, 1).
Но мы не можем провести линию, которая отделяет (0, 0) и (1, 1) от (1, 0) и (0, 1).
Функция, которая возвращает 0 для (0, 0); 1 для (1, 1); 1 для (1, 0) и 0 для (0, 1), называется «исключающим ИЛИ». Эта функция, как принято говорить, «не является линейно разделимой»: точки входа, выход которых равен 1, нельзя отделить линией, плоскостью или гиперплоскостью от точек входа, выход которых равен 0.
![](i_024.png)
Рис. 3.6. Перцептрон с 2 входами
Функция, которая связывает +1 с черными точками (0, 1) и (1, 0) и –1 с серыми точками (0, 0) и (1, 1), называется «исключающее ИЛИ». Не существует прямой линии, отделяющей все черные точки от всех серых точек. Это – один из способов показать, что линейный классификатор (например, перцептрон) не может вычислить исключающее ИЛИ. Линии на диаграмме представляют функции И [+1 для (1, 1) и –1 для остальных] и ИЛИ [–1 для (0, 0) и +1 для остальных]. В размерности 2 только две булевы функции из 16 не разделимы линейно. При увеличении размерности только незначительная часть функций линейно разделима.
В таблице ниже каждая строка представляет собой одну из четырех возможных конфигураций двух двоичных входов. Каждый пронумерованный столбец представляет выходы конкретной логической функции для каждой из четырех конфигураций входа. Есть 16 возможных функций (т. е. 24). 14 из 16 функций достижимы с помощью линейного классификатора. Недостижимы только две (они обозначены буквой Н в последней строке):
![](i_025.png)
В этом примере мы видим точки в двумерном пространстве, соответствующие двум пикселям изображения, которые составляют два входа функции. Это плоскость. Ее вполне можно представить себе или визуализировать.
Однако настоящий перцептрон работает в многомерном пространстве. Когда мы хотим, чтобы перцептрон различал несколько более сложные или разные формы, положения и т. д., мы часто оказываемся в только что описанной ситуации, но на этот раз в «высоких» измерениях.
В перцептроне, если вектор входа образует острый угол с вектором веса, взвешенная сумма будет положительной, если же угол тупой, она будет отрицательной. Разделительная линия между положительным и отрицательным значениями – это набор точек x, которые ортогональны вектору веса w, поскольку скалярное произведение между w и x равно нулю. В размерности n уравнение границы выглядит следующим образом:
w[0] * x[0] + w[1] * w[1] + w[2] * w[2]….w[n-1] * x[n-1] = 0
Это гиперплоскость размерности n – 1.
Перцептрон разделяет пространство на две половины гиперплоскостью. На одной «стороне» гиперплоскости мы хотим получить все точки, которые делают детектор C активным, а на другой «стороне» мы хотим получить точки, делающие его неактивным. Если можно найти такую гиперплоскость, то процедура обучения перцептрона в конечном итоге найдет ее путем многократного прохождения обучающих примеров. Если такой гиперплоскости не существует, то есть если точки неразделимы линейно, процедура обучения перцептрона будет бесконечно продолжать изменять веса, никогда не приходя к их единой стабильной конфигурации.
Зачем мы проводим эти примеры? Дело в том, что именно они объясняют разочарование, охватившее исследователей распознавания образов в начале 1960-х. Специалисты поняли, что возможности перцептрона ограничены, и что они не смогут использовать его для распознавания объектов на естественных изображениях.
Это связано с тем, что, когда размерность входа высока, а примеры многочисленны и сложны, например, тысячи фотографий собак, кошек, столов и стульев, то велики и шансы, что категории не будут линейно разделяемыми, то есть достижимыми с помощью перцептрона, подключенного непосредственно к пикселям. Даже в простом случае с буквами C и D, если существуют значительные различия в форме, положении или размере букв, классификация букв C и D оказывается для перцептрона невозможной.
Книга Сеймура Паперта и Марвина Мински «Перцептроны»[43]43
Marvin L. Minsky, Seymour A. Papert, Perceptrons: An Introduction to Computational Geometry, op. cit.
[Закрыть], изданная в 1969 г., поставила крест на будущем этого типа машин. Прекращение исследований в области машинного обучения сыграло важную роль в истории искусственного интеллекта. Оно привело к одному из тех застоев, о которых мы упоминали, когда научное сообщество отвернулось от этой тематики.
Но для современного читателя интерес к такой демонстрации состоит в том, чтобы приблизиться к пониманию функционирования обучающейся машины.
Решение: экстрактор признаков
Таким образом, перцептрон в своей простейшей версии оказался неспособным различать некоторые типы изображений. Решение этой проблемы было найдено уже тогда, и оно используется до сих пор. Суть его заключается в размещении между входным изображением и нейронным слоем промежуточного модуля, «экстрактора признаков», который обнаруживает наличие или отсутствие определенных паттернов во входном изображении, а затем создает вектор, описывающий наличие, отсутствие или интенсивность этих паттернов. Затем этот вектор обрабатывается слоем перцептрона.
Рассмотрим пример.
Когда вы подключаете перцептрон непосредственно к пикселям изображения, скажем, буквы C, перцептрон не может создать «улучшенный шаблон», в котором изображение, закодированное его весами, указывает на пиксели, которые отличают C от других категорий. Как только разнообразие примеров становится слишком большим, машина Розенблатта «насыщается», и веса оказываются не способны выявлять различия. Это происходит, когда перцептрон обучается на сильно отличающихся буквах С. На изображениях с разрешением, достаточным для распознавания всех символов, примерно 20 × 20 пикселей, буквы C могут быть маленькими, большими, напечатанными различными шрифтами или написанными от руки различными стилями, располагаться в углу изображения, а не в центре и т. д. Если форма, положение или размер слишком отличаются, перцептрон не может классифицировать их, потому что нет единого улучшенного шаблона, который подходил бы ко всем этим вариациям.
![](i_026.png)
Рис. 3.7. Экстрактор признаков
Экстрактор признаков обнаруживает наличие отличительных паттернов во входном изображении и отправляет выходы обучаемому классификатору, такому как перцептрон. Первый шаблон определяет окончания линий справа как конечные точки линий буквы «C». Два других обнаруживают углы, как и у буквы «D». Результаты передаются на вход перцептрона. После обучения перцептрон сможет отличать букву C от D независимо от размера и положения, пока эти признаки наличествуют. В данном примере, где есть одна буква C и две буквы D, расположенные по-разному, экстрактор можно рассматривать как слой бинарных нейронов. Белый пиксель представляет значение –1, серый пиксель представляет значение 0, а черный пиксель +1. Три детектора представляют собой своего рода «шаблоны» размером 5 × 5 пикселей, которые передаются по входному изображению. Для каждого положения шаблона мы вычисляем взвешенную сумму 25 пикселей входного окна с 25 весами шаблона. В результате получаются изображения, в которых каждый пиксель темнее, поскольку содержимое окна похоже на шаблон. Затем взвешенные суммы сравниваются с пороговым значением и выводятся карты признаков со значением +1, если шаблон обнаружен в соответствующем месте, и 0, если не обнаружен.
Один из способов отличить букву C от D на изображении размером 20 × 20 пикселей, независимо от шрифта или стиля, заключается в обнаружении углов и окончаний строк. Буква D – замкнутая фигура с двумя углами, а буква C – кривая на каждом конце линии. Можно было бы построить экстрактор признаков, который указывал бы на наличие окончаний и углов, независимо от их положения на изображении. Для этого мы можем спроектировать первый слой, состоящий из набора бинарных нейронов, входами которых будут небольшие окна размером 5 × 5 пикселей на входном изображении, а веса которых будут фиксироваться «вручную» (а не определяться алгоритмом обучения). Мы получим три типа нейронов-детекторов: один нейрон-детектор окончания и два нейрона-детектора угла. Каждое окно 5 × 5 на входном изображении питает три нейрона: по одному из каждого типа. Выход каждого нейрона равен +1, когда изображение 5 × 5 его входа выглядит как изображение, сформированное его весами, и 0 в противном случае. Для правильно сформированной буквы C будет активирован детектор окончания, а для правильно сформированной буквы D будут активированы детекторы угла. Последний слой – простой перцептрон. Такому перцептрону достаточно подсчитать количество углов и окончаний, чтобы отличить букву C от D независимо от их положения, размера или стиля.
Итак, можно изменить архитектуру перцептрона, чтобы он мог выполнять более сложные операции. Перед слоем перцептрона можно разместить «экстрактор признаков». Этот экстрактор функций не обучен, он создается вручную (инженер разрабатывает программу для этой функции). Такая конструкция сложна, и ее создание занимает много времени. Было предложено большое количество методов для создания экстракторов признаков, подходящих для каждого специфического применения. В научной литературе до 2015 г. было описано множество таких методов.
Популярный вид экстрактора признаков обнаруживает небольшие простые паттерны на входном изображении. Для букв, например, он маркирует не только окончания и углы, но и вертикальные полосы, горизонтальные полосы, петли и т. д. Выходом экстрактора признаков является ряд чисел, указывающих наличие или отсутствие этих паттернов и их положения. Вместо того чтобы напрямую подключаться к пикселям входного изображения, перцептрон анализирует более абстрактные характеристики.
Если перцептрон собирается обнаружить автомобиль, экстрактором признаков может быть набор шаблонов, которые обнаруживают колесо, угол лобового стекла, решетку радиатора и так далее. Эти шаблоны последовательно применяются ко всем участкам изображения и активируются, когда обнаруживают соответствующий паттерн. Затем все эти признаки вводятся в перцептрон. То же самое происходит и с лицами. Достаточно обнаружить темные области, образованные глазами, две маленькие темные точки в ноздрях, немного более темную линию рта, чтобы построить с этими признаками подходящий детектор лица.
В исходном перцептроне экстрактор признаков был на самом деле серией бинарных нейронов, связанных с небольшими группами пикселей во входном изображении, выбранных случайным образом (потому что не было лучшей идеи!). Вес этих нейронов нельзя было изменить путем обучения. Они были фиксированными, со случайными значениями. Поскольку соединения нейронов были случайными, вы не могли быть уверены в правильности результата. Для того, чтобы этот первый слой играл свою роль, должно было быть много промежуточных нейронов, извлекающих признаки. В результате количество входов в конечный нейрон (единственный обучаемый нейрон) непропорционально увеличилось. В некоторых системах классификации и распознавания образов (с 2013 г. они уже мало используются) количество входов экстрактора признаков исчисляется миллионами. Чем больше будет признаков, тем легче будет впоследствии классифицировать перцептрон. Так проще, но значительно более трудоемко.
Организация зрительной коры мозга в последовательных областях продолжала вдохновлять исследователей. Они задумались об улучшении перцептрона путем создания дополнительных нейронных слоев. Первый слой системы извлекает очень простые признаки. Следующий слой пытается обнаружить сборки или соединения этих контуров, чтобы сформировать элементарные формы, такие как круги или углы. На следующем слое обнаруживаются комбинации этих паттернов для частей объектов и т. д.
Еще один, более продуманный, способ создать экстрактор признаков – метод опорных векторов, или SVM (англ. Support Vector Machine), который изобрела Изабель Гийон (профессор Орсе с 2015 г.) в сотрудничестве с Владимиром Вапником и Бернхардом Босером, членами нашей команды в Bell Labs. В период с 1995 по 2010 г. SVM был доминирующим методом классификации, однако, при всем уважении к моим друзьям и коллегам, я признаюсь, что этот метод не представлял для меня особого интереса. Он не решил ключевой проблемы автоматического управления экстрактором признаков, хотя казался весьма перспективным.
Подход, лежащий в основе SVM, – это пример того, что мы называем «ядерными методами». Фактически он представляет собой своего рода двухслойную нейронную сеть. (Те, кто пользуется этим методом, такую аналогию не приветствуют.) Первый слой имеет столько единиц, сколько примеров в обучающем наборе, а второй слой вычисляет взвешенные суммы, как обычный перцептрон. Модули на первом слое «сравнивают» вход x с каждым из обучающих примеров X[0], X[1], X[2], …, X[p – 1], используя функции ядра k(x, q), где x – вектор входа, а q – один из обучающих примеров. Например, единица номер 3 первого слоя даст следующий результат: z[3] = k(x, X[3]).
Типичный пример функции k – это экспонента расстояния между двумя векторами:
Единица этого типа выдает большое значение выхода, когда x и q находятся рядом, и маленькое значение, когда они находятся далеко друг от друга.
Второй слой сочетает эти выходы с контролируемыми весами. В перцептроне такого типа только конечный слой обучается с учителем. Но первый слой также обучается, так как он использует входы (x) из обучающих примеров[44]44
Его обучение происходит без учителя, поскольку не используются желаемые выходы (y).
[Закрыть].
Эта чрезвычайно простая модель стала предметом многих прекрасных книг по математике. Отчасти именно естественное влечение исследователей к тонкой математике сделало SVM и ядерные методы действительно успешными. К сожалению, их авторы часто скрывали от себя ограничения этих методов. Мне и моим коллегам было очень трудно убедить сообщество в том, что, несмотря на успешные результаты, эта машина по сути ненамного мощнее перцептрона. Некоторые из сторонников ядерных методов до сих пор не уверены в полезности многослойных архитектур, в том числе и Владимир Вапник.
Тем не менее, следует признать, что SVM надежны и просты в эксплуатации при небольшом количестве обучающих примеров, что было типичным для середины 1990-х годов. Кроме того, с первых дней Интернета SVM-программы находились в открытом доступе. Девиз «все новое – прекрасно» набирал обороты. В 1990-х годах ядерные методы затмили нейронные сети. О полезности наличия нескольких слоев вскоре забыли.
Однако добавление одного или нескольких слоев искусственных нейронов позволяет вычислять более сложные функции, которые невозможно эффективно вычислить с помощью одного слоя. Математические теоремы показывают, что всего с двумя слоями нейронов можно вычислить все, что угодно, и этот факт мотивировал развитие SVM. Но зачастую первый слой нейронов при этом оказывался гигантским: количество нейронов в нем должно быть намного больше, чем количество пикселей в начальном изображении. В случае нашего маленького 25-пиксельного изображения там могли быть сотни или тысячи нейронов.
Исследователи 1960-х застряли на обучении этих множественных слоев. Процедура обучения перцептрона может обучать только конечный слой. Первый слой экстрактора признаков еще не мог обучаться и должен был быть настроен вручную. Эта трудность ручной настройки тысяч или миллионов весов для каждого попадающего в машину изображения объясняет, почему в конце 1960-х исследователи отказались от идеи интеллектуальной машины, которую можно было бы обучать от начала до конца. Они сосредоточились на прикладных программах, основной задачей которых стало выявление статистических закономерностей. Архитектура, вдохновленная перцептронами, хотя и несовершенная, доминировала в мире машинного обучения до начала 2010-х гг. Возьмите сигнал, пропустите его через созданный вручную экстрактор функций, а затем через систему классификации, которая может быть перцептроном или любым другим статистическим методом обучения: это и есть «першерон» распознавания образов[45]45
Першерон – французская порода лошадей-тяжеловозов, в этом случае название породы использовано как аналог русского выражения «рабочая лошадка». – Прим. ред.
[Закрыть].
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?