2

私は変数のセットを持っていますX, Y, ..., Z。私の仕事は、この一連の変数を取り、整数を生成する関数を設計することです。これをテストするためのフィットネス関数があります。

f問題への私の最初の刺し傷は、線形関数になるようにモデル化できると仮定することです。

f(X, Y, ..., Z) -> aX + bY ... cZ

私の最初のアイデアは、PSO (粒子群最適化) または遺伝的アルゴリズムのいずれかを使用して解決するfことa, b, .., cでした。それらは確実に良い結果をもたらすと確信しています。

一方で、そういう進化的アルゴリズムはあまり必要ないのではないかという気もします。まず、 の良い「出発点」をいくつか思いつくことができますa,b, .., c。線形f関数であるため、いくつかのポイントを試してから、それらに対して線形回帰のようなことを行う方が簡単ではないでしょうか? そして、線形回帰の後、さらにいくつかのポイントを試してみて、今回は良い「スポット」のように見えるものに近づき、それらに対して再び線形回帰を行いますか?

それの欠点は何ですか?この種の問題の経験がある人はいますか?私が考えることができる最大のものは、おそらく私が良い開始値と考えるのはa,b, .., c「ローカルオプティマ」であり、ある種の進化的アルゴリズムを使用するとグローバルアルゴリズムが得られるということです。

fそれが重要な場合、チェスのようなゲームの Minimax アルゴリズムの近似関数であると想定されています。

ありがとう

4

3 に答える 3

3

あなたは回帰の問題を説明しています。これは古典的な機械学習の問題です。このトピックだけについて書かれた何千もの科学論文と教科書全体があります。いくつかの機械学習クラスをオンラインで見るか、標準的な機械学習テキストをチェックすることをお勧めします。

一般的なアプローチは、あなたが言及したものと似ており、変数の線形係数を解いて、通常は二乗誤差の合計 (L2 損失) の損失を最小限に抑えます。これは、凸関数であり、単一の最小値を含み、重みを多項式時間で解くことができるため、望ましいことです。ただし、あなたが述べたように、真の関数はこの関数クラスにない可能性があり、見積もりが不十分になります。この場合のアプローチはそうではありませんあいまいな粒子群法や遺伝的アルゴリズム、またはその他のグローバル最適化手法を使用して、ある種の非凸最適化を試すこと。あなたの声明は「...「ローカルオプティマ」である可能性があり、ある種の進化的アルゴリズムを使用すると、グローバルアルゴリズムが得られます。」ナイーブです。グローバルな最適化は NP 困難であり、これらの手法は近似にすぎず、実行時間や最適性に関してまったく保証されず、ほとんど機能しません。

はるかに受け入れられているアプローチは、変数を取りX, Y, ..., Z、非線形変換を新しいセットに適用する「機能拡張」を使用することphi(X), phi(Y), ..., phi(Z)です。この時点で、最小二乗法 (L2 を使用する場合) などを使用して、各機能の最適な線形加重を見つけることができます。良い機能を見つける方法は、機械学習の未解決の問題ですが、これを行うためのアイデアと自由に利用できるアルゴリズムがたくさんあります。

于 2010-10-15T22:26:18.480 に答える
1

ゲームに取り組んでいることを考えると、最初に頭に浮かぶのは、1950 年代にアーサー サミュエルによって開発され、ラッセルとノーヴィグがゲームのプレイに関する章で言及した、チェッカーをプレイするための古代のプログラムです(特に、今でも教師なし/半教師あり機械学習の古典)。

このプログラムは、チェッカー ボードの値がボードの位置の線形関数であると仮定しました。詳細はわかりませんが、プレイヤーの駒はそれぞれ +1 の価値があり、対戦相手の駒は -1 で、空のフィールドは 0 であると想定しています。試合ごとにプレイを評価しながら、それ自体を何回か (大量) 繰り返します。

この戦略はセルフトレーニングと呼ばれ、ニューラル ネットワーク (多層/非線形ネットワーク) に基づく古典的なバックギャモン ソフトウェアTD-Gammonにも適用されました。そのプログラムに関するウィキペディアのページには、潜在的に興味深い参考文献がいくつかあります。

この答えは、私が専門家ではない何かについてのエッセイになりつつあります。関連する文献を参照してください。

于 2010-10-15T17:33:16.513 に答える
1

私があなたの質問を理解していれば、入力を受け取り、チェスのようなゲームの近似関数に関連するはずの出力を提供する関数があり、出力の計算方法を推測する必要があります。

入力変数が何であるかを述べていないので、それぞれのドメインが何であるかを知る方法はありませんが、一般的な戦略は、すべての入力を同じに保ち、ドメイン内のすべての値を正確に反復することです1 つの変数。すべての入力に対して繰り返し、結果のデータ セットを使用して次の一連のテストをガイドします。関数によって使用される実際のメソッドは、すべての入力をすべての出力にマッピングしないと合理的に再現できない絶対に不自然なものである可能性が非常に高いです。

于 2010-10-15T21:30:14.157 に答える