Sunday, March 20, 2016

Нейросети можно не объяснять правила игры в го — она сама их выучит

Сокращено. Форматирование не сохранено.

См. также:
[12 марта] Не осталось игр с открытой информацией, в которых компьютер не мог бы обыграть человека

В Южной Корее 15 марта завершилась историческая партия в игру го: программа AlphaGo — против Ли Седоля, одного из сильнейших игроков планеты. AlphaGo обеспечила себе победу досрочно, выиграв три первые партии из пяти. Тем не менее, Ли Седоль смог выиграть в четвертом матче, но последний остался за AlphaGo...[Ниже приведены выдержки интервью с] Александром Крайновым, руководителем службы компьютерного зрения и технологий искусственного интеллекта «Яндекса», о том, как искусственный интеллект научился играть в го, откуда у него взялась интуиция и какие невероятные технологии нас ждут в ближайшем будущем.

Ниже есть продолжение.

- ...почему раньше компьютер не мог так хорошо играть, что изменилось?

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

В го это сделать невероятно сложно. Игроки-люди при каждом ходе создают гипотезу: исходя из накопленного опыта они догадываются, какие варианты в данной ситуации подходят больше всего [стоит рассмотреть вот эти варианты *]. Далее просчитывают вперед столько ходов, сколько могут, получают новое состояние доски и — опять же на интуитивном уровне — определяют, так станет лучше или хуже [не возможно дать сколько-нибудь точной оценки позиции как в шахматах **]. Компьютер никакой гипотезы придумать не мог. Ему приходилось проверять вообще все варианты — это утопия. Каждый раз в го примерно 200 допустимых ходов, и каждый из них тянет за собой следующие 200 — представляете, какая тут сложность? Это просчитать нереально. И никакими заранее известными предположениями — «вот сюда обычно ходят, а так обычно не ходят» — это не лечится. Поэтому с самым сильным игроком-человеком смог посоревноваться только AlphaGo, искусственный интеллект, который научился играть как люди.

— И как он учился?

— Сейчас объясню на пальцах. Есть две нейросети и некий промежуток между ними. Первая сеть училась делать предсказания лучшего хода [*]. Для начала она училась на существующих партиях, где в качестве положительного примера — как надо играть — берутся позиции сильного игрока, а в качестве отрицательных — любой другой случайный ход или ход проигравшего. Конечно, выборка получается «грязной», потому что среди случайных наверняка присутствует ход, который даже лучше выбранного. Но в целом понятно, что ход, который совершает сильный игрок, лучше, чем любой случайный.

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

При этом нейросеть не учат каким-то стандартным комбинациям, стандартным ходам — это не нужно. Если какая-то комбинация является более-менее стандартной, она будет встречаться в обучающей выборке довольно часто, и сеть сама ей научится. Чисто теоретически ей даже можно не объяснять правила игры в го — во время обучения она выучит их сама.

[врезка]
...Нейросеть — это база, на которой строится искусственный интеллект, его «мозг». Если коротко, нейросеть — это сложная программа, состоящая из огромного множества простых программ, каждая из которых «реагирует» на какой-то свой сигнал. Система работает примерно как лампочка: при определенном условии «зажигается», а в остальных случаях — нет. Каждая из таких маленьких программ называется нейроном, а нейросеть — это, собственно, гигантская сеть нейронов, объединенных в последовательные слои...

- Нейроны? Это как в мозге?

Нет, это только аналогия. Искусственные нейросети имеют отношение к математике и алгоритмам, а не к анатомии. И в нейросети, и в мозге человека нейроны по отдельности довольно примитивны, но когда их очень много — миллионы, сотни миллионов или миллиарды — они могут научиться вместе решать почти любую задачу.

- Что значит «научиться»?

Для того чтобы нейросеть делала полезную работу, ее надо учить. Как учится ребенок: мы показываем ему много кошек разных цветов и много собак разных пород, но не объясняем отличий между кошками и собаками в целом (форму ушей, хвоста или носов, возможные позы). В какой-то момент у ребенка накапливается опыт, и он начинает отличать любую кошку от любой собаки на всякой картинке. То же самое и с нейросетью: мы даем ей «посмотреть» огромные коллекции фотографий кошек и собак, и в конце концов компьютер сам для себя вырабатывает признаки, по которым в будущем отличает одно от другого.

- Ух ты! А как это происходит?

