Литмир - Электронная Библиотека
Содержание  
A
A

Меняя положение прицела, наш храбрый охотник применяет алгоритм научения, хотя сам этого не осознает. Он имплицитно вычисляет то, что математики называют «производной» системы, или ее градиентом, и использует «метод градиентного спуска». Иными словами, охотник учится смещать видоискатель ружья в направлении, уменьшающем вероятность ошибки.

Несмотря на миллионы входов, выходов и регулируемых параметров, большинство искусственных нейросетей, используемых в современном искусственном интеллекте, действуют точно так же, как наш охотник: они анализируют свои ошибки и на их основе корректируют свое внутреннее состояние в направлении, которое должно эти ошибки уменьшить. Во многих случаях такое обучение строго контролируется. Мы сообщаем сети, какой именно ответ она должна была выдать на выходе («Это 1, а не 7»), и точно знаем, в каком направлении необходимо корректировать параметры, если они привели к ошибке (математические вычисления позволяют определить, какие именно связи следует модифицировать, если в ответ на изображение цифры 1 сеть слишком часто дает на выходе 7). На языке машинного обучения это называется «обучением с учителем» (поскольку некто знает правильный ответ, который должна дать система) и «обратным распространением ошибки» (поскольку сигналы об ошибке отправляются обратно в сеть для изменения ее параметров). Процедура проста: я пробую ответить, мне сообщают правильный ответ, я определяю свою ошибку и корректирую параметры, чтобы впредь этой ошибки не совершать. На каждом этапе я делаю лишь небольшие поправки в нужном направлении. Вот почему такое обучение может протекать крайне медленно: в ходе овладения сложным видом деятельности вроде игры в Tetris данный цикл необходимо повторить тысячи, миллионы, даже миллиарды раз. Это и неудивительно: в пространстве с множеством регулируемых параметров поиски оптимальных настроек для каждой гайки и болта могут занять некоторое время.

Данный принцип постепенной коррекции ошибки был реализован уже в самых первых искусственных нейросетях, созданных в 1980-х годах. Достижения в области вычислительной техники позволили распространить эту идею на гигантские нейронные сети, включающие сотни миллионов регулируемых соединений. Эти глубокие нейросети состоят из последовательностей этапов, каждый из которых адаптируется к текущей задаче. Например, на цветной иллюстрации 4 представлена система GoogLeNet на основе архитектуры LeNet. Последняя была предложена Яном Лекуном и выиграла один из самых престижных международных конкурсов по распознаванию образов. Анализируя миллиарды изображений, система научилась распределять их на тысячи различных категорий: лица, пейзажи, лодки, автомобили, собаки, насекомые, цветы, дорожные знаки и так далее. Каждый уровень ее иерархии настроен на некий важный аспект реальности: например, нейроны низших уровней избирательно реагируют на линии и текстуры. Чем выше уровень, тем больше нейронов учится реагировать на сложные признаки: геометрические фигуры (круги, кривые, звезды), части объектов (карман брюк, ручку автомобильной двери, пару глаз) и даже целые объекты (здания, лица, пауков)7.

Стараясь минимизировать ошибки, алгоритм градиентного спуска обнаружил, что эти формы лучше всего подходят для классификации образов. Однако, если бы та же самая сеть получала на входе отрывки из книг или нотные листы, она бы настроилась иначе и научилась распознавать буквы, ноты или любые другие фигуры, распространенные в новой среде. Например, на цветной иллюстрации 3 показано, как сеть такого типа самоорганизуется для распознавания тысяч рукописных цифр8. На самом низком уровне данные смешаны: одни изображения внешне похожи, но представляют собой разные цифры (скажем, 3 и 8); другие, наоборот, выглядят по-разному, но в действительности обозначают одно и то же (цифру 8, например, каждый пишет по-своему – у кого-то верхний контур замкнут, у кого-то не замкнут и т.д.). На каждом этапе степень абстракции возрастает, пока все варианты одного и того же знака не будут сгруппированы вместе. Посредством процедуры сокращения ошибок искусственная сеть обнаруживает иерархию признаков, наиболее важных для распознавания рукописных цифр. Примечательно, что само по себе исправление ошибок позволяет обнаружить целый ряд подсказок, облегчающих решение поставленной задачи.

