第7章 機械が学習するとは

{ブログの中のナビゲタ}既に前章までに何回か「学習」あるいは「機械学習」という文字がでてきました。この「機械学習」は、AIの能力を顕著に高めることができたとても重要な項目です。この章は、まず機械学習について入門的な解説を行います。

1.一世を風靡した(?)AIの能力

 もう5年以上も前のことだが、「アルファ碁」というAI(厳密には「アルファ碁マスター」というバージョン)が、その時点で世界最強と言われた中国のプロ棋士柯潔(カケツ)九段に完勝した、というニュースが世界中を駆け巡ったことを覚えている人は多いだろう。
 その記事を読んだ御曽崎は「ああ、やっぱりコンピュータは人間と比べて、メモリー量も膨大だし、計算も突拍子もなく速いから、もし自分がこうしたら、相手はどこかに打ってくる、そうしたら自分はこうやって、また相手はどこかに打ってくると何手も先のことが読めるから強いのだろうな。一体何手くらい先まで読むのだろうか。ひょっとして最後までのあらゆる可能性を読むのかな」などと考えをめぐらした。御曽崎に限らず、その様に考える人は多いかも知れない。
 ところが、確かにコンピュータは人間と比べれば、メモリー量も膨大だし、計算も突拍子もなく速いというのは事実であるが、碁石の置き方の組み合わせの数も膨大で、あらゆる置き方の組み合わせを考えていく方法をとるのは、現存するどのようなコンピュータを用いても実質的には不可能なのである。なお、現在開発途上にある量子コンピュータは、既存のコンピュータの中で特に計算の早いスーパーコンピュータよりも遙かに早く計算できると考えられているが、まだまだ開発途上で、適用される分野が極めて限られている。
 しかしこのように手数が無数にあり、難易度が高いとされていた囲碁でも、AIの実力が人間をしのいだのは確かである。ではどのようにして、AIは人間の最強のプロを打ち負かせることができたのか。それはほかならぬ学習のおかげである。
 このように、学習機能はAIに画期的な変化をもたらした。AIの関係者のあいだで、学習ということについてはかなり以前から関心は寄せられていたが、コンピュータの能力がそれほど高くなかった時には、機械学習に関する開発も思うように進められなかった。現在ではそのコンピュータの能力が高まってきたのも事実であるが、近年学習機能がAIに画期的な変化をもたらすようになったのは、それだけが理由ではない。学習機能はどのようにして実現され、またそれがどのようにしてAIの能力を高めることができるようになったのであろうか。

{ブログの中のナビゲタ}上の文に「碁石の置き方の組み合わせの数も膨大である」とありますが、これがどのくらい大きな数なのでしょうか。「専門解説コラム:時間のかかる話」に示してあるので、学習効果の素晴らしさを理解するためにも、ちょっと読み流して下さい。

