ここ数年の間に、コンピュータ工学に関連して人工知能・AI(Artificial Intelligence)や機械学習(Machine Learning)がブームになってきています。例えば2016年春に報道された、囲碁で人工知能(Alpha GO)と人間のプロ棋士が対戦して人工知能が勝ったというニュースは、人工知能・機械学習の潜在的な可能性を世界中に広く認知させる大きなインパクトがありました。図1のような将棋やチェス・囲碁は、人工知能・AI研究の伝統的テストケースなのです。そして、そのニュース以降、実用上や産業上の人工知能の応用例がしばしばテレビや雑誌で報道されるとともに、膨大なデータとコンピュータパワーの活用技術および人工知能技術に関して、予測や憶測を交えた様々な未来の可能性が世界中で議論されています。
それらの予測の中には、これまでSFや映画の世界でしか見られなかったような空想に近いものもあります。しかし、情報工学や情報科学の分野で過去数十年にわたって進められてきた人工知能・機械学習の研究が、いよいよ身近なシーンで実用化される段階に来たことは確かです。近い将来、大勢の人が人工知能によるサポートや支援・働きをあたりまえのように活用する時代が来るかもしれません。
ところが、実は人工知能・機械学習の研究は現在もまだまだ発展途上なのです。つまり、人工知能は特定の分野や特定の機能に限定すれば優れた性能を発揮できますが、人間の代わりが100%できるようなものは2017年1月の現時点ではまったく存在しません。
本稿では、人工知能・機械学習というものの考え方や働きについて中学生高校生(小学生にも!?)にもわかるよう平易に解説します。しかし、実際に人工知能や機械学習のプログラムやシステムを作るのは大変ですので、New ZealandのWaikato大学で開発されたWekaという著名なフリーソフトを用いて、いくつかの例題を実際に実行し、シミュレーションしてみましょう。いつか将来、小中学生や高校生のみなさんの中から、多くの優れた人工知能開発者が現れることを心から期待しています。
最近のニュースに出てくるAIや人工知能、機械学習という言葉は、本来はお互いに少しずつ違うものを表しています。ですが、あいにくニュース記事ではこれらを区別すること無く「人工知能」として同じように呼称されています。ただ、最近の考え方としていずれにも共通していることは「大量の学習データを活用して構築されている」という点です。
これを例え話で説明してみましょう。図2のように、小中高生のみなさんは学校の授業や宿題でたくさんの練習問題を解いて数学や算数の問題の解き方を学習します。漢字や英語の読み方、書き方も学習します。そして、それらの中間テストや期末テストで問題を解くことによって成績が出されます。その結果、良い成績を取っていれば、みなさんは授業で習った数学や算数、国語、英語の内容を理解しちゃんと学習しているといえます。一方、もし良い成績で無い場合は再度勉強し直して、またテストを受けます。
このような「学習」→「テスト」と同様のことを、大量のデータに対してコンピュータで極めて効率的に行う技術を「機械学習」と呼びます。そして、機械学習システムをもう一歩進めて様々な問題へ応用した際に、しばしば「人工知能・AI」という呼び方がされます。ここで重要なことは、「大量の学習データをどう使って、どう学習させるか?」なのです。従って、学習データそのもののクオリティや種類、使い方、学習のさせ方等によって、様々な機械学習システムや人工知能システムと言われるものの違いが出てくるのです。
実は、Wekaというソフトウェアは本来、膨大なデータをまとめたり分析したりするためのソフトウェアなのですが、分析の方法としていくつかの機械学習や人工知能の基本的手法が試せるようになっています。本稿では、脳の働きを数理的にモデル化した最も基礎的な例として、①階層型ニューラルネットワーク(Multilayer Neural Network)と、②k-NN(k-Nearest Neighbor)法を利用してコンピュータによるシミュレーション実験をやってみましょう。また、本稿の最後にこれらの手法の少し詳しい解説を記載していますので、興味のある方は読んでみてください。
下記の場所からWekaをダウンロードできます。
http://www.cs.waikato.ac.nz/ml/weka/downloading.html
ホームページの説明文は英語ですが平易なのでよく読んで下さい。Windows版とMac OS X版が選べます。また、それぞれStable VersionとDeveloper Versionがあります。通常はStable Versionで十分です。なお、2017年1月現在の最新版はWeka3.8.1ですが、デフォルトのままインストールすればOKです。本稿ではWindows版のweka-3-8-1jre-x64.exeというバージョンを利用しています。
インストールしたら、さっそく利用してみましょう。Wekaには、あらかじめいくつか学習のためのサンプルデータが用意されています。まず、Wekaを起動すると図3の画面が出てくるので[Explorer]をクリックします。
すると、図4のように[Weka Explorer]ウィンドウが開くので[Open file]をクリックし、[C:\Program Files\Weka-3-8\data]を開きます。すると、サンプルデータのリストが見えるので、ここで[breast-cancer.arff]を指定して開きます。また、図5のように上部のメニューから[edit]をクリックすると数値データを直接見ることが出来ます。図6が表示されたデータです。
さて、これで準備が出来ました。次は、いくつかの手法を用いて、実際にデータを処理してみましょう。上で読み込んだ[breast-cancer.arff]というデータは、肺癌患者の年齢や腫瘍の大きさ等の「状態」を表すデータと「肺癌再発の有無」を表す286件のデータです。すなわち、図7のように状態データから肺癌の有無を推定することができるAIを作ろうというのが目的です。
まず、Wekaでニューラルネットワークを使ってみましょう。
図8のようにメニュータブから[Classify]を選び、次に[Choose]をクリックすると機械学習・AIの手法を選ぶツリーメニューが現れるので、[weka]-[classifiers]-[functions]-[MultilayerPerceptron]を選択します。
そして、[Start]をクリックすると自動的に学習とテストが行われます。しばらくして、Status欄に"OK"と出たら完了です。図9のようにClassifier output欄に結果が出力されているはずです。
右側のClassifier output欄に色々な情報が出力されていますが、
[Correctly Classified Instances 185 64.6853 %]
となっている部分に注目してください。これは286件のデータ全体のうち185件、すなわち約64.7%が正しく推定されているということを意味しています(なお、皆さんの実行するコンピュータによっては少し違う数字になっているかもしれません)。つまり、サンプルデータ286件に対して、およそ3分の2を正しく推定できるシステムができあがっていることを表しています。これをさらに大きく発展させれば、様々な検査データを基にして病気を自動診断する人工知能システムを作り上げることが出来る可能性があります。実は、Alpha GOはここで試したニューラルネットワークを発展させた「ディープニューラルネットワーク」という仕組みを利用して作られています。
次に、k-NN(k-Nearest Neighbor)法という手法を使ってみましょう。これは機械学習の有名な手法のひとつです。図10のようにメニュータブから[Classify]を選び、次に[Choose]をクリックすると機械学習・AIの手法を選ぶツリーメニューが現れるので、[weka]-[classifiers]-[lazy]-[IBk]を選択します。これはk-NN法を使う手法です。
k-NN法を用いると図11のClassifier output欄に下記のように結果が出力されています。つまり、約72.4%が正しく推定されていることがわかります。これは、先のニューラルネットワークによる結果よりも高い精度になっています。
[Correctly Classified Instances 207 72.3776 %]
以上で人工知能・機械学習のシミュレーション実験は終わりです。上記のようにWekaを利用して、2つの異なる手法を使って同じデータを処理してみました。両者とも人工知能・機械学習の基本的な手法ですが、その推定精度は違うことがわかりました。その理由は色々あるのですが、大きな理由のひとつとして、いままでに開発されている多くの人工知能・機械学習の手法には、それぞれ異なる特性があり、得意な学習対象や機能が違うということがあります。そのため、同じデータを処理しても学習の結果や精度がそれぞれ変わるのです。また、今回試した2つの手法についても、色々な工夫を加えることによって性能が大きく変化します。従って、どの手法が一番優れているか?ということを示すのは容易ではありません。
そのため、現在でも世界中の多くの研究者が様々な手法に様々な工夫を加えたり、新しい理論・原理・アイデアを考案しており、優れた機械学習・人工知能のシステムを作り上げようと日夜努力を続けているのです。冒頭で触れたAlpha GOは、このような多くの努力によって生まれた人工知能システムのひとつなのです。Wekaはもともと機械学習の手法を用いてデータを解析するソフトウェアなのですが、他にもたくさんの機能があります。英語や用語の意味を少しずつ調べながら、他の機能も試してみてください。
ここでは、上記のシミュレーション実験で試した手法について少し詳しい解説をします。実験を行うだけでは、「なぜ?」という疑問が残るかもしれないと思いますので、興味のある方は以下を読んでみてください。現在の人工知能システムのほとんどは、コンピュータ上にプログラムとして作成されます。部分的にハードウェアとして作成されることもありますが、大多数はプログラム(ソフトウェア)として様々な方法が実装されています。下記では、シミュレーション実験で試したニューラルネットワークとk-NN法について簡単に解説します。
ニューラルネットワークは、人間の脳をモデルにした方法です。図12に示すように、実際の神経細胞(ニューロン)の働きを簡単化したユニットを多数並べた層を用意し、層間のニューロン同士を接続したネットワークを構成します。もし、3層のネットワークを構成した場合、各層を入力層、隠れ層、出力層と呼び、点線で囲まれている全体をニューラルネットワークと呼びます。また、多数のニューロン同士の接続部には全て重み係数があり、ニューロンが互いにやりとりする信号に各々重み係数がかかります。ここで、ある入力データPに対して適切な出力データQを出力するニューラルネットワークが学習によって自動的に作れるとしたらどうでしょうか?すなわち、上記で行った「肺癌の推定」のように患者の状態データを入力すると、癌であるか否かを出力する、ということが出来るようになるわけです。実は、上記のニューラルネットワークでの学習というのは、全ての重み係数をうまく調整することなのです。また、このように入力データと重み係数から出力データを計算するやりかたを少し難しい言葉で言うと「写像」と呼びます。
一方、k-NN(k Nearest Neighbor)法は「分類」という別の考え方で「肺癌の推定」を実現しています。図13のように、○印で表されたAというグループと、△印で表されたBというグループがあるとします。このとき、新しいデータとして赤い☆印が与えられた場合、この赤い☆印をAグループとBグループのどちらに分類すると良いでしょうか?
k-NN法では、次の方で分類するグループを決めています。すなわち、赤い☆印の周囲にある○印や△印を近い順にAとBの各グループ毎にk個まで数えて、個数が多い方のグループに分類するのです。図13ではk=3の例を示していますので、まず、赤い☆印から近い順に3個まで数えます。そうすると、○印が1個、△印が2個なので、赤い☆印は△印のグループすなわちBグループである、となります。もし、k=5とした場合は、赤い☆印から近い順に5個まで数えて多い方のグループに分類すれば良いのです。このように、何らかの基準に基づいてデータを「分類」するという考え方を持つk-NN法は機械学習の方法のひとつです。
上記の「肺癌の推定」では、Aのグループを肺癌である、Bのグループを肺癌では無い、とします。学習データとして選ばれた状態データは○印や△印の各点として図13のように散らばります。従って、新しい状態データが赤い☆印として与えられたとき、これがAグループなのかBグループなのかを分類すれば、肺癌であるか否かが決められることになります。
人工知能や機械学習の手法は他にもたくさんあります。そして、新しいアイデアや理論、新しい人工知能システムが毎日のように研究・開発されています。また、人工知能システムを実用化する研究も数多く行われており、病気の自動診断、人物認識、防犯カメラ、画像解析、株式予測、保険や融資の査定、ニュース記事の自動要約、日本語や英語等の外国語自動翻訳、音声認識、自動運転車、絵画の自動制作、小説の自動執筆など、多くの分野で応用研究が進められています。将来、色々なハードルを越えて、人間と同じように考えたり会話したり働いたりするSFの世界のような人工知能が生まれるかもしれません。今後さらに発展していく人工知能の世界が、皆さんをより良い未来へ導くことを期待しています。
掲載大学 学部 |
琉球大学 工学部 | 琉球大学 工学部のページへ>> |
私たちが考える未来/地球を救う科学技術の定義 | 現在、環境問題や枯渇資源問題など、さまざまな問題に直面しています。 これまでもわたしたちの生活を身近に支えてきた”工学” が、これから直面する問題を解決するために重要な役割を担っていると考えます。 |