Как у детей. Сначала нейросеть почти ничего не умеет, а каждый нейрон в ней реагирует на поступающие в него сигналы случайным образом. То есть, она угадывает, кто на фотографии — кошка или собака — с вероятностью 50 процентов. Но если мы дадим много таких заданий и будем говорить правильный ответ, нейросеть научится отличать на фотографиях кошек от собак не хуже человека. После каждой попытки сеть «закрепляет знания» — изменения внутри нейронов, которые положительно повлияли на верное решение, фиксируются.

- И многому так можно научить?

Очень. Распознаванию изображений и видео, пониманию речи и диалогу с человеком, рисованию картин и написанию музыки, постановке диагнозов и еще сотням задач, которые пока считаются прерогативой человека.

- Можете привести примеры, которые уже существуют?

Пожалуйста. «Яндекс» использует нейросети для поиска изображений: пользователь загружает свою картинку, а искусственный интеллект ищет похожие образы. Созданные в Google нейросети научились находить котов в Youtube-роликах и рисовать картины. Другие ученые научили нейросеть решать кроссворды. А в MIT создали нейросеть, которая «изучила» предвыборные речи и твиты кандидата в президенты США Дональда Трампа и теперь ведет его фейковый твиттер.

- То есть скоро создадут Скайнет, как в «Терминаторе»?

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

- Нейросети и искусственный интеллект – это что-то новое в мире технологий?

Не совсем. Основы нейросетей были заложены математиками еще в середине прошлого века. Но до недавнего времени их потенциал трудно было раскрыть полностью. Для обучения большой нейросети нужно очень много мощных компьютеров — слишком много нейронов и связей между ними нужно настроить.
...
https://meduza.io/cards/kak-obuchayut-iskusstvennyy-intellekt


Первый слой нейросети дает уменьшение количества вариантов, которые надо просчитать — в точности как у человека. Допустим, выходит 10 лучших вариантов. После этого сеть начинает думать, что произойдет, если она пойдет так или иначе. Но дальше количество возможных вариантов снова начинает расти в сумасшедшей прогрессии, и в какой-то момент машине нужно заново сделать следующее предсказание, отталкиваясь от новой позиции. То есть алгоритм, используя «интуитивный» выбор следующего хода и расчет, доходит до некой позиции [**] — досчитал и все, нужно уже принять какое-то решение и сделать ход. Это несколько вариантов, каждый из которых заканчивается новой расстановкой на поле. Дальше возникает новая проблема: в игре го настолько непонятно, стало ли в результате хода лучше или хуже, что даже многие эксперты часто расходятся в оценке позиции.

И тут появляется вторая нейросеть, которую учили оценивать позицию с помощью сыгранных партий. Позиция игрока, который в конечном счете выиграл, принимается за выигрышную, позиция проигравшего — за проигрышную. И дальше машина тренируется определять, выигрышная или проигрышная та или иная позиция и с какой вероятностью.

Что в итоге? Программа научилась предсказывать следующий лучший ход, затем просчитывает какое-то количество вариантов, используя метод относительно простого перебора, а в конце просчета решает, стала позиция лучше или нет.

— То есть она все равно не досчитывает до финала партии?

— Нет, конечно, в го это практически нереально. Разве что в самом конце игры, но в остальных случаях до конца досчитать невозможно.

После того, как программа научилась делать эти три действия, она начала играть на уровне очень хорошего игрока. И возникает вопрос: а зачем, собственно говоря, дальше ориентироваться на сыгранные партии? Дальше эти партии можно создавать самостоятельно — то есть программа начинает играть сама с собой.

Уникальность задач, связанных с играми, в том, что программа может сама для себя подготовить обучающую выборку не хуже той, что ей предоставит человек. Если мы, например, говорим о задаче распознавания текстов на изображении, то там тоже применяется такой метод, как синтетическая генерация данных. Просто очень дорого руками набирать тексты и размечать их, поэтому программы генерируют большое количество изображений с разными шрифтами и искажениями, а дальше их распознают. Но синтетическая генерация данных, конечно, отличается от естественной — в жизни приходится иметь дело с чуть другими шрифтами, с чуть иными искажениями, поэтому в этой сфере обучение на сгенерированных данных неидеально. В го же синтетические данные — то есть игры программы самой с собой — ничем по сути не отличаются от игр человека с человеком.

Даже сейчас, пока мы с вами общаемся, даже в то время, когда программа играет матч с Ли Седолем, где-то в другом месте — на другом кластере — нейронная сеть продолжает играть сама с собой и учиться на результатах этих игр.

— В этой истории самое непонятное для меня — интуиция. Каким-то образом машина, которая не умела ничего предсказывать, поиграв миллионы раз, вдруг обретает интуицию и начинает предугадывать хорошие ходы. Как это?

