越境するコンピューター

越境するコンピューター

新しいコンピューターとの付き合い方 〜コンピューターと意思決定と人間〜

ゲームとコンピューターと実世界

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://ecx.images-amazon.com/images/I/419jx%2Bf%2Bf0L._SL75_.jpg

http://ecx.images-amazon.com/images/I/414ZpLD-OSL._SL75_.jpg

計算科学:ディープニューラルネットワークと木探索を用いた囲碁の習得 

http://www.nature.com/nature/journal/v529/n7587/abs/nature16961_ja.html?lang=ja

 

 

 

意思決定へのデータ活用 ~その1~

「データ活用による最適意思決定が競争力の源泉」という小難しい(だけどよくわからん)お話ってたまに聞きますね。

実際のところ、データ使うといい判断できるんでしょうか?それって具体的にどうやればいいんでしょうか??

これから数回に分けてそこの根っこのところを記していきたいと思います。

 

まず、ざっくりと知っておこう!意思決定とは?

やりたいことを決めて、それを実現するためのやりかた考えて実行する、これが意思決定の流れです。もうちょっと細かく書くと

  1. なんかやりたいことがあって(目標設定)
  2. どうやったらできるかなと考えて(仮設立案)
  3. ほんとにそれでできるかなと確認して(仮設検証)
  4. やってみる(実行)
  5. やってみて目標達成できたかなと確認する(評価)

この流れの中でどうやってデータが活用できるのでしょうか?

 

意思決定に必要なものって何なんだろう?

では質の高い意思決定を行うためには何が必要なのでしょう?ポイントは下記3つ。どれが欠けても駄目、三つをバランスよく使って初めて質の高い意思決定が可能になると思います。

  • 豊富な経験   (経験に基づく洞察力)
  • バイアスの理解 (経験が邪魔をすることがある)
  • データの活用  (バイアスを排除した洞察力)

 

今回は「豊富な経験 」のお話とその課題

 

豊富な経験

意思決定に経験と直感は重要です。職人技ってまさにそうですし、ビジネスの世界でも豊富な経験を元に意思決定を行うのって王道ですよね。そのやり方のノウハウを書いた書籍もいろいろあります。

元BCG(Boston Consulting Group)日本代表の内田和成は著書[1]の中で正しい課題設定を行うことで問題解決力が劇的に向上すると述べており,その能力をアップさせるためには経験が重要だと述べてます。
同じく元BCG日本代表の御立 尚資も著書[2]の中で正しい課題設定をする能力をインサイトという言葉で定義し,その重要性を述べており,その能力の向上には経験が重要だと述べています。
マルコム・グラッドウェルは著書[3]の中で,贋作を一瞬の直感で見抜いた美術館員の例をあげている.これは経験により高い問題解決力を身につけた例であり,経験の重要性を示す典型的な例です。

しかし課題も

でも状況によっては、経験に頼りすぎてしまった結果生じる思い込みや自信過剰が、誤った意思決定に走らせてしまうケースもあります。
イノベーションの泰斗であるクレイトン M.クリステンセンはその代表的著作[4]の中で過去のビジネスモデルでの成功体験に縛られた企業が正しい意思決定をできず衰退していく例を記しています。
リチャード・P・ルメルトは著書[5]の中でこの思い込み,自信過剰を無意識の罠と表現し,これにはまらないことが戦略思考の極意であるとしてます。
リチャード S テドローは著書[6]の中で企業のリーダーが成功体験に起因する思い込み,自信過剰によって誤った選択をしてしまう例をあげています。
イアン・エアーズは著書[7]の中で,ワインの価格予測でワイン専門家による判断より,簡単な数式を用いた予測の方が高い精度で予測した例をあげている.これは経験による問題解決力の限界と課題を示す典型的な例ですね。

 

経験は問題解決能力を向上させる重要な要素であると同時に,問題解決能力を低下させる要因にもなるのです。

ではどうすればいいのか?

 

第一のポイントは自分の思い込みに気づくこと

第二のポイントはデータを使って客観的な判断材料を得ること

 

