Самообучающийся робот из спичечных коробков
Самообучающийся робот из спичечных коробков
Хороший тон предписывает начинать разговор, имеющий отношение к теме роботов и искусственного интеллекта, с легенды о Големе, глиняном монстре, в которого кощунственно вдохнул жизнь пражский раввин Иегуа Лев бен Бецалель. Еще нужно упомянуть, что слово "робот" произвел от славянского "работа" чешский писатель Чапек. Также следует сказать, что человек, фантазируя о разумных машинах, всегда видел в них угрозу, и сослаться в подтверждение этого на многочисленные фантастические произведения в жанре антиутопий. Что же, будем считать, что правила хорошего тона соблюдены, и перейдем к делу.
Тема искусственного интеллекта и разумных роботов, как его олицетворения, стала предметом живого общественного интереса с появлением компьютеров. Изрядные страсти вызвала книга Винера "Кибернетика", где он настойчиво доказывал способность машин, наделенных механизмом обратной связи, к самоорганизации, самообучению, предвидению и целеполаганию.
Просматривая книгу сегодня, в ней не видишь никакой крамолы. В утверждениях о тех или иных способностях машин всегда присутствуют, хотя бы между строк, оговорки "в принципе" и "в некотором смысле". Положение, будто информационные процессы в живых существах и сложных устройствах имеют одну и ту же природу, не представляется ни низведением человека до уровня машин, ни возвеличением машин до человека. В те времена широкой публике, видимо, так не казалось.
Масла в огонь подливали напористые, уверенные в будущих успехах представители молодой науки об искусственном интеллекте, переставшем быть сюжетом для фантастической литературы. Веря в скорые грандиозные свершения, они не очень стеснялись, делая прогнозы. Еще меньше стеснялась пресса, преподносившая эти пророчества своей аудитории как нечто реальное.
Само собою, у искусственного интеллекта (ИИ) было не меньше критиков, чем пламенных приверженцев. Одним из аргументов, часто использовавшихся критиками ИИ, заключался в упреке, что апологеты ИИ ссылались на самообучение машин всякий раз, когда им нечего было сказать по существу.
Как это часто бывает, правыми (или неправыми) можно считать и тех и других. Правы сторонники ИИ, утверждая, что компьютеры решают и будут решать все более интеллектуальные (в некотором строго определенном смысле) задачи. Не вызывает сомнения, что "интеллектуальные" системы нуждаются в механизмах самообучения, или адаптации (нейтральное слово звучит лучше).
Правы и критики, указывающие на отсутствие механизмов адаптации, задача построения которых решена не в большей степени, чем ИИ в целом. Следовательно, заявления, будто машина самообучится и покажет, на что способна, - пустое прожектерство.
Не правы критики ИИ, полагающие, что "этого не может быть, потому что не может быть никогда". Чуть ли не вся история науки состоит в ниспровержении заблуждений, казавшихся от века данными истинами. Не правы и сторонники ИИ, наивно верящие в принципиальную познаваемость всех без исключения тайн и загадок. Есть в их убежденности привкус вульгарного механицизма.
Вместо того, чтобы окончательно запутаться в вопросах, знакомых понаслышке, не лучше ли нам, что называется, пощупать своими руками самообучающихся роботов? Если нет компьютера, чтобы запрограммировать робота, для его изготовления сгодятся и спичечные коробки с разноцветными бусинками. Чтобы с роботом не было скучно, пусть играет с нами в какую-нибудь простую игру.
Такого робота изобрел Дональд Мичи. Сообщение о нем появилось в статье "Метод проб и ошибок" во втором номере журнала Penguin Science Survey за 1961 год. С тех пор робот, названный MENACE (от Mathbox Educable Naughts and Crosses Engine), кочует по страницам научно-популярных изданий.
Модель Мичи играла в крестики-нолики. Для ее изготовления изобретателю понадобилось триста спичечных коробков и несколько сотен разноцветных бусинок. Устройство машины очень простое. На каждом коробке изображена позиция, встречающаяся при игре в крестики-нолики. Внутрь коробка положено столько разноцветных бусинок, сколько существует возможных ходов в данной позиции.
Мичи вклеивал в каждый коробок уголок из картона, где могла поместиться лишь одна бусинка. Чтобы определить ход машины, он встряхивал коробок, открывал его и смотрел, какая бусинка закатилась в ловушку. Пометив за робота ход, Мичи делал собственный, после чего игра переходила в другую позицию. Для очередного хода робота выбирался коробок с изображением соответствующей позиции, и игра продолжалась по описанной схеме.
Поскольку Мичи решил, что первый ход всегда делает робот, на коробки он нанес все позиции для 1-го, 3-го и последующих нечетных ходов. Мы, конечно, можем поступить иначе, создав универсального робота.
Обучение машины проводится методом кнута и пряника. Во время игры коробки, принявшие участие в совершении ходов, откладываются в сторону. Если человек выиграл, то робота следует наказать, достав из каждого сыгравшего коробка бусинку, определившую ход. Таким образом удаляется последовательность ходов, приведших к проигрышу. В случае ничьей машина умеренно поощряется, для чего в каждый из сыгравших коробков добавляется по бусинке того же цвета, что сделала ход. Если же робот выиграл, в коробки добавляется сразу по три бусинки цвета выигрышных ходов.
Первый турнир между Мичи и его машиной состоял из 220 партий и занял два дня. Сперва робота все время приходилось наказывать, но после 20-й партии он начал все игры сводить вничью. Мичи стал делать нарочито бессмысленные ходы, чем ненадолго сбил с толку свое детище. Однако в конце концов он выбыл из турнира с разгромным счетом, проиграв роботу в последнем круге 8 партий из 10.
Перспектива возни с сотнями спичечных коробков вряд ли может кого-нибудь прельстить, а вот запрограммировать такого робота можно без особого труда. Единственная сложность состоит в создании качественного генератора случайных чисел для выбора ходов. Впрочем, если считывать показания системного таймера каждый раз, когда человек нажимает на клавиши, значения младших разрядов счетчика будут вполне случайной величиной, так как клавиши не могут нажиматься через совершенно одинаковые промежутки времени.
Читателям, у которых нет возможности программировать робота, можно посоветовать построить машину, предложенную постоянным автором журнала Scientific American Мартином Гарднером. Роботов, сделанных по принципу MENACE Дональда Мичи, может быть сколько угодно. Их сложность, то есть количество необходимых спичечных коробков, находится в прямой зависимости от комбинаторной сложности игры, в которую машины должны играть.
Гарднер придумал игру в шесть пешек, для которой достаточно робота из 24 коробков. Правила игры следующие. Доска имеет 3х3 клетки. У каждого из игроков в начале игры по 3 пешки. В исходной позиции пешки противников выстроены в два ряда на противоположных сторонах доски.
Есть всего два вида ходов: во-первых, перемещение на одну клетку вперед, когда она свободна, во-вторых, ход со взятием пешки противника. Брать чужую пешку разрешается, если она стоит на соседней по горизонтали или по диагонали клетке. Выигрывает тот, кто возьмет все пешки противника, либо проведет свою пешку через все поле в третий ряд, либо "запрет" противника, то есть не даст сделать очередной ход.
Гарднер предлагает ничего не вклеивать в спичечные коробки, а просто вынимать из них бусинки с закрытыми глазами и класть их сверху на коробок, сделавший ход. Кроме того, он предлагает поэкспериментировать с размером поощрения и/или наказания роботов в процессе обучения. Можно попробовать наказание полностью исключить.
Далее, он советует сделать машины для четных и нечетных ходов и устроить соревнование между ними. Право слово, если писать программы, это сделать совсем нетрудно. Представляете, каким захватывающим мог бы стать кубковый матч между роботами разных авторов, использовавших неодинаковые методики обучения! Разумеется, никто не мешает нам придумывать свои игры и свои самообучающиеся машины, чтобы разнообразить удовольствие.
Что же касается развлечений, то один из читателей Scientific American устроил следующий розыгрыш. Он пригласил двух студентов, юношу и девушку, не знакомых с игрой в шесть пешек, объяснил им правила и устроил между ними заочные соревнования. Я процитирую часть его письма Гарднеру: "Каждый участник турнира сидел в отдельной комнате, называя свои ходы судье. По секрету от игроков судьи (их тоже было двое) сообщали о сделанных ходах в третью комнату, где находились роботы и велся счет побед и поражений. Противники считали, что играют друг с другом через посредников; на деле же каждый из них играл с машиной. Начиная новую партию, участники менялись фигурами (игравший белыми брал черные и наоборот). Те, кто сидел в средней комнате, были заняты: им приходилось следить, чтобы ходы не были перепутаны, встряхивать и открывать коробки (обслуживать машины) и вести счет матча.
Студентов просили по ходу игры комментировать свои ходы и ходы противника. Вот некоторые из этих комментариев.
- Какой же я болван! - Великолепный ход! Думаю, что проиграю эту партию.
- По-моему, он совсем не думает. Мог бы уже и не зевать.
- Здорово играет! Она начинает понимать, чего я добиваюсь.
- Наконец он начал думать, и играть стало куда интересней.
- Какой странный ход! Разве не видит, что я выиграю, если он пойдет вперед? - Мой противник играл хорошо, но, по-моему, я первой раскусила игру.
- Первым игру раскусил я.
Не правда ли, забавно? Когда студентам показали роботов, с которыми они сражались, несчастные никак не могли поверить, что играли не друг с другом, а со спичечными коробками.
На мой взгляд, эта история настолько занимательна, что возникает желание соорудить самообучающегося робота, чтобы разыграть своих друзей или представить его "гвоздем" вечеринки.
Евгений Щербатюк
Хороший тон предписывает начинать разговор, имеющий отношение к теме роботов и искусственного интеллекта, с легенды о Големе, глиняном монстре, в которого кощунственно вдохнул жизнь пражский раввин Иегуа Лев бен Бецалель. Еще нужно упомянуть, что слово "робот" произвел от славянского "работа" чешский писатель Чапек. Также следует сказать, что человек, фантазируя о разумных машинах, всегда видел в них угрозу, и сослаться в подтверждение этого на многочисленные фантастические произведения в жанре антиутопий. Что же, будем считать, что правила хорошего тона соблюдены, и перейдем к делу.
Тема искусственного интеллекта и разумных роботов, как его олицетворения, стала предметом живого общественного интереса с появлением компьютеров. Изрядные страсти вызвала книга Винера "Кибернетика", где он настойчиво доказывал способность машин, наделенных механизмом обратной связи, к самоорганизации, самообучению, предвидению и целеполаганию.
Просматривая книгу сегодня, в ней не видишь никакой крамолы. В утверждениях о тех или иных способностях машин всегда присутствуют, хотя бы между строк, оговорки "в принципе" и "в некотором смысле". Положение, будто информационные процессы в живых существах и сложных устройствах имеют одну и ту же природу, не представляется ни низведением человека до уровня машин, ни возвеличением машин до человека. В те времена широкой публике, видимо, так не казалось.
Масла в огонь подливали напористые, уверенные в будущих успехах представители молодой науки об искусственном интеллекте, переставшем быть сюжетом для фантастической литературы. Веря в скорые грандиозные свершения, они не очень стеснялись, делая прогнозы. Еще меньше стеснялась пресса, преподносившая эти пророчества своей аудитории как нечто реальное.
Само собою, у искусственного интеллекта (ИИ) было не меньше критиков, чем пламенных приверженцев. Одним из аргументов, часто использовавшихся критиками ИИ, заключался в упреке, что апологеты ИИ ссылались на самообучение машин всякий раз, когда им нечего было сказать по существу.
Как это часто бывает, правыми (или неправыми) можно считать и тех и других. Правы сторонники ИИ, утверждая, что компьютеры решают и будут решать все более интеллектуальные (в некотором строго определенном смысле) задачи. Не вызывает сомнения, что "интеллектуальные" системы нуждаются в механизмах самообучения, или адаптации (нейтральное слово звучит лучше).
Правы и критики, указывающие на отсутствие механизмов адаптации, задача построения которых решена не в большей степени, чем ИИ в целом. Следовательно, заявления, будто машина самообучится и покажет, на что способна, - пустое прожектерство.
Не правы критики ИИ, полагающие, что "этого не может быть, потому что не может быть никогда". Чуть ли не вся история науки состоит в ниспровержении заблуждений, казавшихся от века данными истинами. Не правы и сторонники ИИ, наивно верящие в принципиальную познаваемость всех без исключения тайн и загадок. Есть в их убежденности привкус вульгарного механицизма.
Вместо того, чтобы окончательно запутаться в вопросах, знакомых понаслышке, не лучше ли нам, что называется, пощупать своими руками самообучающихся роботов? Если нет компьютера, чтобы запрограммировать робота, для его изготовления сгодятся и спичечные коробки с разноцветными бусинками. Чтобы с роботом не было скучно, пусть играет с нами в какую-нибудь простую игру.
Такого робота изобрел Дональд Мичи. Сообщение о нем появилось в статье "Метод проб и ошибок" во втором номере журнала Penguin Science Survey за 1961 год. С тех пор робот, названный MENACE (от Mathbox Educable Naughts and Crosses Engine), кочует по страницам научно-популярных изданий.
Модель Мичи играла в крестики-нолики. Для ее изготовления изобретателю понадобилось триста спичечных коробков и несколько сотен разноцветных бусинок. Устройство машины очень простое. На каждом коробке изображена позиция, встречающаяся при игре в крестики-нолики. Внутрь коробка положено столько разноцветных бусинок, сколько существует возможных ходов в данной позиции.
Мичи вклеивал в каждый коробок уголок из картона, где могла поместиться лишь одна бусинка. Чтобы определить ход машины, он встряхивал коробок, открывал его и смотрел, какая бусинка закатилась в ловушку. Пометив за робота ход, Мичи делал собственный, после чего игра переходила в другую позицию. Для очередного хода робота выбирался коробок с изображением соответствующей позиции, и игра продолжалась по описанной схеме.
Поскольку Мичи решил, что первый ход всегда делает робот, на коробки он нанес все позиции для 1-го, 3-го и последующих нечетных ходов. Мы, конечно, можем поступить иначе, создав универсального робота.
Обучение машины проводится методом кнута и пряника. Во время игры коробки, принявшие участие в совершении ходов, откладываются в сторону. Если человек выиграл, то робота следует наказать, достав из каждого сыгравшего коробка бусинку, определившую ход. Таким образом удаляется последовательность ходов, приведших к проигрышу. В случае ничьей машина умеренно поощряется, для чего в каждый из сыгравших коробков добавляется по бусинке того же цвета, что сделала ход. Если же робот выиграл, в коробки добавляется сразу по три бусинки цвета выигрышных ходов.
Первый турнир между Мичи и его машиной состоял из 220 партий и занял два дня. Сперва робота все время приходилось наказывать, но после 20-й партии он начал все игры сводить вничью. Мичи стал делать нарочито бессмысленные ходы, чем ненадолго сбил с толку свое детище. Однако в конце концов он выбыл из турнира с разгромным счетом, проиграв роботу в последнем круге 8 партий из 10.
Перспектива возни с сотнями спичечных коробков вряд ли может кого-нибудь прельстить, а вот запрограммировать такого робота можно без особого труда. Единственная сложность состоит в создании качественного генератора случайных чисел для выбора ходов. Впрочем, если считывать показания системного таймера каждый раз, когда человек нажимает на клавиши, значения младших разрядов счетчика будут вполне случайной величиной, так как клавиши не могут нажиматься через совершенно одинаковые промежутки времени.
Читателям, у которых нет возможности программировать робота, можно посоветовать построить машину, предложенную постоянным автором журнала Scientific American Мартином Гарднером. Роботов, сделанных по принципу MENACE Дональда Мичи, может быть сколько угодно. Их сложность, то есть количество необходимых спичечных коробков, находится в прямой зависимости от комбинаторной сложности игры, в которую машины должны играть.
Гарднер придумал игру в шесть пешек, для которой достаточно робота из 24 коробков. Правила игры следующие. Доска имеет 3х3 клетки. У каждого из игроков в начале игры по 3 пешки. В исходной позиции пешки противников выстроены в два ряда на противоположных сторонах доски.
Есть всего два вида ходов: во-первых, перемещение на одну клетку вперед, когда она свободна, во-вторых, ход со взятием пешки противника. Брать чужую пешку разрешается, если она стоит на соседней по горизонтали или по диагонали клетке. Выигрывает тот, кто возьмет все пешки противника, либо проведет свою пешку через все поле в третий ряд, либо "запрет" противника, то есть не даст сделать очередной ход.
Гарднер предлагает ничего не вклеивать в спичечные коробки, а просто вынимать из них бусинки с закрытыми глазами и класть их сверху на коробок, сделавший ход. Кроме того, он предлагает поэкспериментировать с размером поощрения и/или наказания роботов в процессе обучения. Можно попробовать наказание полностью исключить.
Далее, он советует сделать машины для четных и нечетных ходов и устроить соревнование между ними. Право слово, если писать программы, это сделать совсем нетрудно. Представляете, каким захватывающим мог бы стать кубковый матч между роботами разных авторов, использовавших неодинаковые методики обучения! Разумеется, никто не мешает нам придумывать свои игры и свои самообучающиеся машины, чтобы разнообразить удовольствие.
Что же касается развлечений, то один из читателей Scientific American устроил следующий розыгрыш. Он пригласил двух студентов, юношу и девушку, не знакомых с игрой в шесть пешек, объяснил им правила и устроил между ними заочные соревнования. Я процитирую часть его письма Гарднеру: "Каждый участник турнира сидел в отдельной комнате, называя свои ходы судье. По секрету от игроков судьи (их тоже было двое) сообщали о сделанных ходах в третью комнату, где находились роботы и велся счет побед и поражений. Противники считали, что играют друг с другом через посредников; на деле же каждый из них играл с машиной. Начиная новую партию, участники менялись фигурами (игравший белыми брал черные и наоборот). Те, кто сидел в средней комнате, были заняты: им приходилось следить, чтобы ходы не были перепутаны, встряхивать и открывать коробки (обслуживать машины) и вести счет матча.
Студентов просили по ходу игры комментировать свои ходы и ходы противника. Вот некоторые из этих комментариев.
- Какой же я болван! - Великолепный ход! Думаю, что проиграю эту партию.
- По-моему, он совсем не думает. Мог бы уже и не зевать.
- Здорово играет! Она начинает понимать, чего я добиваюсь.
- Наконец он начал думать, и играть стало куда интересней.
- Какой странный ход! Разве не видит, что я выиграю, если он пойдет вперед? - Мой противник играл хорошо, но, по-моему, я первой раскусила игру.
- Первым игру раскусил я.
Не правда ли, забавно? Когда студентам показали роботов, с которыми они сражались, несчастные никак не могли поверить, что играли не друг с другом, а со спичечными коробками.
На мой взгляд, эта история настолько занимательна, что возникает желание соорудить самообучающегося робота, чтобы разыграть своих друзей или представить его "гвоздем" вечеринки.
Евгений Щербатюк
Компьютерная газета. Статья была опубликована в номере 12 за 1997 год в рубрике программирование :: разное