2.御曽崎の疑問

 御曽崎も「機械学習」とか「ディープラーニング」といった言葉を何度も目にしたことがある。しかしこれらが何であるか、いつまでたってもよく分からない。「ディープラーニングとは何か」を簡単に説明しようとしている新聞のコラムも何回か読んだが、正直よくわからない。ある時、「ディープラーニングは原理的には単純な最小二乗法にすぎない。つまり、知能の働きは、単純な近似計算の寄せ集めに過ぎない」という解説を新聞でみて、ますます分からなくなった。
 最小二乗法そのものは第5章の中の「AIにおける統計の利用(3)」で確認したが、さりとて「学ぶこと」が単純な近似計算とはどういう意味なのか、もし近似計算ならばなぜ今頃ディープラーニングがもてはやされるようになったのか、といろいろな疑問が沸々と湧いてきた。
 そんな中、ある時御曽崎は意を決して、書店の立ち読みでディープラーニングがどんなものかを理解してしまおうと考えた。ディープラーニングに関する本が何冊かあったが、その中の一冊を取り出して中を見ると、やたらたくさんの行列式が並んでいるのが目に入った。御曽崎は「なんだこの行列式の行列は」「行列式などをみるのは何十年ぶりだな。もう縦も横も忘れてしまったな」とつぶやいて、すぐに本を閉じてその場を立ち去った。
 ディープラーニングについて理解しようとしたがうまくいかなかった御曽崎は、今度は機械が学習するとはどのようなことが考え得るか想像してみたが、ここでもすぐ挫折した。
 子供が学習塾に通って勉強をしている御曽崎にとって、学習と勉強は同じという気持ちが強い。学習塾に限らず、小学校にしても大学にしても、そこで勉強することをイメージすると、「学習とは知識や考え方を増やしていくこと」で、さらに新しい知識をふやしていくだけでなく、忘れていた知識を思い出していくことも学習に含めてもいいだろうと思っている。しかし機械が知識を増やしていくのはともかくとして、忘れていた知識を思い出していくなどということは想像できない。「結局、機械がお勉強をするとは、なんのこっちゃ」といった、やけっぱちに近い気持ちさえ湧いてきた。
 さらに「お前は学習しないね」と言われたとき、あるいは言ったとき、それは何を意味するのであろうか。文字通り勉強しないという意味の場合もあるが、「ちっとも進歩しない」あるいは「なにも変化しないね」ということを意味する場合もある。この場合は学習するとは、知識を詰め込むという行為よりも、知識を得ることによって行動が変化することを意味する。しかもただ一回だけではなく、永続的に行動が変化することをいう。
 例えばゴルフをしているときに失敗して、うまい人から「こうするといいぞ」と言われて「ああそうか」と返事をして、言われたようにしてその場だけうまく切り抜けても、そのあと二度とそのようにしなかったならば、学習したとは言えない。右にスライスするのに対して「こうするといい」と覚えても、それを使うようにならなければ、学習したと言えない。頭ではそう分かっていながら、どういうわけかそれができずに御曽崎のゴルフは伸び悩んでいる。
 その悩みはともかくとして、これらから、多少俗っぽい言葉であるが、「学習する」とは「それをする前よりも利口になる」と考えてもよいのかなと考え始めた御曽崎ではあるが、いずれにせよ機械がどのようにしてそれを実現するのか、想像できない。身の回りにあるいろいろな機械を見渡して「人間が機械を改造すれば別だが、機械が自分で学習して前よりも利口になるなんて」とつぶやいた。

3.AIにとって学習とは

{ブログの中のナビゲタ}機械あるいはAIが学習するとはどのようなことかを理解するために、まずは一つの例で考えてみましょう。この例で「なるほどこれが、機械が学習するということか」と理解できれば、御曽崎の疑問の一つである「機械がお勉強をするとは、なんのこっちゃ」と言う疑問がある程度払拭されることを期待して。

 あまたある新聞記事の中から、自分の関心がある記事を選んで教えてくれるサービスを考えてみよう。例えば「人工知能」というテーマに関心がある場合。「人工知能」をキーワードとして入力すると、システム側は「人工知能」という単語を含む記事の存在を教えてくれる。一見便利そうに思えるが、実際にやってみると、思った程ではないことがありうる。もしこのサービスを提供するシステムが何も学習しなければ、なかなか痒いところに手が届かないのである。その理由はいくつかある。
 使うキーワードにもよるが、場合によってはとても眼を通しきれないようなたくさんの記事がリストされる。本当に欲しい内容を含まない記事もリストされることがある。また、同じ「人工知能」という分野であっても、人によって関心のある分野が異なるであろう。逆に、もしタイトルや文中に「人工知能」という単語がなければ、たとえ人工知能に関係する記事でもリストされない。そうかと思うと、全く関係のない記事がリストされることもある。例えば「人工衛星を使って知能の高い動物の動きを観察する」といった文章を含む記事がリストされることがありうる。これはシステムが人工衛星の「人工」と、知能の高いの「知能」を検出して、「人工知能」に関係があるだろうと判断するためである。もちろんこの場合は人工知能には関係がない。このように、なかなか思うようなリストが入手できないことがありえる。
 ところが、もしこのようなシステムが学習機能を持つと、その利便性が向上してくる。例えば、示されたリストの中から一人の利用者が、これは関心がある、これはないといった具合に、システム側にフィードバックをする。これを何度か繰り返して行くうちに、システムはこの利用者が関心を持つだろう記事だけを提供するようになってくる。
 これは学習効果と言える。機械が示す学習効果なので、機械学習と言われるのだが、機械(ここまでの説明ではシステムと言ってきた)は、どのような仕組みでこのような学習を実現することができるのであろうか。その方法は多種あるが、一つの例で考えていこう。
 システムはこの利用者からフィードバックを受け取るたびに、それらの記事の中に、ほかにどのような単語が含まれているかを「関連する単語集」として記憶していく。単語のみでなく、それらの組み合わせ方なども記憶していく。これらの単語や組み合わせによって、記事をこの利用者にとって、関心あり、なしの二つのグループに分ける基準を作成していく。このように記事をグループ化する基準を作成できれば、その後は、この利用者が関心を持つグループに属するであろう記事だけを提供することができるようになる。
 さらに、利用者が関心を持つと推測した記事、あるいはどちらとも判断できないような記事を提示するたびに、「これは関心ありますか」と聞くようにする。システム側は、その返事によって記事をグループ化する基準を修正していけば、推測の精度も上がってくる。「関心ある」と返信された記事と「関心ない」と返信された記事のそれぞれの中に含まれる「関連する単語」の種類や組み合わせを追加したり、変更することにより、基準を変えていく。これは学習効果を高めていくことになる。
 このような学習を繰り返していくうちに、システム側はユーザーの関心がある記事をより正確に探してくるようになる。当然そのような過程を経て「人工衛星を使って知能の高い動物を探す」といった文章を含む記事は関心無いであろうと判断し、提示しないようになってくるし、また逆にたとえ「人工知能」という単語を含んでいなくとも、関心を示す「関連する単語」を多く含む記事を提示することができるようになる。
 現在、「人工知能」は技術進歩が早い分野の一つである。そのためそれに関連する記事も取り扱う分野がどんどん広がっていく。それでもシステムが継続的に新たに記事に登場する単語や組み合わせを加えながら「関連する単語集」を編集していけば、記事内容の広がりや変化についても追いついていける。これは継続的な学習といえる。
 この例からわかるように、記事の中に出てくる単語の種類やその組み合わせといった周囲の環境を理解し自ら学ぶAIは、与えられるキーワード検索をするといった、決められた作業しかできないプログラムよりも賢くなっていくのである。

