Почему шахматные движки иногда пропускают хорошие ходы (или берут навсегда)?

17

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

Например, ход 15 ... Bf2в игре ниже:

НН - НН, 0-1
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rg3 + 17. Kf5 Rxf3 + 18. Kg4 Rg3 + 19. Kf5 f6 20. d3 Kf7 0-1

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

Я знаю, что все зависит от того, сколько времени вы дадите им на анализ, но недопустимо, что иногда людям удается находить эти движения за меньшее время, чем компьютеры.

  • Почему шахматные движки не замечают хороших ходов в некоторых позициях? (Однажды я прочитал кое-что о «эффекте горизонта», может быть, это связано?)
  • Есть ли другие заметные примеры? (например, эта знаменитая головоломка , для решения которой требуется время)

Эти вопросы содержат полезную информацию, чтобы частично объяснить некоторые факторы, которые могут быть причиной этой аномалии: Какие алгоритмы и эвристики популярны в компьютерных шахматах? , Когда я играю в компьютерного оппонента, какие ситуации я должен создать, чтобы получить больше шансов на победу? , Компьютерные оценки: насколько они заслуживают доверия?

Примечания: ловушка известна как Удочка , я знаю, что пропустил помощника в 3 (и помощника в 7) :(, ограничение по времени на ход было дней (заочные шахматы), но это заняло у меня 5-10 минут закончить все расчеты.

ajax333221
источник
1
Очень интересно. Stockfish на моем ПК средней силы не нашел 15... Bf2вообще через 5 минут.
Тони Эннис
... и потребовалось более 7 минут, чтобы найти похожего помощника на следующем ходу.
Тони Эннис
20 d3 - ошибка. попробуйте 20 d4.
dcaswell
1
Почему вы используете язык «неприемлемо» для человека, чтобы найти движение за меньшее время, чем компьютер? Можете ли вы распаковать свои мысли по этому поводу?
Ксонатрон
Он пропустил много лучших ходов. Почему именно этот?
Йобамамама

Ответы:

33

Почему шахматные движки не замечают хороших ходов в некоторых позициях?

Причина называется вперед обрезкой методы (см http://chessprogramming.wikispaces.com/Pruning ) с ProbCut в первой строке.

Ход 15 ... Bf2 обрезается на мелких глубинах, потому что включает жертву 16.Rxf1 без восстановления чего-то конкретного с доказательствами сразу после. Матенет также трудно увидеть, потому что он включает в себя некоторые дальнейшие «бесшумные» движения, как, например, 17 ... Ke7, и да, и двигатели, не только люди испытывают затруднения, чтобы увидеть отдаленные бесшумные движения, поскольку их часто сокращают.

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

И последнее, но не менее важное: вы должны помнить, что сила двигателя всегда измеряется с помощью силы, а не в способности найти абсолютный кратчайший путь к победе. Неважно, победит ли двигатель за 8 ходов или за 25 ходов. Стремление к самому короткому выигрышу означало бы потерю времени, потому что в большинстве случаев такого тайного хорошего хода вообще не существует. И пустая трата времени повредила бы двигатели ELO-Rating.

user1411977
источник
1
Хороший ответ, добро пожаловать на сайт!
Андрей
+1 за упоминание компромисса между обрезкой и полным поиском. Я нисколько не удивлен, что комбинация 13+ PLY не найдена быстро. У двигателя есть «лучшие вещи», чем рассчитывать каждую возможность на эту глубину.
Даниэль Б
2
Хороший ответ в целом. +1 за «Последнее, но не менее важное: вы должны помнить, что сила двигателя всегда измеряется с точки зрения силы и силы, а не в способности найти абсолютный кратчайший путь к победе»
ferit
Отличный ответ.
Ксонатрон
12

Я пытаюсь это с Houdini 1.5 (бесплатная версия). Сначала 15 ... Bf2 не появляется в верхних 5 ходах, затем, когда он достигает глубины 15, он появляется, как # 1. Занимает у моего четырехлетнего компьютера около 19 секунд, не так долго.

Так что он не может не заметить его, он считает его лучшим ходом только после достижения глубины 15. По-видимому, до тех пор, пока глубина составляет всего 14 слоев, другие ходы лучше (например, выигрыш 15 ... f5 +).

По-видимому, 15 ... Bf2 является матом из 8, что составляет 15 слоев (8 ходов черными, 7 ходов белыми). Но сначала он просто считает это +10 или около того, затем +20, затем мат в 10, затем мат в 8.

Мат в 8-й строке:

NN - NN
1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. OO Ng4 5. h3 h5 6. hxg4 hxg4 7. Bxc6 gxf3 8. Qxf3 Qh4 9. Qh3 Qxh3 10. gxh3 dxc6 11. Re1 Bxh3 12. f3 Bc5 + 13. Kh2 Bf1 + 14. Kg3 Rh3 + 15. Kg4 Bf2 16. Rxf1 Rh4 + 17. Kg5 Ke7 18. Rh1 Rxh1 19. Nc3 Rah8 20. Nd5 + cxd5 21. d3 R8h5 + 22. Kg4 R1h4 #.

Ясно, что когда Houdini 1.5 считает, что глубина составляет 15 слоев, он не учитывает все возможные линии, которые имеют глубину 15 слоев, или он увидит помощника в 8 в тот момент, когда он завершил поиск в 15 слоев.

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

Это может быть связано с бесшумными ходами ... Ke7 и ... Rah8, двумя неконтролируемыми не-захватами в линии, где черные - часть вниз. Вполне вероятно, что где-то решит, что не стоит продолжать искать в этой строке. Только позже, когда он продолжит линию и найдет мат в конце, появятся другие линии, которые продлевают игру (с 18.Rh1 Rxh1 и так далее).

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

RemcoGerlich
источник
Мое предположение относительно того, почему это чернослив, заключается в том, что 16. Rxf1 выглядит «эвристически», а не король великого белого вне поля зрения, но немедленного мата нет, и черные бросают рыцаря за пешку в материале. Только после более глубокого анализа (как вы сказали) ценность этой «жертвы» становится ясной.
Джо К
Обратите внимание, что «15 слоев» означает, что он рассматривал некоторые движения на глубину 15, а не все движения . Это займет около 4 секунд, даже на суперкомпьютере.
BlueRaja - Дэнни Пфлугхофт
2

Прочитав все ответы и другие источники, я теперь понимаю, что они не «пропустили» или решили пропустить эти шаги, люди запрограммировали их таким образом, чтобы они следовали определенному шаблону при поиске (где / как / когда + к) и что более важно, когда нужно приостановить поиск и изучить более перспективные строки, чтобы сэкономить ресурсы.

Но при наличии достаточного времени компьютер найдет любую возможную комбинацию на определенной глубине.

TL; DR

  • Q1: они никогда не пропускают ходы, они просто еще не нашли их
  • Q2: им нужно время, потому что они запрограммированы на сохранение ресурсов, и они будут расставлять приоритеты для некоторых линий над другими (например, те, которые не имеют пассивных ходов или не восстанавливают материал в следующие несколько ходов).
ajax333221
источник
-1

Я думаю, что всем не хватает гораздо более быстрого помощника. При проверке позиции с помощью Гудини 3 у черных фактически есть мат в 3 на 13-м ходу. Вместо Bf1 + черные должны были сыграть Bf2, и это ограничивается 14. d3 bf1 + 15. Bh6 Rxh6 #. Таким образом, в необычном ответе на ваш вопрос, возможно, некоторые движки не сразу увидели ваш ход, но в случае с Houdini 3 он нашел гораздо более быстрого партнера.

похотливый
источник
5
Если вы прочитаете весь вопрос, то увидите, что он знает о сопряжении в 3. Все разумно новые движки сразу же найдут сопряжение в 3, и это не является частью того, о чем здесь говорится.
Халвард