2016年6月17日金曜日

三歩ひいてディープラーニングを見つめる

このエントリーをはてなブックマークに追加
Pocket

ディープラーニングと言う言葉を目にした人は少なくないと思う。人工知能に分類される一つの技術だが、ニューラルネットワークと言ういかにも人工知能といった名称の数理モデルを駆使しているところから、人々の興味関心を強く引いているようだ。これ自体は悪い事では無いが、実態以上に評価しようと画策する人々が出てきており、ディープラーニングが注目された翌年から第3次人工知能ブームが始まったかのような言説を見かける*1に、流行を作りたがる業界病を感じざるをえない。本当にブームなのか。報道だけ先行しているのではないのか。騙されないように、最低限の知識は入れておいた方が良さそうだ。

1. 計算機に方法を問わず推論をさせる技術

人工知能は誤解されやすい分野で、そもそも人工知能と言う単語自体が映画やアニメなどの創作物の影響で、往々にして誤解されている。確かに、1950年代に人間の思考パターンを真似る方向で人工知能研究は始まった*2が、実用的な結果は出せずに研究開発は低迷する。1960年代に大量の知識を蓄えて現実的なソリューションを構築する方向に舵を切り、エキスパート・システムが作られた。この時代の後の人工知能は、計算機に方法を問わず推論をさせる技術を意味するようになったと言って良いであろう。人間の思考パターンとはかけ離れた構造でも、人間が求める推論ができれば十分とする考え方だ。なお、身近な実用物はほとんど無かったが、OCR技術は50年代から開発が進み、80年代と90年代に広く普及している。

2. 90年代からの機械学習、特に教師あり学習の発達

この人工知能の中で、ディープラーニングは機械学習の手法の一つと位置づけられている。機械学習はかなり広い概念*3だが、学習データから分類器を構築し、その分類器で入力情報が何なのかを推論していく、教師あり機械学習が実用面では人気だ。男性や女性の身長や体重の事例を幾つも学習データとして与えて分類器を構築し、学習データに無い人物の身長や体重などを入力することで、その人物の性別と言う分類を推論して出力させるような事を指す。入力データは手書き数字のような画像でも音声でも構わ無いし、分類の種類も制限は無い。推論する出力も離散データではなく、分類器ではなく回帰曲線を構築する事になるが、連続データでも構わない。

機械学習の概念自体は1959年からあり、研究が盛んになったのは1990年代、本格的に実用化されたのは2000年代で、既に古典的な技術である。コンピューターの性能向上が背景にあるのであろうが、これが大当たりだった。2004年ぐらいに、GMailやThunderbirdなどの迷惑メールフィルターが普及してきたのを覚えている人はまだ多いであろう。これはナイーブ・ベイズ分類器と言う機械学習の一つで、ユーザーの迷惑メールとそうで無いメールの分類情報が、学習データとして扱われている。同時期に、他にもSVMやランダムフォレストなどのアルゴリズムが開発され、そのライブラリが広く公開されるようになった。機械学習を駆使するデータサイエンティストと言う職種が一般化してきたのは、この後だったと思う。

3. 最近になって高い精度が出てきたニューラルネットワーク

ディープラーニングは何が新しいのであろうか。教師なし学習に応用した研究もあるのだが*4のだが、今のところは教師あり機械学習への適用が多い。つまり実用では、学習データから分類器を構築し、その分類器で入力情報が何なのかを推論していくところは変わらない。画像情報を扱うときに入力情報の前処理が少ないと言うメリットが強調されるときは多いが*5、五十歩百歩で大差がない。実際の事例を見ると、画像の中の認識対象の領域を他のアルゴリズムで探し出し、様々な変換を加える事で精度を向上させている。実務的にはこの前処理の部分が依然としてかなり重要*6。むしろ、かなり複雑なパラメーターを適切に設定する必要があり高度な専門性を要する上に、分類器の作成にかかる計算量が大規模な計算機クラスターでないと間に合わないので使い勝手が悪い。こういうわけでディープラーニングの素晴らしい所は唯一つ、推論の精度が高い事だと捉えて問題ない。

最近になって注目されているのは、2012年を境に他の機械学習アルゴリズムを凌駕する精度を出せる事が認識されたためだ。2010年代まで潜んでいたのは、幾つか理由がある。ディープラーニングの土台となるアイディア、つまり活性化関数を内包するニューロンを多層化して複数接続するニューラルネットワークと言う発想は1980年代からあるのだが、それにあった学習速度が遅かったり学習データだけに特化してしまう過学習の問題が解決した*7のが、2006年であった。計算機クラスターの発展による計算機の処理速度向上も、躍進の背景にある。機械学習は十分な学習データがあるときは分類器の柔軟性がその精度を決定するので、ニューロンを増加させる事で柔軟性を増していけるニューラルネットワーク*8は、演算能力の向上を精度に結びつけやすい。なお、機械学習の中では最も熱い技術ではあるが、元からオープンソースのディープラーニングのフレームワークに加え、大手各社が自社開発製品を無償公開するなどしており*9、他のアルゴリズムと同様にコモディティ化が進みつつある。