— Я склонен считать, что интуиция — это некий неосознанный опыт: когда мы благодаря какому-то большому количеству событий накопили наш опыт, накопили некое понимание, что будет в том или ином случае, но еще не можем это как-то осознать, превратить в определенные факторы.

Например, хороший грибник идет по лесу и знает, что здесь, скорее всего, будут грибы. Он не может объяснить почему, но ему так кажется. Это не значит, что он всегда прав, но вероятность того, что он угадал, выше, чем у обычного человека. Почему? Потому что у него есть некий опыт. Он сам не может понять, почему так, но, видимо, какая-то похожая картина ему уже встречалась.

Абсолютно то же самое происходит и с нейронной сетью. В конкретном примере — в игре го — игрок, который выиграл огромное количество партий, начинает чувствовать, что один ход будет хорошим, красивым, гармоничным, а другой — не очень. То же самое — у машины.

Можно привести пример с изучением языка — дети говорят на своем родном языке грамотно. Сильно позже, в школе, они начинают узнавать правила, а до этого говорят правильно, потому что у них есть какой-то набор штампов. Они понимают, что так правильно, а так нет. Они могут ошибаться, конечно, потому что есть множество исключений, но они учатся правильной речи на примерах. То же самое происходит у машины. Если ей показали большое количество примеров, она все равно тянется к тому, что видела раньше, к похожему варианту. Ей кажется, что в этой ситуации будет красиво, логично, замечательно пойти сюда, а туда — уже не очень здорово и красиво.

— А это не добавляет условной предсказуемости? Почему бы не сделать машину, наоборот, непредсказуемой, чтобы она ходила так, как никто до этого не пытался ходить, и запутать игрока?

— Парадокс заключается в том, что ходы самых сильных игроков в достаточной степени непредсказуемы. Поэтому, глядя на них, программа учится делать непредсказуемые ходы. Если записать ход ее мысли — хотя такого хода мысли там, конечно, нет — то он будет примерно таким: «Что-то этот ход слишком банальный и предсказуемый, чтобы быть лучшим ходом на доске».

— Я думал, она, наоборот, думает: «Вот так все ходят, наверное, это хорошо».

— «Так ходят все игроки [максимального] 9 дана в выигранных ими партиях». В таком контексте — да.

— Есть вопрос, который очень не любят все ученые, — про практическое применение того, что они придумали. Допустим, через пару дней машина окончательно обыграет человека в го и станет одним из сильнейших игроков на планете. Но какой в этом практический смысл? Или мы просто понимаем, что машина теперь настолько крута, что может играть в самую сложную игру — а значит, остальные задачи ей по плечу?

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

У нас есть способность машины самообучаться, причем не только на тех примерах, которые мы ей дали, но и на тех, что она создает сама. Как только мы касаемся тех областей, где машина может пробовать создавать какие-то варианты и оценивать их качество, мы получаем практически бесконечное развитие машины, ограниченное только вычислительными мощностями и ресурсами. Вопрос в наличии устойчивой обратной связи, которую машина может получать сама, а не от человека. В случае с го — это результат игры, но есть и другие примеры.

Сейчас популярны красивые истории про роботов, которые ходят сами. Кажется, что у них там много датчиков и компьютерное зрение, позволяющее распознавать объекты. Да, оно там действительно есть. Но самое интересное в другом — эти роботы взаимодействуют с окружающей средой и учатся решать, как поступать в тех или иных условиях. Робот ходит, робот спотыкается, робот роняет коробку, у него эту коробку выбивают из рук. И в результате он учится и начинает понимать, как ему поступать в той или иной ситуации. Он сам накапливает знания.

Такой способ обучения называется reinforcement learning («обучение с подкреплением») — то есть машина сама получает обратный сигнал от окружающей среды. Он позволяет искусственному интеллекту достигать практически неограниченного уровня в решении таких конкретных задач.

И таких примеров — где брать данные, чтобы учиться на них так же, как программа училась, играя в го, — множество. А вот дальше можно думать, где бы применить способность машины переводить с одного языка на другой, синтезировать тексты, самостоятельно передвигаться в пространстве или писать картины — все, что угодно.

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

— Нет опасности, что искусственный интеллект научится чему-то «плохому»? Если ему подсунуть не стихотворения Пушкина, а рэп Оксимирона с матом, он ведь научится материться.

— Мне сейчас кажется, что мы разговариваем не о нейронных сетях, а в журнале «Молодая мама» обсуждаем проблемы ребенка.

— Но пока что они по развитию во многом похожи.

