AGI.place

Форум создателей искусственных интеллектов


Логин (email) 
Пароль 
Настройки

шрифт+
шрифт-
Скачать
Решатель Полимино
Аватар
create
Решатель Полимино
14:19 11.04.2021 14:35 14.06.2022 №865
Для создания искусственных интеллектов удобно иметь простую задачу, на которой можно тестировать разные идеи. Традиционно в качестве такой задачи берут шахматы. Эта хорошая задача с точки зрения эффектности. Но она не очень удобная с точки зрения необходимости учёта специфических шахматных правил, несущественных для проверки именно интеллекта, но существенных для самой задачи (взятие на проходе, рокировка, начальные ходы пешек и т.д.). Ещё одна неплохая задача - это Пятнашки, но она слишком однообразна. Алексей Пажитнов в 1984 году придумал Тетрис, в качестве тестовой задачи для своих автоматических решателей. Это уже более интересная унифицированная задача. Но моё внимание привлекла ещё более простая задача, которая предшествовала Тетрису и которая не содержит ничего лишнего, вроде ненужной динамики Тетриса. Речь идёт о задаче Полимино. Суть данной (браузерной) игры состоит в том, что заданным набором цветных фигур, сложенных из квадратов, необходимо замостить заданное прямоугольное поле, на котором некоторые квадраты уже замощены.
Здесь, как кажется, есть всё необходимое для проверки интеллекта: - распознавание (поля и фишек); - комбинаторика (интеллект характеризуется тем, что может (или, как ему кажется, что может) охватывать все варианты и решать трудные комбинаторные задачи быстро, изобретая разные обобщающие правила, дополнительные условия, по которым могут наступать противоречия, сокращающие количество вариантов); - есть множество готовых корректных вариантов исходного набора полей и фишек разной сложности, решённые людьми; - решение задачи, так же как у человека, заканчивается перемещениями (фишек на целевые места). Противоречие в этой задаче наступает в самой естественной форме - место на поле занято и поэтому фишка не может его замостить. Для проверки такого противоречия достаточно сделать побитовое сравнение двух чисел, которые моделируют поле и фишку. Свободное место = 0, фишка = 1. Благодаря этому стало возможным просматривать 35 млн позиций фишек в секунду на обычном ноутбуке. Программу для решения полимино полным перебором написал на Delphi, скачать можно здесь. Программа работает таким образом: - распознаётся поле и приводится в форму битовой маски; - распознаются фишки и приводятся в форму битовой маски; - для каждой фишки перебором обнаруживаются все места на пустом поле, где она может стать без противоречий. Эти места запоминаются; - далее комбинируем эти места, совмещая на поле фишки и проверяя, противоречат ли они друг другу; - когда для всех фишек подбираются места, которые не противоречат друг другу - решение вводится в браузер. Понятно, что никакого интеллекта тут нет, но интерес представляет вопрос - как бы выглядело решение этой задачи, если бы интеллект тут был? Далеко не все позиции решаются полным перебором. На некоторых задачах комбинаций становится слишком много для перебора, при этом, судя по игровому сайту, люди-решатели эти задачи как-то решили. Интерес представляют те правила, которые компьютер мог бы дополнительно изобрести, чтобы сокращать перебор. Например, мне, как человеку, приходит на ум следующее: - если некая фишка заняла место на поле без противоречий, но при этом она отсекает некоторые клетки на поле, которые вследствие этого не могут больше быть заняты ни одной из оставшихся фишек, то это место признаётся также противоречивым; - если некая фишка заняла место на поле без противоречий, но для какой-то другой фишки больше полей не осталось, то это место признаётся также противоречивым; - если некое место на поле может быть занято только одной фишкой (несмотря на то, что эта фишка может занять и другие места на поле), то эта фишка без вариантов занимает только это место на поле. И более всего интересно, как такие (или подобные) правила можно было бы получить из анализа своего жизненного опыта, т.е. в процессе естественных попыток решения этой задачи "голым" интеллектом, не вооружённым никакими эвристиками и технологиями.
0 | 0
Аватар
create
Решатель Полимино
09:13 12.04.2021 №866
Prosolver:
Понятно, что никакого интеллекта тут нет, но интерес представляет вопрос - как бы выглядело решение этой задачи, если бы интеллект тут был?
Если бы интеллект тут был он сначала определил бы что ему будет за то что он решит эту задачу. В самом общем случае люди выделяют для ИИ в качестве награды дополнительное время работы. Т.е. если алгоритм хорошо работает ему дают продолжать работать еще. Если нет, меняют на другой алгоритм. Можно сделать условие продолжения работы еще более строгим - т.е. убивать алгоритм если он не начинает работать лучше. При запуске нескольких вариантов алгоритма постепенно отбираем лучшие. итд Т.е. эволюционным путем решаем данную зачаду)
0 | 0
Аватар
create
Решатель Полимино
10:18 12.04.2021 14:06 12.04.2021 №868
Prosolver:
Это слишком сложно. Попробуйте решить задачу обнаружения признака того что Ваша цель может быть достигнута и обобщить её на любые признаки и развивающуюся сложность алгоритма достижения цели. В такой формулировке звучит страшно, но это пройдёт.
0 | 0
Аватар
create
Решатель Полимино
15:13 12.04.2021 №878
Jenka:
Если бы интеллект тут был он сначала определил бы что ему будет
Пожалуй да, мотивация, сверх-задача - это первое, что должно быть определено для интеллекта. Живые реальные люди играют в эту игру на сайте, скорее всего, потому, что: - они получают удовлетворение от факта решения задач; - они получают удовлетворение от превосходства над другими игроками (по таблице результатов); - убивают время от безделья; - из любопытства; - изучают интеллект. Теперь если представим, что я - подопытный интеллект, то какие методы я буду использовать чтобы решать данную задачу? Если конкретно эту задачную позицию я уже решал, то я просто вспомню, какие фишки где должны стоять и по памяти поставлю их на свои места. Если человек возился с задачей долго, то он мог даже присвоить какие-то условные имена отдельным фишкам, запомнить отдельные индивидуальные ситуации, связанные с решением конкретной задачи. Если эта позиция для меня новая, то я попытаюсь замостить на поле те пустые места, которые по своей форме похожи на фишки из набора. Хотя это скорее всего будет ошибочное предубеждение. Далее я попытаюсь найти места на поле, к которым подходит одна единственная фишка и зафиксировать эти фишки на поле. Далее я попробую комбинировать фишки друг с другом, чтобы понять, какие совмещения смогли бы плотно замостить большие свободные пространства на поле. Дальше буду расставлять фишки на поле, фиксируя положение отдельных фишек, отслеживая какие новые изгибы границ появляются, к которым подходили бы оставшиеся фишки. При этом я буду запоминать, какие фишки я уже пробовал, то я не буду их пробовать повторно на тех же местах. Eсли в наборе есть одинаковые по форме фишки, то постараюсь сначала найти места для разных фишек. Наверное, никто не сможет увидеть путь к решению сразу, со старта. Но, очевидно, когда до финала остаётся две-три фишки, то мы уже можем ясно умозрительно увидеть путь к победе. Поэтому в реальности (в окне игры) перебор ведётся не до последней фишки, а до обозримого горизонта событий, за которым победа уже легко просматривается. Выводы: 1. Интеллект оперирует, в первую очередь, своей "потоковой" памятью, вспоминает и анализирует удачные и неудачные попытки решения и строит на этой базе следующие попытки. 2. Интеллект практически далёк от применения случайности как метода. Даже то, что как нам кажется делается наугад, требует какой-то самой завалящей инициирующей (неслучайной) идеи. 3. Переборные задачи в любом случае требуют перебора вариантов совмещений, который с точки зрения интеллекта выглядит как попытки, ошибки, анализ ошибок и опять попытки. 4. Задачи с большим количеством степеней свободы интеллектом человека всегда решаются по единообразной схеме - зафиксировать многие степени свободы, чтобы оставшимися степенями осуществлять несложное комбинирование. Это проявляется от управления скелетом, когда многие степени свободы просто фиксируются мускулатурой, а собственно движения осуществляются небольшими группами мышц. И заканчивая сложными стратегическими задачами, в которых многие параметры мы фиксируем, полагаем константными, и пытаемся варьировать минимальным количеством переменных. В шахматах, например, для быстрого выбора хода наибольшее значение имеет не то, какой фигурой походить, а какие фигуры однозначно должны оставаться на местах. 5. Можно, как мне кажется, попробовать сделать что-то вроде генератора случайных тыков, который будет запоминать и анализировать поток своего опыта тыков и пытаться "случайность" тыка делать всё более закономерной, подстраиваясь под обстоятельства конкретной задачи.
kondrat:
Попробуйте решить задачу обнаружения признака того что Ваша цель может быть достигнута
Мне думается, этот признак очевиден - задача может быть решена, если мы помним, что похожие задачи уже решались в прошлом.
0 | 0
Аватар
create
Решатель Полимино
21:44 12.04.2021 №882
Prosolver:
2. Интеллект практически далёк от применения случайности как метода. Даже то, что как нам кажется делается наугад, требует какой-то самой завалящей инициирующей (неслучайной) идеи.
Я сегодня пришел с работы и очень устал. И если бы вы сейчас попросили меня поиграть вашу игру я бы натыкал там фигурок просто в первые попавшиеся свободные места без совершения какой-либо умственной работы)
Prosolver:
3. Переборные задачи в любом случае требуют перебора вариантов совмещений, который с точки зрения интеллекта выглядит как попытки, ошибки, анализ ошибок и опять попытки.
вы сводите понятие интеллекта до уровня математических операций. Интеллект это слон целиком а не отдельно его хвост или нога Дополните вашу схему другими необходимыми функциональными блоками такими как распознавание и классификации.. Т.е. чтобы сделать вывод что ИИ допустили ошибку вы должны сначала научить ваш ИИ определять что данная ситуация это ошибка. и подтолкнуть его к решению этой ошибки. Не надо подставлять свой интеллект на место ИИ. Старайтесь писать программу так чтобы она решала задачу а не вы за неё)
0 | 0
шрифт+
шрифт-
Скачать

Главная Участники Жалобы  Поиск Исходный код О форуме