Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
В действительности Минский и Пейперт, как мы знаем, никогда не утверждали, что перцептрон неспособен вычислить функцию XOR. Однако, интерпретируя высказывания авторов «Перцептронов» в таком ключе, Румельхарт бросается в решительную атаку на эту ветряную мельницу и успешно одолевает её.
Он видит решение проблемы в том, что необходимо «взять оригинальную двумерную задачу и преобразовать её в соответствующую трёхмерную задачу». Обосновывая принципиальную важность многослойности, Румельхарт исходил из ошибочной посылки, что перцептрон Розенблатта не обладает этим качеством. Отдельным курьёзным моментом в данном случае является то, что Розенблатт в «Принципах нейродинамики» рассматривал аналог предлагаемого Румельхартом многослойного перцептрона (так называемый перцептрон с переменными S—A связями, часто просто «перцептрон Румельхарта») [1368] .
1368
Rosenblatt F. (1961). Principles of Neurodynamics. Perceptrons and the Theory of Brain Mechanisms. Cornell aeronautical lab inc., Buffalo, New York. Defense Technical Information Center // https://books.google.ru/books?id=Tk2tDAEACAAJ
Однако одно принципиальное отличие у перцептрона Румельхарта всё-таки было. В перцептроне Розенблатта условием срабатывания нейрона было превышение нулевого порога суммой входных сигналов. Если сумма входов искусственного нейрона превышала 0, то на выход передавалась единица, в противном случае выходом нейрона был 0, то есть отсутствие сигнала. Такая пороговая функция носит название функции Хевисайда, она же единичная ступенчатая функция, функция единичного скачка, «включённая единица» или попросту «ступенька».
Однако при всей своей простоте «ступенька» обладает одним ярко выраженным недостатком: она не является непрерывной. Если на выходе перцептрона Розенблатта вы получаете 0 вместо 1 или 1 вместо 0, то вы не можете определить, насколько в действительности текущая конфигурация сети была близка к правильному ответу. Возможно, для получения правильного ответа было достаточно лишь небольшой коррекции одного из синаптических весов, а возможно — текущая конфигурация безнадёжно далека от той, которая способна эффективно решать поставленную перед ней задачу. Розенблаттовский перцептрон, по меткому замечанию Науа Кана, страдает от своеобразного биполярного расстройства: «Перцептрон с единичной ступенчатой функцией не слишком „стабилен“ в качестве „кандидата для серьёзных отношений“ с нейронными сетями. Подумайте об этом: у этой девушки (или парня) есть серьёзные биполярные проблемы! Он(а) то „тих(а)“ и „подавлен(а)“ (при z < 0) и вовсе не отвечает вам. А на другой день (при z >= 0), он(а) внезапно становится „разговорчивым(ой)“ и „живым(ой)“, болтая с вами без умолку. Чёрт, радикальные перемены! Нет никакого перехода в его (её) настроении, и вы не знаете, когда оно ухудшается или улучшается. Да… это шаговая функция» [1369] .
1369
Kang N. (2017). Multi-Layer Neural Networks with Sigmoid Function — Deep Learning for Rookies (2) / Towards Data Science, Jun 27 // https://towardsdatascience.com/multi-layer-neural-networks-with-sigmoid-function-deep-learning-for-rookies-2-bf464f09eb7f
Остроумный метод коррекции ошибки, использованный Розенблаттом, хорошо работал при наличии одного слоя обучаемых весов, но как быть с настройкой синаптических весов глубокой сети? Решая именно эту проблему, Уидроу в ADALINE использовал для коррекции ошибки величину сигнала до прохождения его через функцию активации. Ивахненко, как мы уже знаем, использовал нейроны, в основу которых был положен полином Колмогорова — Габора, являющийся непрерывной функцией от входных значений (при этом Ивахненко подбирал параметры полинома при помощи методов регрессионного анализа и не использовал ничего хотя бы отдалённо похожего на различные методы коррекции ошибки, применявшиеся Розенблаттом и Уидроу). В перцептроне Румельхарта роль функции активации играет логистическая функция [1370] , график которой имеет форму сглаженной «ступеньки». Функции с подобными графиками иногда называют сигмоидами, поскольку их график напоминает букву S.
1370
Rumelhart D. E., Hinton G. E., Williams R. J. (1986). Learning representations by back-propagating errors / Nature, Vol. 323, Iss. 6088, pp. 533—536 // https://doi.org/10.1038/323533a0
Кстати говоря, Оливер Хевисайд, человек, имя которого получила «ступенька», был весьма незаурядной личностью. Учёный-самоучка, инженер, физик и математик, он впервые применил комплексные числа для изучения электрических цепей, независимо от других математиков создал векторный анализ, получил множество других значимых результатов на стыке физики и математики. Он на всю жизнь заслужил репутацию научного смутьяна, однако его весьма неортодоксальные работы заметно изменили облик математики и физики. Возражая на обвинения в недостаточной математической строгости его работ, Хевисайд решительно заявил: «Математика — экспериментальная наука, и определения даются не в начале, а позже. Они возникают сами, когда природа предмета уже развита». А в другой раз высказался ещё более афористично: «Должен ли я отказаться от обеда, потому что не полностью понимаю процесс пищеварения?»
Использование непрерывной функции активации открыло перед глубокими нейронными сетями совершенно новые перспективы. В результате появления и повсеместного признания метода обратного распространения ошибки произошёл долгожданный прорыв в области обучения глубоких сетей. Однако эта революция удивительным образом растянулась почти на два десятилетия.
5.2.3 Метод обратного распространения ошибки
Две гирьки, мирно встав на блюдце,
Определяют жизни ход,
И дверь звенит, и рыбы бьются,
И жабры дышат наоборот.
5.2.3.1 Описание проблемы
Успех Розенблатта и его команды в деле доказательства теоремы о сходимости перцептрона оказал двоякое воздействие на коннекционистские исследования. С одной стороны, было получено строгое обоснование способности модели с одним обучаемым слоем разделять линейно разделимые множества. Однако реальные задачи не всегда являются линейно разделимыми. В таких случаях на помощь могут прийти глубокие модели (с несколькими слоями), но все попытки создать для них метод, который гарантировал бы сходимость, неизменно заканчивались неудачей. Конечно, в моделях, параметры которых могут принимать значения из конечного множества, мы теоретически можем перебрать все возможные сочетания этих величин. Однако применять этот метод на практике нельзя из-за его чрезвычайной вычислительной неэффективности. Например, если для хранения каждого из синаптических весов искусственной нейронной сети, реализованной при помощи цифровой машины, отводится 16 бит, а всего сеть содержит 100 синапсов, то нам придётся перебрать 21600 ? 10480 комбинаций, чтобы найти глобальный оптимум, что, разумеется, неосуществимо на практике, несмотря на весьма скромный размер сети. Теорема о сходимости перцептрона показала, что по крайней мере для некоторого частного случая можно найти метод, который будет не только практически применимым, но и математически строгим. До того как Розенблатту и его коллегам удалось доказать эту теорему, критики нейросетевых моделей фокусировали свой огонь именно на слабости математического фундамента перцептрона. Розенблатт, будучи психологом, покусился на «чужую» область и должен был быть наказан за дерзость! Когда же ему удалось представить формальное обоснование элементарного перцептрона, это хотя и стало веским ответом критикам, но в то же время и в некоторой степени легитимировало строгость последних, косвенно поддерживая предположение о том, что для «легализации» многослойных моделей необходимо столь же строгое обоснование их сходимости. Действительно, для Минского и Пейперта неспособность некоторых архитектур перцептронов решать задачи, подобные определению чётности, ставила крест на этих архитектурах. Однако при этом вопрос о том, насколько такие задачи типичны, насколько способность или неспособность той или иной модели находить решения в некоторых искусственно сконструированных случаях связана со способностью этой же модели эффективно решать типовые задачи, часто оставался за пределами дискуссии. Мы хорошо знаем, что человеческому зрению присущи различные ограничения, начиная от наличия слепого пятна и заканчивая множеством оптических иллюзий, но всё это тем не менее не означает, что человеческое зрение бесполезно.
Однако, даже если мы выйдем за пределы парадигмы математической строгости и согласимся на приближённые решения, открытым остаётся вопрос о том, как должна выглядеть эффективная процедура нахождения таких решений. Как ни странно, математики столкнулись с этой проблемой задолго до появления искусственных нейронных сетей и, более того, нашли для неё ряд весьма остроумных решений.
Давайте представим себе простейшую модель с двумя параметрами. Например, мы хотим обучить нейронную сеть, состоящую из трёх нейронов. Каждый из двух нейронов входного слоя будет связан синапсом с единственным нейроном выходного слоя, на выходе которого будет расположена функция активации. Таким образом, в модели будет всего два синапса, каждому из которых сопоставлено соответствующее значение синаптического веса. Эти веса и будут параметрами нашей модели. Трудно придумать задачу, которую может решать подобная примитивная сеть, но допустим, сеть должна будет по массе и длине тела животного определять, является это животное слоном или нет. Положим, в нашей обучающей выборке есть несколько тысяч примеров животных, для каждого из которых мы знаем массу и длину его тела, а также правильную метку класса, то есть нам известно, является ли каждое животное из обучающей выборки слоном или нет. Будем считать, что если на выходе наша сеть выдаёт единицу, то она считает животное слоном, а если ноль — не считает. Задачу обучения нашей сети можно представить в графической форме в виде некоторой поверхности. В трёхмерной системе координат по оси x отложим значение первого синаптического веса, по оси y — значение второго, а в качестве координаты z будем использовать количество неправильных ответов, выданных нашей сетью для обучающей выборки. Таким образом, задачей алгоритма обучения является нахождение самой низкой точки данной поверхности, то есть таких значений x и y, при которых количество неправильных ответов будет минимальным.
Понятно, что эту точку можно найти, перебрав все возможные пары x и y, то есть «осмотрев» всю поверхность, однако вычислительно это слишком затратная операция. Если каждый из весов может принимать 65 536 различных значений (именно столько их будет, если для хранения каждого из весов мы выделим 16 бит), то даже для нашей игрушечной задачи нам потребуется перебрать 232, то есть более 4 млрд значений. Существуют ли практичные альтернативы этому беспощадному просеиванию миллиардов вариантов?
Представим себе человека с завязанными глазами, оказавшегося на поверхности из нашей задачи в её случайной точке. Его цель — забраться в самую глубокую точку этой поверхности (по возможности за минимальное число шагов). Вполне естественным методом будет движение по этой поверхности в направлении её наибольшего уклона, пока мы не окажемся в точке с нулевым уклоном. Первым из математиков, использовавшим этот подход, стал Огюстен Луи Коши — французский математик и механик. Этот метод, предложенный Коши в 1847 г., а также множество придуманных позже его разновидностей сегодня часто объединяют в семейство, называемое «методами градиентного спуска».
Если мы приглядимся к нашей задаче повнимательнее, то заметим несколько свойственных ей досадных неприятностей. Во-первых, вся её поверхность состоит из уровней, соответствующих целым числам. Действительно, наша сеть может ошибаться в нуле, семи или 300 случаях, но не может ошибаться в 2/3 или 124,57 случая. Такая поверхность, словно бы вышедшая из игры Minecraft, почти во всех своих точках будет иметь нулевой уклон. Нам придётся долго ощупывать окрестности точки в поисках пути вниз — «биполярная» природа функции Хэвисайда играет с нами дурную шутку. Именно поэтому хитрый Уидроу, создавая ADALINE, использовал при обучении величину сигнала до прохождения его через пороговую функцию. По её значению мы можем установить, насколько наша сеть была далека от правильного ответа. Того же результата можно достичь, заменив функцию Хевисайда на какую-либо гладкую функцию активации. Теперь вместо количества ошибок мы можем использовать непрерывную метрику — например сумму квадратов отклонений прогнозов сети от правильных ответов. При выборе такой целевой функции наша поверхность становится гладкой, что упрощает задачу поиска направления наибольшего убывания функции. Во-вторых, хотя на бытовом уровне мы и понимаем, что такое направление наибольшего уклона поверхности, с математической точки зрения задача нахождения этого направления совсем нетривиальна. Коши имел дело с функциями, заданными в аналитической форме. Благодаря этому он мог использовать частные производные, посчитанные опять же аналитически, а геометрическим смыслом производной как раз и является угловой коэффициент касательной. В одномерном случае этот угловой коэффициент — скалярная величина, в нашем же — это вектор размерности 2, определяющий наклон касательной плоскости относительно каждой из двух осей, x и y. Однако наша функция, задающая зависимость ошибки сети от значения её синаптических весов, при задании аналитически становится довольно громоздкой, а способ расчёта её производной — не совсем очевидным.