4ビットマイコンのジャンケンプログラムを考え直す

将棋ベーシックはディープラーニングとそれ以前の人工知能のちょうど境目くらいの技術で出来ていて、自己流で色々やるよりも正しいやり方をちゃんと覚えれば強くなるということを実感した取り組みなんですよ。

それ以前の俺は反骨精神で出来ていたので、皆がやっていることよりなにか違うことをしたほうが役割の違いから個性が出てやがて何らかの役に立つと考えていました。

漫才が面白いのはボケかツッコミかというと、少なくとも正しいのはツッコミだけど面白いのはボケとツッコミの間に何らかがあるわけで。

だから先生と生徒がいて、反骨精神に満ちたオリジナリティがあって、それを機械学習が負かすことで研究はやっぱ正しかった、少なくとも野良より学会のほうが強かった。それで、正しいとわかった機械学習の将棋がプロを負かして将棋の研究は「もう充分役目を果たした」として公的には打ち切られたんですよ。

それで近頃の将棋はディープラーニングなわけだけど、そのためには高速のコンピュータが必要で買い換えが必要なので、また負けてもいいから実機で実験するだけでなく理論を学んで自分のパソコンで深層学習のミニチュアを作れないかと深層学習と従来の機械学習の違いを学ぶと、ニューラルネットワークの数式に基いているのがディープラーニングの定義で、理論自体はやっぱ機械学習じゃん。

俺はストリートファイターを自分なりに考えていたことがあるけど、機械学習するためにモデルとして「波動拳とジャンプと待ちのジャンケン」と割り切って考えだしたことがあって、じゃあジャンケンに強いって本当にあるのかと考えると人間対コンピュータだとミリ秒単位で後出しが出来るからコンピュータ強いんだけど、そこはフェアに人間の反射神経を測定して、その反応速度でもって思考で勝つコンピュータを目標にしてます。

ゲームにしちゃうとフェアなのかインチキなのかはプレイヤーの体感では分からないから、作ってもあんまり意味ないかもなと思うけど、ところでジャンケンの人工知能とは何たるかと古書を紐解くと「統計取って相手がいちばん多く出している手に勝つ手を出す」というアルゴリズムなんよね。ではこれに対する人間側の必勝法はと考える。

統計的に多い手に勝つように出すのであれば、最初の方はともかく、手が偏ってきて人間が今まで出した手を完璧に記憶できていれば多く出した手に勝つ手にさらに勝つ手を出すと負かせるので、究極的には手が平たくなって全部の確率が一様になった時にどのようなアルゴリズムで手を決定するかという乱数のアルゴリズムに近くなっちゃう。

そのくらいのことは4ビットマイコンの時点でも研究者は分かってたはず。

んでも、それをストリートファイターのジャンケンに戻してみると、そもそも計算資源が少ないから波動拳とジャンプとガードに単純化しているのを深層学習ではすべての技に対する特徴ベクトルとして捉え直すということが出来るんだよね。

そうすると相手が波動拳を打たないで肉弾戦を挑みに来るなら波動拳で追い払い、ジャンプするなら対空を出し、待つなら波動拳で削るという当たり前の人間との駆け引きをコンピュータ相手に楽しめるようになる未来も有り得る。

そうするとディープラーニングの本質は相手が人間であるがゆえの手癖や考え方の偏りをコンピュータに記憶してゆくってことになる。無限とも思える記憶。誰かを想定してやるのかコンピュータ同士でさせるのかで変わってくるとは思うけど。

ただ、俺の予想としては下手な人がコンピュータに色々の技に咎められるようになっても、勝つために知恵を絞るものにはゲームの根本にあるガードに頼った待ちとそれを崩す削りと投げに駆け引きは集約されて、波動拳かジャンプか待ちかってあたりに落ち着くと予想してるんよね。

そこはコンピュータでなく自分の頭で前もって予想しとく。