Автоматический подбор параметров движка

Тема в разделе "Машинное отделение", создана пользователем WildCat, 16 фев 2007.

  1. TopicStarter Overlay

    WildCat Коршунов Игорь

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

    Есть предложения делать это:
    - генетический алгоритм
    - всевозможные спуски (алгоритмы пошагового поиска)

    Какие есть мысли по этому поводу?
  2. NS Нефёдов Сергей

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

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

    Возникает еще вопрос - как лучше считать градиент?
  3. NS Нефёдов Сергей

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

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

    Силу замерял по проценту совпадений ходов с сильнейшими гроссами, но думаю что набор тестовых матчей с суперкороткими контролями (секунда, несколько секунд на партию) ничем не хуже.
  5. TopicStarter Overlay

    WildCat Коршунов Игорь

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

    Между ними все же есть принципиальное различие.
  6. NS Нефёдов Сергей

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

    WildCat Коршунов Игорь

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

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

    В шахматах 50мс. на ход это 7-8 полуходов.
  9. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Так у тебя ведь сейчас покоординатный спуск. Попробуй на куске из MegaBase.
    Либо по базе CCRL - хотя там меньше 300 участников.
  10. TopicStarter Overlay

    WildCat Коршунов Игорь

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

    Любую пошаговую оптимизацию можно назвать спуском, так что не вижу из-за чего тут спорить.

    Нам важно определится какой именно вариант спуска выбрать.
  11. TopicStarter Overlay

    WildCat Коршунов Игорь

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

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

    Но я не уверен что Функция силы - это действительно плохая функция с большим числом локальных экстремумов. А на хороших - лучшее - наискорейший градиентный спуск.
    В отличии от Ньютона он имеет огромную область сходимости.
    А в отличии от покоординатных спусков - лучшую сходимость.
  13. NS Нефёдов Сергей

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

    WildCat Коршунов Игорь

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

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Для простых, для каждой своей шашки оценка по координате:
    k1*(a+b)+k2 где а - количество шашек у той стороны за которую оцениваем, b - у противника.
    То есть плавный переход от миттельшпильной оценки к эндшпильной. И корректировка оценки на перекошенный материал. (k3*(a+b)+k4)*(a-b)
    где k1,k2,k3,k4 - расчитываемые коэффициенты.
    Это для позиций без дамок.
  16. TopicStarter Overlay

    WildCat Коршунов Игорь

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

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Одна координата. Только вместо одной таблицы на 28 полей для простой используются четыре.
    По двум причинам
    1. В шашках эндшпильная оценка очень сильно отличается от миттельшпильной.
    Поэтому используется смешание оценок - если преобразовать формулу, то она принимает вид k1*(a+b-2)/22+k2*(24-a-b)/22

    При всех 24-ех шашках на доске используется таблица коэффициентов k1, При двух шашках - таблица коэффициентов k2, при промежуточном количестве шашек - смешание оценок.

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

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

    Оценка в Дамочных позициях -
    k1+k2*a+k3*b+k4*c+k5*d

    Где а - количество наших простых
    b - Количество простых соперника
    с - Количество наших дамок
    d - Количество на доске дамок соперника
  18. TopicStarter Overlay

    WildCat Коршунов Игорь

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Так будет только в малофигурных эндшпилях. Если шашек больше пяти-шести, то перевес в шашку почти всегда решающий.
  19. TopicStarter Overlay

    WildCat Коршунов Игорь

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

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

    Но да, конечно оценка дамочных позиций нужна в основном в эндшпиле.
  21. NS Нефёдов Сергей

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

    WildCat Коршунов Игорь

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

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

    WildCat Коршунов Игорь

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

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

    WildCat Коршунов Игорь

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

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

    WildCat Коршунов Игорь

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

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

    WildCat Коршунов Игорь

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

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

    Около полутора тысяч Паттернов, Если на этапе оценки останется Сотня,
    То проверка каждого паттерна это всего-лишь Просмотр двух полей доски,

    но можно естественно процесс поиска паттернов в позиции на этапе оценки ускорить. В шахматных программах таким образом смотрится больше ста паттернов, при этом скорость в 1000 kNPS легко достижима...
  32. TopicStarter Overlay

    WildCat Коршунов Игорь

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

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

    Потом разделю оценку по типам, и начну считать двухшашечные шаблоны.
  34. NS Нефёдов Сергей

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

    WildCat Коршунов Игорь

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

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