Rybka explained?

Тема в разделе "Машинное отделение", создана пользователем WinPooh, 2 ноя 2006.

  1. atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    Ребят, вы бы собрались и свой движок написали. Совместно. И рыбку уели.

    У меня тоже пара идей есть. Я так заперся как книжный шкаф, а так может тоже что сделал бы.
  2. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Совместный движок будет играть слабее :)
  3. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Если обсуждать идеи совместно, то все наши движки станут сильнее.
  4. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Идеи это одно, а совместное написание это совсем другое :)
    Соместное написание, найм кодеров под написание - здорово ухудшает качество проекта...
    А вот найм тестеров, консультантов и аналитиков - здорово улучшает :)
    А вот обсуждение это совсем другое. У меня уже набралась просто уйма новых идей (новых для меня:) ) в итоге обсуждений,
    даже не представляю сколько может потребоваться времени на их реализацию...
  5. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Согласен. Передерёмся из-за стиля расстановки фигурных скобочек :)
  6. bankuss Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    24.05.2006
    Сообщения:
    1.084
    Симпатии:
    38
    Репутация:
    6
    Оффлайн
    верно.. GNU Chess далеко не пошел. Хотя в то время когда он разрабатывался, таких идей наверно еще не было :)
  7. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Давайте пока что вот что... Посчитаем для начала пешечные структуры в большом pgn-е. Вообще для всех позиций и отдельно для позиций, где определенная фигура стоит на определенном поле. И сравним эти два массива. Выделим множество структур, которые на статистически значимом уровне встречаются чаще в случаях, когда фигура стоит на поле. Дальше мы сможем эту разницу обобщить в собственно паттерны. Подсчет структур я, вобщем-то, написал. Надо разработать алгоритм обобщения...
  8. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Хехе, бинарный файл с пешечными структурами очень напоминает массив из внутренностей Рыбки :))
  9. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    я думал , что с "фигурными паттернами" можно и побольше скоростенку Nps развить ...
    неужели так ресурсоемко определить пешечную конфигурацию ...

    честно говоря мне версия из поста №1 больше по-душе
  10. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    А кто мешает для пешечных паттернов потом перебрать 2-3-4 фигурные комбинации?
    В любом случае начинать надо с малого.
  11. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Не очень, кстати, пассаж про нпс понял. Рыбка не включает в число узлов узлы ФВ просто, это вроде бы известный факт :)
  12. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    То сть у Рыбы на самом деле нормальный NPS?
    А почему она слабее остальных лидеров на тактических тестах?
  13. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Да не слабее она...
    У нее в ФВ не используется полная оценочная функция, поэтому некоторые нюансы ФВ может пропускать. Но я пока что не видел, чтобы она была слабее тактически.
  14. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    значит Васик умело шифруется :)
    может он и здесь водит вас за нос!
  15. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Любой тактический тест, например IQ6.epd + куча результатов на наборах тестовых позиций (тактических) в интернете. Рыбка далеко не первая по результатам.
    Мое предположение - он режет плохие взятия в LMR, что уменьшает силу на тактических тестах (получается сокращение по LMR на жертвах)
  16. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    у моего движка в обычном режиме -1100 nps
    ФВ-узлы не включаю -220 nps
    не думаю , что у Рыбки пропорция сильно отличается :) => ее скоростенка реальная где-то на уровне King 3.33
    и в 1.5 раза больше Hiarcs x50 ...
  17. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Другая пропорция...
    У тебя в ФВ сортировка по SEE?
    Есть отсечения по SEE в ФВ?
    Есть ленивая оценка?
    А это нехило меняет пропорцию...

    Добавлено.
    Извиняюсь - ленивая оценка конечно не меняет количество просмотренных позиций :)
  18. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    можно поподробнее о ленивой оценке ?! :D
  19. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    ... in the evaluation if score seems to be out of the a-b window (lazy eval)
    Если мы предполагаем что оценка вне Альфа/Бета окна, то можем использовать быструю ленивую оценку.
  20. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    т.е. , например , оценить только материал ?
  21. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Только по материалу - мы как раз можем предположить что оценка выходит за рамки окна.
    Можно использовать только быстрые, при этом весьма существенные признаки.
    (например проходные)
    А некоторые признаки использовать в урезанном варианте (например защищенность короля)

    Насколько я понимаю - у каждого свои варианты, в зависимости от ОФ, структуры хранения позиции и личных предпочтений...
  22. Binary Учаcтник

    • Участник
    Рег.:
    27.08.2006
    Сообщения:
    135
    Симпатии:
    0
    Репутация:
    0
    Адрес:
    Мытищи
    Оффлайн
    и скольк обычно составляет это окно?
  23. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    при Negascout в ФВ ненулевое окно только в PV.
    Можно считать что оно всегда нулевое... :)
    Но это не значит что всегда нужно использовать Ленивую оценку :)
  24. atoku Модератор

    • Команда форума
    Рег.:
    05.02.2006
    Сообщения:
    2.949
    Симпатии:
    9
    Репутация:
    0
    Адрес:
    USA
    Оффлайн
    Похоже наступает Конец Рыбьей Эры! Давайте, мужики!
  25. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    И что это даст, когда нет алгоритма подбора весов?

    Рассмотрим простейший случай, таблицы с одной фигурой.
    Алгоритм присваивания оценок паттернам должен посчитать среднюю силу коня (Скорей всего от 3 до 4 пешек), и среднюю силу на конкретном поле...
    Я никак не могу себе представить такой алгоритм. :(
  26. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Хотя один алгоритм я знаю - оценваем все позиции при помощи сильнейшей программы расчетом на некоторую глубину (5-7ply)
    Получаем набор признаков и оценку...
    Если я ничего не путаю, то задача минизации суммы квадратов отклонений (производная суммы квадратов по каждому признаку равна нулю!!!) - Это просто задача решения системы линейных уравнений...
  27. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    И еще одна мысль - по частоте появления в позициях нельзя судить о значимости признака.
    Например - Белая пешка b3, Черный слон a2 - признак редкий, но стоит 1.5 пешки!!!

    Причем значимость признака может расти от наличия другого.
    Если добавим признак слона b1 и пешки c2 - то значимость первого признака возрастет!

    Значимость признака можно считать по увеличению суммы квадратов отклонения при исключении признака!!!
  28. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Моё мнение
    По поводу формирования базы - не надо гнаться за партиями сильных шахматистов, программа должна хорошо играть в любых позициях.
    Исключение одинаковых позиций из базы - нужно ли? Если позиция встречается чаще, то программа должна её оценивать четче.
    Исключение нестабильных позиций (нужно ли это?) -
    1. Исключаем позиции с оценкой вне интрвала, например [-2,2]
    2. Исключаем позиции в которых лучший ход взятие.
    3. Исключаем позиции в которых король находится под шахом.
    4. Исключаем позиции в которых лучший ход шах.
    5. Исключаем позиции в которых оценка полученная при помощи ФВ отличается от оценки полученной при глубине получения лучшего хода и оценки более, чем за пешку.
    6. Исключаем позиции в которых лучший ход это превращение пешки.
    7. Исключаем позиции с малым количестом материала.

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

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

    ЗЫ. Похоже что или я что-то не то пишу или остальные потеряли интерес к этой теме :)
  29. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Остальные мало, что понимают и растеряны :)
  30. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Эндшпильные признаки ведь тоже надо настраивать.
    У меня интерес появился только после последнего топика. Только вот где взять много партий достаточного качества?
    Методика настройки признаков прояснилась. Вот бы еще методику нахождения новых ценных признаков.

    Про оценку положения фигур в зависимости от пешечной конфигурации не совсем понял. Так что-ли:

    score += SomeTable[pawns_type][piece_type][square];
    ???
  31. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Дело в том, что у партий не должно быть "достаточного качества" :)
    Базы - MegaBase, Базы партий компютерных турниров.
    Главное чтоб был сильнейший движок, для анализа базы и получения лучшего хода и оценки :)
    А когда свой уже стал сильнейшим в мире - то можно уже использовать его.

    Насчет новых ценных признаков - похоже Васик тупо взял все двухпризнаковые комбинации (у меня дежа-вю. я где-то об этом уже читал :) )
    Поэтому Рыбка и теряется в сложных пешечных комбинациях в центре (пример Классического варианта СТарушки)


    ЗЫ. Я начинаю понимать почему "Рыбья оценка" так близка к оценке Тоги/Фрукта :)
  32. WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Объясни! Ведь мы можем обойтись и без постороннего движка.
    ... но никому не скажу?
  33. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Насчет сочетания Фигур, пешечной структуры в центре.
    Два варианта.
    1. Чернопольный и белопольный слон разные фигуры.
    Для каждой Фигуры Score+=Таблица[Фигура][Пешечная структура в центре]
    2. Чернопольный и белопольный одна и та-же фигура -
    Для каждой Фигуры Score+=Таблица[Фигура][Координата Фигуры][Пешечная структура в центре]


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

    Теперь например такая штука даст защищенность короля
    (Для каждой свой и чужой фигуры/пешки и поля битого фигурой пешкой)

    Score+=Таблица[Фигура][Координата Фигуры][КоординатаБелогоКороля]
    Score+=Таблица[Фигура][Координата Фигуры][КоординатаЧерногоКороля]
    а еще лучше
    Score+=Таблица[Фигура][Координата Фигуры][КоординатаЧерногоКороля][КоординатаБелогоКороля]

    Причем табличные признаки не исключают уже существующие, и существующие (так как известно их количество) так-же могут принимать участие в расчете (минимизации разницы квадратов)

    А лишние признаки можно исключать на этапе получения Производных (системы линейных уравнений)/ получения формулы (матрицы) суммы разницы квадратов.
  34. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    У Васика не было собственного сильного движка, поэтому для получения Хода (для исключения нестабильных позиций) и оценки - он скорей всего использовал Тогу (до тех пор пока его движок не стал сильнейшим).

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

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

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Наверное, достаточно просто проверять битость полей около короля, как в Фрукте.

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