Го и Искусственный интеллект

Я начинаю этот замечательный топик с целью ознакомить всех желающих с этим интересным аспектом Го. Не буду пытаться убедить всех читателей в том, что компьютер в Го может быть таким же умным как человек. Время идёт, всё меняется.

ИИстория

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

В чём же особенность Го

Первое, что я уяснил для себя – это воистину простые правила игры. Вторым открытием для меня лично было то, что в Го плохо или даже вредно побеждать хитростью. Можно вспомнить такие игры как крестики/нолики 5 в линию, хотя и там имеются проблемы ИИ.
То, что однажды придумано истинным мастером Го, работает всегда.
Что же ещё является уникальной особенностью? Го – это созидательная игра. И лично у меня сложилось впечатление, что стратегий созидания в жизни куда больше, чем стратегий разрушения. В результате вариантов решения становится на порядок больше, чем в других играх.
В итоге для меня стало понятно, что Го – это  игра, правила в которой легко понимаемы, знания легко формализуемы и тем не менее их большое количество позволяет ориентироваться только интуитивно, на гениальные решения.

Проблемы современных решений Го

Начну с того, что подвергну небольшой критике мнение многих людей о том, что «дать компьютеру возможность играть в Го по его собственному усмотрению вместо человека – это лишь пустые мечты».
Факт создания достойного искусственного интеллекта Го будет говорить скорее не о торжестве счётной машины над человеком, а о торжестве человека над тайной столь мистической, как фантазия и интуиция. Не зря считают, что игра в Го способствует развитию обоих полушарий мозга, тренируя не только логику и счёт, но и образное мышление, граничащее с интуицией.
Программа, играющая в го, может состоять всего из 100 строчек программного кода. Добавив ещё несколько строчек, можно научить программу оценивать количество территории, контролируемой каждой из сторон. Но, столкнувшись с тактикой и стратегией, такая программа будет играть не на много сильнее начинающего игрока-человека.
Первый вопрос, который действительно поставил меня в тупик был: "Как программа будет оценивать позицию". Действительно, если сравнить Го с шахматами, то вполне понятно, что размер доски Го предполагает большее количество вариантов развития. Помимо этого поле для игры в Го обладает радиальной симметрией. Камни, поставленные на доску обладают ближнедействием и дальнодействием, и камень поставленный на доску может полностью поменять ситуацию на доске.
Важными показателями для искусственного интеллекта так же является наличие большой базы знаний, позволяющей мыслить программе прецедентно. Второй характеристикой является возможности по глубине просчёта вариантов. Как известно и теории принятия решений, наилучший вариант так или иначе получается методом перебора. Современные системы искусственного интеллекта совершенствуются в сокращении перебора методом сокращения заведомо неверных решений.

Вот в чём фишка – камень

На мой взгляд дело обстоит именно в образности восприятия доски. Камень для человека развивающего своё мастерство постепенно начинает обладать доселе неизведанными свойствами, хотя до этого в правилах говорилось только о степенях свободы (дыханиях).
Каждый человек, добившийся в Го высокого уровня мастерства, вырабатывает для себя собственный инструментарий игры, стратегии и тактики. Это включает не только стиль игры, но и своеобразное видение доски, передать словами, которое не представляется возможным. Мастерство игрока складывается из его логических способностей и удачности сформированных им образов.
Возможно цель создания искусственного интеллекта Го не в том, чтобы создать полноценного мастера Го, в том, чтобы создать полноценного ученика Го?

Глаза

Многие игроки в Го знакомятся с понятием бессмертия группы сразу после ознакомления правил. Эта закономерность проявляется для взрослых игроков, старше 12-13 лет. Опыт предшественников показывает, что объяснение детям принципа бессмертия группы не только бесполезно, но и зачастую вредно. Это связано с тем, что взрослые к моменту знакомства с Го уже обладают большим запасом образов, которые они успешно применяют в жизни. Дети таким запасом не обладают. На личном опыте я убедился, что понимание того, что такое «бессмертие» группы приходит далеко не сразу: дети просто не понимают, зачем это бессмертие нужно.
Глаза группы – это не правило, это естественное продолжение правил игры. Интеллект, как и ребёнок, должен уяснить для себя, что представляет собой новое для него слово, как использовать это новое знание. Если это знание будет дано программе сверху, она никогда не сможет принять интуитивного решения.
Единственный способ научить программу играть как человек, это учить её как человека, осознавая, что её «разум» чист, как разум ребёнка.