{ブログの中のナビゲタ}いかがでしょうか。ここに挙げた「新聞記事の中から自分の関心がある記事を選んで教えてくれるサービス」の例で、機械学習のイメージができたでしょうか。ここからは、もう少し一般化して、系統的に考えて行くことにしましょう。
 ちなみに、御曽崎が新聞で読んだ「ディープラーニングは原理的には単純な最小二乗法に過ぎない。つまり、知能の働きは、単純な近似計算の寄せ集めに過ぎない」という解説については、「第20章 人間の脳とAIのディープラーニングの仕組み」で、その意味について考えていきます。

4.機械が学習するプロセス

機械学習がねらう成果は「与えられたデータなり情報を分析・識別して、何らかの指示なり問い合わせに対して結論を出す際に、より正しくあるいは高信頼度にすること」と言っても良いであろう。前章に挙げた例で言えば、次々に入ってくる新聞記事が、「与えられるデータなり情報」で、その中で利用者にとって関心があるだろう記事を選び出すことが「指示なり問い合わせ」で、それに対する回答が結論に相当する。
 これを機械が自動的にやれるようになるためには、大きく二つのことが必要になる。この二つは学習フェーズと予測フェーズと呼ぶことができる。
 一つ目の学習フェーズは「与えられるデータを分析・識別」するための「何らかの規則や判断基準など」を見出すことである。先の例では、「人工知能」に関係する記事を大量に読み込み、どのような記事が利用者にとって関心がありそうな記事であるかを判断するための、「何らかの規則や判断基準など」を見出していくことになる。
 この「規則や基準」を見出すのは、ほとんどの場合統計を用いる。すなわち、ある程度の量の「事前のデータ」(学習用データ)を統計的に分析し、特徴などを識別し、判断基準を定量化していくのである。先の例では、利用者にとって関心がありそうな「人工知能」に関係する記事の中には、どのような単語が含まれているか、あるいはどのような単語が組み合わされていることが多いかなどを統計的に分析していくのである。
 さらにたとえ「人工知能」と言う単語が含まれていても、どのような単語、あるいはどのような単語の組み合わせがある場合は関心のある記事ではないと考えられる、といったことも統計的に分析していく。これらの統計処理は、前章で述べたn次元空間の概念、すなわちn次元の特徴空間に適用するのが一般的である。
 ここから想像できるように、機械学習は統計処理に頼ることが多いため、一般にはかなりの量の事前のデータを必要とするのである。なお、このように事前に大量のデータを必要としない機械学習方法も存在するが、それらについては次章で考察していく。

 次に二つ目の予測フェーズは、それら見いだされた「規則や判断基準など」を利用して、本来の利用目的を実行することである。この予測フェーズでは個々に予測を行なうためのデータ(予測用データ)を入力し、AIが予測結果を出力するのである。再び先の例では、データである新たな記事(予測用データ)を入力して、そこに使われている単語を解析して、その前に見出した基準などと照らし合わせて、利用者が関心あるであろう「人工知能」に関係する記事か否かを判断することである。
 AIが学習機能を用いる時は、当然そのAIが実行する目的によって学習する対象が異なる。上の例では記事という外部のデータについて学習しているが、AIが利用者のことを学習する例もみられる。第5章の中の「10.理解力(1)他人の気持ち」であげた、利用者の顔や音声から人間の喜怒哀楽を推定するのはこの例である。
 AIが利用者について学習する面白い例として、パソコンの利用者を特定する機能などもある。これはパソコンにインストールしたAIアプリケーションが、利用者のタイピングのクセを学習し、特定のキーとキーの入力にかかる時間や変換の方法などの特徴を覚える。これは学習フェーズである。以後、そのパソコンを誰かがタイピングするたびに「本人らしさ」を自動で採点し、低い点数が検知された時に、持ち主と異なる人あるいはウイルスなどが利用していると判断し(予測フェーズ)、自らが強制ログオフなどの措置が取れるようになるといったものである。

