ここまで見てきたように、正規化層は値のばらつきを整える仕組みでした。
では、わざわざそうして値を整えると、ディープラーニングの学習にはどんなよいことがあるのでしょうか。
料理で考えてみると、この役割はとてもわかりやすくなります。
スープを作っている場面を想像してみてください。
料理人は、何度も味見をしながら
・塩を足すか
・水を足すか
・火加減を変えるか
を判断していきます。
でも、味見のたびに土台の味が大きく変わっていたらどうでしょう。
・今回は塩が強すぎる
・次は急に薄い
・今度は酸味が前に出すぎる
こうなると、「次にどこを直せばいいのか」が見えにくくなります。
毎回まったく違うスープを相手にしているようなもので、調整がとても難しくなってしまいます。
ニューラルネットワークでも同じです。
各層に入ってくる値が毎回大きく揺れていると、その次の層は「今日は強すぎる入力が来た」「今度は弱すぎる入力になった」と振り回されてしまいます。
すると学習は不安定になり、なかなかうまく進みません。
そこで正規化層は、極端なばらつきを少し整えてから、次の層へ値を渡します。
料理でいえば、まずスープの土台を、毎回ある程度似たバランスに戻してから味見するようなものです。
そうすると料理人は、
・今日は少し塩を足そう
・今回は火を弱めよう
と、落ち着いて次の判断ができるようになります。
ディープラーニングでも、値のばらつきが整っていると、後ろの層は「次にどう調整するか」を判断しやすくなります。
つまり正規化層は、学習の土台を整えて、次の調整をしやすくする役割を持っているのです。
正規化層の大きな役割の一つは、学習を安定させることです。
もし値のばらつきが極端だと、層を重ねるたびにバランスが崩れやすくなります。
するとネットワーク全体が、あるときは急に変わりすぎる、あるときはほとんど変わらないという、不安定な状態になってしまいます。
正規化層は、その揺れをやわらげて、ネットワークが無理なく学べるようにします。
料理でいえば、毎回の味を「極端に濃い」「極端に薄い」から遠ざけて、調整しやすい範囲に保つ役目をしているのです。
正規化層には、学習を速く進めやすくするという役割もあります。
味の土台が整っていれば、料理人は何度も大きな修正をしなくてすみます。
毎回ゼロから迷い直すのではなく、「この方向で少し調整すればよさそうだ」と見通しを持って進めることができます。
ニューラルネットワークでも同じで、値の分布が整っていると、各層は学習しやすい状態を保ちやすくなります。
その結果、学習が進むスピードが上がることがあります。
つまり正規化層は、ただ値をきれいに並べるだけではなく、学習という調理そのものを、なめらかに進めるための仕組みでもあるのです。
正規化層は、勾配の流れを助けるという点でも重要です。
これまで見てきたように、ディープラーニングでは誤差の情報が後ろから前へ伝わり、それをもとに重みが更新されます。
でも途中の値が極端に偏っていると、勾配がうまく流れにくくなることがあります。
料理でたとえるなら、スープの味が濃すぎたり薄すぎたりして、次の調整の方向が見えにくくなるような状態です。
正規化層が入ることで、途中の値のばらつきが整い、勾配も比較的安定して流れやすくなります。
だから正規化層は、見た目には地味でも、学習全体の呼吸を整える大切な役割を果たしているのです。
料理で言えば、正規化層は派手なスパイスではありません。
味の決め手になる特別な具材でもない。
でも、下ごしらえや味の土台が整っていなければ、どんな立派なレシピでもうまく仕上がりません。
ディープラーニングでも同じです。
畳み込み層やAttentionのような華やかな技術が注目されがちですが、その裏では、正規化層のような仕組みが学習を支えています。
つまり正規化層は、モデルが無理なく学ぶための、縁の下の力持ちなのです。
ここまでをまとめると、正規化層の役割は主に次の3つです。
1 学習を安定させる→ 値のばらつきを整え、極端な揺れを抑える
2 学習を速く進めやすくする→ 後ろの層が調整しやすい状態を作る
3 勾配の流れを助ける→ 深いネットワークでも学びやすくなる
つまり正規化層は、学習の流れを整え、モデル全体が働きやすい状態をつくる役割を持っているのです。
next ▶ プーリング層とは何か