---
title: 【ゼロから作るDeep Learning】3.5~3.7
tags: 
author: [京都大学人工知能研究会KaiRA](https://convert.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GJWD12Z272.jpg?width=480
description: 【ゼロから作るDeep Learning】3.5~3.7 by 京都大学人工知能研究会KaiRA
published: May 19, 24
canonical: https://convert.docswell.com/s/kyoto-kaira/KRXV1G-2024-05-19-165849
---
# Page. 1

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

2024年度前期輪読会#3
ニューラルネットワーク 3.5〜3.7
名古屋大学 情報学部 人間・社会情報学科
吉村昂樹
0


# Page. 2

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

2. 便利なテンプレ集
目次
1. 出力層の設計
2. 手書き数字認識
3. まとめ
1


# Page. 3

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

1. 出力層の設計
2


# Page. 4

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

1. 出力層の設計
問題と活性化関数
回帰問題
分類問題
解く問題
解く問題
連続的な数値の予測
活性化関数
恒等関数
データがどのクラスに属するか
活性化関数
ソフトマックス関数
3


# Page. 5

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

1. 出力層の設計
ソフトマックス関数
数式
exp(x)はexを表す指数関数
(eは2.7182…のネイピア数)
出力層がn個あるうちのk番目の出力ykを求め
る計算式
プログラム
4


# Page. 6

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

1. 出力層の設計
ソフトマックス関数 実装上の注意点
問題点：オーバーフロー
解決策（数式）
5


# Page. 7

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

1. 出力層の設計
ソフトマックス関数 実装上の注意
解決策（Pythonによる実装）
6


# Page. 8

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

1. 出力層の設計
ソフトマックス関数の特徴と出力層
特徴
(1) 適用しても各要素の大小関係は変らない
(2) 出力が0～1.0の実数、総和が1 → 「確率」として考えられる
(3) 出力層では省略される
出力層のニューロン数
分類したいクラス数に基づいて適宜決める
(例) 0～9の手書きの数字の画像の分類
→ 10クラス分類 = 出力層のニューロン数は10
7


# Page. 9

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

2. 手書き数字認識
8


# Page. 10

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

2.手書き数字認識
MNISTデータセット
特徴
手書き数字の画像セット（0～９までの数字画像で出来ている)
訓練画像：60000枚、テスト画像：10000枚
それぞれの画像データは 28×28のグレー画像で、各ピクセルは0~255をとる
それぞれの画像データには書いてある数字がラベルとして与えられている
9


# Page. 11

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

2.手書き数字認識
MNISTデータセット
プログラム
10


# Page. 12

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

2.手書き数字認識
MNISTデータセット
load_mnist関数
返り値：(訓練データ, 訓練ラベル), (テスト画像, テストラベル）
引数：① normalize=True
ピクセルを0.0～1.0に正規化（Falseにすれば0～255のまま）
② flatten=True
一次元配列する（True: 784, False: 1×28×28)
③ one_hot_label=False
正解となる部分を1に、それ以外は0にする
(例) Falseのとき
画像に書かれた数字(正解)が2ならば、ラベルは2
Trueのとき
画像に書かれた数字(正解)が2ならば、ラベルは
[0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] となる
11


# Page. 13

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

2.手書き数字認識
MNISTデータセット
正規化
データをある決まった範囲に変換する処理のこと
ここではnormalize=Trueにして画像の各ピクセルを255で除算し、
0.0～1.0にした
前処理
ニューラルネットワークの入力データに対して何らかの変換を行うこと
データ全体の分布を考慮した前処理が必要
識別性能の向上や学習の高速化が実験で示されている
12


# Page. 14

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

2.手書き数字認識
ニューラルネットワークの推論
ネットワークの構造（ニューロン数）
入力層：784個（画像のサイズ 28×28=784から）
隠れ層：一つ目が50個、二つ目が100個（本来なら任意の個数に設定可能）
出力層：10個 （0～9の10クラスに分類したいから)
プログラム（関数の定義）
13


# Page. 15

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

2.手書き数字認識
ニューラルネットワークの推論
プログラム（関数の定義）
14


# Page. 16

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

2.手書き数字認識
ニューラルネットワークの推論
プログラム（推論）
15


# Page. 17

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

2.手書き数字認識
バッチ処理
バッチ処理
predict関数では一度につき1枚の画像についてしか予測を行えなかった
→一度に複数の画像について予測したい
例えば100枚を1つのまとまり(バッチ)として処理をしたい
メリット：1枚当たりの処理時間を大幅に短縮できる
16


# Page. 18

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

2.手書き数字認識
バッチ処理
形状の推移
入力画像が１枚の場合
入力画像が100枚の場合
17


# Page. 19

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

2.手書き数字認識
バッチを使ったニューラルネットワーク
プログラム
18


# Page. 20

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

まとめ
ニューラルネットワークの順方向の伝播について述べてきた
まとめ１
前章のパーセプトロンと、ニューロンの信号が階層的に伝わるという点で同じ
まとめ２
信号を変化させる活性化関数が異なっていた
まとめ３
パーセプトロン：信号が急激に変化するステップ関数
ニューラルネットワーク：滑らかに変化するシグモイド関数
19


