---
title: 【ゼロから作るDeep Learning】6.2-6.3
tags: 
author: [京都大学人工知能研究会KaiRA](https://convert.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/5EG3ZVQX7L.jpg?width=480
description: 【ゼロから作るDeep Learning】6.2-6.3 by 京都大学人工知能研究会KaiRA
published: June 23, 24
canonical: https://convert.docswell.com/s/kyoto-kaira/ZQ8G9M-2024-06-23-223144
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/5EG3ZVQX7L.jpg)

2024年度前期輪読会#9「ゼロから作るDeep Learning」
6章 学習に関するテクニック
6.2~6.3
奈良女子大学
藤本
馨
0


# Page. 2

![Page Image](https://bcdn.docswell.com/page/4JQ5L6K57P.jpg)

概要
目次
１．重みの初期値
２．Batch Normalization
３．まとめ
1


# Page. 3

![Page Image](https://bcdn.docswell.com/page/K749D4PVE1.jpg)

１．重みの初期値
2


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LJ1KZ4947G.jpg)

重みの初期値

学習に適切な重みの初期値を考える

重みを小さくすることで、過学習が起こりにくくなる


（入力に過剰に反応しすぎるから？）
では、全て０にしてみるのはどうか？

ニューロンが対称的に変化するため学習のパフォーマンスが低くなる



順伝播中はすべてのニューロンが０になる
逆伝播中は重みがすべて同じように更新される
全て定数にしても同じことがいえる

重みが対称的な構造を持つ場合、学習がうまくいかない

適度にばらけたランダムな初期値が必要
参考・引用元URL：https://medium.com/@freshtechyy/weight-initialization-for-deep-neural-network-e0302b6f5bf3
3


# Page. 5

![Page Image](https://bcdn.docswell.com/page/GJWD9XQZ72.jpg)

隠れ層のアクティベーション分布
● 重みの初期値により隠れ層のアクティベーション（活性化関数を通
した後の出力）がどう変化するかを観察

５層のニューラルネットワーク
 入力データ数：1000
 入力するデータ：平均：0、標準偏差：1のガウス分布に従う乱数で生成
 各隠れ層のニューロン数：100

ランダムに生成した入力データを流し、重みの初期値を変化させて
各層のアクティベーションデータ分布をヒストグラムで描画
4


# Page. 6

![Page Image](https://bcdn.docswell.com/page/4EZG96WLJ3.jpg)

隠れ層のアクティベーション分布（活性化関数：シグモイド関数）

重みを平均：0、標準偏差：1のガウス分布に従う乱数で生成
 0と1に偏った分布
 シグモイド関数は出力が0または1に近づくにつれて
微分の値が0に近づく
 したがって、0と1に偏ったデータ分布では逆伝播時の勾配が
どんどん小さくなってしまう
アクティベーション結果が0と1に偏る ➡ 勾配消失

重みを平均：0、標準偏差：0.01のガウス分布に従う乱数で生成
 0.5付近に集中
 アクティベーションに偏りがあると、複数のニューロンがほ
ぼ同じ値を出力するため表現力が落ちる
アクティベーションが偏る ➡ 表現力が制限される
参考・引用元URL：https://www.anarchive-beta.com/entry/2020/08/15/180000
5


# Page. 7

![Page Image](https://bcdn.docswell.com/page/Y76YK2GMEV.jpg)

隠れ層のアクティベーション分布（活性化関数：シグモイド関数）
● Xavierの初期値

各層のアクティベーションを同じ広がりのある分布にすることを目的と
した重みのスケール

前層のノードの個数を𝒏とした場合、 𝒏の標準偏差を持つ分布を使う
𝟏
● アクティベーションはある程度の広がり
を持っている
● シグモイド関数の表現力も制限されるこ
となく、効率的な学習が行える
参考・引用元URL：https://www.anarchive-beta.com/entry/2020/08/15/180000
6


# Page. 8

![Page Image](https://bcdn.docswell.com/page/G75GP2VQ74.jpg)

隠れ層のアクティベーション分布（活性化関数：ReLU）
● 重みを平均：0、標準偏差：0.01のガウス分布に従う乱数で生成
● 各層のアクティベーションは0に近い値
● 逆伝播の際の重みの勾配も同様に小さくなる
アクティベーション結果が0に偏る ➡ 学習が進まない
● 重みを「Xavierの初期値」に従って生成
● ReLU関数は負の値がすべて0になるので、0以外の要素に
着目
● 層が深くなるにつれて、アクティベーションに偏りが生ま
れている
アクティベーションが偏る ➡ 表現力が制限される
参考・引用元URL：https://www.anarchive-beta.com/entry/2020/08/15/180000
7


# Page. 9

![Page Image](https://bcdn.docswell.com/page/9J2Y643WJR.jpg)

隠れ層のアクティベーション分布（活性化関数：ReLU）
● Heの初期値

各層のアクティベーションを同じ広がりのある分布にすることを目的と
した重みのスケール

前層のノードの個数を𝒏とした場合、 𝒏の標準偏差を持つ分布を使う
𝟐
● アクティベーションの分布が均一に保た
れている
参考・引用元URL：https://www.anarchive-beta.com/entry/2020/08/15/180000
8


# Page. 10

![Page Image](https://bcdn.docswell.com/page/DEYG9M19EM.jpg)

重みの初期値による学習の比較
● 重みの初期値の与え方による学習への
影響を見てみる

異なる重みの初期値によるMNISTデータ
を用いた学習経過を比較
 ５層のニューラルネットワーク
 入力データ数：784
 各隠れ層のニューロン数：100
 活性化関数：ReLU
Xavierの初期値を用いた時と、Heの
初期値を用いたときは学習が進んでい
る
 Heの初期値を用いた時が一番学習の
進みが早い
 適切な重みの初期値の設定は学習にお
いて重要

9


# Page. 11

![Page Image](https://bcdn.docswell.com/page/VJNGLW2D78.jpg)

２． Batch Normalization
10


# Page. 12

![Page Image](https://bcdn.docswell.com/page/YE9W4X18E3.jpg)

Batch Normalization
● 前章では、アクティベーションの分布が適度な広がりを持つよう
に重みの初期値を設定した
● Batch Normalizationでは、強制的にアクティベーションの分布
が適度な広がりを持つように調整する

アフィン変換を行った後にデータ分布の正規化を行う
● Batch Normalizationには以下の利点がある
学習を早く進行させることが出来る
 初期値にそれほど依存しない
 過学習を抑制する

Afiine
Batch
Norm
ReLU
11


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GE8NQ24Z7D.jpg)

Batch Normalization
● ミニバッチ：𝐵 =
𝑥1 , 𝑥2 , … , 𝑥𝑚 ごとに、平均が0、分散が1になる
ように正規化を行う
1.
2.
3.
1 𝑚
バッチデータの平均：𝜇𝐵 ← 𝑚 𝑖=1 𝑥𝑖
1 𝑚
2
バッチデータの分散：𝜎 𝐵 ← 𝑚 𝑖=1 𝑥𝑖 − 𝜇𝐵 2
バッチデータの正規化（各データから平均を引き、標準偏差で割る）：
𝑥𝑖 ←
𝑥𝑖 −𝜇𝐵
𝜎 2 𝐵+𝜖
 𝜖は0で除算されることを防止するためのもの
 上記はガウス分布の場合
4.
分布の調整：𝑦𝑖 ← 𝛾𝑥𝑖 + 𝛽
 𝑦𝐵 = 𝑦1 , 𝑦2 , … , 𝑦𝑚 が平均𝛽、標準偏差𝛾となるように学習に適した値に調整する
12


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LELPX2617R.jpg)

Batch Normalizationの評価
● MNISTデータセットを使ってBatch Normalizationがある時とな
い時とで学習の進みがどう変わるかを確認
初期値：標準偏差0.05のガウス分布
初期値：標準偏差1.0のガウス分布
初期値：標準偏差0.0001のガウス分布
● 正規化を行うことで学習が進んでいることが分かる

ただし、重みの初期値が小さすぎる場合と大きすぎる場合は学習の進み
は遅くなる
参考・引用元URL：https://www.anarchive-beta.com/entry/2020/08/16/180000
13


# Page. 15

![Page Image](https://bcdn.docswell.com/page/4JM4L8557W.jpg)

３．まとめ
14


# Page. 16

![Page Image](https://bcdn.docswell.com/page/PJRWK53Z79.jpg)

まとめ
•
重みの
初期値
Batch
Norm
重みの初期値は大きすぎず、小さすぎず、適度にばらけていると、アクティベーションの分
布が適度な広がりを持ち、学習がうまくいく
•
活性化関数：シグモイド関数の場合、重みの初期値は「Xavierの初期値」を用いる
•
活性化関数：ReLU関数の場合、重みの初期値は「Heの初期値」を用いる
•
アクティベーションの分布が適度な広がりを持つように調整する方法を
Batch Normalizationという
学習の進行を早めることが出来る
過学習を抑制する
重みの初期値に対してそこまで神経質にならなくてもよくなる
•
•
•
15


# Page. 17

![Page Image](https://bcdn.docswell.com/page/PEXPLK417X.jpg)

16


