Одна из проблем, связанных с описанной выше процедурой коррекции ошибок, заключается в том, что система может зациклиться на неоптимальных параметрах. Представьте мяч для гольфа, который всегда катится под уклон. Допустим, прямо сейчас он движется по склону холма. Если в какой-то момент он попадет в ямку или в углубление, то уже никогда не достигнет его подножия – низшей точки ландшафта, абсолютного оптимума. Нечто подобное может случиться и с алгоритмом градиентного спуска, который иногда застревает в точке «локального минимума». «Локальный минимум» – своеобразный колодец в пространстве параметров, ловушка, из которой нельзя выбраться. Как только это происходит, обучение останавливается, ибо все последующие изменения кажутся контрпродуктивными: любое из них лишь увеличивает частоту ошибок. Система чувствует, что научилась всему, чему могла, и слепо игнорирует настройки высшего уровня, хотя те могут находиться всего в нескольких шагах в пространстве параметров. Алгоритм градиентного спуска не «видит» их, ибо отказывается подняться наверх, чтобы опуститься еще ниже. Близорукий, он отваживается отойти только на небольшое расстояние от начальной точки, а потому может не заметить лучшие, но удаленные конфигурации.
Это кажется вам слишком абстрактным? Представим конкретную ситуацию: вы идете за покупками на рынок, где хотите купить продукты подешевле. Вы минуете первого продавца (цены у него явно завышены), обходите второго (у него слишком дорого) и, наконец, останавливаетесь около третьего. У третьего продавца товар гораздо дешевле, чем у двух предыдущих. Но кто поручится, что в конце прохода или, возможно, в соседнем городе цены не окажутся еще ниже? Иначе говоря, понятия «лучшая местная цена» и «глобальный минимум» не всегда означают одно и то же.
На такой случай у специалистов в области вычислительной техники припасен целый арсенал хитроумных приемов. Большинство состоит в том, чтобы ввести в поиск лучших параметров элемент случайности. Идея проста: вместо того чтобы двигаться на рынке по одному-единственному проходу, разумнее выбрать более хаотичный маршрут; вместо того чтобы позволить мячу для гольфа спокойно катиться вниз по склону, следует придать ему ускорение, тем самым уменьшив вероятность того, что он застрянет в ямке. Иногда алгоритмы стохастического поиска пробуют удаленные и частично случайные настройки: если лучшее решение находится в пределах досягаемости, шансы рано или поздно найти его достаточно велики. На практике ввести некоторую степень случайности можно самыми разными способами: задавая или обновляя параметры хаотичным образом, внося разнообразие в порядок примеров, добавляя шум к данным или используя только случайный набор связей. Все это повышает надежность обучения.
Некоторые алгоритмы машинного обучения черпают вдохновение из дарвиновского алгоритма, который управляет эволюцией видов: в ходе оптимизации параметров они вводят мутации ранее обнаруженных решений. Как и в биологии, скорость этих мутаций должна тщательно контролироваться; это позволяет машине исследовать новые решения, не тратя слишком много времени на разного рода «авантюры».
В основе другого алгоритма лежит отжиг – один из видов термической обработки, которым издавна пользовались кузнецы и ремесленники для оптимизации свойств металла. Метод отжига позволяет получить исключительно прочный клинок и состоит в многократном нагревании сплава при постепенно понижающихся температурах. Это повышает вероятность того, что атомы займут правильное положение. Недавно суть этого процесса была успешно перенесена в информатику: алгоритм имитации отжига вносит случайные изменения в параметры при постепенном понижении виртуальной «температуры». Вероятность случайного события высока в начале, а затем начинает снижаться, пока система не достигает оптимальной конфигурации.
Ученые обнаружили, что все эти приемы чрезвычайно эффективны – а значит, не исключено, что в ходе эволюции некоторые из них были «встроены» в наш мозг. Случайный поиск, стохастическое любопытство и зашумленные нейроны – все это играет важную роль в научении у Homo sapiens. И в игре «камень, ножницы, бумага», и в джазовой импровизации, и в анализе возможных решений математической задачи случайность есть один из важнейших компонентов решения. Как мы увидим ниже, всякий раз, когда дети переходят в режим обучения – то есть когда они играют, – они исследуют десятки возможностей, причем зачастую делают это беспорядочно, наобум. Ночью их мозг продолжает жонглировать идеями, пока не натыкается на ту, которая лучше всего объясняет пережитое в течение дня. В третьей части этой книги мы еще вернемся к полуслучайному алгоритму, который отвечает за ненасытное любопытство детей – и тех счастливых взрослых, которым удалось сохранить ум ребенка.
Научение – это оптимизация функции вознаграждения
Помните систему LeNet Лекуна, которая распознает формы цифр? Чтобы этот тип искусственной нейросети мог учиться, его необходимо обеспечить правильными ответами. Иными словами, сеть должна знать, какой из десяти возможных цифр соответствует каждое введенное изображение. Для исправления ошибок система должна вычислить разницу между своим и правильным ответами. Данная процедура получила название «обучения с учителем»: некто вне системы знает решение и пытается научить машину. Метод достаточно эффективный, однако следует отметить, что ситуация, в которой правильный ответ известен заранее, – большая редкость. Когда дети учатся ходить, никто не говорит им, какие именно мышцы нужно сокращать; их просто поощряют пробовать снова и снова, пока они не перестают падать. Другими словами, малыши учатся исключительно на основе оценки результата: я упал или же мне удалось наконец пересечь комнату.
С той же проблемой «обучения без учителя» сталкивается и искусственный интеллект. Например, когда машина учится играть в видеоигру, перед ней ставят одну-единственную задачу – набрать максимальное количество очков. Никто не говорит ей, какие именно действия необходимо для этого предпринять. Как же быть? Как машине самостоятельно найти эффективный и быстрый способ достичь поставленной цели?
«Очень просто», – сказали ученые и придумали так называемое «обучение с подкреплением», в рамках которого мы не сообщаем системе никаких подробностей о том, что она должна делать (этого никто не знает!), но определяем «награду» – например, в виде количества очков9. Что еще хуже, машина может узнавать это количество с задержкой, уже после совершения тех или иных действий. Обучение на основе отложенного подкрепления – принцип, на базе которого DeepMind, дочерняя компания Google, построила машину, способную играть в шахматы, шашки и го. В конце партии система получает один-единственный сигнал, свидетельствующий о выигрыше или проигрыше. Во время самой игры обратная связь отсутствует – засчитывается лишь окончательная победа над соперником. Как же тогда машине определить, что нужно делать? И, если уж на то пошло, как она может оценить свои действия, если известен только исход игры?
Ученые нашли хитрое решение. Они программируют машину так, чтобы она делала сразу две вещи: действовала и одновременно оценивала собственный прогресс. Одна половина системы, так называемый «критик», учится предсказывать конечный результат. Цель этой сети искусственных нейронов заключается в том, чтобы как можно точнее оценить состояние игры и предсказать ее исход: я выигрываю или проигрываю? Благодаря «внутреннему критику» система способна оценивать свои действия в любой момент времени, а не только в конце. На основании этой оценки другая половина машины, «актор» (собственно, «исполнитель»), корректирует свое поведение: пожалуй, мне не стоит делать то-то и то-то – «критик» считает, что это увеличит мои шансы на проигрыш.
Испытание за испытанием «актор» и «критик» работают в тандеме: один учится выбирать наиболее эффективные действия, другой – как можно точнее оценивать их последствия. Спустя некоторое время – в отличие от того парня из анекдота, который падает с небоскреба и на лету восклицает: «Пока все хорошо!» – сеть «актор – критик» обретает невероятную прозорливость: способность предсказывать, какие партии скорее всего будут выиграны, а какие неизбежно закончатся катастрофой.
Комбинация «актор – критик» – одна из самых эффективных стратегий современного искусственного интеллекта. При поддержке иерархической нейронной сети она буквально творит чудеса. Еще в 1980-х годах эта система выиграла чемпионат мира по нардам, а недавно позволила DeepMind создать многофункциональную нейронную сеть, способную играть в разного рода видеоигры вроде Super Mario или Tetris10. Достаточно задать пиксели изображения в качестве входных данных, возможные действия в качестве выходных данных и очки в качестве функции вознаграждения. Всему остальному машина научится сама. Играя в Tetris, она обнаружит, что на экране отображаются разные фигуры, что падающая фигура важнее остальных, что те или иные действия могут изменить ее ориентацию и положение в пространстве и так далее, – а затем выработает оптимальную тактику. В Super Mario изменения входных данных и вознаграждений учат машину обращать внимание на совершенно иные параметры: какие пиксели образуют тело Марио, как он движется, где находятся враги, как выглядят стены, двери, ловушки, бонусы… и как себя вести рядом с ними. Регулируя свои настройки – то есть миллионы связей, соединяющих слои, – сеть может адаптироваться ко всем типам игр и научиться распознавать формы Tetris, Pac-Man
О проекте
О подписке