5.機械学習を続けるということ

 ここまで読むと、「学習フェーズで用いられたデータ(学習用データ)に基づいて行われる予測・決定は、それらのデータに依存することになり、なされる予測・決定は常に適切という保証はないのでは」と気づいた読者もおられよう。その通りである。そのリスクを軽減させるためにも、このデータはたくさん用意することが必要になってくる。しかしながら、データをたくさん用意すればもう安心ということでもない。
 先ほどの記事の例の場合では、学習用データである関連しそうな記事をたくさん集めて「関連する単語集」や「規則やルール」を作り出して、利用者に興味があるだろうとAIが判断しても、結果として利用者から「興味なし」とされる場合もありうる。それに対して何もしなければ、それ以上の学習はなく、当然ながらそれ以上の改善は期待できない。
 それだけではなく、たとえば「人工知能」に関する技術進歩や応用面の拡大によって、それまでとは違う単語や組み合わせが載った記事が出てくることも十分ありうる。このように次々に新たな情報が集められると、一度学習して獲得した「規則やルール」も変えていく必要がある。もし機械が学習を継続するようにプログラムされていれば、継続作業によって得られた変化を活用して、一度策定した「規則や判断基準など」を見直して、より正確な予測・決定をしていくことができる。
 これは初期の学習段階の期間に対して、実用段階での継続的な学習ということができる。現在、機械学習を組み入れているAIの多くは、この継続的な学習も実施している。これはすなわち、予測フェーズを実行しながら学習フェーズも行なうことを意味する。
 この継続学習は典型的なPDCA(Plan, Do, Check, Action)のプロセスといえる。すなわちPは学習フェーズ、Dは予測フェーズ、Cは継続的な学習のためのフィードバックや新たなデータの検証、Aは学習フェーズで作成した「規則や判断基準など」の修正や改良である。

{ブログの中のナビゲタ}「専門解説コラム:AIの簡単な歴史」で紹介したように、機械による学習機能が導入され、それによってAIが目覚ましい進歩を遂げるようになってきて、第3次AIブームが起きて現在もなお続いています。ではなぜ、機械学習はAIをこのように大きく進歩させることができたのでしょうか。次に、そのあたりを探ってみましょう。

6.なぜ機械学習はAIを大進歩させることができたか

 それまで、すなわち機械学習を導入する前のAIは、全てのことをプログラムで定義していかねばならなかった。ところが学習の概念を導入すれば、試行錯誤的に最適に近い判断基準を作っていくことができる。プログラムで設定する代わりに、データを学習することで、どうすべきかが決められていくということである。これによってプログラミングを大幅に省略できるようになったのである。
 このプログラミングを大幅に省略できるようになったメリットは、単に開発の時間を短くすることができたということだけではない。それよりも遙かに大きなインパクトをもたらした。すなわち、それまで理論的にはこれを全てすれば良いのだが、それはあまりにも多岐に及ぶ、あるいは複雑過ぎるために、実質的にプログラミングをすることが不可能であったプロセスが、実行できるようになったことにある。
 機械学習は問題と模範解答をたくさん集める、あるいは成功事例や失敗事例をたくさん集めることによって、何が真であるかを推測するようなものである。その意味で機械学習は「専門解説コラム:帰納的推論と演繹的推論」で論じた帰納的推論によって、学習フェーズでルールを設定し、その結果をもって予測フェーズに入っていくと言える。
 多少専門的な言い方ではあるが、機械学習の概念が導入されるまでは、コンピュータは全てのタスクが明示的にプログラムで示され、全てのことがきちんと定義されるなど、極めて論理的構造であり、演繹的であったのに対して、機械学習は帰納的な結論や推論を導き出すという手法を織り交ぜたことが、画期的ということができよう。

