エンドゲームゲームを使用して人工ニューラルネットワークアルゴリズムを理解する

エンドゲームゲームを使用して人工ニューラルネットワークアルゴリズムを理解する

[[431963]]

この記事はWeChatの公開アカウント「Zhibin's Python Notes」から転載したもので、著者はAn Keです。この記事を転載する場合は、Zhibin の Python Notes 公開アカウントにご連絡ください。

みなさんこんにちは、私はZhibinです〜

ジビンは今、チェスの終盤を迎えており、黒側にはキングが 1 体だけ、白側にはポーン 1 個とキング 1 体だけしか残っていない。これで、ジビンは、白がチェックして黒が勝つか、引き分けかという 2 つの結果が起こり得ることを知っています。

では結末は?次はディープラーニング人工ニューラルネットワークアルゴリズムを使って答えを出していきましょう~

1. ルールの紹介

プログラムをコンパイルする前に、チェスのルールを簡単に理解する必要があります。ルールは次のとおりです。

チェス盤のサイズは 8 x 8 で、黒と白のチェスの駒がそれぞれ 16 個あります。つまり、キング 1 個、クイーン 1 個、ルーク 2 個、ゾウ 2 個、ナイト 2 個、ポーン 8 個です。

兵士: 前進のみ可能 (中国将棋と同様に後退は不可)、一度に 1 マスしか移動できません。ただし、チェスのポーンが最初の動きをするときは、1 マスまたは 2 マス移動できます。ポーンが駒を取る方法は、移動方向によって異なります。ポーンは、まっすぐ移動して駒を取ります。つまり、ポーンの斜め前方のマスの中に相手の駒があれば、それを取ってそのマスを占領することができます。

王:水平、垂直、斜めに移動できますが、一度に移動できるのは 1 ステップだけです。しかし、中国のチェスと比較すると、王は食べ物を与えることができません。つまり、王は敵が支配するマスに入ることができません。そうでなければ、「王を送る」という反則とみなされます。合計 3 回のファウルは負けになります。

勝ち負け:相手の最高司令官である王を捕らえると勝ち、相手を動けなくすると引き分けとなります。

2. 解決策

1 トレーニングセットを読む

krkopt.data トレーニング セットを読み取ります。コードは次のとおりです。

  1.   ' krkopt.data' 'r' )をfとして開きます:
  2. 行 = f.readlines()
  3. データ = np.zeros((28056,6),dtype= float )
  4. ラベル = np.zeros((28056,2),dtype= float )

読み取り結果の表示:

上記の各データ行はトレーニング サンプルです。以下に示すように、最初のデータ行を分析の例として取り上げます。

a1、b3、c2 は 3 つのチェスの駒の座標を示します。黒のキングは図に示すように位置 a1 にあり、白のキングは図に示すように位置 b3 にあり、白のポーンは図に示すように位置 c2 にあります。この時、黒キングはもう打つ手がない状態となり、ゲームは引き分けに終わります。そのため、最終引き分けは引き分けを意味します。データの最後のラベルが 6 であると仮定すると、白は最大 6 手で黒を倒すことができることを意味します。

2 トレーニングを開始する

まず、トレーニングに必要な Python ライブラリをインストールします。

  1. pip インストール numpy
  2. pip インストール sklearn
  3. matplotlib を pip でインストールします

次に、データセット全体を 3 つの部分に分割します。コードは次のとおりです。

  1. ratioTraining = 0.4 #トレーニングデータセット 40%: トレーニングデータセットを使用してニューラルネットワークのパラメータを調整します
  2. ratioValidation = 0.1 #10% 検証データセット: 調整が適切か不適切かを検証し、プログラムを終了するかどうかを決定するために使用されます
  3. ratioTesting = 0.5 #テストデータセット50%: トレーニング後、ニューラルネットワークの全体的なトレーニング効果を測定するために使用されます

