---
title: 【ゼロから作るDeep Learning】8.1~8.3
tags: 
author: [京都大学人工知能研究会KaiRA](https://www.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YJ6YDZYP7V.jpg?width=480
description: 【ゼロから作るDeep Learning】8.1~8.3 by 京都大学人工知能研究会KaiRA
published: July 12, 24
canonical: https://www.docswell.com/s/kyoto-kaira/ZP2898-2024-07-12-124722
---
# Page. 1

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

2024年度前期輪読会 #12
ゼロから作るDeep Learning 8.1-8.3
京都大学工学部理工化学科 1回生
岡本 和優
0


# Page. 2

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

8.1 ネットワークをより深く
1


# Page. 3

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

ディープラーニングとは何か
ディープラーニングとは，層を深くしたディープなニューラルネッ
トワークのことである。
→これまで扱ってきたネットワークの層を重ねるだけで，ディープ
ラーニングを作ることができる。
たとえばVGG（後述）を参考にした以下のディープなCNNで手書
き数字認識を行うと，
p.242 図8-2
99.38%の認識精度が実現できる。
2


# Page. 4

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

認識精度を高める方法
●
アンサンブル学習
→複数のモデルを用いて予測を行う手法。
●
学習係数の減衰
→具体的には6章で紹介されたAdaGrad。
●
Data Augmentation（データ拡張）
→訓練画像の枚数をアルゴリズムによって増やす。
たとえば，回転・移動・一部分の切り出し・左右の反転・輝
度等の見た目の変化・拡大縮小など。
3


# Page. 5

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

なぜ層を深くするのか
理論的にはそれほど多くのことが分かっていないが，大規模画像認
識コンペティションで上位の手法の多くはディープラーニングによ
るものである。
層を深くすることの利点として分かっていることは
● 少ないパラメータで同等の表現力を達成できる（小さなフィル
ターによる畳み込みを重ねると，広い領域のデータを扱える）。
● 学習する問題を階層的に分解できるため，少ないデータで学習
を効率良く行える。
● 階層的に情報を渡すことができるため，前の層が抽出した情報
を利用でき，効率良く学習することが期待できる。
4


# Page. 6

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

8.2 ディープラーニングの小歴史
5


# Page. 7

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

VGG
VGGは畳み込み層とプーリング層から構成される基本的なCNNだ
が，重みのある層（畳み込み層や全結合層）を全部で16層（ない
し19層）重ねてディープにしている点が特徴である。
3×3の小さなフィルターによる畳み込み層を連続して行っている。
畳み込み層を2～3層連続し，プーリング層でサイズを半分にする
ことを繰り返し行って，最後に全結合層を経由して結果を出力する。
p.251 図8-9
6


# Page. 8

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

GoogLeNet
GoogLeNetは基本的にはCNNと同じ構成だが，サイズの異なるフ
ィルター（とプーリング）を複数適用し，その結果を適合するイン
セプション構造を構成要素として持つ。
1×1の畳み込み層を用いてチャンネル方向にサイズを減らすことで，
パラメータを削減し，処理を高速化している。
図は原著論文（1409.4842 (arxiv.org)）から。
7


# Page. 9

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

ResNet
ResNetは入力データを出力データにそのまま合算するスキップ構
造を導入することで，層を深くすることによって生じる勾配消失の
問題を軽減させた。
スキップ構造は逆伝播のとき，勾配をそのまま流している。これに
より，層を深くすることで勾配が小さくなる勾配消失が避けられる。
p.253 図8-12
8


# Page. 10

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

スキップ構造で勾配消失が解消できる理由
スキップ構造で伝播される誤差は𝜕𝐿/𝜕𝑥，スキップ構造まで伝わっ
てきた誤差が𝜕𝐿/𝜕𝐻だから，ここでの連鎖律は，
𝜕L 𝜕𝐿 𝜕𝐻
=
×
𝜕𝑥 𝜕𝐻 𝜕𝑥
である。𝐻(𝑥) = 𝐹(𝑥) + 𝑥だから𝜕𝐻/𝜕𝑥は
𝜕H 𝜕(𝐹 𝑥 + 𝑥) 𝜕𝐹
=
=
+1
𝜕𝑥
𝜕𝑥
𝜕𝑥
となる。したがって，
𝜕L 𝜕𝐿
𝜕𝐹
𝜕𝐿 𝜕𝐹 𝜕𝐿
=
×
+1 =
+
𝜕𝑥 𝜕𝐻
𝜕𝑥
𝜕𝐻 𝜕𝑥 𝜕𝐻
であり，これはスキップ構造がないときの誤差に，それまでに伝わ
ってきた誤差をそのまま加えたものになる。
【図解解説】ResNetとはなにか？わかりやすく解説 #機械学習 –
Qiitaを参照。
ResNetと
【
図解解説】
はなにか？わかりやすく
解説#機械学習– Qiita
ResNetと
【
図解解説】
はなにか？わかりやすく
解説#機械学習– Qiita
9


# Page. 11

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

8.3 ディープラーニングの高速化
10


# Page. 12

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

GPUによる高速化
ディープラーニングは畳み込み層で多大な処理時間が費やされる。
→畳み込み層の演算を効率良く行うことが高速化のポイント。
畳み込み層の演算は大量の行列の積和演算に帰着できる。
→GPUは大量の並列的な演算を得意とするため，これを用いること
で高速化が実現される。
GPUが並列的な演算を得意とする所以は，3次元のグラフィックス
のポリゴンを移動・回転が行列演算に対応すること。
11


# Page. 13

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

分散学習
複数のGPUや複数マシンで分散して計算を行うことで，ディープラ
ーニングの学習を効率化できる。
分散学習をサポートしたフレームワークとして，TensorFlowや
CNTKが本書では挙げられている。
「どのように計算を分散させるか？」は難しい問題だそう。
分散深層学習 @ NIPS&#039;17 | PPT (slideshare.net)を参照。
「大規模分散学習≒巨大ミニバッチ」とのこと。
12


# Page. 14

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

演算精度のビット削減
ディープラーニングは数値精度のビット数をそこまで必要としない
ため，これを削減することで高速化できる。
→ニューラルネットワークは入力に少しノイズが加わっても出力が
変わらない性質，ロバスト性があるから。
コンピュータで少数を表現するには32ビットの単精度浮動小数点
数，64ビットの倍精度浮動小数点数（Pythonではこれが一般的）
などのフォーマットがあるが，ディープラーニングにおいては16
ビットの半精度浮動小数点数でも問題なく学習できる。
13


# Page. 15

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

Binarized Neural Networks
Binarized Neural Networksは重みや中間データを1ビットで表現
する手法である（勾配は浮動小数点）。
重みと活性化値を+1，-1に以下の2つの手法で2値化している。
● Deterministic（決定論的）Binarization
●
Stochastic（確率論的）Binarization
【読解】 Binarized Neural Networks #CNN – Qiitaを参照。
14


# Page. 16

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

hard sigmoid関数
Stochastic Binarizationでは，シグモイド関数を直線で近似した
hard sigmoid関数が用いられている。
𝑥+1
𝜎 𝑥 = max(0, min(1,
))
2
15


# Page. 17

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

16


