Rybka explained?

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

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

    • Команда форума
    Рег.:
    04.05.2006
    Сообщения:
    3.599
    Симпатии:
    4
    Репутация:
    0
    Адрес:
    Гомель
    Оффлайн
    Что за нехорошие намеки?
  2. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Я так понимаю, прямым текстом про шашки сказано :lol:
  3. NS Нефёдов Сергей

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

    Таблицы - элементарно - одно/двух/трех шашечные комбинации, комбинации шашек с незанятым полем.

    Берусь доказать что такие таблицы покроют признаки - возможности ходов, решетчатость, сбалансированность флангов и т.д. - просто легко... (то есть даже не нужно отдельно считать сбалансированность флангов - она сама посчитается по матрице двухшашечных комбинаций одного цвета)
  4. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Ребят, вы закапываетесь в частностях, начинаете усложнять модель, хотя она еще не реализована в самом простом варианте. Я понимаю, чтут среди нас куча генераторов идей, но если вы хотите что-то получить практическое, то работать надо итеративно.
    Относительно получения величины оценки. Для начала предполагаю не мудрить, а просто взять некую величину C, которую потом умножить на отношение относительных частот пешечной структуры в общем массиве и в выборке по фигуре. Потом значение C подстроить через % угадывания ходов гроссов.
  5. NS Нефёдов Сергей

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

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

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


    Но мне это нужно для шашек - в шашках всё еще проще ( точнее проще конечно некуда)

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

    Я например не вижу никаких проблем в решении тысячи линейных уравнений с тысячью неизвестных, а задачи на метод наименьших квадратов даются даже на первых курсах Вузов, так что это никакое не усложнение!!! И зачем "подстройки" под процент угадывания, когда есть четкие мат. алгоритмы получения однозначного набора весов для признаков по известной оценке.
  6. NS Нефёдов Сергей

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

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

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Как будет выглядеть этот простейший вариант поэтапно?... Напр, 1.собрать базу из такого-то количества партий.... и т.п. А то всё абстракции, да, абстакции. :)
  9. NS Нефёдов Сергей

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

    У меня никаких Абстракций
    Для каждой позиции получаем оценку.
    Получаем систему уравнений (количество уравнений равно количеству позиций) кол1*вес1+...+колn*весn=oc
    Где oс - оценка позиции. Колn- количество признаков в этой конкретной позиции, весn - вес признака который необходимо найти.
    Решаем (минимизируем отклонение реального значение от oc) методом наименьших квадратов - суть метода наверно нет смысла описывать в этой ветке - его полно в интернете, и все учились в институте.
    Сводится эта задача к решению уравнения Ax+b=0, где x[n] - вектор весов, A[n,n], и b[n] матрица и вектор рассчитываемые по известной формуле. n - количество признаков.

    Как получить оценки позиций известно всем, и выше я об этом писал.

    Никаких этапов - проанализировали базу, решили уравнение. Для анализа базы - есть готовые парсеры. Решать уравнения умеют все...
  10. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Насколько я помню то, чему учили в институте - линейная система из N уравнений может иметь от нуля до бесконечного количества решений. И случай, когда она имеет одно-единственное решение - встречается в жизни куда реже, чем в задачнике по линейной алгебре...
  11. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Какие хоть абстракции, я уже написал больше половины :) :) :)
    Берем enormous.pgn
    Просматриваем все позиции и пишем пешечные структуры в файл. Пары (структура, частота появления). Структура файла я разработал, с хэшем, файлик обработал, выход получил.
    Теперь то же самое, но берем только структуры из позиций, где слон стоит на с4 скажем. Это я тоже сделал и тоже получил файлик.
    Теперь выкидываем из обеих файликов структуры, которые встречаются редко, чтобы исключить статистическую оценку. Теперь выбираем, скажем, 2000 структур, у которых относительная частота во втором файое больше относительной частоты в первом. Создаем файлик, в который пишем пары (структура, превышение относительно частоты = х). Все структуры сортируем. Теперь добавляем в оценочную функцию поиск в этой таблицы текущей структуры, если слон стоит на с4. Если находим, то прибавляем к оценке х * С. Всё. Что хоть тут абстрактного? :)
  12. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Что быстрее реализовать в программе, а, стало быть, получить результат ? То, что ты предлагаешь или то, что предлагает Сергей Марков?

    "Решать уравнения умеют все" - заблуждение. Я видел людей (их несколько было!), которые не могли найти х из уравнения x+1=0. :)
  13. Сергей Марков Учаcтник

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

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

    Именно на этом построен метод наименьших квадратов для системы линейных уравнений.
    Эстремум всегда есть, и он всегда один, и он всегда - минимум. (вторая производная больше нуля).
    Метод наименьших квадратов работает всегда, и он общепринят для расчета весов линейной функции.
  15. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Вот теперь окончательно прояснилось. :rolleyes:

    Абстракция относилась к тому, что пора бы начать реализовывать это....типо "хорош трындеть, бери лопату". :)
  16. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Где это он, кстати, заявлял?
  17. NS Нефёдов Сергей

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

    Для примера А+В=14,А+В=17,2А+В=14 - решая методом наименьших квадратов мы не получим решение? Получим не одно? Что за глупости... Сводится к решению неоднородной системы двух уравнений с двумя неизвестными.
  18. NS Нефёдов Сергей

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

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Охохох, меня стали подозревать в том, что я не знаю, что такое МНК :) :) :)
    В системе гарантированно есть решение, если количество членов уравнения не меньше количества уравнений.
    Если ты в оценочную функцию введешь столько факторов, сколько у тебя позиций в базе, то решение гарантировано будет, но оно, поверь мне, будет абсолютно бесполезным.
  20. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Я окончил МФТИ с красным дипломом, линейную алгебру знаю. Понты кидать не надо.

    Ты уж определись, прежде чем утверждать - "в 100%", а в следующей же строке поправляться "если только не..." :)

    Пример линейной системы, не имеющей решения:

    x + y = 1
    x + y = 0

    Пример линейной системы, имеющей бесконечно много решений:

    x + y = 1
    2x + 2y = 2

    Конечно, матрица у меня вырожденная. Но.
    Никакой гарантии, что произвольно взятая система будет иметь только одно решение - нет.
  21. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Чтоб была понятна суть метода наименьших квадратов.
    Анализируя базу мы получаем систему уравнений с N переменными, где N количество признаков.
    А+В=14,А+В=17,2А+В=14 Находи сумму квадратов отклонений.
    (А+В-14)^2+(А+В-17)^2+(2A+B-14)^2. Если заметили - квадратичная форма :)
    Чтоб минимизировать - обе производные (по А и В) приравниваем к нулю.
    Получаем два линейных уравнения с двумя неизвестными, система неоднородна, матрица вырождена с вероятностью 0!!!
    ровно одно решение...

    Но я повторяю то, что есть на просторах интернета и в институтских курсах.

    Никак не могу понять, как частота появления связана с весом признака... Она даже о знаке признака ничего не говорит...
  22. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Хотя, если подумать, то вероятность невырожденной матрицы всё-таки гораздо выше, чем вырожденной.
    Так что метод, конечно, законный.

    Но в формулировках надо тщательнЕе :)
  23. NS Нефёдов Сергей

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

    Сергей, говоря о том что метод наименьших квадратов для системы уравнений с вещественными значениями справа может не дать решения (при этом с миллионом уравнений на тысячу коэффициентов) - ты действительно позоришься :)
  24. TopicStarter Overlay

    WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Стоп, стоп. С каких это пор 0 и 1 - не считаются вещественными числами?
  25. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Хотелось бы как-то поточнее понять, о чем вообще там была речь.
  26. NS Нефёдов Сергей

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

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Постепенно тема из "Rybka explained?" превращается в тему: Почему нескольким программистам нельзя совместно писать шахматную программу. :)
  28. NS Нефёдов Сергей

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

    WinPooh В.М.

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

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

    Но ты это в такой форме написал, что хочется схватиться за что-нибудь тяжёлое - вроде курса высшей математики Фихтенгольца :)
  30. Сергей Марков Учаcтник

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    Конечно связана. Если в непроигранных партиях сильные шахматисты чаще ставили слона на с4 в определенных пешечных структурах, значит там ему и место в этих структурах.
  31. Fruit Александр

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    12.02.2006
    Сообщения:
    2.201
    Симпатии:
    64
    Репутация:
    3
    Оффлайн
    Согласен. По просту, это должно научить прогу понимать/знать типичные планы для различных пешечных структур!
  32. NS Нефёдов Сергей

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    02.05.2006
    Сообщения:
    6.811
    Симпатии:
    96
    Репутация:
    3
    Адрес:
    Санкт-Петербург
    Оффлайн
    Я так не думаю. Частота появления фигуры на поле не очень связана с весом признака...
    Конь у нас чаще на f3 или e6? на f3 конь стоит лучше? Это идеальное поле для коня?
    В старушке - конь чаще стоит на f6, e8 или h5
    В драконе чернопольный слон белых чаще стоит на e3 или h6?
    Посмотри по своей статистике - ничего нам не говорит о силе полей частота ходов... В драконе слон ходит на e3, d4 и g5, а сильнейшее поле h6.
  33. NS Нефёдов Сергей

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

    • Участник
    Рег.:
    13.05.2006
    Сообщения:
    136
    Симпатии:
    6
    Репутация:
    0
    Оффлайн
    +1 :) :) :)
  35. Сергей Марков Учаcтник

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

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