見出し画像

【読書まとめ】深層学習の原理に迫る

最近遅ればせながら深層学習の勉強をしています。その一環で読んだ『深層学習の原理に迫る』という本について、備忘録的な意味を含めた内容のまとめをします。著者の今泉氏は東大の准教授で数理統計学及び統計的学習理論の研究者で、「深層学習はなぜうまくいくのか」ということについて考える仕事をしているそうです。タイトルの通りこの本も深層学習が上手くいく原理について著者の考えをまとめた本となっております。以下からは内容の簡単な要約になります。

① 深層学習の登場

深層学習の凄さを世に知らしめた出来事の一つにかの有名なアルファ碁の成功があります。アルファ碁とはグーグル傘下のディープマインド者が開発した囲碁人口知能の名称で、当時トップレベルの棋士であったイ・セドル九段を5時間の対局の末打ち負かしました。囲碁というゲームはチェスに比べて試合全体を通じた可能な手の数が莫大に多く、また盤面の有利不利の判定が難しいことが知られており、当面人間を打ち負かすことは難しいであろうと考えられていた分野の一つでした。このアルファ碁の中核をなす技術が深層学習であり、人工知能(深層学習)が人間を超えたと当時騒がれたわけです。

(c)AFP/GOOGLE DEEPMIND

深層学習とは、人間の脳の構造を模した数理モデル(ニューラルネットワーク)の一種で、とりわけニューロン(ノード)が並んだ層が多層に組み合わさったもののことを指します。2012年にトロント大学のヒントン教授らのチームが画像認識のコンペで圧勝したことによって脚光を浴び始めましたが、基礎技術自体は1980年代ごろから盛んに研究はされていたようです。

それから深層学習の研究は進み、皆さんもご存知の自動運転機械翻訳など様々領域において実用化されていきました。深層学習の応用領域の広さや汎用性、そして何より誰でも研究に参加できるオープンサイエンスの流れが、急速な発展を支えた一因であると考えられます。

② 深層学習とは何か

では、深層学習とはいったい何なのか?その問いに一言で答えるならば「コンピュータ上で複雑な関数を構成しているもの」となります。関数とは中学高校で習った$${y=f(x)}$$といったあれです。あれがとてつもなく複雑化しているのが深層学習です。一つのノード内でどのような処理がなされているかというと、前の層のノードの値がエッジを通じて重みを掛け合わされ、活性化関数という関数を通じて伝搬していくような計算がなされています。したがって、層の数だけ活性化関数が入れ子になっており、非常に複雑な関数を表現しているといった建付けになっています。

よく訓練データセットからモデルを学習するといったこと類のことを耳にすると思いますが、これは、深層学習モデルのパラメータ、つまりは重み(+バイアス)を最適な値に決定することに他なりません。そのような作業を機械学習の世界では学習すると呼んでいます。ここで何を最適にするように学習するのかというと、実際のデータ(教師データと言ったりします)の値とモデルの出力の値の誤差(訓練誤差といいます)を最小化するようにパラメータを決定するのです。

実際に上手くワークすると報告されている深層学習のモデルの全体上は非常に複雑なネットワークとなっています。例えば、画像認識タスクのために米マイクロソフト社が開発したResidual Networkというモデルは全部で152層と約2,000万個のパラメータを持つものでした。画像認識の精度を高めるためにモデルの探求を進めた結果、そのような複雑なモデルへと発展していったのです。

実はここにこの本のエッセンスとなる論点があります。それは「なぜ深層学習のモデルを複雑にすると精度が上がるのか?その原理はいったい何なのか?」という問いです。モデルを複雑にすることは表現力を高めるという意味で一般的にはポジティブに思うかもしれませんが、旧来の予測モデルの理屈ではむしろ逆で膨大な数のパラメータはオーバーフィッティング(過学習)を引き起こし、予測精度の観点ではむしろ悪影響であると考えられていたからです。これはオッカムの剃刀ケチの原理と呼ばれ、ある種の格言のように考えられていました。このような主張と整合しない深層学習の特徴を説明する原理を探そうというのが、この本のテーマであるわけです。

③ なぜ多層が必要なのか

普遍近似定理と近似誤差レート

深層学習の最大の謎はなぜ層を増やす必要があるのかということです。結論から言ってしまうとこのことについては未だ数学的には十分に解明されていないのですが、いくつか知られている事実はあります。

1980年代に数学的に証明された事実として以下の普遍近似定理と呼ばれるものがあります。

普遍近似定理
層が2つあるニューラルネットワークは、一層あたりのパラメータの数が十分多ければ、どんな連続な関数でも(無視できる範囲の誤差で)表現できる。

これは要するに、複雑な関数を表現したいという目的に限っては層の数は2層で十分でそれ以上は冗長であるということです。連続な関数に限った主張ではありますが、これは非常に強力な事実であると考えられます。

さらに、近似誤差レートと呼ばれるパラメータを増やしたときの誤差の減少率を表す指標は、関数が滑らかである場合、層が2つあるニューラルネットワークに関して、どんな方法をもってしても改善することはできないという数学的な事実も知られており、これらの事実は2層のニューラルネットワークが十分に良い性質を持っていることを示しています。つまりはニューラルネットワークの層の数は高々2つあれば十分という示唆が得られるわけですが、これは実際の深層学習の性質と矛盾するものとなっています。

ただし、これらの主張は連続で滑らかな関数に限った話であり、離散的なジャンプ構造を持つ関数や、非均一的な滑らかさを持つ関数においては、より層の多い深層学習モデルの優位性が証明されており、層を増やすことの意義を明らかにしているということが近年の研究で分かってきているそうです。これをもう少しかみ砕いて解釈をすれば、深層学習モデルは関数の局所構造を表現するのに旧来のモデルに比べて適していると考えることができ、前半の層で入力データの分割(特徴量抽出)を行い、後半の層で分割された入力データのそれぞれに対応する関数を近似するという役割分担が上手くなされており、複数の性質を持つ関数を同時に作ることができるのではないかと考えることができます。これはかなり納得感のある解釈で、一つの深層学習の原理と言えるのではないでしょうか。

この本では他にも、データ・アルゴリズムの構造が実質的なモデルを制約すると考える暗黙的正則化や損失関数の平坦さが複雑性誤差を抑制するとされる損失平坦性などの観点から深層学習モデルの原理に迫っていますが、ここから先は実際に本を手にもってもらって読んでもらう方が(noteの記事としても冗長になってしまうので)いいかと思います。興味を持たれた方は是非読んでみてください!


この記事が気に入ったらサポートをしてみませんか?