---
title: 【ゼロから作るDeap Learning】3.4~3.7
tags: 
author: [京都大学人工知能研究会KaiRA](https://image.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EMY64XPEW.jpg?width=480
description: 【ゼロから作るDeap Learning】3.4~3.7 by 京都大学人工知能研究会KaiRA
published: May 14, 26
canonical: https://image.docswell.com/s/kyoto-kaira/5MQLP6-2026-05-14-212615
---
# Page. 1

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

2026年度前期輪読会 #4 (2026/05/14)
ゼロから作るDeep Learning
第3章 ニューラルネットワーク (3.4~3.7)
京都大学工学部情報学科 B1
柴田 倫宏
0


# Page. 2

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

自己紹介
• 所属: 京都大学工学部情報学科 一回生
• 興味分野: エネルギー効率の高いAI
(Green AI)
生物学的に妥当なニューラルネットワーク
(Biologically Plausible Neural Networks)
しばた みちひろ
柴田 倫宏
• 個人的な趣味: 数理を可視化して楽しむこと
1


# Page. 3

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

アジェンダ
◼ 3層NNの実装(フォワード)
◼ 出力層の設計
◼ 手書き数字認識
◼ まとめ
2


# Page. 4

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

3層NNの実装(フォワード)
3層NNの構成
3層NNのニューロンは、
• 入力層(第0層): 2つ
• 1つ目の隠れ層(第1層): 3つ
• 2つ目の隠れ層(第2層): 2つ
• 出力層(第3層): 2つ
のように配置されている場合を考える。
入力層
隠れ層
出力層
(第0層)
(第1,2層)
(第3層)
3


# Page. 5

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

3層NNの実装(フォワード)
記号の説明
下付き添え字の順番に注意
4


# Page. 6

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

3層NNの実装(フォワード)
第一層への入力
インデックスに注意
5


# Page. 7

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

3層NNの実装(フォワード)
第一層からの出力
6


# Page. 8

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

3層NNの実装(フォワード)
第2層/出力層の計算
7


# Page. 9

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

アジェンダ
◼ 3層NNの実装(フォワード)
◼ 出力層の設計
◼ 手書き数字認識
◼ まとめ
8


# Page. 10

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

出力層の設計
恒等関数とソフトマックス関数
ソフトマックス関数
恒等関数
…
…
9


# Page. 11

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

出力層の設計
オーバーフロー対策
指数関数の値は大きくなりやすいので、
オーバーフローに対策する必要がある。
下の式変形を利用する。
10


# Page. 12

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

出力層の設計
ソフトマックス関数の性質
出力の総和が1
大小関係の保存
これら3つの大小関係はすべて一致する
出力を確率として扱える
11


# Page. 13

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

出力層の設計
多クラス分類問題
Nクラスに分類する問題では
出力層のニューロン数をNとする
出力層の活性化関数として
ソフトマックス関数を適用する
(書籍の3.5.4から引用)
各ニューロンの出力値は
各クラスに分類される確率を表す
12


# Page. 14

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

アジェンダ
◼ 3層NNの実装(フォワード)
◼ 出力層の設計
◼ 手書き数字認識
◼ まとめ
13


# Page. 15

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

手書き数字認識
MNISTデータセット
MNIST(エムニスト)は、手書き数字の画像セットとして非常に有名なデータセットであ
る。論文の実験用データとしてもよく登場する。
MNISTの画像例(書籍の3.6.1から引用)
書籍では、MNISTデータセットを扱うためにpythonスクリプトのmnist.pyが提供されてい
る。(場所は以下のgithubのurlから、deep-learning-from-scratch/dataset/mnist.py)
Github: https://github.com/oreilly-japan/deep-learning-from-scratch
14


# Page. 16

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

手書き数字認識
推論処理の流れ
画像と正解ラベルを読み込む
(load_mnist関数)
学習済みの重みとバイアスを読み込む
(sample_weight.pkl)
推論処理を行う
(仕組みは前のスライドと同じ)
Pickleは、プログラム実行中にオブジェ
クトをファイルとして保存する機能のこ
と。ファイルをロードすると、実行時の
オブジェクトを即座に復元できる。
認識精度を求める
活性化関数は1, 2層でシグモイド関数、
出力層でソフトマックス関数とする。
15


# Page. 17

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

手書き数字認識
実装コード(GoogleColab)
https://colab.research.google.com/drive/1_9D9p89JGmAQC4wGXGeYc_G22NmQoRdc?usp=sharing
実
装コ
ード
実装コード
https://colab.research.google
.com/drive/1_9D9p89JGmA
QC4wGXGeYc_G22NmQoR
dc?usp=sharing
16


# Page. 18

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

手書き数字認識
バッチ処理とは
画像1枚ごとに行列計算する場合
(書籍の3.6.3から引用)
画像100枚分をまとめて一度に行列計算する場合
(書籍の3.6.3から引用)
バッチを用いた推論処理では、一枚ごとに処理する場合と同じ関数(predict)を用い
ることができ、入力Xを行列としてそのまま渡せばよい。
17


# Page. 19

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

手書き数字認識
バッチ処理の利点
• 多くのライブラリが大きな配列を計算するために最適化されているため、大きな行
列で一度に計算を行うことで計算時間を短縮できる。
• データを一度にまとめて送ることで、データ転送のボトルネックの影響を低減でき
る。
データをまとめて処理した方が合計の処理時間を短縮できる。
18


# Page. 20

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

アジェンダ
◼ 3層NNの実装(フォワード)
◼ 出力層の設計
◼ 手書き数字認識
◼ まとめ
19


# Page. 21

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

まとめ
• 活性化関数としてシグモイド関数、ReLU関数のような非線形関数を用いる。
• 多次元配列を利用することでニューラルネットワークを効率的に実装できる。
• 機械学習の問題は回帰問題と分類問題に大別され、それぞれ活性化関数に恒等関数
とシグモイド関数を利用する。
• クラス分類問題では、出力層のニューロン数をクラスの数に設定する
• データをまとめてバッチ処理することで計算を高速化できる。
20


# Page. 22

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

出典・権利表記
参考文献
• 輪読用書籍
斎藤康毅, 『ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論
と実装』, オライリー・ジャパン, 2016.
21


