文系のための人工知能 〜今現在、人工知能が出来ることをざっくり理解しよう〜
世に溢れる人工知能の情報は、"今できること" と "SFの世界" と "将来の展望" がごっちゃに語られてるケースが多く、文系の人の多くが人工知能を誤解してしまいます。私もそうでした。
まず "今人工知能が出来ること” を理解しましょう。これで少し視界がすっきりすると思います。
今人工知能が出来ること
今人工知能ブームですが、鉄腕アトムのようなロボットが出来てる訳じゃありません。今人工知能と呼ばれているものは基本的にあなたが使っているパソコンと同じ仕組みのコンピューターで出来ています。ただあなたが慣れ親しんでいるのとちょっと違う使い方をしていて、その使い方を人工知能と呼んでいます。その使い方は "機械学習" と呼ばれています。
機械学習って何ですか?
今回は概要理解のため超ざっくりと機械学習を説明します(*1)。
機械学習を一言で言うと "分類機械" です。もうちょっと難しくいうと『判断基準をプログラムにロジックとして入れ込むのが難しいケースでもデータを元に傾向をつかみおそらくだいたい正しい選択肢を提示する』仕組みです。
何ができるのか?
そう言ってもなかなかイメージつかめないと思うので実際の例で説明すると
- 画像分類...多くの画像から人が写っているものを分類
- 文書分類...Webの記事を政治、経済、スポーツ、芸能、その他に分類
写真に人が写ってる判断基準やWebの記事の内容の判断基準を説明しろって言われても難しいですよね、説明できないものはプログラムできません。コンピューターはこういうデータ(非構造化データと言います)を扱うのが苦手でした、機械学習を使うとこれを扱えるようになります。
- 迷惑メール...送られてくるメールから迷惑メールを検知して分類
- カード不正...カードの使用情報から不正使用を発見
迷惑メールやカード不正とも日々新しい手口が開発されているので判断基準作ること自体が難しいです。また、いろいろある情報をもとにすると何らかの相関を発見できそうだけど人間がそれをあぶり出すのは困難です。こういうケースでも機械学習が活躍します。
どうやってやるのか?
機械学習のやり方をイメージでいうと "調整つまみ" がたくさん付いている分類器です。この分類器は使う前に用途に応じて "調整つまみ" を調整する必要があります。
例えば人が写っている写真を分類したい場合、大量の写真データを準備します、写真にはあらかじめ ”人が写っている” , ”写っていない” というラベルをつけておきます。これを分類器にインプットして分類を行います。分類器はラベルを見ないで分類を行い、その結果とラベルを比較して答え合わせをします。正しく仕分できた場合はそのまま、間違えた場合は少しづつ"調整つまみ(パラメーター)"を調整して徐々に正解率を上げていきます。実用に耐えうる精度が得られるまでこれを続けます。
これが人間が "学習"する過程と似ているので『機械学習』と呼ばれていますが、実際にやっているのは調整つまみの調整、もっとストレートに言うとパラメーター調整です。
実装方法
機械学習には色んな実装方法があります。ニューラルネットワーク、サポートベクトルマシン、ベイジアンネットワーク、などなど。どれもデータを元に学習(パラメーター調整)を行って実際に使うという部分は一緒です。
最近よく耳にする『ディープラーニング(深層学習)』はニューラルネットワークに分類される手法で、最近これを使うことで分類の精度が飛躍的に向上した分野もあり今の人工知能ブームの火付け役になっています。『ディープラーニング(深層学習)』という名前から「人知を超えたすっごい深遠なことを考えている」と誤解する人がいるのですが単なる機械学習の一手法に過ぎません。
どうして今ブームに?
機械学習という考え方自体は昔からありました。先ほど言った今回のブームの立役者の一つ『ディープラーニング(深層学習)』も、使っている手法は昔からあるもので特に新しいものはありません。
ではなぜ今ブームなのか、それには2つの理由があります
(1)大量データ
機械学習が学習して実用に耐える精度を実現するためには大量の学習用データが必要です。昔はそれだけのデータを入手するのが困難でした。Bigdata時代とも言われる現在、データの入手が可能になりました。
(2)コンピューターの性能向上
学習は多くの調整つまみ(=パラメーター)を調整する必要があります。昔のコンピューターの性能ではこの調整に時間がかかりすぎるので大規模な調整器を作っても実用に耐える時間で学習させることが困難でした。昨今のコンピューターの性能向上で実用に耐えうる時間での学習が可能になりました。
何がすごいのか?
コンピューターを使って『過去のデータからおそらくだいたい正しい答え』を出せるような仕組みを実現できたこと、その精度が上がってきたことは大きな可能性を持っていると筆者は思います。人間の思考方法でいうと『帰納的』な推論をコンピューターに実行させることで新しい形で人間の意思決定支援を支援できるようになると思っています。
しかし、、、
世で議論されている人工知能の出来ること、その影響については誤解に基づいた意見も多いと感じています。ということで来週は
なぜ誤解が生まれるのか?その原因と対策
(*1) 今回は機械学習の概要をザクッと理解いただくため、かなりざっくりした説明になっています。機械学習で出来ることは今回説明した分類以外に回帰とかクラスターなどがあります。学習方法には今回説明した教師あり学習という手法以外に教師なし学習、強化学習などがあります。また実際はデータを訓練データとテストデータに分けて過剰適合していないかを確認するなどのステップもありますがこの説明で割愛しています。その他いろいろはしょってる部分の詳細はこの連載の中で説明していく予定です。
文系のための人工知能 〜前提知識ゼロから始める人工知能〜
最近人工知能ブームと言われてます。メディアでは連日のように人工知能間連の話題が取り上げられています、本屋に行くと「人工知能時代の〜」とか「AIが変える〜」とかいう本が平積みされています。
しかし一方「人工知能って何?難しそうで正直よくわからない」と言う声もよく聞くようになりました。
どうしてわからないのか?
これだけ情報が溢れているのにどうしてよく分からないという声が多いのか?
人工知能で世の中がこうなるという雑多な情報が溢れかえっていること、その一方で人工知能そのものに関する情報は専門的すぎて敷居が高いこと、の2つが理由だと私は考えます。
世に溢れる人工知能でこうなる情報
世に溢れる情報の多くが「人工知能で世の中どうなる」というもの。いろんな分野の著名な方々が「人工知能で世の中こう変わる」と語っています。人工知能自体が理解できていない文系人間にはその語りが「その人の専門的な知識に基づいているのか?」「その人の個人的な意見なのか?」の区別がつかず、どれを信じていいのかわからないんです。
敷居の高い人工知能入門
「やっぱ自分が人工知能自体を理解しないとはじまらない、勉強しよう」と "人工知能入門" という題名の本を見つけて読み始めたとします。あなたが文科系の人の場合、数ページ目で難しそうな数式が出てきて挫折、というケースが多いと思います。世に出ている入門の多くがある程度の数学知識を前提としているので文科系にはとても敷居が高いのです。
わからなくてもいいのか?
「どうせ難しくて文系には理解できないんだから分からなくていい」という声も聞きます。
確かに万人が人工知能について専門家レベルの知識を持つことは現実的ではありませんしそこまで知る必要も無いと思います。
しかしみんなが『ある程度のレベルの理解』を持つことは十分可能ですし、人工知能というテクノロジーが今後有効活用されていくためには万人共通の『ある程度のレベルの理解』を造ることが必須であると私は考えます。私がなぜそう考えるかを2つのポイントで説明します。
人工知能の判断を鵜呑みにしないために
人工知能は「なんかすごいみたいだから」というだけでその判断を鵜呑みにしてしまうのは『お告げに従う』姿勢と大差ありません。人工知能がどんなに発展しようと最終的な決定を行うのは人間です。人工知能の出した判断を鵜呑みにすることなく、正しく評価するためには人工知能に関する『ある程度のレベルの理解』が必要です。これがあって初めて人工知能の有効活用が可能になると私は考えます。
人工知能を有効活用するアイデアを生むために
一般的にあるテクノロジーの専門家と、そのテクノロジーを活用する人は同じではありません。例えばテレビというテクノロジーの専門家だけではテレビドラマを作ることはできないですよね。人工知能も同じで、他の分野の人が人工知能というテクノロジーを活用することで、専門家だけでは考えつかないような大胆かつ素敵な活用方法が生まれてくると私は考えます。ただ全く理解できないものを活用することはできません。専門家以外の人が人工知能というテクノロジーを活用するためには人工知能に対する『ある程度のレベルの理解』が必要です。
どうやって『ある程度のレベルの理解』をするのか?
ここまで読んで「そんなことはわかってる、でもその『ある程度のレベルの理解』が面倒で難しいんだよ」と思った方も多いかと思います。
確かに文科系の人間にとって人工知能を理解するのはかなり敷居が高そうに見えます。これは人工知能という山への登山ルートが理系用に作られているためです。同じルートを登るのではなく、文科系用の登山ルートを登っていけばいいのです、そのルートでは理系のルートでは見えなかった景色も見えてくると思います。次回から私が今登っている文系用の登山ルートをご案内していきます。
ゲームとコンピューターと実世界
1997年チェス名人に勝ったのを皮切りに、最近はコンピューターが囲碁名人に勝った、将棋でコンピュターと羽生名人が対戦、などゲームの世界でコンピューターが脚光を浴びています。「コンピューターが人類を超える」なんてことも言われてたりしますね。さて実際のところどうなんでしょう?
今回はゲームをお題にコンピューターと人間について考えてみたいと思います。
ゲームとコンピューター
チェス、囲碁、将棋で人間を圧倒しはじめたコンピューターですが、ゲームのやり方は人間とコンピューターでどう違うんでしょうか?
ゲームで勝つためにやるべきことは人間だろうがコンピューターだろうが一緒「最善の一手」を指すこと、この積み重ねが勝利につながります。
この「最善の一手」の判断方法に人間とコンピューターの違いがあります。
人間のやり方
プロ棋士は、たくさんある次の一手の候補から、筋のよさそうなものを候補として選択し、選んだ候補それぞれ何手か先まで読んで「そこに打ったらその後の展開はどうなる?」を考え最も有利な戦局になるものを選択しています。
プロ棋士はこの際の判断基準に、自分の過去の経験に基づく"論理的な思考能力"と"ひらめき"を使っています。
先日将棋の羽生名人が「たくさんの手を読むことが強いということではない」とテレビで言ってました。名人も全部の手を考えている訳ではないのです。
コンピューターのやり方
一方のコンピューターはどうやって「最善の一手」を決めているのでしょう?実はいろんなこれまでいろんなやり方が試されてきました。
(1)全部調べる
コンピューターの計算能力の高さに頼って全部調べるやり方。全部の次の一手、それぞれの一手のその後の全部のパターンを調べる方法です。
3目並べくらいの簡単なゲームだとこの方法で必勝コンピューターを作れるんですが、チェス、囲碁、将棋のような選択肢が膨大にあるゲームでは全パターンを調べていたらいついつまでたっても終わないので現実的ではありません(どのくらい終わらないのかはこの文書の後半で)。
(2)筋のいい手に絞って数手先まで読む
さすがのコンピューターも力任せの全調べは荷が重いので人間と同じように"筋のいい手に絞って数手先まで読んで一番有利な戦局になるものを選ぶ"という方法です。
ここで問題になってくるのは「有利な戦局」の判断基準です。
a.プログラムする
戦局を評価するノウハウを詰め込んだプログラムを作成する方法です。この場合プログラムの質は作成する人のゲームの知識の大きく左右されます。
この方法はある程度の成果を収めていますが、囲碁、将棋の名人レベルになるには至っていません。
特に囲碁の場合は次の理由で評価プログラムの作成が難しいとされています。
(1)将棋、チェスはいろんな種類の駒があるから評価に使える、一方囲碁は駒は白黒だけなので評価の材料に乏しい
(2)囲碁は終局まで大勢が決しないことも多く局面の評価が難しい
b.やってみる
評価するロジックを作るのが難しいのなら、実際にゲームをやってみてその結果を判断基準に使おうというアプローチです。
代表的な例がコンピューター囲碁でつかわれているモンテカルロ法です。
囲碁のある局面から白黒を交互に適当においていって(最低限ルールには沿うようにします)どっちが勝ったかを調べます。
これを何回も繰り返した結果を元に次の一手を評価します。イメージ的にはへたくそな二人が何回も対戦しているのと似てます。
同じレベルの下手くそ同士が何回も対戦した結果だから、腕の差ではなく局面が有利だから勝ったんだろうという発想です。
次の一手で勝率の高かったものについて二手先、三手先と掘り下げていくことで「筋のいい手を」「先読みする」を実現しています。
これでコンピューター囲碁はかなりのレベルになりましたがまだまだ名人に勝てるレベルではありませんでした。
c.過去のデータを使う
囲碁は過去の対戦の棋譜が数多く保存されていて比較的簡単に入手できます。この膨大なデータを活用して評価の精度を上げようというアプローチです。
この手法は「教師有り学習」と呼ばれており、最近よく耳にする"機械学習"の手法のひとつです。
一流プロの棋譜を学習教材として、一流プロと同じ次の一手打つようにコンピューターを学習させていくのです。
一流プロと同じ手を打つ=一流プロの次の一手を教師として使う、ので教師有り学習と呼ばれています。
d.コンピューター同士で対戦させる
ある程度強いコンピューター囲碁のプログラムが出来てきたら、コンピューター同士で対戦させてさらに強くしようというアプローチです。
この手法は「強化学習」と呼ばれており、こちらも最近よく耳にする"機械学習"の手法のひとつです。
コンピューター同士を対戦させて勝った方にご褒美を上げるイメージで学習させていくのです。
先日囲碁名人に勝利したAlphaGoはモンテカルロ法と機械学習を組み合わせて作られています。将棋の世界で最強と呼ばれているプログラムも機械学習を取り入れています。
コンピューターの認知力アップ
ゲームの世界で名人にせまっているコンピューター、そこでは機械学習が大きな貢献をしています。機械学習はゲーム以外のいろんな分野で活用されはじめています。
機械学習の活用によりコンピューターの新しい使い方が生まれてきています、これをコンピューター認知力がアップしたという言い方をする人もいます。
ここから認知力アップってなんだ?を簡単に説明したいと思います。
認知力アップ その1 帰納的認知力
人間がやりたいことをプログラムしてコンピューターにさせる、これが従来からあるコンピューターの使い方ですね。
簡単な例だと底辺と高さから三角形の面積を求めたいとすると 底辺 x 高さ ÷ 2 というロジックを含んだプログラムを書きます。
いったん書いてしまえば、底辺と高さのデータをコンピューターに入れれば必ず正しい面積を出してくれます。
しかし、世の中やり方を説明できるものばかりではありません。カードの使用履歴等からカード犯罪を検知しようとした場合、世にたくさんある個々のカード犯罪の手口を全部プログラムに書くのは無理がありますし、かりに全部書いたとしても明日には新しい手口が生まれてきますから、従来の「プログラムにやり方を書く」アプローチでの対応は難しいですね。
そこでアプローチを変えて、理由は説明できないけど過去のデータを元に「こういう取引データの場合は不正使用の可能性が高い」という "おそらくだいたい正しい" 傾向をあぶりだす、これが最近はやりのアプローチです。
従来のコンピューターの使い方が「正解に導くロジックをプログラムに実装する」のに対して「データからおそらくだいたい正しい傾向をあぶりだす」ので前者を演繹的アプローチ、後者を帰納的アプローチと呼んだりします。帰納的アプローチで使われるのが機械学習という手法です。
機械学習にはいろんな種類がありますが基本的に全部「データからおそらくだいたい正しい傾向をあぶりだす」という帰納的アプローチをとってます。
また、機械学習では入力されたデータを元にパラメーターを調整して最適な答えを導くというアプローチをとるのでデータがとても重要な役割を果たします。これが学習と呼ばれる理由です。
機械学習のプログラムだけあっても何の役にも立ちません、適切なデータで学習することで初めて価値を生みます。従来の演繹的アプローチではプログラム自体が重要な価値を持っていてデータはあくまで処理するものとなっているのと対照的ですね。
認知力アップ その2 非構造化データの認知力
機械学習ではデータが重要というお話をしました。より多くの多様なデータを活用することで機械学習の精度、適用分野も広がります。
世の中にはいろんなデータがるのですが、実は従来コンピューターが使っていたデータはその20%にしかすぎませんでした。
その20%は「構造化データ」をよばれるもので、ざっくりいうと "Excelのシートでまとめることができる、きちんと形式の決まったデータ" です。
残りの80%は「非構造化データ」といわれるもの。ざっくりいうと つぶやき,メール内容、 画像、音声など形式の決まっていないデータです。
これを活用しない手はない、ということで非構造化データをコンピューターが処理できる形式にして活用しようというのが最近の流行です。
非構造化データをコンピュータが認知できる形式にする際も機械学習が使われています。
*帰納的アプローチはこれまでのコンピューターの使い方に慣れている人にとっては抵抗感があるかもしれません。「おそらくだいたい正しい」「やりかたを説明できない」という
部分がとても頼りなくみえてしまうのです。『機械学習』に加えて『統計学・確率論』を理解するとこのもやもやが晴れていきます。
ゲームを制したコンピューターは現実世界も制するのか?
ゲームの世界では名人にせまる勢いのコンピューター、これをもって「コンピューターが人間を追い越す」という論調のお話も最近は聞かれます。
しかし現実の世界には囲碁、将棋とは全く異なる難しさがあります、コンピューターが人間を追い越すのはそんなに簡単なお話ではないと私は考えます。
ゲームのルール
チェス、囲碁、将棋はゲーム理論の定義では「二人ゼロ和有限確定完全情報ゲーム」という分類に入りますが、現実の世界のゲームには他のいろんな種類があります。
(1)完全情報
チェス、囲碁、将棋は判断に必要な相手の情報が全て分かっています。盤面の情報、自分が持っている駒、相手の持っている駒は全部わかりますよね。相手が急に隠し持った角を打ってくるなんてことは起こりませんよね。
同じゲームでもポーカーは相手の持ってる手札はわかりません。現実の世界では競争相手の情報を全部把握できるなんてことはまずありません。現実世界では不完全な情報下で意思決定を行う必要があるのです。
(2)確定
チェス、囲碁、将棋は偶然、確率の要素は全くありません。同じ盤面で同じ手を打てば必ず同じ状況になります。
同じゲームでもポーカーは次に来る手札によって大きく戦局がかわってきます。現実世界でも意思決定は確率的な要素を考えて行う必要があります。
(3)二人ゼロ和
チェス、囲碁、将棋は対戦する相手は一人、ゲームの結果は必ず勝ちと負け、もしくは引き分けととてもシンプルです。
同じゲームでもポーカーは複数の人と対戦するので戦略的な要素が入ってきます。現実の世界では目標達成のために複数の相手と時に競争し、時には手を組んでいきます。またその結果は必ずしもゼロサムではありません。
みんながプラスになるケースもありますし、逆にみんなマイナスになってしまうケースもあります。
(4)有限
チェス、囲碁、将棋は手を進めていくと必ず終わりに到達します。現実の世界ではエンドレスに戦いが続いていくケースもあります。
(5)そもそもルールは決まっている
チェス、囲碁、将棋ではゲームのルールは決まっており、定められたルールの中で最善を尽くす必要があります。
現実の世界では定められたルールの中で最善を尽くすこともありますし、最適な結果を得るためにルールを変更する場合もあります。
* 現実の世界のゲームはチェス、囲碁、将棋より複雑です。さまざまな現実の世界でのゲームで適切な判断を行うのに役立つのが『ゲーム理論』という考え方です。
* また一般的な経済のルールがうまく機能しない時に新しいルールを作成している例として『マーケットデザイン・オークション理論』などがあります。
目的設定
チェス、囲碁、将棋の目的はとてもシンプル「相手に勝つこと」、現実の世界では目的はあらかじめ決まっている訳ではありません。
意思決定をする人が「自分にとって最適な結果は何か?」「集団にとって最適な結果は何か?」を定義することから意思決定ははじまります。
* 意思決定の目的について理解するためには『経済学』が役立ちます。個人にとっての合理的選択、集団にとっての合理的選択、不確実な状況下での合理的選択などを理解すると
目的設定に関する理解が深まります。
コンピューターに出来ること
ゲーム名人を圧倒し始めたコンピューターは現実の世界のゲームで力を発揮できるのでしょうか?決して人間を圧倒はできないが、人間を強力に支援することができるというのが私の考えです。
(1)目的設定
まず意思決定をする際の目的設定、これは人間がやるしかないです。自分がやりたいことわかんないからコンピューター決めてとお願いする訳にはいかないですよね。
(2)仮説立案
目的を設定してそこに到達するために何をすればよいか、言い換えると「こうすれば目的達成できるはず」という仮説を立てる、これも人間のお仕事です。
「個人の経験、直感に基づいて筋のいい仮説を立てることが重要」と経営系の本にもよく書かれています。この方法、たいがいのケースでうまくいくのですが失敗するケースもあります。
従来と同じビジネスモデル(=ルール)で生産性を高めるという目的の場合はこの方法はとても有効です。一方まわりの状況が変わっていてそれに対応する必要がある状況では個人の経験、直感が「がんこな思い込み」になってしまうケースがあります。
人間の経験・直感は大切ですが、注意しないと過度な自信と思い込みを生んで道を誤る原因になるのです。
ではどうすればいいのか?ここは帰納的認知力を身につけたコンピューターの出番です。コンピューターに仮説をたてさせる、具体的には数多くのデータを元にコンピューターに人間では気づかない「おそらくだいたい正しい」相関を発見させて、その発見した相関を元に仮説を立てればいいのです。
*人間の思い込みの危険性・不合理性への理解を深めるには『行動経済学』『認知心理学』の知識が役立ちます。
コンピューターの苦手なこと
実はチェス、囲碁、将棋のような「二人ゼロ和有限確定完全情報ゲーム」は先手必勝、後手必勝、引き分け、のどれかなんです。
全部のパターンを調べるとそのどれか必ず分かるので、これを一瞬にして把握することができるゲームの神様同士の対戦は先手、後手を決めた時点で勝敗が決してしまうので神様にとっては面白くもなんともないんです。
実際同じゲームの分類であるチェッカーについてはお互い最善手を選択した場合必ず引き分けになることが判明しています。しかし冒頭に述べたように、チェス、囲碁、将棋のような選択肢が膨大にあるゲームでは全パターンを調べていたら
どんなに高速なコンピューターでもいつまでたっても終わりません。たとえば囲碁の盤面は19x19ですから初手の候補が361個(19x19)、次一手が360個、その次の一手がそれぞれ360個、となっていくので
全パターンは361x360x359x。。。。。これ最新コンピューターでも宇宙が始まってから今までずっと計算してても終わらないくらいの膨大な数字になります。
高速化が進むコンピューターですがこのような指数的に処理量が増加する処理はさすがにお手上げです。
この性質をうまく利用しているのが現代の暗号化技術です。因数分解をするための効率的なロジックは無く、しらみつぶしに候補を探す必要があります。因数分解対象の数字が一桁ふえるごとに処理量は
指数的に増えていくので2つの数字(素数)を掛けておおきな数を作ってみんなにみせても、2つの数字を見破られる可能性はほとんど無く、これが暗号化技術の元になっています。
いま話題の量子コンピューターを使うと因数分解を高速に処理できる可能性があります、量子特有の性質を使うことで因数分解対象の数字が一桁ふえても指数的に計算量がふえていかない仕組みを作れる可能性があるのです。
囲碁とコンピューター
コンピューターが囲碁名人に勝ったというのがニュースになってます、面白そうなので調べてみました。
囲碁、将棋、チェス、チェッカー、三目並べは仲間です
どれも”二人で対戦する”、”どっちか勝てば、もう一人は負ける”、”相手の情報は全て分かる”、”手数の組み合わせは有限”という点で同じ分類になります。こういうゲームを「二人零和有限完全情報ゲーム」とよびます。
「二人零和有限完全情報ゲーム」は先手、後手が最善手を指すと必ず”先手必勝”、”後手必勝”、”引き分け”のどれかになることが証明されています。三目並べ、チェッカーはその手順が発見されていますが、囲碁、将棋、チェスではまだ発見されていません。
三目並べをコンピューターにやらせるには?
三目並べは最善手の手順(結果は必ず引き分けになる)が発見されています。コンピューターに三目並べをやらせる場合はその最善手のロジックをプログラムすればいいですね。
* 最善手はリンク先「戦法のこつ」を参照ください 三目並べ - Wikipedia
最善手が発見さている三目並べだとこの方法がとれますが、囲碁・チェス・将棋の場合最善手はわかっていません、手数も段違いに多いです。ではどうすればいいか?
チェス・将棋をコンピューターにやらせるには?
次の一手のパターン、その次の一手のパターン、… こうやって終局までの全てのパターンを調べようとすると、指数的にその対象が増えていくのでどんな優秀なコンピューターでの現実的な時間で全てのパターンを調べて評価することはできません。
そこでチェス・将棋で一般的に使われるのが評価関数です。
評価関数とは?
終局までのパターンを調べる替わりに、数手先までのパターンを調べてそのそれぞれのパターンを評価して最善手を決める方法です。なんらかの基準(例えば持ち駒の種類、数など)によるその時点での優劣が評価関数に使われます。
囲碁をコンピューターにやらせるには?
囲碁も基本的にはチェス・将棋と同じなんですが、違いもあります。
ひとつは手数の組み合わせが多いこと、囲碁の盤面は 19 x 19 手順の組み合わせはチェス・将棋と比べても段違いに大きいです。
もうひとつは”評価関数の作成が難しい”ということ、将棋・チェスの場合は持っている駒である程度優劣が判断できますが、囲碁の場合はみんな同じ石、しかも囲碁は終盤まで優劣が明確にならないという特徴があるので評価関数を作るのが難しいとされてきました。
この課題を解消するため使われているのが「モンテカルロ木探索」という手法です。
モンテカルロ木探索とは?
モンテカルロ木探索をざっくり”木探索”と”ロールアウト”というキーワードで説明します。
ロールアウト
評価関数作るのが難しいなら実際にそこから囲碁やってどうなるかみてみよう、というアプローチです。ある局面からコンピューターにランダムに手を打たせて(最低限の囲碁のルールは守って)最終的にどのくらい勝つ確率が高いか調べようという発想です。
木探索
先読みの手数が多くなるほど選択枝は増えていきます。1手先に4つの選択枝があるとしてその先のそれぞれに4手あるとすると1手先:4手、2手先:16手、3手先:64手、このように指数的に増えていくので全部調べていたら大変だから有望な手筋だけしらべるようにする仕組です。枝を選定していくイメージですね。
この方法で作った囲碁プログラムは強くなったけどトッププロにはまだまだ遠く及びませんでした。
AlphaGoのアプローチ
まだトッププロに勝つには10年くらいかかるといわれていた中、トッププロに勝利したAlphaGoはどんな仕組みになってるのか、ざっくり説明してみます。
仕組み
モンテカルロ木探索をベースに機械学習を追加して機能強化した作りになってます。
木探索
機械学習(畳込みニューラルネット)を使って実装された"Value Network" を使用して最適な探索を決定。
評価
機械学習(畳込みニューラルネット)を使って実装された"Policy Network" とモンテカルロ木探索で一般的に使われているロールアウトを併用して局面を評価
学習方法
学習を二段階に分けて行っています。
第一段階 教師有り学習
過去のプロの対戦棋譜を入力データとして使い教師有り学習を実施。
第二段階 強化学習
次にコンピュータープログラム同士を対戦させて学習を実施。とてもざっくり簡単にいうと勝った方にご褒美あげていく方法。
ここで使われている機械学習の手法は特別なものではなく一般的なものです。これは機械学習の特徴(ロジック自体はシンプルで汎用的、特徴抽出とデータによる学習が重要)を表していると思います。
*誤りあればご指摘いただければ幸いです
参考書籍
計算科学:ディープニューラルネットワークと木探索を用いた囲碁の習得
http://www.nature.com/nature/journal/v529/n7587/abs/nature16961_ja.html?lang=ja
意思決定へのデータ活用 ~その1~
「データ活用による最適意思決定が競争力の源泉」という小難しい(だけどよくわからん)お話ってたまに聞きますね。
実際のところ、データ使うといい判断できるんでしょうか?それって具体的にどうやればいいんでしょうか??
これから数回に分けてそこの根っこのところを記していきたいと思います。
まず、ざっくりと知っておこう!意思決定とは?
やりたいことを決めて、それを実現するためのやりかた考えて実行する、これが意思決定の流れです。もうちょっと細かく書くと
- なんかやりたいことがあって(目標設定)
- どうやったらできるかなと考えて(仮設立案)
- ほんとにそれでできるかなと確認して(仮設検証)
- やってみる(実行)
- やってみて目標達成できたかなと確認する(評価)
この流れの中でどうやってデータが活用できるのでしょうか?
意思決定に必要なものって何なんだろう?
では質の高い意思決定を行うためには何が必要なのでしょう?ポイントは下記3つ。どれが欠けても駄目、三つをバランスよく使って初めて質の高い意思決定が可能になると思います。
- 豊富な経験 (経験に基づく洞察力)
- バイアスの理解 (経験が邪魔をすることがある)
- データの活用 (バイアスを排除した洞察力)
今回は「豊富な経験 」のお話とその課題
豊富な経験
意思決定に経験と直感は重要です。職人技ってまさにそうですし、ビジネスの世界でも豊富な経験を元に意思決定を行うのって王道ですよね。そのやり方のノウハウを書いた書籍もいろいろあります。
元BCG(Boston Consulting Group)日本代表の内田和成は著書[1]の中で正しい課題設定を行うことで問題解決力が劇的に向上すると述べており,その能力をアップさせるためには経験が重要だと述べてます。
同じく元BCG日本代表の御立 尚資も著書[2]の中で正しい課題設定をする能力をインサイトという言葉で定義し,その重要性を述べており,その能力の向上には経験が重要だと述べています。
マルコム・グラッドウェルは著書[3]の中で,贋作を一瞬の直感で見抜いた美術館員の例をあげている.これは経験により高い問題解決力を身につけた例であり,経験の重要性を示す典型的な例です。
しかし課題も
でも状況によっては、経験に頼りすぎてしまった結果生じる思い込みや自信過剰が、誤った意思決定に走らせてしまうケースもあります。
イノベーションの泰斗であるクレイトン M.クリステンセンはその代表的著作[4]の中で過去のビジネスモデルでの成功体験に縛られた企業が正しい意思決定をできず衰退していく例を記しています。
リチャード・P・ルメルトは著書[5]の中でこの思い込み,自信過剰を無意識の罠と表現し,これにはまらないことが戦略思考の極意であるとしてます。
リチャード S テドローは著書[6]の中で企業のリーダーが成功体験に起因する思い込み,自信過剰によって誤った選択をしてしまう例をあげています。
イアン・エアーズは著書[7]の中で,ワインの価格予測でワイン専門家による判断より,簡単な数式を用いた予測の方が高い精度で予測した例をあげている.これは経験による問題解決力の限界と課題を示す典型的な例ですね。
経験は問題解決能力を向上させる重要な要素であると同時に,問題解決能力を低下させる要因にもなるのです。
ではどうすればいいのか?
第一のポイントは自分の思い込みに気づくこと
第二のポイントはデータを使って客観的な判断材料を得ること
おのお話は次回に!!!
[3]マルコム・グラッドウェル:第1感 「最初の2秒」の「なんとなく」が正しい
人口知能を語る前に 脳について知っておこう
最近「人工知能」という言葉がちょっとしたブームで、いろんなところでこの言葉を聞きます。
役立つ情報も多いのですが、中には間違った理解に立って無意味に危機感を煽るだけに思えるものも見受けられます。
こんな状況の中、人工知能について偏らない客観的な視座を得るためには "人口知能を構成する要素" である「コンピューター」と"人口知能がめざす先"である「脳」について正しく把握しておくことが肝心だと思います。
ということで、今回は「脳」について
脳の配線はまだ分かっていない
脳はニューロンとシナプスで構成されています。この仕組みを模したのがニューラルネットワーク、ディープラーニングはその代表的なものです。
しかしこれだけでは脳をシミュレーションすることは出来ません。脳には1000億個のニューロンと160兆に及ぶであろうシナプスから構成されています。現在までの研究の脳の機能を生んでいるのは個別要素ではなくニューロンとシナプスで構成されたネットワークであるとされています。脳のネットワーク地図はコネクトームと呼ばれており、まだこれは作成されていません。
コネクトームが作成され、脳の仕組みがわからない限り、脳のシミュレーションの可能性を検討することは難しいと思います。
現在は脳の構成要素を模しているだけで、例えるなら「ピカソが使っているのと同じ絵の具を使っている」のと「ピカソのような絵を描く」くらいの差がある状態です。たとえいまいちですが。。。
現在成功しているディープラーニングの技術自体は、脳の機能と似たものを使って役立つものを作るいわゆる「弱いAI的アプローチ」で、こちらは多くの実績をあげています。
ただコンピューターで脳と同等のものを作る「強いAI的アプローチ」は上に述べた理由でまだまだ実現までには壁があります。しかももしコネクトルームが解明されたとしても、脳の最大の謎「意識」の仕組みを解明するにはさらに時間がかかるでしょう。
機械学習とは何か?
機械学習とは何か? 一言で言うと「今までと少し違うコンピューターの使い方」です。
- 面積 = 底辺 x 高さ ÷ 2
- カードの履歴データから不正使用データを見つけたい
- たくさんくるメールの中から迷惑メールを判別して削除したい
- カードの履歴データから不正使用データを見つけたい
- たくさんくるメールの中から迷惑メールを判別して削除したい