私はかつて、テトリスを非常に上手にプレイするテトリスAIを作成しました。私が使用したアルゴリズム(このホワイトペーパーで説明)は、2段階のプロセスです。
最初のステップで、プログラマーは問題に「関心がある」入力を追跡することを決定します。テトリスでは、ギャップを最小限に抑えると将来のピースをより簡単に配置できるため、連続していくつのギャップがあるかを追跡することに関心があるかもしれません。もう1つは、平均的な列の高さです。これは、負けそうになった場合にリスクを冒すことは悪い考えである可能性があるためです。
2番目のステップは、各入力に関連付けられた重みを決定することです。これは私が遺伝的アルゴリズムを使用した部分です。結果に基づいて重みが時間の経過とともに調整される限り、任意の学習アルゴリズムがここで実行されます。アイデアは、入力がソリューションにどのように関連するかをコンピューターに決定させることです。
これらの入力とその重みを使用して、アクションを実行することの価値を判断できます。たとえば、直線の形を右の列に完全に配置すると、4つの異なる行のギャップがなくなる場合、このアクションは、その重みが高い場合に非常に高いスコアを取得する可能性があります。同様に、それを上に平らに置くと、実際にはギャップが生じ、アクションのスコアが低くなる可能性があります。
「興味深い」潜在的な入力を見つける最初のステップに学習アルゴリズムを適用する方法があるかどうか、私はいつも疑問に思っていました。コンピュータが最初にどの入力が有用であるかを学習し、次に学習を適用してそれらの入力を重み付けするアルゴリズムを作成することは可能であるように思われます。以前にこのようなことをしたことがありますか?すでにAIアプリケーションで使用されていますか?