7.機械学習の実用的な効果例

{ブログの中のナビゲタ}繰り返しになりますが、AIは学習機能の導入により、飛躍的な進歩の道を進み始め、今なお進歩し続けています。今では学習機能を利用するAIはたくさんあり、その効果の例は枚挙にいとまがありません。既にこれまでにもいくつかの例を示してきましたが、機械学習の理解を深める意味で、さらにもう少し挙げてみましょう。

 機械学習を利用した分野は実に多岐に渡り、既に情報検索、画像認識、音声認識、言語処理、囲碁、感情分析などいろいろな分野を挙げてきた。その中で二、三の具体的な効果例を挙げてみることにする。
 最初は、比較的単純な例。地方自治体での事務処理において、各種申請書の処理はかなりの負担となっている。この申請書の処理にAIを活用した光学文字認識機能(OCR)を取り入れて、画像をスキャナーに読み込ませるだけで、AIが画像処理をして、必要な情報をシステムに自動入力してくれるようにすれば人手の負担はかなり軽減する。しかし対象となるのは手書きの文字なので、そのままではあまり高い認識率は期待できない。そこでAIに読み取らせる情報を事前に学習させることで、文字の認識率などを高めることができた。これは手書き文字の自動読み取りというかなり前からあるシステムを、AIによる学習機能を持たせて読み取り精度を上げ、高度化した例である。
 次は企業が提供するサービス機器の接続や設定、不具合などの技術的な問い合わせ窓口となる「テクニカルサポートセンター」におけるAIオペレーター支援システムの例である。このAIオペレーター支援システムは音声認識を活用して、利用者とオペレーター間の会話ログの音声をテキスト化し、それを基に検索エンジンを活用して回答集の中から最適コンテンツを自動検索するものである。しかしながら技術の進歩や使い方の多様化に伴って、次々と新しい種類の問い合わせが飛び込んでくる。それに対して何か手を打っていかないと、適切なコンテンツが見つからないようになってくる。
 そこでこのAIは、問い合わせ内容を継続的に学習することによって、常に回答集のナレッジの蓄積をアップデートしていきサービスの向上をめざしている。このシステムはサービスを開始してからも、利用者から次々と入ってくる新たな問い合わせによって、検索ルールを追加・修正している。さらに時として、これら新たな問い合わせに対する新たな回答を作る必要を見出し、そのことをオペレーターに知らせる。これらのナレッジの蓄積によって、問い合わせと回答集の関連度を強化し、回答の精度向上を図っている。さらに利用者から「テクニカルサポートセンター」に関する満足度をフィードバックしてもらうことでも、品質向上を図るための継続的な学習もしている。
 次の例は、4種類の情報(身長・体重・性別・年齢)とスマホで撮影したわずか2枚(正面と側面)の全身写真を基に、写っている人の体の各部位の寸法を高精度で推定できるシステムである。アパレル企業のオンラインショップなどで利用され、このAIを利用する各社はユーザーごとに最適なサイズを推奨するサービスを提供する。ユーザーはAIが採寸した数値を参考にして商品のサイズを選択して購入できる。
 このシステムでは、ユーザーから収集したリアルなデータセットと、独自のディープラーニング技術を使ってリアルデータを拡張・生成したバーチャルなデータセットを保有しており、さらなる精度向上のために、採寸精度の揺れが少ない3Dボディースキャナーと比較しながら精度を評価する学習もすることによって、誤差を低減させている。
 二つ以上の「規則や判断基準など」を独立に見出して、それらを組み合わせることによって、さらに一段高い学習をさせる例もある。AIに生菓子の材料や配合といった製造にかかわるデータと販売実績との関係を学習させ、また天候や温度といった外部環境に関わるデータと販売実績との関係を学習させる。この2種類の学習の結果を統合的に分析させることによって、どのような材料を配合した商品が、どのような環境条件で、どの店舗で売れるのか、といったように細かく適切な出荷量の予測をできるようにした。これによって、工場の適切なライン編成や人員配置ができ、生産コストや廃棄ロスの抑制を目指している。
 このように関連する複数の問題について同時に学習させ、メインテーマに関する予測精度を向上させるのはマルチタスク学習と呼ばれる。気象衛星からのデータ、各観測地点からのデータ、台風の動きに関するデータ、周辺諸国から入手するデータなどについて複数の学習を行って、より予測精度を上げた天気予報を提供できるようになったのも、このマルチタスク学習の効果といえる。
 これらの例から分かるように、機械学習のメカニズムを取り入れたAIは実に多くの分野で実用化されている。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です