>100 Views
May 07, 26
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2026年度前期輪読会 #3 2026/5/7 深層学習による 画像認識の基礎 2.7 深層学習の基本技術 京都大学理学部数理科学系 B4 千葉 一世 0
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 1
万能近似定理:任意の(コンパクト台)連続関数は任意の精度で、 隠れ層1層以上・非線型な活性化関数を持つニューラルネットワークで近似可能 理論的には少ない層でも上手く表現するパラメータが存在するが、現実では学習でたどり着けない モデルを複雑にしても学習を進められる工夫が必要 何故広くではなく層を深くするか • パラメータ数が少ない 表現力を上げるために必要なパラメータ数が深くする方が少なくて済む。 • 階層性を持つ 低層では線や輪郭などの単純な特徴を捉え、徐々にパーツや全体という高度な特徴を 認識する段階的な特徴量抽出が可能になる。 2
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 3
活性化関数 勾配消失・勾配爆発問題 誤差逆伝播法により、勾配を各層の勾配の積で計算することが可能になったが、 層を深くすると掛け算が多くなり、浅い層ほど勾配が0または無限大に近づいていく。 特に、当時主流であったシグモイド関数は勾配が最大でも0.25で、 ∞ (𝑎 > 1) 勾配消失が原因で層を深くすると学習が進まなくなる。 lim 𝑎𝑛 = ቐ 1 (𝑎 = 1) 𝑛→∞ 0 (𝑎 < 1) 積が消失も爆発もしないためには、勾配が1に近い必要があり ReLU(Rectified Linear Unit) : max 0, 𝑥 が生まれた。 ReLUも負値では微分が0となり勾配が消失してしまうが、ある種の情報選択として解釈できる。 sigmoid ReLU 4
活性化関数 • 𝑒 𝑥 −𝑒 −𝑥 Tanh : tanh 𝑥 = 𝑥 −𝑥 𝑒 +𝑒 • Leaky ReLU : ቊ 0.01 𝑥 (𝑥 < 0) 𝑥 (𝑥 ≥ 0) 負値を取ったときに入力が消える Dying ReLUの対策とし て、負値でも少しだけ傾ける • GELU : X が標準正規分布に従うとして、𝑥 ⋅ 𝑃(𝑋 ≤ 𝑥) 0付近で滑らかに窪んだReLUのような形をしている。 ReLUが0を境に固定で0とxを変えるのに対して、GELUで は標準正規分布に従って0とxの切り替えをしている。 計算量の問題で近似することが多い。 • Swish(SiLU) : 𝒙 (= 𝑥 ⋅ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑥)) 𝟏+𝒆−𝒙 5
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 6
Normalization 正規化(Normalization) : 平均・分散により値のスケールを揃える手法 バッチ正規化・層正規化・インスタンス正規化・グループ正規化・RMS正規化 などがある。 バッチ正規化 : ミニバッチ内で特徴量毎に正規化を行う。 主に活性化関数の前で適用する。 バッチ正規化の計算法 (𝑖) 入力ℎ に対し、𝑖 番目のデータの 𝑗 次元成分を ℎ𝑗 として、 次元(特徴量)毎に平均・分散を計算して正規化を行う。 平均0・分散1ではなく、学習可能な𝛾・𝛽 で平均・分散を調整する。 ミニバッチ毎の平均・分散の移動平均を保持しておき、推論時には移動平均を使用する。 7
Normalization バッチ正規化で何故上手くいくのか • 目的関数がなだらかになり、大きな学習率が使える 各次元毎にスケールが異なる場合には、最適化する関数が歪んだ形になることで、 勾配が最適解の方向を向かず各次元が同時に最適化されない。 バッチ正規化により目的関数の歪みが解消され、なだらかさが増す。 (詳しくはLipschitz連続性が上がる) これにより、学習率を大きくしても安定して最適化されるようになる。 8
Normalization 学習率を大きくすることは、学習の高速化だけでなく局所解の回避や汎化性能にもつながる • スケール不変性 正規化により、重みの定数倍に対して出力が変化しない。 損失関数も変化しないが、勾配に関しては重みが大きくなるほど小さくなる性質がある。 これにより、重みが大きくなりすぎないような自己安定化が働く。 9
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 10
残差学習 残差学習 : ResNetで導入された手法で、層を通すだけでなく元の値も和として出力する手法 ℎ𝑙+1 = ℎ𝑙 + 𝐹 ℎ𝑙 𝐹 ℎ𝑙 = ℎ𝑙+1 − ℎ𝑙 ℓ層目のFが層間の差分を学習していると見れるため残差学習と呼ばれる。 これにより、100層以上の深さでも学習が出来るようになった。 劣化問題の解消 ResNet以前では、層を増やしていくと表現力は上がるはずなのに 訓練データですら精度が落ちていくという問題があった。(情報が劣化していく) 後半を恒等写像に近づければ精度は落ちないはずだが、恒等写像を学習することが難しかった。 前の値をそのまま使うことで、最低限情報の劣化が防がれる。 学習が必要なくなった段階では0に近づけるだけで学習しやすい。 11
残差学習 勾配消失の改善 誤差逆伝播の際に、恒等写像の部分が常に1として出てくるため前の勾配がそのまま伝わる。 アンサンブル効果 残差接続によって伝達経路が2通りになり、重ねることで深さの異なる多数のネットワークの アンサンブルを行っているとも解釈できる。 12
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 13
最適化手法 目的関数の最適化手法としてSGDを改良した様々な手法を提案されている。 MomentumSGD : SGDに物理的な慣性を取り入れた手法 重みを直接更新するのではなく、更新する方向・大きさ 𝑚 を更新していく SGDが各更新時にリセットしてボールを置き直すのに対して、 MomentumSGDではリセットせずにボールを転がし続けるイメージ 何故上手くいくのか • 行ったり来たりする振動の無駄が減る • 平坦でも加速していく 14
最適化手法 Adam(Adaptive Moment Estimation) : モーメントに加えて次元毎の学習率の自動調整を行う手法 基本は 𝑚 を用いて慣性を持って更新していく (①⑤) 二次モーメント(分散) 𝑣 も更新していき、次元毎に正規化 (②⑤) ( 0で初期化するずれを補正する (③④) ) ① ② ③ ④ 何故上手くいくのか ⑤ バッチ正則化で見たように、歪んだ目的関数では次元毎に進みたい幅が異なるため、 更新幅を次元毎に調整して均一に学習が進むように出来る。 15
最適化手法 AdamW: Adamへ重み減衰を正しく適用した手法 Adamでは、正則化として重み減衰を用いていたが、直接重みを引く形ではなく L2正則化の形式で適用していた。 𝜕𝐿 𝑔𝑡 = + 𝜆𝑤𝑡−1 𝜕𝑤𝑡−1 SGDではL2正則化と重み減衰は等価になるが、Adamでは𝑣による正規化の影響が出てしまい 性能が落ちる原因となっていたため、 最後の重み更新時に引く形に修正した。 𝑔𝑡 = 𝜕𝐿 𝑤 + 𝜆𝑤𝑡−1 とすると、最後の式では −𝛼𝜆 𝑡−1 となり、 𝜕𝑤𝑡−1 𝑣𝑡 +𝜀 分散の大きい次元(更新が大きい) ほど減衰の効果が弱まってしまう。 16
最適化手法 学習率を一定にするのではなく、学習の段階ごとに変化させていくスケジューリング手法 学習初期は大きな学習率で、徐々に下げていきたい。 • Step Decay : 指定エポック毎に学習率を下げていく • Warmup + Cosine Annealing • Warmup : 学習率を0から始め、徐々に最大の学習率まで上げていく ランダムに初期化されるため、初めから学習率を大きくすると不安定で 意味のない方向に進んで行ってしまうのを防ぐ。 • Cosine Annealing : cos曲線のように滑らかに学習率を下げていく手法 直線的に下げるよりも、学習率の大きい期間と低い期間を長く取りながら下げていく。 • Warm Restarts : 下げ切った学習率を周期的に跳ね上げる 局所解に陥った場合などに脱出しやすくなる。 17
最適化手法 勾配クリッピング : 勾配爆発を防ぐために大きくなりすぎた勾配をクリップする手法 • 値クリッピング : 勾配の各次元毎に設定した範囲に制限する。 要素ごとにクリップするため、特定次元のみ大きい場合には勾配の方向が 最適方向からずれてしまう問題がある。 • ノルムクリッピング : 勾配のL2ノルムの大きさを上限値に制限する。 値クリッピングとは異なり方向は変化しない 18
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 19
Regularization 正則化(Regularization) : モデルの表現力が大きいときに過学習を防ぐために制限する手法 重みを小さくするアプローチ 重みが大きな値を取れると表現力が高まる 重みの大きさを制限する • L1正則化 : 重みの絶対値和(L1ノルム)をペナルティとして目的関数に加える 必要の無い重みを0に近づけるため特徴量選択の効果がある。 • L2正則化 : 重みの二乗和(L2ノルム)をペナルティとして目的関数に加える 全体的に重みを小さくする。(二乗するためL1ほど極端に0にはしない) • 重み減衰 : 重みの更新時に直接減らす手法 SGDではL2正則化と等価になる。 20
Regularization Dropout : 各層のユニットをランダムに無効化する手法 ミニバッチ毎に、確率𝑝でユニットを無効化し、推論時はスケール調整で(1 − 𝑝)倍する。 特定のユニットに依存した構造を防ぎ、全ユニットが意味を持った構造にする。 複数経路で推論できるようになるためアンサンブル効果も生まれる。 重みを無効化するDropConnectや残差層を無効化するDropPathなどの派生がある。 21
アジェンダ ◼ 活性化関数 ◼ 正規化 ◼ 残差学習 ◼ 最適化手法 ◼ 正則化 ◼ データ拡張 22
データ拡張 データ拡張(Data Augmentation) : データを人工的に加工して水増しする手法 画像データに有効で、正則化としても働く。 主な加工方法 : 反転・回転・ノイズ・クロップ・色彩明るさ変更・平行移動 Mixup : 透過して合成 (線形補間で間の画像を作る) Cutout : 一部を塗りつぶす Cutmix : 一部を切り抜いて別画像を入れる オリジナル 反転 Mixup 回転 クロップ ノイズ Cutout 色彩 Cutmix 23
データ拡張 変換の組合せ・強さによって正則化の効果も変わるため、ハイパーパラメータの設定が必要 自動でデータ拡張の強度を探索する • AutoAugment 強化学習を用いて、組合せと強度を探索する。 • RandAugment 組み合わせる数と全ての変換に共通で用いる強度の2つのパラメータのみで、 組合せは毎回ランダムに選ぶ。 • TrivialAugment ハイパーパラメータ無しで、毎回適用する変換1つと強度をランダムに選ぶ 24