2020/09/01
最弱オセロの吉田拓真氏。開発の裏側を徹底的に深堀り!
株式会社AVILENのHPで公開されているオセロAI「最弱オセロ」。
https://avilen.co.jp/service/othello/?weak
「負けられるなら負けてみてくれ!」と語るのは、開発者でありAVILENのCTOでもある、吉田拓真氏だ。
世界最弱のオセロAI作りましたhttps://t.co/OMZVaiFnMG
すでにたくさんの方にプレイされて、いまの戦績は5勝2110敗4引き分け!
負けられるなら負けてみてくれ!#最弱オセロ
— 吉田 拓真 AVILEN (@TakuAtCoder1) July 25, 2019
有名Youtuberやテレビなどにも取り上げられるコンテンツである最弱オセロは、どのようにして生まれたのか。どんな技術が使われているのか。開発裏話を訊ねてみた。
吉田拓真氏プロフィール
株式会社AVILEN CTO/データサイエンティスト
東京大学工学部を卒業し、大学院時にAVILENを創業。画像処理をはじめとした深層学習を専門とする。
図面読取AI・書類OCRシステムなどメイン開発プロジェクトをリードしてきた。
同時に日本ディープラーニング協会認定E資格対応講座講師を務め、法人の実務AI研修を進めるなど、開発・教育・企画に及ぶ全事業の技術的支柱を成す。
最弱オセロ開発のきっかけ
――最弱オセロを開発しようと思ったきっかけは何でしょうか?
それまでゲームのAIを作った経験は無かったのですが、「ゲームAIって面白そうだな」って思って、自分でも作ってみたかったんです。
――将棋や囲碁などの選択肢もあったと思いますが、なぜオセロを選んだのでしょうか。
ルールが複雑なゲームを選択してしまうと、ルールの記述に多くの時間がかかってしまいます。
まず、僕は囲碁のルールをよく知らなかったので、囲碁は作れませんでした。
また将棋はルールが複雑すぎて、ゲームをプレイするルールを書くのが大変すぎました。
オセロはルールが単純で、簡単にAIにプレイさせるプログラムが書けるということで、オセロを選択しました。
――そこからどのような経緯でリリースに至ったのでしょうか?
その後はしばらく放置していたのですが、2018年の8月にAVILENを設立して、11月のYahoo!との共同開催のイベントに出すためにウェブアプリ化しました。
そのアプリを調整して2019年の7月に再リリースしたところ、Twitterから爆発的に広まって、草彅剛さんやじめしゃちょーさんなどの有名人にプレイしてもらったり、世界一受けたい授業など様々なメディアで取り上げてもらえました。
はじめしゃちょーによるプレイ動画(https://www.youtube.com/watch?v=gHEqrNZmI1M&feature=emb_title)
最弱オセロ開発の裏側・使った技術
――開発に半年ほどかかったそうですが、苦労したことは何でしょうか?
――C++はプログラミング言語の中でもかなり難しい方と言われていますよね。なぜC++でしかも1から書こうと思ったんですか?
PythonはC++に比べると実行速度が非常に遅いので、かなり勉強してC++を使いました。
C++の勉強は大変でしたが、ディープラーニングや強化学習に対する技術的な理解がかなり深まりました。
※処理速度を比較すると、C++はPythonの約50倍の速度である。(下画像参照)
――学習モデルはどのようなものを使いましたか?
モデル構築はAlphaGOの論文を全部読んで、理論をコードに落とし込む形で完全に模倣しました。
使っていた技術は、キーワードで挙げると、深層学習、ニューラルネットワーク、強化学習、アルファベータ探索、モンテカルロ木探索など…話し出すとキリがありません。
理論系の本や論文を参考にしながら、試行錯誤しながら実装しました。
――最弱オセロに使われている技術について、もう少し詳しく教えてください。
まずベースとなるのは「強化学習」で、AI同士を戦わせて、勝った方を「良い手」、負けた方を「悪い手」として学習させる手法です。
AIは自己対戦を繰り返して、どんどん良い手を学習させて強くなっていきます。
最弱オセロでは「負けたら勝ち」というように、勝ち負けを反対にして学習させることで、どんどん弱くなるようにしているというわけです。
AlphaGoも自己対戦を繰り返して学習している
――強化学習をベースにして、どのように「深層学習」と「探索」を組み合わせたのですか?
盤面の情報を入力データとして、ディープ・ニューラルネットワークによって評価値(盤面の有利度のようなもの)が最も高くなる行動を出力します。
このようにネットワークを学習させる手法を深層強化学習と呼びます。
例えば、将棋の名人ですと10手以上先まで考えています。このAIにもそういう機構を搭載していまして、例えば1手先に行くと、大体10種類ぐらいの盤面が出てくるわけですね。1手先は10種類。そうすると、2手先って10掛ける10の100種類とかになるわけです。3手先だと1000種類っていうふうに爆発的に増えていきます。そのため普通は、この探索はあんまり深くできないんですよね。
僕の場合は色々と工夫をした結果、終盤では20手先、前半でも10手先など、ものすごく膨大な数の盤面を考えることができています。その中から一番いい状況を取ってくるイメージです。
最弱オセロの性能
――最弱オセロにおいて、先攻・後攻で有利・不利は存在するのですか?
実は、最弱オセロを学習させていく中で、先攻・後攻で戦わせてみると、大体同じぐらいの勝率になります。むしろ引き分けが一番多いかもしれないです。
――最弱オセロのサイトでは、プレーヤーが必ず先攻になっていますね。
先攻・後攻を両方プレイできるようにさせると、2つサイトを開いて『最弱オセロ』同士を戦わせることができてしまいます。
その裏技を避けるために、先攻固定にしています。
最弱オセロ同士で戦ったら引き分けか、僅差でどっちかが負けることになりますからね。
――最弱オセロは最弱と言いつつも、負けることもあるようです。それはなぜでしょうか?
実はこの『最弱オセロ』は、気軽にプレイできるように、探索時間を短くして、すぐに手を返すようにしてるんですよ。
探索の深さを調節すれば、更に弱くすることができます。
ただし、そうするとテンポよくプレイできなくなってしまいます。
今の設定でも、実力ある人でないと負けることはできません。
――やはり強い人じゃないと負けられないのですね。
結局、勝つにしても負けるにしても、相手の選択肢を限定することが大事で、そこは変わらないので。
ちなみに、初めてこのAIに負けたのは、山崎冬矢五段という方です。
天才オセロキッズとして有名な方で、現在もオセロ界で活躍していますね。
↓史上初の最弱オセロ攻略者・山崎冬矢五段の独占インタビューはこちら!
開発を終えて、その後の展望は…
――最弱オセロの開発を通して、吉田さんが得たものは有りましたか?
また、AIについてほとんど知らない状態からのスタートでも、しっかり学べばAIを活用して色々なことができるんだなっていうのが分かりました。
人間もAIも、不可能なことってあんまりないっていうか。やろうと思えば、何でもできちゃうなっていう感想を抱きました。
――最弱オセロ製作の経験を活かし、今はどんな開発に携わっているのでしょうか。
他には、デザインを生成するっていうシステムも最近開発しました。デザインって普通はアーティストみたいな、結構創造的な仕事じゃないですか。
それも最近、AIでできるようになってきたっていうところで、ワクワクしながら色んな新しいことに挑戦しています。
Recommended