おのお話は次回に!!!

 

[1] 内田 和成:論点思考,東洋経済新報社,ISBN 978-4492556559(2010)

http://ecx.images-amazon.com/images/I/5181YHPHKHL._SL75_.jpg

[2]御立 尚資:戦略「脳」を鍛える

http://ecx.images-amazon.com/images/I/515PC6R6VWL._SL75_.jpg

 [3]マルコム・グラッドウェル:第1感 「最初の2秒」の「なんとなく」が正しい

http://ecx.images-amazon.com/images/I/41DPKMFSFKL._SL75_.jpg

[4]クレイトン M. クリステンセン:C. クリステンセン 経営論

http://ecx.images-amazon.com/images/I/41-QCpHf-fL._SL75_.jpg

 [5]リチャード・P・ルメルト:良い戦略、悪い戦略

http://ecx.images-amazon.com/images/I/51ITlNHWGcL._SL75_.jpg

[6]リチャード S テドロー:なぜリーダーは「失敗」を認められないのか

http://ecx.images-amazon.com/images/I/51538vArlGL._SL75_.jpg

[7]イアン エアーズ:その数学が戦略を決める

http://ecx.images-amazon.com/images/I/61dxlWuaIEL._SL75_.jpg

人口知能を語る前に 脳について知っておこう

最近「人工知能」という言葉がちょっとしたブームで、いろんなところでこの言葉を聞きます。
役立つ情報も多いのですが、中には間違った理解に立って無意味に危機感を煽るだけに思えるものも見受けられます。
こんな状況の中、人工知能について偏らない客観的な視座を得るためには "人口知能を構成する要素" である「コンピューター」と"人口知能がめざす先"である「脳」について正しく把握しておくことが肝心だと思います。

ということで、今回は「脳」について

脳の配線はまだ分かっていない
脳はニューロンシナプスで構成されています。この仕組みを模したのがニューラルネットワーク、ディープラーニングはその代表的なものです。
しかしこれだけでは脳をシミュレーションすることは出来ません。脳には1000億個のニューロンと160兆に及ぶであろうシナプスから構成されています。現在までの研究の脳の機能を生んでいるのは個別要素ではなくニューロンシナプスで構成されたネットワークであるとされています。脳のネットワーク地図はコネクトームと呼ばれており、まだこれは作成されていません。
コネクトームが作成され、脳の仕組みがわからない限り、脳のシミュレーションの可能性を検討することは難しいと思います。
現在は脳の構成要素を模しているだけで、例えるなら「ピカソが使っているのと同じ絵の具を使っている」のと「ピカソのような絵を描く」くらいの差がある状態です。たとえいまいちですが。。。

現在成功しているディープラーニングの技術自体は、脳の機能と似たものを使って役立つものを作るいわゆる「弱いAI的アプローチ」で、こちらは多くの実績をあげています。
ただコンピューターで脳と同等のものを作る「強いAI的アプローチ」は上に述べた理由でまだまだ実現までには壁があります。しかももしコネクトルームが解明されたとしても、脳の最大の謎「意識」の仕組みを解明するにはさらに時間がかかるでしょう。

[参考書籍]
http://ecx.images-amazon.com/images/I/51Y97PRZx3L._SL75_.jpg
とっても面白いです、是非読んでみてください。

機械学習とは何か?

機械学習とは何か? 一言で言うと「今までと少し違うコンピューターの使い方」です。

どこが違うのでしょう?
 
今までのコンピューターの使い方(演繹的)
これまではやりたいことの手順をプログラムに書いてコンピューターに実行させるのが主流でした。
 
手順をプログラムに書く例
三角形の面積を計算したい場合、下記の手順(ロジック)をプログラムに書けば完成
 
  • 面積 = 底辺 x 高さ ÷ 2
 
このプログラム、底辺と高さを入力すれば常に正しい答えを出してくれます。
 
でも世の中には手順をプログラムで書くのが難しいケースが多くあります。例えば下記2つのケース 
  • カードの履歴データから不正使用データを見つけたい
  • たくさんくるメールの中から迷惑メールを判別して削除したい
