В Южной Корее 15 марта завершилась историческая партия в игру го: программа AlphaGo — против Ли Седоля, одного из сильнейших игроков планеты. AlphaGo обеспечила себе победу досрочно, выиграв три первые партии из пяти. Тем не менее, Ли Седоль смог выиграть в четвертом матче, но последний остался за AlphaGo.
За несколько дней до финальной игры «Медуза» поговорила с Александром Крайновым, руководителем службы компьютерного зрения и технологий искусственного интеллекта «Яндекса», о том, как искусственный интеллект научился играть в го, откуда у него взялась интуиция и какие невероятные технологии нас ждут в ближайшем будущем. dev.by публикует сокращённую версию беседы.
— Компьютер уже в двух партиях (разговор состоялся 10 марта — прим. «Медузы») оказался сильнее одного из лучших игроков в го. Теперь всем понятно, что это какая-то очень мощная штука. Но почему раньше компьютер не мог так хорошо играть, что изменилось?
— Правила игры го очень простые, но она сложна невероятным количеством вариантов — их больше, чем атомов во Вселенной. Игра не поддается никакому просчету, в том числе и сейчас. Более того, в ней очень сложно понять, выигрышным или проигрышным является какое-то промежуточное состояние. В шахматах, если мы просчитали до какого-то варианта и поняли, что так фигура будет съедена, мы можем почти наверняка сказать — да, стало лучше, я в результате таких действий получил позицию лучше, чем была до этого.
В го это сделать невероятно сложно. Игроки-люди при каждом ходе создают гипотезу: исходя из накопленного опыта они догадываются, какие варианты в данной ситуации подходят больше всего. Далее просчитывают вперед столько ходов, сколько могут, получают новое состояние доски и — опять же на интуитивном уровне — определяют, так станет лучше или хуже. Компьютер никакой гипотезы придумать не мог. Ему приходилось проверять вообще все варианты — это утопия. Каждый раз в го примерно 200 допустимых ходов, и каждый из них тянет за собой следующие 200 — представляете, какая тут сложность? Это просчитать нереально. И никакими заранее известными предположениями — «вот сюда обычно ходят, а так обычно не ходят» — это не лечится. Поэтому с самым сильным игроком-человеком смог посоревноваться только AlphaGo, искусственный интеллект, который научился играть как люди.
— И как он учился?
— Сейчас объясню на пальцах. Есть две нейросети и некий промежуток между ними. Первая сеть училась делать предсказания лучшего хода. Для начала она училась на существующих партиях, где в качестве положительного примера — как надо играть — берутся позиции сильного игрока, а в качестве отрицательных — любой другой случайный ход или ход проигравшего. Конечно, выборка получается «грязной», потому что среди случайных наверняка присутствует ход, который даже лучше выбранного. Но в целом понятно, что ход, который совершает сильный игрок, лучше, чем любой случайный.
Причем обучение происходило даже не на партиях, а именно на ходах. То есть у нас есть огромное множество партий, в каждой из них примерно по 200 ходов, и дальше нейросеть учится предсказывать следующий ход. В результате у программы появляется «интуиция» выбора следующего хода. Она еще не позволяет однозначно сделать лучший ход, но она создает некий набор наиболее реалистичных гипотез, которые можно проверять дальше.
При этом нейросеть не учат каким-то стандартным комбинациям, стандартным ходам — это не нужно. Если какая-то комбинация является более-менее стандартной, она будет встречаться в обучающей выборке довольно часто, и сеть сама ей научится. Чисто теоретически ей даже можно не объяснять правила игры в го — во время обучения она выучит их сама.
Первый слой нейросети даёт уменьшение количества вариантов, которые надо просчитать — в точности как у человека. Допустим, выходит 10 лучших вариантов. После этого сеть начинает думать, что произойдёт, если она пойдет так или иначе. Но дальше количество возможных вариантов снова начинает расти в сумасшедшей прогрессии, и в какой-то момент машине нужно заново сделать следующее предсказание, отталкиваясь от новой позиции. То есть алгоритм, используя «интуитивный» выбор следующего хода и расчет, доходит до некой позиции — досчитал и все, нужно уже принять какое-то решение и сделать ход. Это несколько вариантов, каждый из которых заканчивается новой расстановкой на поле. Дальше возникает новая проблема: в игре го настолько непонятно, стало ли в результате хода лучше или хуже, что даже многие эксперты часто расходятся в оценке позиции.
И тут появляется вторая нейросеть, которую учили оценивать позицию с помощью сыгранных партий. Позиция игрока, который в конечном счете выиграл, принимается за выигрышную, позиция проигравшего — за проигрышную. И дальше машина тренируется определять, выигрышная или проигрышная та или иная позиция и с какой вероятностью.
Что в итоге? Программа научилась предсказывать следующий лучший ход, затем просчитывает какое-то количество вариантов, используя метод относительно простого перебора, а в конце просчета решает, стала позиция лучше или нет.
— То есть она все равно не досчитывает до финала партии?
— Нет, конечно, в го это практически нереально. Разве что в самом конце игры, но в остальных случаях до конца досчитать невозможно.
После того, как программа научилась делать эти три действия, она начала играть на уровне очень хорошего игрока. И возникает вопрос: а зачем, собственно говоря, дальше ориентироваться на сыгранные партии? Дальше эти партии можно создавать самостоятельно — то есть программа начинает играть сама с собой.
Уникальность задач, связанных с играми, в том, что программа может сама для себя подготовить обучающую выборку не хуже той, что ей предоставит человек. Если мы, например, говорим о задаче распознавания текстов на изображении, то там тоже применяется такой метод, как синтетическая генерация данных. Просто очень дорого руками набирать тексты и размечать их, поэтому программы генерируют большое количество изображений с разными шрифтами и искажениями, а дальше их распознают. Но синтетическая генерация данных, конечно, отличается от естественной — в жизни приходится иметь дело с чуть другими шрифтами, с чуть иными искажениями, поэтому в этой сфере обучение на сгенерированных данных неидеально. В го же синтетические данные — то есть игры программы самой с собой — ничем по сути не отличаются от игр человека с человеком.
Даже сейчас, пока мы с вами общаемся, даже в то время, когда программа играет матч с Ли Седолем, где-то в другом месте — на другом кластере — нейронная сеть продолжает играть сама с собой и учиться на результатах этих игр.
— В этой истории самое непонятное для меня — интуиция. Каким-то образом машина, которая не умела ничего предсказывать, поиграв миллионы раз, вдруг обретает интуицию и начинает предугадывать хорошие ходы. Как это?
— Я склонен считать, что интуиция — это некий неосознанный опыт: когда мы благодаря какому-то большому количеству событий накопили наш опыт, накопили некое понимание, что будет в том или ином случае, но еще не можем это как-то осознать, превратить в определенные факторы.
Например, хороший грибник идет по лесу и знает, что здесь, скорее всего, будут грибы. Он не может объяснить почему, но ему так кажется. Это не значит, что он всегда прав, но вероятность того, что он угадал, выше, чем у обычного человека. Почему? Потому что у него есть некий опыт. Он сам не может понять, почему так, но, видимо, какая-то похожая картина ему уже встречалась.
Абсолютно то же самое происходит и с нейронной сетью. В конкретном примере — в игре го — игрок, который выиграл огромное количество партий, начинает чувствовать, что один ход будет хорошим, красивым, гармоничным, а другой — не очень. То же самое — у машины.
Можно привести пример с изучением языка — дети говорят на своем родном языке грамотно. Сильно позже, в школе, они начинают узнавать правила, а до этого говорят правильно, потому что у них есть какой-то набор штампов. Они понимают, что так правильно, а так нет. Они могут ошибаться, конечно, потому что есть множество исключений, но они учатся правильной речи на примерах. То же самое происходит у машины. Если ей показали большое количество примеров, она все равно тянется к тому, что видела раньше, к похожему варианту. Ей кажется, что в этой ситуации будет красиво, логично, замечательно пойти сюда, а туда — уже не очень здорово и красиво.
— А это не добавляет условной предсказуемости? Почему бы не сделать машину, наоборот, непредсказуемой, чтобы она ходила так, как никто до этого не пытался ходить, и запутать игрока?
— Парадокс заключается в том, что ходы самых сильных игроков в достаточной степени непредсказуемы. Поэтому, глядя на них, программа учится делать непредсказуемые ходы. Если записать ход ее мысли — хотя такого хода мысли там, конечно, нет — то он будет примерно таким: «Что-то этот ход слишком банальный и предсказуемый, чтобы быть лучшим ходом на доске».
Про будущее ИИ и поиска
— Первая задача, которую решают все серьезные интернет-компании, — как научиться отличать хороший контент от плохого, потому что люди не до конца осознают, что действительно происходит в интернете. 90 процентов информации, существующей там, — это тексты, сгенерированные роботами, спам, порно, вирусы и вообще полный ад. И все поисковые машины — и «Яндекс», в частности — это плотина, которая не даёт такому потоку хлынуть на головы несчастных людей…
…Искусственный интеллект — это уже на самом деле настоящее поиска, а не будущее. Современный поиск в интернете — настолько сложная и нетривиальная вещь, что в ней используются все достижения науки, какие только есть. Говорить о том, что поиск целиком и полностью перейдет исключительно на те методы, которые можно называть искусственным обучением, я не буду, потому что здесь все довольно цинично: что приносит наибольший результат, то и используется. Но и искусственный интеллект в поиске присутствует тоже.
Сейчас самое интересное и горячее с точки зрения искусственного интеллекта и поиска — способность извлекать смыслы из текста. До сих пор поисковик искал ровно те страницы, которые содержат в себе то, что спрашивал человек. Конечно, с некоторыми умными дополнениями и расширениями — то есть запрос переформулировался, расширялся, дополнялся многочисленными синонимами, переводами на другой язык. Но теперь появляется новый подход, когда запрос превращается в смысл, в некое число, которое в сжатом виде содержит смысл запроса. И ищутся уже результаты, по смыслу совпадающие с запросом. У вопроса и ответа может не быть ни одного общего слова, вообще ничего, но смысл такой же.
Мы можем научить нейросеть переводить в число смысл изображения и текста — и любых других данных. Причем мы учим сеть совершать преобразования так, чтобы числовые значения схожих по смыслу фраз, слов, изображений оказывались близки. И наоборот — разные по смыслу тексты или изображения оказывались бы максимально далеко.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.