---
title: 【ゼロから作るDeap 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/V7NW5NQ178.jpg?width=480
description: 【ゼロから作るDeap Learning】3.5~3.7 by 京都大学人工知能研究会KaiRA
published: May 19, 25
canonical: https://convert.docswell.com/s/kyoto-kaira/KQRW3E-2025-05-19-204314
---
# Page. 1

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

2025前期輪読回 #3 (2025/5/19)
第3章ニューラルネットワーク (3.5~3.7)
京都大学物理工学科 B4
鈴木 盛之
0


# Page. 2

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
1


# Page. 3

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
2


# Page. 4

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

出力層の設計 - 恒等関数とソフトマックス関数
回帰問題には恒等関数、分類問題にはソフトマックス関数を用いる
回帰問題と分類問題のどちらに対応するかで、
出力層の活性化関数を変える必要がある
回帰問題
恒等関数
ある入力データから
（連続的な）数値の予測を行う
入ってきたものをそのまま出力する
分類問題
ソフトマックス関数
データがどのクラスに
属するかを分類する
（15℃, 10m など...）
入力の値を0〜1に変換する
（ 確率として捉えられる）
3


# Page. 5

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

ソフトマックス関数
ソフトマックス関数の定義
ソフトマックス関数は以下の式で表される
入力信号の指数関数
全ての入力信号の
指数関数の和
4


# Page. 6

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

ソフトマックス関数
ソフトマックス関数をPythonで実装する
オーバーフローするかも・・・
5


# Page. 7

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

ソフトマックス関数の問題点
大きい値を入力すると、オーバーフローが発生する
6


# Page. 8

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

ソフトマックス関数
先の実装を改善する
Point !
C’という定数を足しても（引
いても）最終的な値は変化し
ない
ある定数 （aₖで最大のものを使う
ことが多い）を引くことで、
指数関数の値を小さくできる
7


# Page. 9

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

ソフトマックス関数 - オーバーフローを防ぐ
先の修正をPythonで実装する
修正前
修正後
エラーが消えた！
8


# Page. 10

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

ソフトマックス関数の特徴
問題に対して、確率的（統計的）な対応ができるようになる
Point !
● 出力は0〜１
● 出力の総和は1
確率として
捉えることができる
4.0の確率が0.736
9


# Page. 11

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

出力層のニューロンの数
解くべき問題に応じて、出力するニューロンの数を決める
10個のクラスに分類したい場合
0
1
何らかの計算
2
・
・
・
2である確率大
10個
8
9
10


# Page. 12

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
11


# Page. 13

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

MNISTデータセットとは
MNISTデータセットとは、手書き数字の画像セット
● 0から9までの手書き数字の
画像から構成されている
● 訓練画像が60,000枚、
テスト画像が10,000枚用意されている
● 機械学習の実験用データとしてよく用いられる
12


# Page. 14

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

MNISTデータセットについて
MNISTデータセットを読み込んで表示する
※ ここでは本の実装に
あわせています
13


# Page. 15

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
14


# Page. 16

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

ニューラルネットワークによる推論処理
ニューラルネットワークを用いて、MNISTの手書き数字を推論してみる
784
50
100
10
0
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
9
● 入力層：784個
28✖28 = 784
画像サイズ
● 出力層：10個
0から9に分類する
● 隠れ層：
○ 1つ目：50個
○ 2つ目：100個
15


# Page. 17

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

ニューラルネットワークによる推論処理
ニューラルネットワークを用いて、MNISTの手書き数字を推論してみる
出力:
Accuracy: 0.9352
93.5%で
正しく分類できた
16


# Page. 18

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
17


# Page. 19

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

バッチ処理
100枚の画像で同時に処理すると、出力の形状が変わる
1枚の場合
X
次元 784
W1
W2
W3
Y
784✖50
50✖100
100✖10
10
W1
W2
W3
Y
784✖50
50✖100
100✖10
100✖10
100枚の場合
X
次元 100✖ 784
出力の形状が✖100になる
18


# Page. 20

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

バッチ処理
バッチとは、「まとまりのある入力データ」のこと
バッチとは・・・まとまりのある入力データ のこと
X
次元 100✖ 784
W1
784✖50
W2
50✖100
W3
100✖10
Y
100✖10
この「100」がバッチの大きさに相当する
19


# Page. 21

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

バッチ処理
バッチ処理を実装してみる
batch_sizeごとに加算
20


# Page. 22

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

バッチ処理のメリット
バッチ処理を使うと計算時間が減らせる
Numpyなどの数値計算ライブラリは
大きな配列でも効率よく計算できるよう
最適化されている
1枚あたりの計算時間を大幅に減らすことができる
大きいサイズの配列のほうが、小さい配列を分割して計算するよ
り速い
21


# Page. 23

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

アジェンダ
■ ソフトマックス関数
■ MNISTデータセット
■ ニューラルネットワークの推論処理
■ バッチ処理
■ まとめ
22


# Page. 24

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

まとめ
● 出力層で使用する関数は、回帰問題では恒等
関数、分類問題ではソフトマックス関数を一般
的に使用する
● 分類問題では、出力層のニューロンの数を分
類するクラス数に設定する
● 入力データのまとまりをバッチといい、バッチ単
位で推論処理を行うことで、計算を高速に行う
ことができる
🔗 デモ用のコード（Google Colab）
23


