0

私は現在、クラスのプロジェクトに取り組んでおり、オセロに似たゲームの AI を開発するために、箱の外に出ようとしています。

Negascout や MTD(f) など、最適な動きを決定するためのさまざまな手法やアルゴリズムを検討しています。ただし、それらはすべて優れた評価関数を必要とします。

関数で使用できるインジケーター {A_0...A_n} の束を考え出しました

G(state) = p_0*A_0 + p_1*A_1 + ... +p_n*A_n

そして、どうにかして p_0 から p_n の適切な値を見つけたい

1 つの提案は、機械学習を使用して関数のパラメーターを生成することでしたが、読んでみると、Q 学習などのアルゴリズムはすべて、既に報酬関数を持っている必要があることがわかりました。

さらに、Td(lambda) について読んでいると、インジケーターを手動でコーディングする必要さえないことに気付きました。どのような報酬関数を使用して学習しますか?

私の理解に欠けているものは何ですか?

4

2 に答える 2

1

評価関数を学習する簡単な方法は、すべてのボードの位置を記録しながら、2 人のコンピュータ プレーヤーを互いに多数回対戦させることです。各ゲームの後、ペアを抽出できます

(x, y)

ここで、x はボードの位置からの特徴のベクトルであり、y は 0 または 1 で、プレイヤー 1 が負けたか勝ったかを示します。

このようなペアは、ロジスティック回帰、ニューラル ネットワーク、SVM など、一般的な分類アルゴリズムへの適切な入力となります。

次に、分類子の確率出力に基づいて評価関数を定義できます。これは P(y|x) になります。これは、ボードの位置 x が与えられたときにプレイヤー 1 が勝つ確率です。(SVM では、確率の代わりに超平面からの距離を使用する必要があります。)

ただし、これはコンピュータが何度も自分自身と対戦する必要があるため、計算コストの高いプロセスです。また、アルゴリズムが同じことを何度も学習するのを防ぐために、開始構成の代わりにもっともらしいランダム構成を何らかの方法で選択することもできます。

于 2013-09-12T10:21:47.057 に答える