変わりモノがいい!

変わりモノには価値がある・・・ハズ?

コンピュータ将棋の理論:ディープラーニング編

う~ん、難しい

何度読んでも難しい。 この分野のエンジニアは本当に頭がいい奴らなんだろうな、と思います(奴はいけませんね、皆さん、ですね)。 判りやすく書こうと努力をしてみますが、出来が悪かった場合は、別途記事を書くようにします。 書く前から弱気ではいけませんが、本当に難しい。 難しい理由は、今までやってきたことは頭の中で中間の状態とか結果がイメージできたけど、この分野はそれが未だにできない。 イメージできないものは苦手なんですよね。 イメージってなに?というと、イメージとは想像、推定であり、そういう意味では、ディープラーニングを使ったコンピュータ将棋がプロ棋士に勝つのだから僕がイメージできないのは当然といえば当然ですかね。
などという戯言を続けていないで本題に入っていきましょう。

f:id:ken2017:20200414131101j:plain

そもそもディープラーニングとはなにか?

ディープラーニングって難しいので順を追って考えていきます。 まず、ディープラーニングとはコンピュータによる機械学習のことです。 
コンピュータによる、という意味は、ディープラーニング以前は、評価関数を人間(プログラマ)が作っていましたが、ディープラーニングではコンピュータが自ら評価関数を作ります。 まずこれが大きな特徴です。
次に機械学習ってなに?ということですが、機械学習とは分類や識別の手法です。 ディープラーニングとは、この分類、識別の工程においてニューラルネットワークを使ってデータに含まれる特徴をとらえる技術や手法のことをいいます。 このニューラルネットワークを多層化することで、より正確な分類を行うことができるようにしています。 この分類や識別の機能を使って音声認識や画像認識などのパターン認識の分野で実用化されています。 
ここで、将棋におけるパターンってなに?という疑問がでてきます。 将棋におけるパターンとは、指しての組み合わせになります。 指しての組み合わせであるパターンに対して良さ、悪さを分類していくことになります。 これがディープラーニングを用いたコンピュータ将棋になります。

f:id:ken2017:20200331090736j:plain

それでは、ディープラーニングの重要項目である
1)ニューラルネットワーク
2)学習の仕方
について見ていきましょう。

ニューラルネットワークとは?

理系の人は聞いたことがあると思いますが、文系の人はニューラルネットワークってなに?と思われると思います。 ニューラルネットワークとは、生物の神経回路網をコンピュータ上でシミュレートしたモデルのことをいいます。 ここで生物の神経回路網は多数のニューロンの繋がりあったネットワークで構成されており、ひとつのニューロンは複数のニューロンからの信号を入力として取り込み、その信号の和が閾値を超えた場合に発火し、次のニューロンに信号を伝達します。 ニューロンの働きをするものをニューロンモデルと呼び、生物のような複雑さを排除し機能を単純化たニューロンモデルを形式ニューロンと呼びます。 ニューラルネットワークで使用する形式ニューロンをパーセプトロンと呼びます。 パーセプトロンにおける入力と出力の関係を示した関数fを活性化関数と呼びます。

    f:id:ken2017:20200414144910p:plain  パーセプトロン

 パーセプトロンのユニットを多層連結したニューラルネットワークを多層パーセプトロンと呼びます。 多層パーセプトロンは、入力のための入力層、出力のための出力層、それ以外を中間層と呼ばれる層からなっています。

    f:id:ken2017:20200414164332p:plain  多層パーセプトロン


中間層、出力層は、それぞれ活性化関数を持っています。 中間層の活性化関数としては一般的にReLU(rectified linear unit)が使われています。

   f:id:ken2017:20200415085003j:plain   活性化関数:ReLU
出力層の活性化関数としては問題に応じて種類の異なる活性化関数が使われています。
すなわち、2値分類問題には、シグモイド関数や双曲線関数が使われ、
多クラス分類問題には、ソフトマックス関数が使われ、
回帰問題には、恒等関数が使われています。
     活性化関数:シグモイド関数

   f:id:ken2017:20200415090402j:plain

     活性化関数:双曲線関数
    f:id:ken2017:20200415091054p:plain 

     活性化関数:ソフトマックス関数
     f:id:ken2017:20200415091342p:plain

     活性化関数:恒等関数

     f:id:ken2017:20200415091435p:plain

 

どうやって学習するの?

ニューラルネットワークを使ってパターン認識(分類)を行うわけですが、その結果の正確性をあげるために学習します。 
入力と正解となる出力の組み合わせを与えて学習することを教師あり学習と呼びます。
ここで正解となる出力のことを訓練データと呼びます。 学習の手順としては、
1)訓練データとテストデータを分ける
2)ニューラルネットワークのパラメータを初期化する
  パラメータとは、層の数、ニューロンの数、活性化関数の種類、定数などがある