— Кстати, да, и ответы будут абсолютно такими же. Нейросеть — это прекрасный чистый лист: какие примеры ей показывать, тому она и научится. Но если в случае с ребенком очень тяжело дозировать и ограничивать то, что он видит и слышит, то с нейросетью действовать проще. Если не выпускать ее учиться в интернет, а все-таки фильтровать то, что мы даем ей на вход, то она научится хорошему и прекрасному. А если учить на реальных данных, которые существуют в интернете, то она, конечно, может научиться плохому.

Первая задача, которую решают все серьезные интернет-компании, — как научиться отличать хороший контент от плохого, потому что люди не до конца осознают, что действительно происходит в интернете.

-... Сейчас самое интересное и горячее с точки зрения искусственного интеллекта и поиска — способность извлекать смыслы из текста. До сих пор поисковик искал ровно те страницы, которые содержат в себе то, что спрашивал человек. Конечно, с некоторыми умными дополнениями и расширениями — то есть запрос переформулировался, расширялся, дополнялся многочисленными синонимами, переводами на другой язык. Но теперь появляется новый подход, когда запрос превращается в смысл, в некое число, которое в сжатом виде содержит смысл запроса. И ищутся уже результаты, по смыслу совпадающие с запросом. У вопроса и ответа может не быть ни одного общего слова, вообще ничего, но смысл такой же.

Мы можем научить нейросеть переводить в число смысл изображения и текста — и любых других данных. Причем мы учим сеть совершать преобразования так, чтобы числовые значения схожих по смыслу фраз, слов, изображений оказывались близки. И наоборот — разные по смыслу тексты или изображения оказывались бы максимально далеко.

— И что с этими числами делать?

— Сравнивая их, мы понимаем, близки ли какие-то вещи по смыслу друг другу или нет. Так можно сопоставить текст с изображением, текст с текстом и так далее. Думаю, даже для сравнения двух текстов легко придумать сто тысяч применений, а можно ведь сделать наоборот — из числа восстановить текст. И это тоже хороший пример. Дальше мы свернем текст в число на одном языке, а развернем — на другом, и получим перевод. Причем перевод не слов, а смысла. Это может поднять качество перевода вообще на другой уровень. Можно будет переводить идиомы, сленг, все что угодно.

— Вы в «Яндексе» занимаетесь «компьютерным зрением». Что это такое? С ходу в голову приходит какой-нибудь поиск по картинке — звучит не очень захватывающе.

— Поиск по картинкам в интернете — это основной потребитель компьютерного зрения, это правда. Потому что у нас есть возможность искать не только по текстовому запросу, но и по картинке: загрузи картинку, а мы найдем сайты с похожими на нее изображениями. И похожесть здесь определяется не цветом, не совпадающими линиями или еще чем-то — мы найдем картинки с таким же содержимым. Причем нейросеть может не только определить объекты на картинке, но и, например, понять, красивое изображение или нет. Допустим, получаем мы широкий запрос — «картинка», ему удовлетворяют примерно все изображения, а как выбрать из них лучшее?

— И как выбрать?

— А выбрать нужно что-то наиболее красивое.

— И что для компьютера значит «красивое»?

— Этому компьютер опять же обучается. Есть два варианта: посадить людей и дать им картинки, чтобы они отмечали красивые и некрасивые, или придумать какой-то способ автоматического сбора.

Например, такая многоступенчатая схема: мы сажаем небольшое количество людей, которые отбирают тысячу красивых и тысячу некрасивых картинок. Тысяча для нейронной сети — это мало. Дальше мы пытаемся определить, где на просторах интернета можно найти много красивых картинок — чтобы они были не хуже выбранных людьми. Например, изображения, которые получают максимум лайков в соцсетях или публикуются на самых лучших фотохостингах, на сайтах лучших новостных агентств, в National Geographic — это «красивые» картинки. При этом какие-то случайные изображения мы принимаем за «некрасивые». Собираем таким образом миллионы картинок, запускаем нейросеть и говорим: «Учись!»

Почему нам нужны миллионы, а не тысячи? Потому что если мы сделаем только тысячу, то нейронная сеть может переобучиться — то есть построить такие жесткие зависимости, которых на самом деле нет. Например, начнет считать, что красивые картинки — это только те, на которых есть котики. Вдруг окажется, что на большинстве из 1000 «отлайканных» картинок будут котики, и тогда их посчитают устойчивым признаком красивости. Побороть котиков можно только количеством: есть шанс, что на миллионе картинок будут не только они...

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

https://meduza.io/feature/2016/03/15/neyroseti-mozhno-ne-ob-yasnyat-pravila-igry-v-go-ona-sama-ih-vyuchit

No comments:

Post a Comment