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