Когда компьютерные программы перестанут проигрывать?

Тема в разделе "Машинное отделение", создана пользователем Valen548, 9 окт 2016.

  1. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Математически корректная игра не проигрывает (исходя из того, что шахматы ничейная игра), а движки сейчас проигрывают партии иногда. Если бы движки играли корректно, проигрышей с их стороны не было бы.
  2. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    Вы в курсе, что проводится чемпионат среди движков?
  3. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Да, в курсе.
  4. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    Так там можно посмотреть партии между ведущими движками и составить процент.
  5. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Так просто процент не составить. Например, Комодо-Стокфиш сыграли 100 партий с результатом 80 ничьих 10/10 побед. В 20 партиях были мат. ошибки гарантированно.Но сколько было математически корректных ничьих из 80? Я думаю, что вполне может быть 50 ничьих мат. корректных из 80 при нынешней игре мощных движков, но это просто предположение, которое нуждается в подтверждении.
  6. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    Скорее, процент меньше, так как в большинстве ничейных партиях негде было ошибиться. Плюс, вы не учитываете фактор дебютных книг. А от этого многое зависит.
  7. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Т.е. вы считаете, что из 80 ничьих Комодо-Стокфиш примерно в 75 идет математически корректная игра?
  8. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    Понимаете, корректность игры движков зависит от сложности позиции. Там равенство идет с небольшими вариациями в основном. В ASFC движки на классическом контроле играют некорректно практически каждую партию.
  9. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Я согласен, что вероятность ошибки повышается, видимо, при увеличении "сложности" позиции.

    Но насколько часто компы ошибаются? Например, из 10^43 возможных позиций в шахматах в скольких из них Стокфиш7 примет неверное решение на глубине 25, к примеру?
  10. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    А вы представляете, что такое глубина 25?
  11. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Примерно 10 минут размышления
    ну примерно 5 минут размышления в версии Стокфиша на чесс-темпо. Чего-то эстраординарного в этом не вижу.
  12. Programmist Учаcтник

    • Участник
    Рег.:
    21.09.2016
    Сообщения:
    227
    Симпатии:
    17
    Репутация:
    2
    Оффлайн
    Все-таки, это очень небольшая глубина, на такой стокфиш будет часто ошибаться в сложных позициях.
  13. Jadn Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    10.05.2006
    Сообщения:
    3.050
    Симпатии:
    1.221
    Репутация:
    38
    Оффлайн
    Если брать вообще все возможные позиции, то в подавляющем большинстве из них у одной стороны большой материальный перевес. Стокфиш в таких не ошибется.
    Mustitz и Challenger Spy нравится это.
  14. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    25 глубина , вероятно , достаточна для 2900 рейтинга в классике.

    Вчера, кстати, видел как Стокфиш 6 - Стокфиш 6 в партии с лишней фигурой Стокфиш 6 проиграл (контроль 1мни+2сек на смартфоне). Пока еще, видимо, есть место для улучшения.
  15. Eugene_K Учаcтник

    • Участник
    Рег.:
    14.12.2014
    Сообщения:
    829
    Симпатии:
    137
    Репутация:
    3
    Оффлайн
    Только вот когда вы говорите о глубине не забывайте то что "глубина 25" это не весь перебор 25 полуходов. Это ходы выбранные конкретной программой как перспективные. У каждой программы разные настройки на эти дела. У какой-то более сложная оценка позиции, у какой-то упор на быстродействие в узлах. Не забывайте так же про всякие эвристики которые подрезают веточки. Не говоря уже о том что шахи и взятия просматриваются до конца.

    Вобщем что бы чего-то блаблабла про движки узнайте хотя бы как они работают.
  16. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн

    Я знаю как работают движки, альфа-бета, ну-мега, нейро-сети и т.п. Так что никакого "блаблабла " :)
  17. Eugene_K Учаcтник

    • Участник
    Рег.:
    14.12.2014
    Сообщения:
    829
    Симпатии:
    137
    Репутация:
    3
    Оффлайн
    Я вообще про общий уровень спорящих. Обычно спорят слепой с глухим про движки. Да еще и у Шипова спрашивают, который тоже ни бум-бум в них ))
  18. tiger Новичок

    • Новичок
    Рег.:
    11.02.2006
    Сообщения:
    79
    Симпатии:
    19
    Репутация:
    0
    Оффлайн
    Мне кажется компьютеры еще очень далеки от идеальной игры. Я некоторое время вникал в код Стокфиша. Это несомненно очень здорово написано с точки зрения программирования и оптимизации. Например, есть даже части на ассемблере (подсчет количества единичных битов в числе). Генерация легальных ходов тоже оптимизирована, многоветочный (multi-threaded) поиск по дереву тоже и многое другое. Но с шахматной точки зрения там конечно полный хаос. Целый зоопарк констант, веса какие-то от фонаря. В общем там, наверняка, полно возможностей для улучшения. Трудно поверить, что то что есть это максимум или близко к нему.
  19. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн

    Насчет общего уровня не знаю, сам движки не создавал, но примерно что там происходит догадываюсь, после прочтения соответствующих викиз и прочего. Но трудился в области шахмат- сделал вот такой шахматный ресурс - chess555.com :)
  20. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    620
    Симпатии:
    107
    Репутация:
    2
    Оффлайн
    Подсчет количества битов в числе - операция popcnt, выполняющаяся в 1 такт в процессорах с поддержкой SSE 4.2 xD. У меня так работает. Если нет SSE 4.2, будет работать встроенный алгоритм)
  21. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Интересная партия , Стокфиш 7 побеждает без коня против Фритц 5.32




    Фритц 5.32 слишком легкомысленно отнесся к созданию сильного пешечного центра у белых. Владея инициативой, Стокфиш уверенно обыгрывает Фрица, несмотря на отсутствие целого коня.
    —- добавлено: 17 окт 2016, опубликовано: 17 окт 2016 —-
    Видимо, в партии без коня g1 Стокфишу немало подфартило, без коня b1 и слона f1 Фритц довольно легко выиграл.
    Без качества я думал, что у Стокфиша хорошие шансы на победу с Фрицем. Так и оказалось.
    Стокфиш 7 - Фритц 5.32 , У Фрица5.32 лишнее качество.



    Обращает внимание белый слон , который вполне себе удачно расположился на h7 на протяжении 10 ходов.
  22. Eugene_K Учаcтник

    • Участник
    Рег.:
    14.12.2014
    Сообщения:
    829
    Симпатии:
    137
    Репутация:
    3
    Оффлайн
    Что это такое -"шахматная точка зрения"?
  23. tiger Новичок

    • Новичок
    Рег.:
    11.02.2006
    Сообщения:
    79
    Симпатии:
    19
    Репутация:
    0
    Оффлайн
    Рассмотрим оценочную функцию Стокфиша. Там никак не менее двухсот весов в совокупности. Результатом же этой функции является число, одно число, например, 0.23. С практической точки зрения шахматиста сколько по-настоящему интересных (различных) значений может принимать эта функция? Не так уж много. Все что по модулю больше 2.00 неинтересно, там скорее всего уже выиграно или проиграно (или неправильно оцененная крепость), также разница между 0.21 и 0.25 вряд ли имеет большое значение. По настоящему существенно различных оценок не так много, то есть функция переопределена, там много лишнего хлама. С другой стороны, гораздо полезнее было бы второе число, показывающее насколько стабильна оценка. То есть, если первое число (оценка) 0.00, это простое равенство или надо сделать пять нетривиальных ходов подряд?
  24. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.968
    Симпатии:
    401
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Почему от фонаря? Коэффициенты получены скорее всего в результате оптимизации, представляют собой локальный экстремум и должны располагаться достаточно близко к глобальному. А чтобы улучшить надо вводить другую систему параметров.
    —- добавлено: 22 окт 2016 —-
    Кстати, а движки сейчас инструкцию PEXT поддерживают? Тоже должен быть буст.
  25. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.968
    Симпатии:
    401
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    Тогда улучшить Стокфиша совсем тривиально — делаем бранч, убираем половину переопределёных оценок, запускаем оптимизацию по оставшейся сотне, скажем генетический турнирный агоритм или еще что... В результате количество оценок уменьшиться, считать ваш бранч будет быстрее, значит играть сильнее...

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

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

    Возьмём конкретную позицию. Предположим, что у нас есть два хода-кандидата, два варианта на 25 плай, и две заключительные позиции. Движок должен выбрать один из этих двух ходов. Если посмотреть на эти 200 параметров, то может оказаться, что 150 из них дают одинаковый вклад в обоих линиях. Например, уже приведённый мною ранее пример из классического варианта французской защиты. Преимущество двух слонов отсутствует — минус 10 параметров. Не возникает изолятор — ещё минус 10 параметров. Не возникают висячие пешки — еще -10, и т. д. А вот остальные 50 влияют на разницу оценок, и принципиальны для данного положения.
    Challenger Spy нравится это.
  26. tiger Новичок

    • Новичок
    Рег.:
    11.02.2006
    Сообщения:
    79
    Симпатии:
    19
    Репутация:
    0
    Оффлайн
    Дело вот в чем. Функция Стокфиша имеет конкретный вид: это сумма свойств позиции, где каждое свойство взято с определенным весом. (Вес зависит еще от того определена позиция как эндшпиль или миттельшпиль, но это не так неважно). То есть это линейная функция свойств. Запас свойств, я согласен, надо сделать очень большим, если не менять подхода в целом. Допустим у нас N свойств (два слона, изолятор итд). Линейная функция от N переменных полностью определяется значениями в N точках, то есть в N позициях. Турнир не нужен. Нам нужно вручную подобрать N позиций, с данными оценками и это однозначно определит все веса. Надо только чтобы линейная система N уравнений имела решение.
  27. Mustitz Заслуженный

    • Заслуженный
    • Участник
    Рег.:
    30.09.2006
    Сообщения:
    2.968
    Симпатии:
    401
    Репутация:
    22
    Адрес:
    Киев
    Оффлайн
    В результате программа будет идеально (с точки зрения человека) оценивать эти N позиций, но где гарантия того, что она будет идеально оценивать позицию N+1? Да, можно взять в качестве набора M позиций, M > N, и подбирать веса методом наименьших квадратов. С другой стороны, оценка позиции относиться к силе игры опосредовано, поскольку у нас уже есть перебор плюс разные эвристики. Как начальная точка отсчёта такой подход хорош, но оптимизацию силы игры лучше проводить основываясь на силе игры, а не на оценке позиции.
  28. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    620
    Симпатии:
    107
    Репутация:
    2
    Оффлайн
    Не знаю. Еще используются инструкции для поиска позиции 1-го и последнего enable-бита в числе. Кстати, моя программа сейчас перебирает 3-8 млн. позиций/сек. После перехода на BitBoards. А пока - не больше 600 000 - https://github.com/sovaz1997/Zevra . Там в другом branch есть версия с BitBoard. Процессор - Intel Core i7-860 @2.80ГГц (2009-2010) без включенного HT. Программа не использует многоядерность.
  29. sovaz1997 Учаcтник

    • Участник
    Рег.:
    30.08.2016
    Сообщения:
    620
    Симпатии:
    107
    Репутация:
    2
    Оффлайн
    Но я не могу использовать PEXT (он реализован в BMI2, а это - Intel, начиная с Haswell). А так - можете прочитать об этом здесь: https://chessprogramming.wikispaces.com/BMI2
  30. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    У меня интерфейс Фриц 11 , Windows 7 32 бита, процессор intel coreTM i3-4150 Cpu о котором написано 2 ядра, 4 threads.
    Хочу, чтобы движок Стокфиш 7 использовал 2 ядра.

    Я выставляю в параметрах движка 2 threads. Когда захожу в следующий раз в параметры- значение threads вернулось к 1.
    Это нормальное явление? Движок использует 2 ядра машины?
  31. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    550
    Симпатии:
    203
    Репутация:
    21
    Оффлайн
    Нет, после перезапуска Фрица количество ядер сбрасывается на одно. Количество тредов нужно прописывать в настройках ещё при первоначальной установке движка. Тогда оно сохранится.

    В общем, скачивайте свежую версию Стокфиша, при установке сразу же лезьте в настройки и уставливайте 2 треда. Кроме того, добавьте к названию движка любой символ в конце, можно пробел, и готово.
    Valen548 нравится это.
  32. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Установил Стокфиш 221016. Заряжаю матч с другими обитателями моей коллекции.
    А что в нем нового, вы можете сказать?
  33. Rom Учаcтник

    • Участник
    Рег.:
    12.02.2012
    Сообщения:
    550
    Симпатии:
    203
    Репутация:
    21
    Оффлайн
    Он сильнее стал, чем Стокфиш 7. Пунктов на 50.
  34. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Ого.. пунктов 50 это много..
  35. TopicStarter Overlay

    Valen548 Новичок

    • Новичок
    Рег.:
    09.10.2016
    Сообщения:
    47
    Симпатии:
    5
    Репутация:
    1
    Оффлайн
    Я немного протестировал, Стокфиш 221016 силен жутко. Стокфиша 7 разорвал, со старой Рыбкой версии 2.2 вообще все выигрывает. Похоже, +100 очков рейтинга против Стокфиш 7.

Поделиться этой страницей