山岡忠夫のレビュー一覧

  • 強い将棋ソフトの創りかた

    Posted by ブクログ

    最近は以前ほど指さなくなったが、将棋には長く親しんでおり、そのAIの裏側には強い興味を抱いていた。専門的な内容ゆえ、上原隆平著『はじめてのアルゴリズム』のような難解な解説が続くことを覚悟してページをめくったが、意外にも分かりやすい雰囲気に満ちていた。

    ​将棋愛好家にとって聞き慣れた用語が多用されているため、AI全般、そして将棋AIの仕組みを理解する上で非常に相性の良いテキストだと感じる。

    ​本書で触れられているミニマックス法やモンテカルロ木探索といったアルゴリズムは、Web開発など他分野にも通じる知識だと思う。チェスや囲碁との比較、Pythonが選ばれる理由などの背景知識も充実しており、現代のAI技術の潮流を俯瞰することができた。

    ​コンピュータ特有の作法に触れた時、将棋の盤面は81マスあるが、座標が「80」までしかないことに一瞬戸惑った。それが「0番」から数え始めるプログラミングの常識だと気づいた時、自分はまだコンピュータの思考に慣れていないのだと思った。また、AIへの取り組みがまだ浅い自分にとって、GPUの重要性を再認識できたことも大きな収穫だ。

    ​序盤から「コンピュータ将棋大会」への参加方法が記されている点には、著者の「形にして外の世界へ飛び出してほしい」という強い願いを感じる。将棋AIを学ぶ上での良書であると感じたのと同時に、自分の学習の現在地を教えてくれる一冊になったと思う。

    0
    2025年12月22日
  • 将棋AIで学ぶディープラーニング

    Posted by ブクログ

    Ⅰ部 導入編
     1章 コンピュータ将棋について
      省略
    Ⅱ部 理論編
     2章 コンピュータ将棋のアルゴリズム
      ゲームの木、ミニマックス法、αβ法、評価関数について簡単な説明
     3章 コンピュータ囲碁のアルゴリズム
      モンテカルロ法とその発展版UCTアルゴリズム
     4章 AlphaGoの手法
      優先順位制御の改善 -> 方策ネットワーク
      プレイアウトの改善 -> 価値ネットワーク

      方策ネットワーク
       囲碁の局面を画像のように認識して多くの棋譜を学習させてどの着手から優先して指すか決める
      価値ネットワーク
       囲碁の局面を画像のように認識して直接その局面を評価する。
     5章 ディープラーニングについて
      畳み込みニューラルネットワーク(CNN)の説明。
      ディープラーニングの将棋AIへの応用
       ・方策ネットワーク
        局面を19×19の画像として与え、石の色ごとにわけ、学習させる。石の位置だけではなく呼吸点、シチョウなどの特徴点を別のチヤンネルで与え全部で48のチヤンネルを入力とする。
        出力は与えられた局面の着手となる。
       ・価値ネットワーク
        価値ネットワークも局面を与えられ勝率を出力する。-1から+1で-1が負け、+1が勝ちとなる。

     6章 ディープラーニングフレームワーク
      Chainer,TensorFlow,Keras,PyTorchなどの紹介と採用したChainerのインストールなどの説明

     7章 方策ネットワーク
      具体的にソースコードを示しながら実装している。
      プログラムの局面管理、棋譜読み込みなどはPythonで書かれたpython-shogiを活用。

     8章 将棋AIの実装
      GUIソフトを使って対局ができるようにUSIエンジンを実装していく。
      
     10章 価値ネットワーク
      具体的にソースコードを示しながら実装している。
      学習させたプログラムで1手探索させることができる。しかしまだ精度が不足しているの対策が必要

     11章 学習テクニックその2
      精度を上げる手法
      ・転移学習
      ・マルチタスク学習
      ・Residual Networkの採用
     
     12章 モンテカルロ木探索
      これまで探索をしてこなかったので悪手を指すことがよくあった。探索方法としてモンテカルロ探索を採用実装している。
     ここまでの実装で基本形が完成。

     13章 さらに発展させるため
      前章までのプログラムを発展させるための方法
      ・C/C++で実装することで高速化
      ・大規模学習(訓練棋譜を増やす方法)

    0
    2019年12月28日
  • 将棋AIで学ぶディープラーニング

    Posted by ブクログ

    本書は、囲碁におけるAlphaGoの手法を参照しつつ、コンピュータ将棋のアルゴリズムを、モンテカルロ法+ディープラーニングを使って、実装する方法を解説している。

    コンピュータ将棋の従来手法
    →ミニマックス法。
    評価関数の質が要であり、2006年のBonanzaが初めて、評価関数の機械学習を導入した。

    コンピュータ囲碁で用いられているモンテカルロ法
    →ランダムに終局までプレイして、
    その勝敗の平均値から、最も勝率の高い手を選択する。

    AlphaGoにおける、ディープラーニングの適用範囲は、次の2点
    方策ネットワーク(Policy Network)
    → 合法手の中から探索すべき手を選択 → 多クラス分類問題
    価値ネットワーク(Value Network)
    → 「勝ち」になる確率を算出(≒評価関数) → 2値分類問題

    学術的な内容を避けて、扱うテーマをよく吟味しているのだと思うが、理解して貰おうという親切心が紙面に感じられ、とても分かりやすい。

    また、Chainer初心者としては、本書のコードがTrainerライブラリを使わずに実装してあり、
    損失の求め方や、逆伝播の仕組み、学習のループ構造など、
    ブラックボックスになりがちな箇所が、明示されているのがありがたかった。
    Chainer自体についての理解にも役に立った。

    0
    2018年05月29日