3)すべての訓練データをランダムにシャッフルする
4)シャッフルされた訓練データからデータを取り出す
5)ニューラルネットワークに取り出したデータを流す
6)ニューラルネットワークからの出力と訓練データがどれだけ離れているかを測る
   損失関数:出力と訓練データの離れ具合を測る関数
        ニューラルネットワークにおける学習とは損失関数を最小化する
        問題ということになります
7)出力と訓練データの離れ具合に応じてパラメータを更新する
   パラメータの更新には、誤差逆伝搬法等が使用されます
8)4)に戻り、全ての訓練データを使いきるまで繰り返す
9)テストデータを使って出力の正確性の評価を行う
10)3に戻って訓練データを再度シャッフルして学習を行う

   f:id:ken2017:20200415104041p:plain

ニューラルネットワークが取り扱う問題は?

ニューラルネットワークが取り扱う問題は、大きく2つに分類されます。 ひとつは分類問題で、もう一つは回帰問題です。
分類問題とは、入力をクラスに分ける問題のことをいいます。 分けられたクラスが一つのものを2値分類問題、分けられたクラスが複数のものを多クラス分類問題といいます。例えば2値分類問題としては、画像を見て猫か猫でないかを分類します。 多クラス分類問題としては、画像を見て猫、犬、人物を分類します。
一方、回帰問題は、数値を予測する問題で、例えば日照時間から気温を予測するような問題です。

コンピュータ将棋ってどういう仕組みでできているの?

以上は、コンピュータ将棋に劇的な変化をもたらせたディープラーニングにおける重要要素であるニューラルネットワークと学習方法について説明しました。 これからは、ディープラーニング適用の先輩であるAiphaGoの手法を用いたコンピュータ将棋の仕組みについて説明します。
コンピュータ将棋は、2種類の予測をニューラルネットワークを使って学習しています。 一つが、指し手を予測する方策ネットワーク(policy network)、もう一つが、勝率を予測する価値ネットワーク(value network)です。
まずは、方策ネットワークについて考えてみます。
方策ネットワークは、局面を入力として指し手を予測するニューラルネットワークですが、出力は合法手の確率分布です。 方策ネットワークが正しく学習できていれば出力される指し手のほとんどは王手になると考えられます。
方策ネットワークの入力チャンネルですが、
盤面の広さが、9x9=81
駒の種類が、盤面の駒の種類28+(持ち駒の種類38)x2=104
      盤面の駒:自分の駒14(内成り駒は6)+相手の駒14
      持ち駒:歩18+香車4+桂馬4+銀4+金4+角2+飛車2
ということなので、
入力チャンネル=81x104
となります。 
この膨大な入力チャンネルをニューラルネットワークに入れ出力チャンネルを求めます。 出力チャンネルは、次の一手を盤面のどこにどこからのなにを打つかということになります。 出力チャンネルは、
どこにという意味で盤面の広さが、9x9=81
どこからのなにをという意味で駒の種類が、盤面の駒(左右前後方向から4+斜め方向から4+桂馬飛び2)+持ち駒7+移動後の成り駒10=27
ということで、
出力チャンネル=81x27=2187
となります。
方策ネットワークは、この2187のどの出力チャンネルを選ぶかということ、すなわち、次の一手、を決めることになります。

    f:id:ken2017:20200415150041j:plain

次に価値ネットワークについて見てみましょう。
価値ネットワークは、局面の勝率を予測します。 勝率は、負けが-1、引き分けが0、価値が1という-1から1の範囲の数値で表現します。 価値ネットワークの構成は、方策ネットワークと出力層以外は同じ構成で、出力層に全結合層を繋いでシグモイド関数で勝率を計算し出力しています。

 

以上、コンピュータ将棋におけるディープラーニングの仕組みについて説明してきました。 これからは、いいいよ実践編です。 どういう形で進めていくかをまずは考えてみたいと思います。 それでは、また。

 

 (記事後記)

コンピュータ将棋について色々と調べていくうちに、これは、将棋、ではないな、と思うようになりました。 将棋のようなゲーム、とでも言ったほうが良いようにも思います。 スポーツでも芸術でも学問でも、競争領域は、ルールの下で存在意味があり、ルールはルールに参加するメンバに対する資格を決めています。 人間の将棋とコンピュータ将棋では、この、資格、が異なると思います。 人間とコンピュータが将棋で競うということは、異種格闘技を行っているようなもので、その勝者が敗者より強いというおではなく、異種格闘技のルールの下では勝った、ということと思います。 昔から人の仕事がコンピュータに取られて人の働き口がなくなる、なんて話がありますが、それとこれは別物ですね。 大昔を思い出すと農業に非常に多くの人出がかかっていた時代りましたが機械化で大きく変わりました。 人間がやっていた仕事が機械に移行しました。 それと同じですね。 人間は別の仕事を始めるようになります。 今の時代もそれが迫っていると思います。 シンギュラリティ―の話がありますが、どうなりますかね。 もう少しでその時がきますが、ターミネーターのような時代にならないように人間が賢くなるのを祈るばかりです。 

 

 

 

 

 

 

 

プライバシーポリシー お問い合わせ