Rybka explained?

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

  1. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Ребят, вы бы собрались и свой движок написали. Совместно. И рыбку уели.

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Совместный движок будет играть слабее :)
     
  3. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Если обсуждать идеи совместно, то все наши движки станут сильнее.
     
  4. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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

    WinPooh В.М. Команда форума

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

    bankuss Александр баннер

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

    Сергей Марков Учаcтник

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

    Сергей Марков Учаcтник

    Репутация:
    0
    Хехе, бинарный файл с пешечными структурами очень напоминает массив из внутренностей Рыбки :))
     
  9. Binary
    Оффлайн

    Binary Учаcтник

    Репутация:
    0
    я думал , что с "фигурными паттернами" можно и побольше скоростенку Nps развить ...
    неужели так ресурсоемко определить пешечную конфигурацию ...

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

    Сергей Марков Учаcтник

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

    Сергей Марков Учаcтник

    Репутация:
    0
    Не очень, кстати, пассаж про нпс понял. Рыбка не включает в число узлов узлы ФВ просто, это вроде бы известный факт :)
     
  12. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    То сть у Рыбы на самом деле нормальный NPS?
    А почему она слабее остальных лидеров на тактических тестах?
     
  13. Сергей Марков
    Оффлайн

    Сергей Марков Учаcтник

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

    Binary Учаcтник

    Репутация:
    0
    значит Васик умело шифруется :)
    может он и здесь водит вас за нос!
     
  15. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Любой тактический тест, например IQ6.epd + куча результатов на наборах тестовых позиций (тактических) в интернете. Рыбка далеко не первая по результатам.
    Мое предположение - он режет плохие взятия в LMR, что уменьшает силу на тактических тестах (получается сокращение по LMR на жертвах)
     
  16. Binary
    Оффлайн

    Binary Учаcтник

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Другая пропорция...
    У тебя в ФВ сортировка по SEE?
    Есть отсечения по SEE в ФВ?
    Есть ленивая оценка?
    А это нехило меняет пропорцию...

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

    Binary Учаcтник

    Репутация:
    0
    можно поподробнее о ленивой оценке ?! :D
     
  19. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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

    Binary Учаcтник

    Репутация:
    0
    т.е. , например , оценить только материал ?
     
  21. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    Только по материалу - мы как раз можем предположить что оценка выходит за рамки окна.
    Можно использовать только быстрые, при этом весьма существенные признаки.
    (например проходные)
    А некоторые признаки использовать в урезанном варианте (например защищенность короля)

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

    Binary Учаcтник

    Репутация:
    0
    и скольк обычно составляет это окно?
     
  23. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    при Negascout в ФВ ненулевое окно только в PV.
    Можно считать что оно всегда нулевое... :)
    Но это не значит что всегда нужно использовать Ленивую оценку :)
     
  24. atoku
    Оффлайн

    atoku Модератор

    Репутация:
    0
    Похоже наступает Конец Рыбьей Эры! Давайте, мужики!
     
  25. NS
    Оффлайн

    NS Нефёдов Сергей баннер

    Репутация:
    3
    И что это даст, когда нет алгоритма подбора весов?

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

    NS Нефёдов Сергей баннер

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    И еще одна мысль - по частоте появления в позициях нельзя судить о значимости признака.
    Например - Белая пешка b3, Черный слон a2 - признак редкий, но стоит 1.5 пешки!!!

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

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

    NS Нефёдов Сергей баннер

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

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

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

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

    Fruit Александр баннер

    Репутация:
    3
    Остальные мало, что понимают и растеряны :)
     
  30. WildCat
    Оффлайн

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Эндшпильные признаки ведь тоже надо настраивать.
    У меня интерес появился только после последнего топика. Только вот где взять много партий достаточного качества?
    Методика настройки признаков прояснилась. Вот бы еще методику нахождения новых ценных признаков.

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

    score += SomeTable[pawns_type][piece_type][square];
    ???
     
  31. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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

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


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

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Объясни! Ведь мы можем обойтись и без постороннего движка.
    ... но никому не скажу?
     
  33. NS
    Оффлайн

    NS Нефёдов Сергей баннер

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


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

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

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

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

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

    NS Нефёдов Сергей баннер

    Репутация:
    3
    У Васика не было собственного сильного движка, поэтому для получения Хода (для исключения нестабильных позиций) и оценки - он скорей всего использовал Тогу (до тех пор пока его движок не стал сильнейшим).

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

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

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

    WildCat Коршунов Игорь Команда форума

    Репутация:
    0
    Наверное, достаточно просто проверять битость полей около короля, как в Фрукте.