次に、Scikit-learn の Scaler クラスを使用して、平均を減算し、分散で割ることで標準を正規化します。コードは次のとおりです。

  1. スケーラー.変換(xTraining)
  2. スケーラー.変換(xTexting)
  3. スケーラー.変換(xValidation)

ニューラル ネットワークを作成します。コードは次のようになります。

その中には、layer=[6, 20, 20, 20, 2] 入力は6次元、出力は2次元、合計3層のニューラルネットワークがあり、各層には20個のニューロンがあります。

  1. active_function = 'relu'ニューラルネットワーク活性化関数
  2. learning_rate=0.01 学習率α
  3. batch_normalization=1 正規化操作
  4. objective_function = 'クロスエントロピー'目的関数

トレーニング開始後、COST 損失関数は継続的に減少しているのに対し、認識率の精度はゆっくりと増加し、1 に限りなく近づいていることがわかりました。

コードは次のとおりです。

上記の分析の結果、白が勝つ確率は非常に高く、ほぼ 1 に近いことがわかります。

3. まとめ

1. この記事では、チェスの終盤を例に、人工ニューラル ネットワーク アルゴリズムの実装方法を説明します。後でまた練習していただければ幸いです。

2. この記事は学習参考のみを目的としており、他の目的には使用できません。

コラムニスト:強化学習とマルチエージェントコラボレーションを研究している大学院生、An Ke。勉強が好き、学ぶのが大好き、共有する意欲があり、そして何よりも、彼女は美しい女性です〜

<<:  中国消費者協会:所有者や消費者は顔認識を強制されることはない。情報が漏洩すると非常に有害だからだ。

>>:  毎日のアルゴリズム: スパイラルマトリックス

ブログ    
ブログ    
ブログ    

推薦する

Java から MySQL に接続するためのベストプラクティスを解読: 自分に合った方法を選択する

MySQL への接続は、Java 開発において非常に一般的なタスクの 1 つです。次のセクションでは...

人工知能は再び「冬」を迎えている

暑い夏がやって来ます。暑さをしのぐには、エアコンをつけてアイスを食べる以外に方法はないでしょうか?も...

データ分析とAIのミスが原因の注目度の高い事件9件

2017年、『エコノミスト』誌は、石油ではなくデータが世界で最も価値のある資源になったと宣言しました...

...

崑崙Core2が量産開始:性能が2~3倍向上し、中国の産業知能に強力な「コア」を注入

8月18日、百度とCCTVニュースは共同で「百度ワールド2021」カンファレンスを開催し、AIが何千...

PillarNeSt: Pillar ベースの 3D オブジェクト検出のパフォーマンスをさらに向上させるにはどうすればよいでしょうか?

著者の個人的な理解に基づいて書かれた現在、自動運転の分野では、点群データを収集するためのLIDARセ...

AI時代におけるコンピュータのマクロ的な意義について語る

実際、私たち人間は、そのようなことを心配する必要はありません。科学者は、人工知能が人間の脳のレベルに...

世界を変えた10人のアルゴリズムマスター

ドン・E・クヌース[[236633]]アルゴリズムとプログラミング技術の先駆者。ああ、神様!海外のウ...

OpenAIの仮説が覆される!計算量を考慮すると、小さいモデルの方が大きいモデルよりも優れています。Llama 2 のトレーニングは GPU コンピューティングに関連しています。

モデルを推論する際には、収束が遅いために計算能力を無駄にしないようにすることが重要です。孫子の兵法に...

...

競争相手に差をつけるための機械学習プロジェクトのアイデア 8 つ

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

データ サイエンティストが知っておくべき 5 つのグラフ アルゴリズム

導入グラフ分析はデータサイエンティストの未来だからです。データ サイエンティストとして、私たちは p...

あなたが書いた ML コードはどれくらいのメモリを占有しますか?これはとても重要なことですが、多くの人がまだそれを理解していません。

[[405865]]機械学習タスクを実行するときは、コードを使用してモデルのメモリ使用量をすばやく...