キカベン
機械学習でより便利な世の中へ
G検定対策
お問い合わせ
   

ディープラーニングのアプローチ

thumb image

1. 学習目標🔝

ディープラーニングがどういった手法によって実現されたのかを理解する。

  • 事前学習
  • オートエンコーダ(自己符号化器)
  • 積層オートエンコーダ
  • ファインチューニング
  • 深層信念ネットワーク

キーワード制限付きボルツマンマシン

2. 事前学習ありのアプローチ🔝

事前学習とは、層ごとに順々に学習を進める手法です。初期のディープラーニングで層を深くすると学習がうまくいかない問題を解決する一つの方法としてジェフリー・ヒントンが2006年に提案しました。現在はあまり使われない手法ですが、ディープラーニングを可能にした手法として歴史的に重要です。事前学習は積層オートエンコーダ深層信念ネットワークで使われました。

3. 積層オートエンコーダ🔝

3.1. オートエンコーダ(自己符号化器)🔝

オートエンコーダ(autoencoder、自己符号化器) とは,入力データから特徴を獲得するニューラルネットワークです。教師データを使わない教師なし学習に分類され、入力データと同じ値が出力層から出るように訓練します。

隠れ層の次元が入力層よりも小さくなっているので、入力データがいったん圧縮されることになります。この処理をエンコード(encode、符号化)と呼びます。また、隠れ層から出力層への処理をデコード(decode、復号化)と呼びます。

また、オートエンコーダでは入力層と出力層で期待される値が同じ可視のデータなので両方の層を隠れ層と対比して可視層と呼びます。

3.2. 積層オートエンコーダ🔝

積層オートエンコーダ(stacked autoencoder)はオートエンコーダの隠れ層を増やしたものです。当時は、ディープニューラルネットワークを一気に訓練する手法が確立されておらず、2006年にジェフリー・ヒントンが隠れ層を一つ一つ積み重ねながら順番に訓練していく手法を発案しました。これを事前学習(pretraining)と呼びます。

まず、隠れ層が1つの状態でオートエンコーダを学習させます。次に、隠れ層の値を入力としたオートエンコーダを学習させることで次元圧縮がさらに進みます。これを何層か繰り返すことで特徴量を抽出するためのディープニューラルネットワークの学習が可能となりました。

3.3. ファインチューニング🔝

オートエンコーダを積み重ねた最後に予測を行うための出力層を付け加えます。線形回帰であれば最後に全結合層を使います。また、ロジスティック回帰であれば、さらにシグモイド関数を追加します。この最後の層を加えて、ディープニューラルネットワーク全体を教師あり学習で訓練すれば予測ができるようになります。この最後の訓練をファインチューニング(fine-tuning)と呼びます。

現代のディープラーニングでも転移学習などでファインチューニングをおこないますが、その際にネットワーク全体の重さを微調整することもあります。例えば、ImageNetで学習済みのResNetなどのモデルから転移学習する差に、特徴量を抽出する層の重さも含めて微調整したりします。もちろん、これが可能なのはネットワーク全体を一気に訓練できるようになったからです。また、そのようなネットワーク全体の微調整を行う理由は、転移学習する際に使うデータセットが元のデータセットと大きく異なる部分があり特徴量抽出がうまくいかないなどです。

4. 深層信念ネットワーク🔝

4.1. ボルツマンマシン🔝

ボルツマンマシンは1985年にジェフリー・ヒントンらが提唱したニューラルネットワークで、可視層と隠れ層の全てのニューロンがお互いに結合を持つ構造になっています。全ての結合は双方向になっており、十分な時間さえあれば、難しい組合せに関する問題を解くことができるというものでした。隠れ層に入力データの特徴が抽出されるのでオートエンコーダと機能が似ています。

4.2. 制限付きボルツマンマシン🔝

ボルツマンマシンは、その複雑さゆえに実用化が難しく、より制限のある制限付きボルツマンマシン(restricted boltzmann machine、RBM)が提案されました。RBMでは同じ層のニューロン同士の結合はなしとするもので、可視層のニューロンは隠れ層のニューロンにしか結合できない仕様になっています。

より見やすく平たく並べ直して表示します。

双方向の結合なので入力データから隠れ層へ情報流れるだけでなく、隠れ層から入力層へと情報が流れます。

4.3. 深層信念ネットワーク🔝

制限付きボルツマンマシンを積み重ねて深層にしたものが深層信念ネットワーク(deep belief networks、DBN)です。2006年にジェフリー・ヒントンらによってDBNでも深層の生成器の学習ができるようになることがわかりました。

生成器とは確率分布などによって入力データに似たようなデータを生成することができるネットワークです。

訓練済みのRBMにもう一つRBMを付け足します。訓練済みのRBMからの出力を入力として追加したRBMを学習させます。

なお、訓練が終わった隠れ層では、入力層へ向かう出力(生成)だけを考えるようにします。つまり、訓練済みの隠れ層から入力層へ向かってデータを生成できるようになっています。

さらにRBMを追加し訓練します。もっと深い層から入力層へ向かってデータを生成することができるようになります。

これを続けることで深層の生成器が出来上がります。

5. 事前学習なしのアプローチ🔝

層ごとに順々に学習する必要があり、計算コストが高い事前学習ありのアプローチは最近はあまり使われることがなくなりました。ReLUなどの活性化関数を使ったりスキップ結合を導入したりして勾配消失問題を解決し、ネットワーク全体を一気に学習することができるようになったためです。

またGPUなどが安価で使えるようになりネットワーク全体を訓練することで大きなネットワークでも速く学習を完了できるようになりました。



コメントを残す

メールアドレスは公開されません。