ディープラーニングの理論を分かりやすく解説した本。複数の入力を受け取って1つの出力を返すパーセプトロンに始まり、現在のディープラーニングのブレイクスルーのきっかけになった制限ボルツマンマシンまで概念と理論を学ぶことができます。機械学習の理論をごまかさずに数式で説明しきることがコンセプトですが、数学が苦手でもおおよその概念は把握できるのです。サンプルコードが無料ダウンロードできるので、動かしながら学べるのもよいです。
↑気になったらここからポチっと↑
見よう見まねで機械学習をやってきたので、きちんと理論を(概要レベルでもいいから)理解しておこうと思い、読みました。
ちなみに、パーセプトロンやニューラルネットワークの基本概念はこちらでまとめています。
また、モデルが訓練データに最適化され予測精度が低下する過学習(Over-fitting)や、過学習を防ぐための正則化とドロップアウトという手法、データが少なく精度が出ない際に行うデータ拡張という手持ちのデータを数学的に増やす手法についても解説されています。
入力x1,x2,x3・・・に対する出力y1,y2,3・・・を計算して、それをもう一度順伝播型ネットワークに入れてx'1,x'2,x'3・・・を出力させ、xとx'の乖離を小さくすることを目指します。出力データから入力データを再現するモデルを作って再現度が高ければ予測精度も高いだろうということです。概念自体はなんとなく分かりますが、どうやって効率よく計算するかのテクニックが解説されています。
これは脳の視覚野の画像認識を模倣した仕組みです。学生時代に視覚の研究していた(知覚心理学みたいなものが専門でした)ことを思い出しながら書いてみると、脳の一次視覚野(Visual area 1なのでV1と呼ばれる)には、縦・横・斜めなど特定の線分に反応するニューロンがあります。縦棒を見ると縦専門のニューロンだけが反応して縦線であることを知覚します(本当はV1以降のV2~V5で検知した図形の統合だったり色の認識だったりを統合していますが割愛します)。この性質を機械で実現するには特定のパーセプトロンとのみリンクを持たない畳込みニューラルネットを使うのが便利なのです。
この章では、畳込み層と畳込み層からの出力を入力として強弱をつけるプーリング層を組み合わせた畳込みニューラルネットの実装方法や勾配効果法を使った畳込み層の最適化手法について説明されています。
網状のボルツマンマシンをニューラルネットワークのように層状にしたものを制限ボルツマンマシンと呼びます。通常の順伝播型ネットワークにおいて、パーセプトロン間のリンクが双方向になったものをイメージすればよいです。この制限ボルツマンマシンが現在のディープラーニングにつながるブレイクスルーになったそうです。正直、このあたりは理解し切れていないので興味のある方は本書を読んでみてください。。
↓気になったらここからポチっと↓
↑気になったらここからポチっと↑
見よう見まねで機械学習をやってきたので、きちんと理論を(概要レベルでもいいから)理解しておこうと思い、読みました。
ちなみに、パーセプトロンやニューラルネットワークの基本概念はこちらでまとめています。
この本を読むとわかること
順伝播型ネットワーク(Feedforward neural network)
順伝播型ネットワークとは、「複数のパーセプトロンで構成される多層パーセプトロンを1方向に進んでいくネットワークモデル」です。順伝播ネットワークの考え方に加えて、各パーセプトロンの出力を一定にするための活性化関数としてシグモイド関数やソフトマックス関数なども解説されています。確率的勾配降下法(Gradient descent method)
なにやら難しい名前ですが、「パーセプトロンへの入力に掛け合わせる重みを一定値(学習係数:Learning rate)ごとに減らしていき、最適値を探索する手法」のことです。パラメータを変えながら最適解に到達するまで降りていくので勾配降下法という名前になっています。ボコボコ凹んだ容器にボールを入れてゆすっていると一番下に落ちるイメージです。具体的には、訓練データにおける誤差・モデルの検証用データにおける誤差を最小化するのですが、その過程を数式を使って説明しています。また、モデルが訓練データに最適化され予測精度が低下する過学習(Over-fitting)や、過学習を防ぐための正則化とドロップアウトという手法、データが少なく精度が出ない際に行うデータ拡張という手持ちのデータを数学的に増やす手法についても解説されています。
誤差逆伝播法(Back propagation)
順伝播型ネットワークの勾配計算は後ろのパーセプトロンに行くほど前の層の出力値が蓄積されていきます。言い換えると、前の層の活性化関数が入れ子になって引き継がれていきます。そのため、階層が深いネットワークほど勾配計算の計算量が増大してしまうのです。この課題を解決し、効率的に計算を行う手法である誤差逆伝播法について丁寧に解説されています。「前から行くのが大変なら後ろから遡ればいいじゃない」というコロンブスの卵的な手法なのです。自己符号化器(Autoencoder)
自己符号化器とは、「訓練データを使った教師なし学習においてデータの特徴を適切に抽出することで、より良いモデルを作るニューラルネットワークのこと」です。うん、何を言っているかよく分からないですね。簡単に言うと、順伝播型ネットワークの出力を入力にして、もとの入力を再現する順伝播型ネットワークのことです。順伝播型ネットワークを折り返したものをイメージすればよいです。入力x1,x2,x3・・・に対する出力y1,y2,3・・・を計算して、それをもう一度順伝播型ネットワークに入れてx'1,x'2,x'3・・・を出力させ、xとx'の乖離を小さくすることを目指します。出力データから入力データを再現するモデルを作って再現度が高ければ予測精度も高いだろうということです。概念自体はなんとなく分かりますが、どうやって効率よく計算するかのテクニックが解説されています。
畳込みニューラルネット(Convolutional neural network)
畳込みニューラルネットとは、「画像認識に利用される順伝播型ネットワークであり、隣接層のパーセプトロン全てとつながるのではなく、隣接層の特定のノードとのみリンクするネットワーク」です。これまで見てきたニューラルネットワークは1つのパーセプトロンが前の層・後ろの層のパーセプトロン全てとリンクするモデルでした。畳込みニューラルネットでは、1つのパーセプトロンが前後の層のパーセプトロン全てとリンクするわけではないというのが特徴です。これは脳の視覚野の画像認識を模倣した仕組みです。学生時代に視覚の研究していた(知覚心理学みたいなものが専門でした)ことを思い出しながら書いてみると、脳の一次視覚野(Visual area 1なのでV1と呼ばれる)には、縦・横・斜めなど特定の線分に反応するニューロンがあります。縦棒を見ると縦専門のニューロンだけが反応して縦線であることを知覚します(本当はV1以降のV2~V5で検知した図形の統合だったり色の認識だったりを統合していますが割愛します)。この性質を機械で実現するには特定のパーセプトロンとのみリンクを持たない畳込みニューラルネットを使うのが便利なのです。
この章では、畳込み層と畳込み層からの出力を入力として強弱をつけるプーリング層を組み合わせた畳込みニューラルネットの実装方法や勾配効果法を使った畳込み層の最適化手法について説明されています。
再帰型ニューラルネット(Recurrent neural network)
再帰型ニューラルネットとは、途中まで読んだ文章の単語から次の単語を推測するように、「時系列の入力値を基に次の値を予測するモデル」です。単語間の依存性や文脈により言葉を予測する言語モデルとも呼ばれるそうです。文脈から推測するためには過去の入力値すべてを含めて判断する必要があり、そのあたりのモデルや考え方が解説されています。ボルツマンマシン(Boltzmann machine)
ボルツマンマシンとは、「ノード間の結合が双方向性を持つニューラルネットワークで、ネットワークの挙動を確率論的に記述したもの」です。これまたよく分からないですね。これまでのニューラルネットワークは階層構造でしたが、パーセプトロンが網目状につながっているものをイメージすればよいです(網目状につながっている=ノード間の結合が双方向性を持つ なのです)。網状のボルツマンマシンをニューラルネットワークのように層状にしたものを制限ボルツマンマシンと呼びます。通常の順伝播型ネットワークにおいて、パーセプトロン間のリンクが双方向になったものをイメージすればよいです。この制限ボルツマンマシンが現在のディープラーニングにつながるブレイクスルーになったそうです。正直、このあたりは理解し切れていないので興味のある方は本書を読んでみてください。。
↓気になったらここからポチっと↓