カード不正、迷惑メールとも色んな手口があり、新たな手口も出てくるのでそれを全部調べてプログラムに入れるのは無理です。どうすればいいでしょう?
 
機械学習の場合のコンピューターの使い方(帰納的)
コンピューターにやらせたいことがあるのだが手順が説明できない (=手順をプログラムに書くのが難しい) 、そんなケースで使われるのが機械学習です。
 
機械学習のアプローチ方法
従来の方法では難しかった下記2つ、機械学習のアプローチをとるとどうなるでしょう?
  • カードの履歴データから不正使用データを見つけたい
  • たくさんくるメールの中から迷惑メールを判別して削除したい
カード不正利用、迷惑メールとも個々の手口すべてを網羅した検出ロジックを作るのは難しいけど、過去のデータ(カード履歴データや過去のメール履歴)を元に「こういう取引データの場合は不正使用の可能性が高い」とか「こういうメールは迷惑メールの可能性が高い」とか傾向を見つけてそれで不正取引、迷惑メールを判別しよう、というのが機械学習のアプローチです。
 
学習
カードの方を例にとると、まず過去の履歴データに不正使用、正常取引の情報(これをラベルと呼ぶことにします)を追加したものを用意します。これを『学習データ』と言います。
コンピューターにこのデータをインプットして、履歴データの情報(取引日時、場所、品目、個数、金額、etc...)から不正使用を判別できる方法が無いかを調べます。この方法にはいろんな種類があります、履歴データの各フィールドに重み付けをして不正利用と高い相関関係を持つ重み付けを発見する方法はその代表的なものです。
この学習データを使って最適な重み付けを決定していく過程を『学習』と呼んでいます。
 
テスト
学習の最に気をつけなければならないのは『オーバーフィッティング』です。これは学習データに特化した形で重み付けを決めてしまったため一般性がなくなってしまって、他のデータでは正しく分類ができなくなる状態を指します。オーバーフィッティングを避けるために学習した重み付けを使って別のデータを分類して、正しく分類できるかを確認します。この過程を『テスト』と呼んでいます。
 
本番
学習、テストを完了した重み付けを本番環境で使います。本番環境でもデータを使って『学習』していくことでさらに最適化された重み付けにして、分類の精度を上げていくことができます。
 
データを使ってコンピューターが『学習』し最適な重み付け(パラメーター)を決定していく、このようなアプローチを機械学習と呼びます。
 
機械学習の特徴
 
(1) 汎用的である
従来型のアプローチではプログラムにロジックが全てつまっていました、なので用途毎に特化したプログラムを作成する必要がありました。
機械学習の場合、何をインプットデータとして使うかはその道の専門家(カード犯罪専門家やメールセキュリティー専門家)が行います、これを『特徴抽出』といいます。一旦特徴抽出が行われたら機械学習専門家はそのデータが何かをあまり意識することなく学習や推定方法を考えることに集中できます。このような仕組みになっているので機械学習のロジックは汎用的に使うことができる部分が多いです。
 
(2) データが無いと価値が無い
従来型のアプローチではプログラムが重要な資産でした、プログラムに知見や技術がつまっていたからです。
一方機械学習ではプログラム自体は汎用的なものでそれだけでは価値を生みません、データを使ってプログラムに学習させて初めて価値を生みます。機械学習アプローチでは質のいい学習データが重要な資産になるのです。
 
(3) おおよそ正しい
従来型のアプローチでは インプットに対して必ず正解を返していました。
機械学習アプローチでは常に正解とは限りません。おおよそ正しい答えを返すのが機械学習です。
おおよそ正しい、というといいかげんそうですがどのくらいの精度で正しいかは統計的アプローチで説明することができます。
 
今回例として紹介したのは機械学習の中で『教師有り学習』というものです。この他に教師無し学習、強化学習などいろいろな学習タイプがありますが、どれもロジックをプログラムするのではなくデータを元に学習するという部分は同じです。
 
