どうも、カタミチです。
さて、「ディープラーニングの概要」の章も最後の節にやってきました。本節のタイトルは「更なるテクニック」ですね。さっそく見てみましょう!
ドロップアウト
まずはこれ、ドロップアウト。これは名前のとおり、学習の際にランダムにニューロンを除外させるものです。これは、機械学習の最大の敵である、過学習に対抗する手段として使われます。ランダムに除外することで、毎回形の異なるネットワークで学習を行うことになる…つまり、アンサンブル学習を行なっていることになります。(アンサンブル学習は、既に懐かしい感じがするランダムフォレストのところで出てきたやつですね)
早期終了
次は、早期終了です。名前から想像はつきますね。ドロップアウトは「間引く」やり方でしたが、こちらは「早めに切り上げる」って感じですね。学習が進むにつれ、テストデータに対する誤差関数の数値は右肩上がりになってしまうので、その上がり始めを過学習のし始めと考えてその時点で学習を止める、というものです。
この手法、シンプルですが効果や適用範囲を考えると非常に有効で、かのジェフリー・ヒントンも「ビューティフルフリーランチだ!」と言っています。
…これ、何かというと「あらゆる問題で性能の良い汎用最適化戦略は理論上不可能だ」というノーフリーランチ定理を意識して発せられた言葉だそうです。おもしろいですね〜。
しかし、最近の研究では、一度誤差が増えた後、再度誤差が減っていくという二重降下現状も確認されているとの事で、なかなかスッキリとはいかないみたいですねー。
データの正規化・重みの初期化
ここまで、学習の「途中」をどう最適化するか?という観点での手法を見てきましたが、そもそも、入力データにも処理を入れた方がいい、という話がこの節のテーマです。料理で言う「下ごしらえ」ですね。
データ全体を調整する処理のことを正規化と言います。
正規化の最も簡単なものは、各特徴量を0〜1の範囲に変換する処理です。それぞれの特徴量を、同じ特徴量の最大値で割れば実現できます。たしかに簡単ですね。これにより、特徴量間のスケールの違いを合わせることができます。
次に、各特徴量の平均を0、分散を1とする処理である標準化が挙げられます。…うん、どうやればいいか、途端にイメージがつかなくなりました(汗)。ちなみに、元々の特徴量の分布が正規分布に従う場合、標準化によってその特徴量は標準正規分布に変換されます。…ん?そう言えば、統計検定2級の勉強したときにやったぞ、これ。統計の基礎の基礎ですね(うろ覚え)
標準化よりもう一歩踏み込んだものとして白色化があります。「真っ白な灰になったぜ…」みたいな感じでしょうか(意味不明)。やり方としては、各特徴量を無相関化したうえで標準化するという手法らしいです。…うん、無相関化がわからん(汗)。とりあえず、白色化は計算コストが高いので、標準化を用いるのが一般的らしい…ということだけ覚えておくことにします。
さて次に、正規化とは別のアプローチで入力データに下ごしらえをする方法が、重みの初期値を工夫するというものです。通常、いきなり重みの最適解は分からないので、一様分布や正規分布に従う乱数を用いて重みの初期値を与えるのですが、これらの乱数にネットワークの大きさに合わせた適当な係数をかけることで、データの分布が崩れにくい初期値がいくつか考えられました。
シグモイド関数に対しては、Xavierの初期値、ReLU関数に対してはHeの初期値がよいとされています。…とりあえず言葉だけ覚えておきますかねー。
バッチ正規化
最後のテクニックは、バッチ正規化です。学習がうまくいきやすく、かつ、過学習しにくくなるという利点もあるようです。そのやり方は…
各層に伝わってきたデータを活性化関数をかける前に、その層でまた正規化してしまうというものです。無理やりデータを変形しているのでうまくいきそうにないんですが、実は非常に強力な方法らしいです。なるほどー、分からないもんですねー。
ということで
駆け抜けてきましたが、これで第5章「ディープラーニングの概要」は終わりですね。深い理論は一切分からなかったので、ディープラーニングの表層を駆け抜けた感じなんですかねー。
次の章ではさらに掘り下げて行く感じなのか…楽しみです。(^ ^)
ではまた。
勉強に使ってる書籍はこちら↓
深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版