Введение
Функция оценки, также известная как эвристическая или статическая функция оценки, — это функция, используемая компьютерными программами для игры в игры для оценки ценности или качества позиции (обычно в листе или терминальном узле) в дереве игры. Значение чаще всего представляется вещественным числом или квантованным целым числом, как правило, в долях стоимости игровой фигуры, например, камня в го или пешки в шахматах, где эти доли могут быть десятыми, сотыми или другими удобными дробями. Однако иногда значением является массив из трех значений в единичном интервале, представляющий проценты выигрыша, ничьей и проигрыша для данной позиции. Для нерешенных игр не существует аналитических или теоретических моделей для функций оценки, и эти функции не создаются полностью произвольно. Состав функции оценки определяется эмпирически путем внедрения функции-кандидата в автомат и оценки его последующей производительности. В настоящее время накоплено значительное количество данных для ряда игр, таких как шахматы, сёги и го, относительно общего состава функций оценки для них. Функции оценки используются в компьютерных программах, играющих в шахматы, го и шашки. Кроме того, с появлением программ, таких как MuZero, компьютерные программы также используют функции оценки для игры в видеоигры, например, из Atari 2600. Некоторые игры, такие как крестики-нолики, решены полностью и не требуют поиска или оценки, поскольку доступно дискретное дерево решений.
Function in a computer game playing program that evaluates a game position
An evaluation function, also known as a heuristic evaluation function or static evaluation function, is a function used by game playing computer programs to estimate the value or goodness of a position (usually at a leaf or terminal node) in a game tree. Most of the time, the value is either a real number or a quantized integer, often in nths of the value of a playing piece such as a stone in go or a pawn in chess, where n may be tenths, hundredths or other convenient fraction, but sometimes, the value is an array of three values in the unit interval, representing the win, draw, and loss percentages of the position. There do not exist analytical or theoretical models for evaluation functions for unsolved games, nor are such functions entirely ad hoc. The composition of evaluation functions is determined empirically by inserting a candidate function into an automaton and evaluating its subsequent performance. A significant body of evidence now exists for several games like chess, shogi and go as to the general composition of evaluation functions for them. Games in which game playing computer programs employ evaluation functions include chess, go, and checkers. In addition, with the advent of programs such as MuZero, computer programs also use evaluation functions to play video games, such as those from the Atari 2600. Some games like tic tac toe are strongly solved, and do not require search or evaluation because a discrete solution tree is available.
Отношение к поиску
Дерево таких оценок обычно является частью алгоритма поиска, например, поиска по дереву Монте-Карло или алгоритма минимакса, такого как альфа-бета отсечение. Значение предполагается представлять относительную вероятность выигрыша, если бы дерево игры было расширено из этого узла до конца игры. Функция учитывает только текущую позицию (то есть, где находятся фигуры и их взаимное расположение) и не принимает во внимание историю позиции или не рассматривает возможные ходы, следующие за данным узлом (следовательно, она статична). Это означает, что для динамичных позиций, где существуют тактические угрозы, функция оценки не будет точной оценкой позиции. Такие позиции называются неустойчивыми; для разрешения угроз перед оценкой им требуется как минимум ограниченное расширение поиска, называемое поиском спокойствия. Некоторые значения, возвращаемые функциями оценки, являются абсолютными, а не эвристическими, если в данном узле достигнута победа, поражение или ничья. Существует сложная взаимосвязь между поиском и знаниями, заложенными в функцию оценки. Более глубокий поиск отдает предпочтение менее краткосрочным тактическим факторам и более тонким позиционным мотивам, проявляющимся в долгосрочной перспективе. Также существует компромисс между эффективностью закодированных знаний и вычислительной сложностью: вычисление детальных знаний может занять столько времени, что производительность снижается, поэтому приближения к точным знаниям часто оказываются более эффективными. Поскольку функция оценки зависит от номинальной глубины поиска, а также от расширений и сокращений, используемых в процессе поиска, не существует универсальной или независимой формулировки для функции оценки. Функция оценки, хорошо работающая в одном приложении, как правило, требует существенной перенастройки или переобучения для эффективной работы в другом приложении.
В шахматах
В компьютерных шахматах результат работы оценочной функции обычно представляется целым числом, а единицы измерения оценочной функции обычно называют «пешками». Термин «пешка» обозначает ценность, эквивалентную преимуществу в одну пешку по сравнению с противником, как описано в разделе «Относительная ценность фигур». Целое число 1 обычно соответствует части пешки, а в компьютерных шахматах широко используются сантипешки, равные сотой части пешки. Более высокие оценки указывают на материальный дисбаланс или позиционное преимущество, либо на то, что выигрыш материала обычно близок. Очень высокие оценки могут свидетельствовать о неминуемом мате. Оценочная функция также неявно кодирует ценность права хода, которая может варьироваться от небольшой доли пешки до выигрыша или проигрыша.
Ручные функции оценки
Исторически в компьютерных шахматах компоненты оценочной функции создавались (т. е. разрабатывались вручную) разработчиком движка, в отличие от тех, что были получены в результате обучения нейронных сетей. Общий подход к созданию оценочных функций, разработанных вручную, заключается в линейной комбинации различных взвешенных компонентов, которые, как считается, влияют на ценность позиции. Однако не все компоненты в оценочной функции, разработанной вручную, являются линейными; некоторые, такие как безопасность короля и пешечная структура, нелинейны. Каждый компонент можно рассматривать как состоящий из факторов первого порядка (зависящих только от поля и фигуры на нём), факторов второго порядка (взаимосвязь между полями) и факторов n-го порядка (зависимости от истории позиции). Оценочная функция, разработанная вручную, обычно включает в себя компонент материального баланса, который обычно доминирует в оценке. Общепринятые значения для фигур: ферзь = 9, ладья = 5; конь или слон = 3; пешка = 1; королю присваивается произвольно большое значение, обычно превышающее общую ценность всех остальных фигур. Они не получили широкого распространения в компьютерных шахматах до конца 2010-х годов, поскольку аппаратного обеспечения, необходимого для обучения нейронных сетей, в то время было недостаточно, а быстрые алгоритмы обучения и топологии и архитектуры сетей еще не были разработаны. Первоначально оценочные функции на основе нейронных сетей обычно состояли из одной нейронной сети для всей функции оценки, с входными признаками, выбранными из позиции на доске, и выдавали целое число, нормализованное по шкале центипешек, так что значение 100 примерно эквивалентно материальному преимуществу в одну пешку. Параметры в нейронных сетях обычно обучаются с использованием обучения с подкреплением или контролируемого обучения. В последнее время в компьютерных шахматах оценочные функции стали использовать несколько нейронных сетей, причем каждая нейронная сеть обучается для определенной части оценки, например, для пешечной структуры или эндшпиля. Это позволяет использовать гибридные подходы, когда оценочная функция состоит как из нейронных сетей, так и из компонентов, разработанных вручную. Глубокие нейронные сети использовались, хотя и нечасто, в компьютерных шахматах после того, как Giraffe Мэтью Лая в 2015 году и AlphaZero DeepMind в 2017 году продемонстрировали возможность использования глубоких нейронных сетей в оценочных функциях. Вскоре после этого был запущен распределенный вычислительный проект Leela Chess Zero с целью воспроизвести результаты работы DeepMind's AlphaZero. Помимо размера сетей, нейронные сети, используемые в AlphaZero и Leela Chess Zero, также отличаются от тех, что используются в традиционных шахматных движках, поскольку они имеют два выхода: один для оценки (оценочная голова) и один для порядка ходов (политическая голова), а не только один выход для оценки. Кроме того, хотя выход оценочной головы нейронной сети Leela можно установить в виде действительного числа для приближения шкалы центипешек, используемой в традиционных шахматных движках, по умолчанию выход представляет собой проценты побед, ничьих и поражений – вектор из трех значений, каждое из которых находится в пределах единичного интервала. Каждая таблица представляет собой набор из 64 значений, соответствующих полям шахматной доски. Самая простая реализация таблиц соответствия фигур состоит из отдельных таблиц для каждого типа фигуры для каждого игрока, что в шахматах приводит к 12 таблицам соответствия фигур. В компьютерных шахматах используются более сложные варианты таблиц соответствия фигур, одним из наиболее известных является таблица соответствия фигур для короля, используемая в Stockfish, Komodo Dragon, Ethereal и многих других движках, где каждая таблица учитывает положение каждого типа фигуры по отношению к королю игрока, а не только положение каждого типа фигуры в отдельности. Значения в таблицах представляют собой бонусы/штрафы за расположение каждой фигуры на каждом поле и кодируют совокупность многих тонких факторов, которые трудно количественно оценить аналитически. В оценочных функциях, разработанных вручную, иногда используются два набора таблиц: один для дебюта/миттшпиля и один для эндшпиля; позиции в миттельшпиле интерполируются между ними. Разработанная в компьютерном сёги в 2018 году Ю Насу, наиболее распространенная оценочная функция, используемая в компьютерных шахматах сегодня, — это эффективно обновляемая нейронная сеть, или NNUE, — разреженная и неглубокая нейронная сеть, которая принимает в качестве входных данных только таблицы соответствия фигур. Фактически, самая простая архитектура NNUE — это просто 12 таблиц соответствия фигур, описанных выше, нейронная сеть с одним слоем и без функций активации. Архитектура эффективно обновляемой нейронной сети, использующая таблицы соответствия фигур для короля в качестве входных данных, была впервые портирована в шахматы в производной от Stockfish под названием Stockfish NNUE, опубликованной 30 мая 2020 года, и была принята многими другими движками, прежде чем в конечном итоге была включена в официальный движок Stockfish 6 августа 2020 года.
Основы таблицы финальной игры
Шахматные движки часто используют табличные базы окончаний в своей оценочной функции, так как это позволяет движку играть безупречно в эндшпиле.
Вперед
Исторически функции оценки в компьютерном го учитывали контролируемую территорию, влияние камней, количество пленных камней, а также жизнь и смерть групп на доске. Однако современные компьютерные программы для игры в го в основном используют глубокие нейронные сети в своих функциях оценки, такие как AlphaGo, Leela Zero, Fine Art и KataGo, и выдают вероятность выигрыша/ничьей/проигрыша, а не оценку в количестве камней.