機械学習のアプローチでは必ず正しい答えを導くロジックがあるわけではなく、多くのデータから帰納的に「おそらく正しい」答えを導くので「帰納的アプローチ」とよんだりします。
 
 
 
 
 
 
 
 
 

ベイズ的な考え方

ベイズ的な考え方をクイズ番組の最終問題にありそうな設定でお話します。

『さて最終問題です。客席に座っている100名の観客から1名を選んでください。選んだ方が広島出身ならあなたに100万円を差し上げます。選ぶ前に観客のみなさんに一つだけ質問することができます。質問を考える手がかりとして観客の皆様に事前に行ったアンケート結果をお渡しします。さあ強運と頭脳でチャンスをつかんでください。』

 

質問しないで運に任せると (事前確率)

 アンケート情報によれば100名のうち10名が広島出身者、質問しないで運に任せて選ぶと当たる確率は10パーセント、くじ運わるいから厳しいか。。。

 

どんな質問をする? (尤度と事後確率)

質問を考えるためにアンケート情報をみているとこんなのを発見しました

  • 広島出身者の90パーセントが和食派

おー!広島出身者の90パーセントが和食派、ということは「あなたは和食派ですか?」と聞いて手を上げた人から選べば当たる確率あがる! ん、、、、なんか違うか。。

 

これは『広島出身者が和食派である』確率と『和食派が広島出身者である』確率を混同している例ですね。

「広島出身者の90パーセントが和食派」からわかるのは『広島出身者が和食派である』確率が高いということ。

「あなたは和食派ですか?」という質問で当選確率があがるのは『和食派が広島出身者である』確率が高い場合です。

 

「あなたは和食派ですか?」と質問すると当選確率はあがるのか?

「あなたは和食派ですか?」の質問が有効かを判断するためには追加で情報が必要です。アンケートを読んでいるとその情報を発見。

  • 他県出身者の90パーセントが和食派

広島県出身者も他県出身者も90パーセントが和食派、ということはこの質問をして挙手した人から選んでも確率は変わりません。図示するとこうなります。

f:id:kenshi18:20160225092219g:plain

*この質問に挙手する人は広島出身者の9名と他県出身者の81名で合計90名、ここから選んで広島出身者があたる確率は質問前と変わらず10パーセントです。

 

「あなたはカープファンですか?」で当選確率はあがるのか?

 アンケートを調べているともうひとつ情報を発見しました。

  • 広島出身者の70パーセントがカープファン
  • 他県出身者の10パーセントがカープファン

カープファンの確率は広島出身者の方が高い、ということはこの質問は有効です。図示するとこうなります。

f:id:kenshi18:20160225092320g:plain

*この質問に挙手する人は広島出身者の7名と他県出身者の9名で合計16名、ここから選んで広島出身者があたる確率は約 44パーセント、この質問は正解率あげるのに有効です。

 

ベイズ的な考え方

事前確率

質問する前の正解確率10パーセント (100名中10名が広島県人)を事前確率といい、式ではこう表します。

事後確率

質問した後の正解確率を事後確率といい、式ではこう表します。

尤度

広島出身者が和食派である確率、他県出身者が和食派である確率、広島県人カープファンである確率、他県人がカープファンである確率を尤度といい、式ではこう表します。

  1. P(和食派|広島県人) = 90%       広島出身者の90パーセントが和食派
  2. P(和食派|他県人) = 90%           他県出身者の90パーセントが和食派
  1. P(カープファン|広島県人) = 70%   広島出身者の70パーセントがカープファン
  2. P(カープファン|他県人) = 10%     他県出身者の10パーセントがカープファン

質問によって事後確率があがるのは1の確率が2の確率より高い場合です。

 

カープファンが広島県人である事後確率を求める式はこんなかんじ。これがベイズの定理です。

P(広島県人|カープファン) = P(カープファン|広島県人)  x P(広島県人) /P(カープファン) 

