Шрифт:
Интервал:
Закладка:
В шахматном программировании прогресс на протяжении многих лет был связан с совершенствованием методов оценки позиции и алгоритмов, определяющих приоритетность рассмотрения тех или иных вариантов в игровом дереве. В основе этих методов и алгоритмов были эвристические правила. Задача оценки существенно упрощается, если эту оценку можно разъять на несколько относительно независимых компонентов. Первые шахматные программы независимо оценивали материал, проходные пешки, мобильность и расположение фигур и так далее. Со временем в оценочных функциях увеличивалось количество нелинейных компонентов. Например, «цена» проходных пешек или оценки расположения фигур стали зависеть от фазы игры, со временем появились и нелинейные подходы к оценке материала — добавились компоненты, отвечающие за те или иные сочетания фигур. Усложнение оценочных функций стало возможно не только и не столько потому, что разработчики программ изобрели новые компоненты оценки, а скорее в силу того, что стали доступны масштабные вычислительные эксперименты для подбора значений растущего множества этих компонентов. В XXI в. благодаря дешевизне и доступности высокопроизводительных вычислительных машин стало возможным использование сотен тысяч и даже миллионов партий на сверхкоротких контролях времени для подстройки различных параметров шахматных эвристик. Для решения таких задач появились и общедоступные инструменты. Например, Реми Кулом, автор шахматной программы Crazy Bishop и программы для игры в го — Crazy Stone, создал утилиту CLOP (Confident Local OPtimization, уверенная локальная оптимизация) для оптимизации параметров чёрного ящика в условии наличия шумов (Noisy Black-Box Parameter Optimization). Модифицируя различные параметры вашей программы по результатам множества тестовых игр, CLOP может подобрать значения этих параметров, позволяющие программе играть лучше[908].
Создатели движка Stockfish используют для экспериментов по улучшению своей программы распределённую платформу под названием Fishtest. В вычислительных экспериментах на этой платформе периодически задействовалось свыше 2000 машин с более чем 11 000 вычислительных ядер, что позволяло играть более 10 000 тестовых шахматных партий в минуту. Всего на платформе было осуществлено свыше 110 000 тестов, каждый из которых в среднем включал несколько десятков тысяч партий[909], [910]. Несмотря на столь внушительное количество тестов, оценочная функция классической версии Stockfish базируется на наборе признаков, изобретённых людьми, хотя «цена» каждого отдельного признака и подобрана в результате автоматизированного оптимизационного процесса. Нетрудно заметить, что успех подобной стратегии во многом зависит от того, насколько удачно было произведено разделение оценки на элементарные компоненты. Поэтому одним из важных барьеров на пути достижения машинами сверхчеловеческого уровня во многих играх стала неспособность людей качественно формализовать методы, применяемые ими при оценке позиции, удачно выделить компоненты этой оценки. По мере развития методов автоматизированной подстройки параметров игровых программ многие исследователи стали задумываться над тем, чтобы автоматизировать также и задачу подбора самого множества параметров. В конце концов, если люди регулярно допускают ошибки в оценке значений тех или иных параметров, то, быть может, они неправильно выбрали и сам их набор? Благодаря созданию программ, способных играть в некоторые игры на сверхчеловеческом уровне, стало ясно, что в ряде случаев цена экспертного человеческого знания не столь уж и велика, — вспомним хотя бы игру гроссмейстера Уолтера Брауна с программой Томпсона в окончании «ферзь против ладьи» или историю со «столетней позицией» Стёрджеса.
В общем, неудачи в деле создания программ, способных играть в игры с большим поисковым пространством на сверхчеловеческом уровне, по всей видимости, были связаны не с размером поискового пространства как таковым, а скорее с отсутствием методов, способных эффективно оценивать позицию в подобных играх, и неспособностью людей качественно формализовать собственные методы решения этой задачи. Поскольку в отношении второго ожидать существенного прогресса не приходилось, усилия исследователей были в основном направлены на решение первой проблемы. Практически любой человек может отличить на фотографии кошку от собаки, но никто не может в деталях описать алгоритм, который, получив на вход цвет каждого из пикселей цифрового фото, дал бы ответ на вопрос, что на ней изображено: собака или кошка.
Точно так же мастер го, умеющий с одного взгляда дать оценку позиции на доске, не в силах описать набор правил, лежащий в основе произведённой им оценки. Выходит, что человеческий мозг в процессе обучения способен создавать сложные методы анализа информации, хотя часто и не в состоянии их в полной мере осознать. Один из возможных путей решения возникших проблем заключался в том, чтобы выполнить своеобразный разбор на части, реверс-инжиниринг[911] этой способности мозга с целью последующего воспроизведения её в системах искусственного интеллекта. Об этом пути и о его плодах мы подробно поговорим в следующей части.
4 Нейронные сети и глубокое обучение
Замкнутый морем, сказал: «Пусть земли и воды преградой
Встали, зато небеса — свободны, по ним понесёмся!
Всем пусть владеет Минос, но воздухом он не владеет!»
Молвил — и всею душой предался́ незнакомому делу.
Новое нечто творит, подбирает он перья рядами,
С малых начав, чтоб за каждым пером шло другое, длиннее, —
Будто неровно росли: всё меньше и меньше длиною, —
Рядом подобным стоят стволы деревенской цевницы:
Ниткой средину у них, основания воском скрепляет.
Перья друг с другом связав, кривизны незаметной им придал
Так, чтобы были они как у птицы…
Овидий. Метаморфозы. Кн. VIII
4.1 Бионика и история изучения мышления
13 сентября