Ad Network

あわせて読みたい

  • あわせて読みたい

« 東芝を救うウルトラC | Main | Tesla の Autopilot と Netflix でオレゴンまで皆既日食を観に行った話 »

「機械学習の父」とは?

 

最近、機械学習の勉強をするために、数多くの論文を読んでいます。それぞれの論文は10ページ前後ですが、必ずそのベースには過去の研究があり、それを理解せずには読みこなせない、という状況がしばしば生じます。そんな時には、その論文から引用されている過去の論文を読む必要がありますが、私のようにこの世界の新参者だと、そこでさらにそこで引用されている論文を読まなければいけなくなることもしばしばあります。

結構手間のかかる作業ですが、一昔前だったら図書館に行かなければ絶対に不可能だった作業が、ネットに接続したパソコンされあれば、どこからでも、かつ、効率良く出来てしまうのですから、文句を言う筋合いの話ではありません。

そうやって歴史を遡りながら勉強をしていると、一連の研究の流れ、のようなものが見えて来ます。

例えば、先週紹介した、「写真をゴッホの作品風にする手法」のベースになった論文「A Neural Algorithm of Artistic Style(2015年9月)」も、そのベースには、「似たようなテキスチャーを生成する手法」を提案した論文「Texture Synthesis Using Convolutional Neural Networks(2015年)」がベースにあり、さらにそれが活用しているのが、画像認識のために設計された VGG-19 というニューラルネトワークなのです(論文は「Very Deep Convolutional Networks for Large-Scale Image Recognition(2014年)」)。

そうやって、どんどん遡って行くと、今の機械学習のすべてのベースになる Perceptron という仕組みを1958年に発表した Frank Rosenblatt という学者にたどり着きます。

Perceptron とは、m 次元の入力ベクトル x に対して、重み付けベクトル w を掛け合わせ(dot production)、それにバイアス b を加えた値が、0以上か否かで成否を判定する、とてもシンプルな計算式です。

 f(x) = (dot(w, x) + b > 0)

 ベクトルを開いて書けば、

    f(x1, x2, x3, ...xm) = (w1 * x1 + w2 * x2 ... + wm * xm + b > 0)

となります。ちなみに、不等号は真(1)か偽(0)を返す計算式です。

Perceptron は、重み付けさえ変更すれば、m次空間を二つに分割するすべての線形方程式を表現できるため、正しい学習データ(入力と出力)を与えることにより重み付けを適切に変更する仕組み(学習機能)さえ作れば、常に正しい答えを出す方程式が作れてしまいます。

Rosenblatt は、Perception こそが人工知能への道だと考え、"perceptron may eventually be able to learn, make decisions, and translate languages (Perceptron はいつの日か、学習し、物事を決め、言葉を翻訳するだろう)"とまで予想しています。

ここ数年間で急速に実用化がされるようになった人工知能・機械学習の仕組みが、Perception をベースに作られていることを考えると、59年も前の Rosenblatt の予想は驚くほどまでに的を得ていると言えます。

その意味では、Rosenblatt こそが「機械学習の父」と呼ぶべき人物なのです。

しかし、斬新的なイノベーションがしばしばその時代に人たちに理解されないのと同じく、Perceptron も同じ目にあってしまいます。

Rosenblatt が Perceptron を発表した約10年後の1969年に、Marvin Minsky と Seymour Papert が、「Perceptrons」という書物の中で、「Perceptron は線形の問題しか扱えず、かといって(非線形の問題を扱うために)複数のレイヤーにすると、学習が不可能になる」と批判したことが、それまで盛んだった Perceptron 研究に大きなダメージを与えてしまったのです。

たった一冊の書物のために、Perceptron 関連の研究への予算が大きく削られることになり、機械学習の研究は、暗黒時代に突入してしまうのです。

Perceptron をベースにした機械学習の研究が再び盛んになったのは、Paul Werbos という学者が発明した backpropagation という仕組みを使えば、複数レイヤーの Perceptron に学習させることが可能だということが一般的に知られるようになった (13年後の)1982年のことです。

Perceptron、backpropagation に続く三つ目のイノベーションは、Convolution Neural Network (CNN)の機械学習への応用で、これは、1980年代の終わりから1990年代のはじめにかけて、Yann LeCun 博士を中心とした研究者たちが起こしました。

この件で面白いのは、その研究が「郵便番号の自動読取装置の開発」という非常に明確なビジネスニーズのために行われた、という点です。基礎研究と言うと、ニーズや実用化とは程遠いところで行われているイメージがありますが、このケースでは、明確なニーズと、政府の予算がイノベーションを加速したのです。

その後、機械学習はしばらく水面下で停滞しますが、これは1970年代の暗黒時代とは大きく異なり、当時のコンピュータの計算能力が「文字認識」以上のこと(例えば画像認識)をするには全く不十分だったからなのです。

これは、ムーアの法則により、90年代後半から2000年代に書けて CPU の能力が大幅に伸びてもまだ不十分で、GPU を使った並列演算が身近なものになった2010年代になって、ようやく花開いたのです。

この中でも、興味深いのは、人類が文字認識に取り組んでいた1980年代には、人手による特徴点の抽出アルゴリズムが作られながら、それが結局は CNN による機械学習に置き換えられたたのと同じく、人類が画像認識に取り組んでいた2000年代には人手による「画像認識アルゴリズム」が作られながら、それが結局は深層学習に置き換えられるという似たようなプロセスを経たところです。

私自身、色々なアルゴリズムを作って生計を立ててきたソフトウェア・エンジニアとして、この「人間が作ったアルゴリズムよりも、大量のデータを使って統計的な手法で作ったアルゴリズムの方が良い結果を出す」という話は、最初は直感的には理解しづらいものでした。

しかし、画像認識や音声・言語認識のような「曖昧さ」を含んだ処理の場合、人間が良いアルゴリズムを作る際にも、結局は「パラメータの調整」などの試行錯誤が必要なのは経験則として知っていました。それであれば、最初から「試行錯誤のみでアルゴリズムを作る」前提で設計し、「いかに試行錯誤の効率を良くするか」に人間の頭を使った方が良いと考えると、昨今の機械学習のアプローチはとても納得が出来るものになります。 

###

上の文章は、私のメルマガ「週刊 Life is Beautiful」からの引用です。自動運転車、電気自動車、機械学習、深層学習などIT業界のことを中心に書いていますが、同時に、再生可能エネルギー、似非科学、ベンチャー、ベーシックインカム、M&A などもカバーしています。

現在、「実質2ヶ月分無料キャンペーン」を実施しているので、是非ともお試しください。

Comments

Post a comment

This weblog only allows comments from registered users. To comment, please Sign In.