越境するITというタイトルについて

 このブログのタイトルは「越境するIT」です。このタイトルにしたのは、ITの適用範囲がここ数年でどんどん拡大してこれまでカバーしていなかった場所に "越境して" 進出している印象を持ったからです。越境後の世界で必要となる新しいITリテラシーをこれから記す3つのエリアで語ってみたい、という思いを込めて「越境するIT」を選びました。

 "越境の様子" を3つのエリアで表したのがこちらの図です。

f:id:kenshi18:20160310084313g:plain

      

 

それぞれ簡単に説明すると

データ ~構造化データから非構造化データへ~

これまでコンピューターは主に「構造化データ」を扱ってきました。ざっくりいうと "Excelのシートでまとめることができる、きちんと形式の決まったデータ" です。

しかし世の中見渡してみると「構造化データ」は全体の20%にすぎません。残りの80%は「非構造化データ」といわれるもの。ざっくりいうと つぶやき,メール内容、 画像、声など形式の決まっていないデータです。これを活用しない手はない、ということで非構造化データをコンピューターが処理できる形式にして活用しようというのが最近の流行です。

 

処理方法  ~演繹から帰納へ~

コンピューターはこれまで「論理的にやり方を説明できる」ものを実行することが得意でした。足し算、掛け算、会計の決算処理、その他色々。これらはそのやり方をプログラムとして作成し、それをコンピューターに実行させればOKです。この場合同じ入力に対して必ず同じ答えを出します。これを演繹的とか確定的とかいいます。

一方世の中を見渡すと私たちがやってる行動には「論理的にやり方を説明できない」けど無難にこなしているものが多くあります。人の顔を見て喜怒哀楽を判断したりするのも"判別の仕方を教えて"といわれても難しいですよね、もっと身近な例でいうと椅子っていろんな形のものがあるのにぱっと見て「あ、これは椅子だ」って判別できるのも"椅子を判別する論理的なロジックを教えて"といわれると言葉につまるのではないでしょうか?人間は「人の喜怒哀楽」、「これは椅子?」を過去の経験から学習して判断していると思われています。同じことをコンピューターにやらせようというのが『機械学習』といわれる分野です。機械学習では判断のロジックを埋め込むのではなく、判断の精度をあげる学習方法をロジックとして組み込んでいます。この方法だと常に正しい一定の答えを得るわけでは無く、人間と同じく間違えることもあります。経験から一般法則を導き出しておおよそ正しい結果を高い確率で出すことができるので帰納的といわれています。

目的 ~生産性から創造性へ~

コンピューターはこれまで主に生産性を上げるために使われてきました。

家計簿つけるのにそろばんと家計簿用のノートでやってると計算に時間かかるし間違いもする、検算してノートに書いて、でもやっぱり間違ってた!となると取消線でノート修正したり。これエクセルでやると段違いに効率が良くなり生産性が上がります。企業の決算にコンピューター使うのも基本的には同じ理由。

やるべき事のスピードを上げて生産性を高める、これまでコンピューターはこの分野で大きな活躍をしてきました。
 
コンピューターの活用範囲を生産性向上だけでなく、意思決定のような創造性を高めるために使えないかとという発想が出てきました。従来の構造化データを使って現状を把握して意思決定の助けにするのBIとよばれている分野はもともとありました。そこから進んでTwitterなど非構造化データを分析対象にすることでさらに活用範囲がひろがるのではないか、機械学習の活用で「明確にロジックを記述することのできない」ような意思決定を助けることができるのではないか?という期待が高まっています。
ただし最終的に意思決定を行うのは人間です。人間は判断するときに過去の経験(主観的直感的判断)とデータ(客観的論理的判断)を合わせて使います。まわりの環境が変わらない状況では「過去の経験」がすばやい意思決定を助けます。しかしまわりの環境が変化した時「過去の経験」が判断の邪魔をする場合があります。まわりの状況を見て主観と客観を冷静に使い分けることが大事です。
 
これからこのブログで3つの分野の詳細を綴っていきたいと思います。よろしくお願いします。
 

 

 

このサイトの掲載内容は私個人の見解であり、必ずしも私が所属する会社、組織、団体の立場、戦略、意見を代表するものではありません