Мастер Го учится проигрывать

Может быть кто-то слышал о том, что уметь проигрывать – это высшее мастерство. Тут, конечно, надо упомянуть, что мастер уже научился выигрывать.
Когда Искусственный Интеллект выиграет человека, он проделает не менее длинный путь, научившись проигрывать ему.

Комментарии

О разуме

Аватар пользователя Hitokiri

На мой взгляд задача формулируется достаточно просто: нужно каким-либо образом имитировать (смоделировать) человеческий разум, тогда появится возможность обучать его не только Го, но и всему остальному. Если конечно обучать применимо к понятию разум. Тут на мой взгляд возникает масса вопросов, на которые  в современной науке нет однозначного ответа. Если мы сможем вскрыть хотябы понятие "разум", т.е. что это такое, как он работает, каким законам подчиняется, нужно выявить архитектуру разума, то возможно удасться его смоделировать. Иными словами надо начать с самопознания. :)

Но можно пойти и по пути шахматных программ, т.е. тупо перебирать варианты (не все конечно, но наиболее вероятные), что не без успеха делает программа MFGo 12. На данном этапе прога играет на уровне 2 кю

Моя идея в плане обучения

Аватар пользователя Litanontaru

Моя идея в плане обучения простая: хочется сделать систему формирования понятий. Я пытался что-то подобное реализовать для ИИ в других средах, но там всё оказалось сложно. В Го это как раз будет сделать наиболее просто. Обучение (а не самообучение) будет заключаться в построении этих понятий по аналогии с тем, как это происходит в человеческом разуме. Те же самые глаза являются понятием синтетическим, и возникли только из-за необходимости более быстро определять статус групп. Аналогичным понятием является связь (это не соединение). Таким же понятием является форма, плотность, влияние, слабости, ко угрозы, адзи, линии и т. п. Даже атари является синтетическим понятием.
Если написать простой фреймворк, позволяющий эти понятия формализовать, и использовать их для дальнейшего анализа, то дело остаётся за малым - обучить этот интеллект.

Если идти по этому пути, то

Аватар пользователя Hitokiri

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

Хотел бы уточнить, что значит "обучить этот интеллект": 

1) Что подразумевается под интеллектом?

2) Что значит его обучить?

Я так полагаю массив понятий не есть интеллект.

Обучение ИИ

Аватар пользователя Litanontaru

Да, ядро, которое будет способно оперировать понтиями - довольно сложная штука.

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

Хочу отметить, что интеллект должен уметь не саообучаться, а самооптимизироваться - то есть ускорять процессы принятия решения, а не уметь находить новые решения.

Конечно, именно этим занимается разум человека. Дело в том, что создать ИИ, способный функционировать в реальной среде практически невозможно, в силу огромного количества входной информации. ИИ для игры в разы проще создать, так как в этой игре базовой (не синтетической) информации мало.

Ответы на вопросы:

  1. Интеллект - общие способности к познанию, пониманию и разрешению проблем. Понятие интеллект объединяет все познавательные способности индивида: ощущение, восприятие, память, представление, мышление, воображение.
    Я думаю это определение из Википедии вполне соответствует моему пониманию
     
  2. Обучить интеллект - перевести его из состояния неспособности решать поставленные задачи, в состояние способности их решать. Это можно делать различными способами. Мой подход предполагает две составляющие: 1) Формирование с помощью учителя (мастера, сенсея, эксперта, человека) понятий и образов. 2) Оптимизация принятия решения.

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

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

Возможно ядро само по себе не должно быть сложным, скорее наоборот - оно должно работать неоптимизированно и так, чтобы все операции, которое оно совершает, можно было потом автоматически реализовать в виде программного кода. Автоматическое создание кода современные языки программирования уже позволяют.

Отправить комментарий

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <b> <embed> <img> <strike>>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании текста