【ゼロから作るDeap Learning】6.1~6.2

>100 Views

June 04, 26

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

2026年前期輪読会 ゼロからつくる Deep Learning (6.1~6.2) 京都大学 工学部 情報学科 数理工学コース 稲葉 陽孔 1

2.

アジェンダ ■ パラメーターの更新 ■ 重みの初期値 2

3.

パラメーターの更新 最適化 損失関数が最小となるパラメーターを更新すること 手法の一つに、確率的勾配降下法 (SGD)がある SGDの欠点 SGDによるパラメーターの更新式 ηが定数なので、カーブが急な箇所では 局所最小値の箇所を超え、 右図のように振動してしまう →Momentum 3

4.

パラメーターの更新 Momentum 下式のように運動の概念を用いて更新の度合いをαv+(-ηδL/δW)として更新する手法 α:空気抵抗による減衰 ーηδL/δW:ロスの発見による加速 SGDとの比較 f(x,y)=x^2/20+y^2を損失関数とした(x,y)の更新経路 Momentumによるパラメーターの更新式 →MomentumはSGDより「ジグザグ」が少ない 4

5.

パラメーターの更新 AdaGrad ηが定数なので学習係数の減衰ができず、ある程度最適な場合でも更新度合いが大きくなってしまう →hを定数とし、学習係数をη/√hとすることで減衰を行う(AdaGrad) SGDとの比較 f(x,y)=x^2/20+y^2を損失関数とした(x,y)の更新経路 AdaGradによるパラメーターの更新式 →AdaGradによってより効率的に最小値を取る箇所((0,0))に向かう 5

6.

パラメーターの更新 Adam MomentumとAdaGradの工夫点を融合させた手法 Momentumとの比較 f(x,y)=x^2/20+y^2を損失関数とした(x,y)の更新経路 →Momentumと比べて、左右の揺れが軽減されている 6

7.

パラメーターの更新 更新手法の比較 f(x,y)の更新経路ではAdaGradが飛びぬけて優れているが、 下図のMNISTではAdaGradとAdamでは大差ないように、 状況によって最適な更新手法は変わるので色々試すのが良い MNISTにおける損失の遷移 ※MNIST:手書き文字が0~9の何にあたるかの分類を学習 f(x,y)=x^2/20+y^2を損失関数とした(x,y)の更新経路 7

8.

重みの初期値 重みに関して 重みパラメーターの値が小さいと、過学習が起きないようになる しかし、最初から重みを0に(均一に)すると、誤差逆伝搬で全ての重みが均一に更新されてしまう →重みはランダムな値 にするべき 8

9.

重みの初期値 隠れ層の分布 モデルの概形図 データ:1000個のデータ(各データは[a1,,a100]で、 aiは標準偏差1のガウス分布で生成) 層:全結合層で、重みは標準偏差1のガウス分布で生成 活性化関数:sigmoid 全総結合(100×100) ×5 sigmoid →sigmoidでの出力結果が0か1になる につれて勾配が0に近づいていく (sigmoidゆえにf’(x)=f(x)(1-f(x)) と伝搬されるため) →勾配消失 の危険あり 各層に通した後のノードの分布結果(活性化関数の後) 9

10.

重みの初期値 隠れ層の分布 モデルの概形図 データ:1000個のデータ(各データは[a1,,a100]で、 aiは標準偏差1のガウス分布で生成) 層:全結合層で、重みは標準偏差0.01のガウス分布で生成 活性化関数:sigmoid 全総結合(100×100) ×5 sigmoid →出力結果が0や1といった極端な値 へと偏ることはない →勾配消失 の危険小 各層に通した後のノードの分布結果(活性化関数の後) 10

11.

重みの初期値 隠れ層の分布 (Xavier) モデルの概形図 データ:1000個のデータ(各データは[a1,,a100]で、 aiは標準偏差1のガウス分布で生成) 層:全結合層で、重みは標準偏差1/√nのガウス分布で生成 活性化関数:sigmoid ※nは前の層のノード数で、今回は常に100とみなす 全総結合(100×100) ×5 sigmoid 標準偏差0.01の時と比べて、 分布に広がりがある →sigmoidの表現を抑制されず、 効率的に学習できる 各層に通した後のノードの分布結果(活性化関数の後) 11

12.

重みの初期値 隠れ層の分布 (活性化関数が ReLUの場合) データ:1000個のデータ(各データは[a1,,a100]で、 aiは標準偏差1のガウス分布で生成) 層:全結合層で、重みはガウス分布で生成 活性化関数:ReLU Xavier:標準偏差 1/√n He:標準偏差 √2/√n ※nは前の層のノード数で、今回は常に100とみなす 実験結果 0.01:各層のアクティベーションがとても小さい→勾配消失の危険がある Xarxiv:層が深くなるごとに偏りが大きくなる→勾配消失の危険がある He:各層での分布が均一→勾配消失の危険が少ない 各層に通した後のノードの分布結果 (活性化関数の後) 12

13.

重みの初期値 学習結果 (MNIST) データ:1000個のデータ(各データは[a1,,a100]で、 aiは標準偏差1のガウス分布で生成) 層:全結合層で、重みはガウス分布で生成 活性化関数:ReLU Xavier:標準偏差1/√n He:標準偏差√2/√n ※nは前の層のノード数で、今回は常に100とみなす 実験結果 std=0.01の場合は学習が進まないが、HeやXarxivの場合は進んでいる また、Xarxivよりもへのほうが学習の進みが早い 初期化方法ごとの損失の遷移 13