Концепция обучения путем обратного распространения ошибки лежит в основе многих современных компьютерных приложений. Это рабочая лошадка, благодаря которой смартфон умеет распознавать ваш голос, а умный автомобиль – «видеть» пешеходов и дорожные знаки. Весьма вероятно, что наш мозг тоже использует ту или иную ее версию. Впрочем, метод обратного распространения ошибки может принимать разные формы. За последние тридцать лет в области искусственного интеллекта достигнут невероятный прогресс; исследователи обнаружили множество приемов, облегчающих обучение. Ниже мы рассмотрим их более подробно – оказывается, они многое могут рассказать о нас самих и о том, как мы учимся.

Научение – это исследование пространства возможностей

Одна из проблем, связанных с описанной выше процедурой коррекции ошибок, заключается в том, что система может зациклиться на неоптимальных параметрах. Представьте мяч для гольфа, который всегда катится под уклон. Допустим, прямо сейчас он движется по склону холма. Если в какой-то момент он попадет в ямку или в углубление, то уже никогда не достигнет его подножия – низшей точки ландшафта, абсолютного оптимума. Нечто подобное может случиться и с алгоритмом градиентного спуска, который иногда застревает в точке «локального минимума». «Локальный минимум» – своеобразный колодец в пространстве параметров, ловушка, из которой нельзя выбраться. Как только это происходит, обучение останавливается, ибо все последующие изменения кажутся контрпродуктивными: любое из них лишь увеличивает частоту ошибок. Система чувствует, что научилась всему, чему могла, и слепо игнорирует настройки высшего уровня, хотя те могут находиться всего в нескольких шагах в пространстве параметров. Алгоритм градиентного спуска не «видит» их, ибо отказывается подняться наверх, чтобы опуститься еще ниже. Близорукий, он отваживается отойти только на небольшое расстояние от начальной точки, а потому может не заметить лучшие, но удаленные конфигурации.

Это кажется вам слишком абстрактным? Представим конкретную ситуацию: вы идете за покупками на рынок, где хотите купить продукты подешевле. Вы минуете первого продавца (цены у него явно завышены), обходите второго (у него слишком дорого) и, наконец, останавливаетесь около третьего. У третьего продавца товар гораздо дешевле, чем у двух предыдущих. Но кто поручится, что в конце прохода или, возможно, в соседнем городе цены не окажутся еще ниже? Иначе говоря, понятия «лучшая местная цена» и «глобальный минимум» не всегда означают одно и то же.

На такой случай у специалистов в области вычислительной техники припасен целый арсенал хитроумных приемов. Большинство состоит в том, чтобы ввести в поиск лучших параметров элемент случайности. Идея проста: вместо того чтобы двигаться на рынке по одному-единственному проходу, разумнее выбрать более хаотичный маршрут; вместо того чтобы позволить мячу для гольфа спокойно катиться вниз по склону, следует придать ему ускорение, тем самым уменьшив вероятность того, что он застрянет в ямке. Иногда алгоритмы стохастического поиска пробуют удаленные и частично случайные настройки: если лучшее решение находится в пределах досягаемости, шансы рано или поздно найти его достаточно велики. На практике ввести некоторую степень случайности можно самыми разными способами: задавая или обновляя параметры хаотичным образом, внося разнообразие в порядок примеров, добавляя шум к данным или используя только случайный набор связей. Все это повышает надежность обучения.

Некоторые алгоритмы машинного обучения черпают вдохновение из дарвиновского алгоритма, который управляет эволюцией видов: в ходе оптимизации параметров они вводят мутации ранее обнаруженных решений. Как и в биологии, скорость этих мутаций должна тщательно контролироваться; это позволяет машине исследовать новые решения, не тратя слишком много времени на разного рода «авантюры».

8
{"b":"702753","o":1}