4. ディープラーニングも従来の機械学習と同じ欠点を抱える

学習データを大量に用意できる魚やキノコの種類を画像から判別するような用途がある場合は、ディープラーニングは威力を発揮するであろう。ヒヨコ鑑定士は、過去の職業になるかも知れない。自動運転などの開発においては、画像から人間や信号などの情報を判別する精度は幾らでも上げたいであろうから、恐らく重宝する。機械が判断するには難しいように思えても、学習データを工夫して揃えられれば、囲碁の事例のように効果的に機能する。しかし、学習データが十分に揃えられない特定人物の顔認識などには、ディープラーニングを含む機械学習は不向きとなる。監視カメラの画像をチェックして、テロリストに似た人物を探すような用途には向かないし、本人認証に用いるのにも煩雑であろう。ディープラーニングを人物判別に応用する事例はあるが、一人あたり数百から数千枚の画像を学習データとして用意しているようだ。

5. 研究者以外はディープラーニングとどう付き合うべきか

人工知能研究者の中にはニューラルネットワークが脳機能の模倣であることから、1950年代の目標であった人間の思考パターンを真似た一般問題解決器、つまり万能アルゴリズムの実現を再び夢見る動きもあるようだ。しかし、研究者以外はこういう夢を共有する必要は無く、もっと実用的に見れば良いと思う。そして実際に何かに使おうとすると、そう便利でも無い気がしてくる。

簡単なセンサーで人間の判断を代替できる自動ドアのようなものは既にメカトロニクスで代替されているし、そもそも自動販売機のように人間の判断がなくても省力化できる事はかなりされてきた。人工知能を生かすにしても、行った推論を作業に生かす必要があるので、別の工学的な発展が必要な事も多いであろう。人工知能が効果を発揮する場面であっても、必ずしもディープラーニングもとい機械学習に適した問題とも限らない。ディープラーニングが機能する事例も業務の一部の代替にとどまって、言われているほど省力化にはならないかも知れない。自動運転が普及すればバスの運転手は無くなるかも知れないが、バスの乗務員が不要になるかは定かではない。

ウェブ広告などに機械学習を応用するのも何かブームが去ってしまった気もするし、実務的には待望されている何かと言うわけでは無いと思う。特定外来生物だけを捕獲する罠や、溺れている人間や鮫を感知する海水浴場用のブイなどを開発してみたいと思わなくも無いのだが、儲かる商売になるようには思えないのが残念な所だ。大企業だったら離職予測システムでも作って新卒採用に生かしたりできるのかも知れないが。

*1東京大学の松尾豊氏がそう主張しているが、“50年来のブレークスルー”だと考えているからのようだ(WORKSIGHT)。しかし、少なくともディープラーニングの登場を境に、人工知能の実用事例が大きく変化したわけでは無い。

*2学問分野としては1956年のダートマス大学での会議が始まりになるそうだ。

*3遺伝的アルゴリズムや強化学習などの学習データが無い教師なし学習もあるし、クラスター分析、主成分分析なども何故か機械学習と見なされている。

*4画像を学習させ顔や猫を認識するニューロンを作れたような研究成果も報道されており、教師なし機械学習のクラスター分析を発展としてデータマイニング手法として普及する可能性もある。

*5SIFTやSURF特徴量をあらかじめ用意しておくことが不要なことが強調される。これらの特徴量を超える特徴量を内部的に生成できるため、精度向上につながるようだ。

*6ニューラルネットワークが自力で特徴量を見つけると言っても、見つけやすいデータに加工する必要がある。例えばOpenCVでhaar-like特徴量を使って顔の領域を切り出し色調などを補正するのは一般的だそうで、Facebook社のDeepFaceは3次元モデルを用いて顔の向きを補正している(Preferred Research)。

*7活性化関数の改良や、オートエンコーダやドロップアウトと呼ばれる工夫がされた。

*8例えば、シグモイド関数(ロジスティック関数)2つ以下ではXOR関数を学習して習得する事はできないが、三つを組み合わせると可能になる。ディープラーニングの何万もの特性関数が結合してできる分類器は相当な柔軟性があるであろう。

*9H2O、Pylearn2、deepnetなどに加え、GoogleのTensorFlow、AmazonのDSSTNE、MicrosoftのCNTKが気軽に利用できる状況になっている。

0 コメント:

コメントを投稿