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

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

2026年度前期輪読会 #5 ゼロから作る Deep Learning 2026/5/21
ニューラルネットワークの学習
（4.1~4.3）
理学部 3回生
ALAWIK Abdourrahman
0


# Page. 2

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

アジェンダ
◼ 4.1 データから学習する
◼ 4.2 損失関数
◼ 4.3 数値微分
1


# Page. 3

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

アジェンダ
◼ 4.1 データから学習する
◼ 4.2 損失関数
◼ 4.3 数値微分
2


# Page. 4

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

データから学習する
目的：ニューラルネットワークの重みパラメータの値を決めたい
問題：パラメータが多すぎる、手作業で決めるのはか！
GPT-1: 1億+
GPT-4: 1兆+
解決：データに基づいて自動的に学習させる
3


# Page. 5

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

3.1.1 データ駆動
具体例：画像が与えられて、それが手書きの「5」なのかに認識するアルゴリズムを作りたい
方針１：「5」と認識してほしい画像の特徴を考えて賢いアルゴリズムを作る
➢ 難しい！
方針２：画像の大事な特徴だけを抽出して、識別器を学習させる
➢ 問題に応じて特徴量を設計したり調整したりしないといけない
方針３：画像をニューラルネットワークに入力して、端から端まで機械学習に任せる
4


# Page. 6

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

4.1.2 訓練データとテストデータ
機械学習の流れ：大量のデータを供給（訓練データ = 教師データ） → その中のパターンを自動
的に見出す → パラメータなどを適切に決定する → 関心の問題を解くモデルを作る
大事な点：教師データに入っていない幅広い入力に対しても適応したい
➢ 汎化能力
➢ 教師データのパターンに適合しすぎると、現実世界のデータに適合しなくなる：過学習!!
解決：テストデータ
➢ 一部のデータを教師データに含めず、出来上がったモデルの汎化能力の評価に使う
5


# Page. 7

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

アジェンダ
◼ 4.1 データから学習する
◼ 4.2 損失関数
◼ 4.3 数値微分
6


# Page. 8

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

4.2 損失関数
目的：教師データを基に、最適なパラメータを決めたい
欲しいもの：一つの指標により、モデルの適合度を量的に記述したい
➢ 損失関数：モデルが教師データに対してどれぐらい一致していないかを表す指標
モデルの出力を 𝒚、教師データ（正しい出力）を 𝒕 として、𝐸 = 𝐸(𝒚, 𝒕)
教師データに対する入力を 𝒙、モデルのパラメータを 𝜽 として、𝒚 = 𝑓𝜽 (𝒙) と書けるので、
➢ 機械学習が損失関数の最小化問題に帰着する：𝜽 = argmin𝜽′ 𝐸 𝑓𝜽′ 𝒙 , 𝒕
7


# Page. 9

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

4.2.1~4.2.2 大事な損失関数
以下、ニューラルネットワークの出力を {𝑦𝑘 }、教師データを {𝑡𝑘 } とする
1. 二乗和誤差
1
𝐸 = ෍ 𝑦𝑘 − 𝑡𝑘 2
2
𝑘
2. 交差エントロピー誤差
𝐸 = − ෍ 𝑡𝑘 log 𝑦𝑘
𝑘
delta は発散を防ぐため
𝑦 = log 𝑥
𝑦 = 𝑥 log 𝑥
8


# Page. 10

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

手書き数字認識の例
「3.6 手書き数字認識」の例では、出力が10個の要素（0~1の実数）からなる
➢ i 番目は「入力の画像が数字 i である確率」と解釈できる
➢ 正しい答えは１つのみだから、教師データは one-hot表現：正解は 1、それ以外は 0
9


# Page. 11

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

4.2.3 ミニバッチ学習
損失関数は１つのデータに対して定義されているが、実際の学習においては、複数の訓練データ
を用意して、それらの平均損失を最小化する
➢ N個のデータに対する交差エントロピー誤差：
1
𝐸 = ෍ ෍ 𝑡𝑛𝑘 log 𝑦𝑛𝑘
𝑁
𝑛
𝑘
しかし、実際の機械学習において、訓練データが多すぎて、同時に学習させることは非現実的
（c.f: MNISTのデータセットは 60,000個の訓練データを含む）
10


# Page. 12

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

4.2.3 ミニバッチ学習
ミニバッチ学習：データの一部を無作為に選び出して、それらで学習を行う
➢ サンプルデータにより全体を近似する
np.random.choice が便利
例：np.random.choice(60000,10) は 0~60000未満の数字10個をランダムに選び出す
後はこれらをインデックスとしてミニバッチを取れる
11


# Page. 13

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

4.2.4 [バッチ対応版] 交差エントロピー誤差の実装
バッチデータに対応した交差エントロピー誤差
t が one-hot表現ではなく、ラベルとして与えられている場合（[0,0,1,0,…] -&gt; 2)
12


# Page. 14

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

4.2.5 なぜ損失関数を設定するのか？
疑問：なんで認識精度を直接指標とし使えないのか？
重要なキーワード：微分
滑らかな損失関数を使うことで、微分の符号が損失関数を最小化する方向の手がかりになる
➢ 微分が正なら：増加関数だから、パラメータを負の方向へと更新させる
➢ 微分が負なら：減少関数だから、パラメータを正の方向へと更新させる
➢ （より正確には、勾配の逆向きに沿って更新する⇒勾配降下法）
しかし、認識精度はステップ関数の組み合わせでできており、ほとんどのところで微分がゼロ
➢ パラメータをすこしだけ更新しただけでは変化しない
なお、同じ理由で、ステップ関数は活性化関数に使えない
13


# Page. 15

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

アジェンダ
◼ 4.1 データから学習する
◼ 4.2 損失関数
◼ 4.3 数値微分
14


# Page. 16

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

4.3.1 微分
滑らかな関数 𝑓: (𝑥 − 𝜖, 𝑥 + 𝜖) → ℝ の微分：
d𝑓 𝑥
𝑓 𝑥 + ℎ − 𝑓(𝑥)
= lim
ℎ→0
d𝑥
ℎ
未知の関数 f の微分を数値的に計算する：
➢ 極限を正確実行することは不可能なので、小さな h で近似する
➢ しかし、小さすぎると丸め誤差で 0/0 になってしまうので、適切な h で計算する：
「前方差分」：
しかし数値計算である以上、誤差を含む
「中心差分」により、その誤差を減らせる：
15


# Page. 17

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

補足
テーラーの定理より、𝑓 が 𝐶 2 級ならば、∃𝑥ℎ ∈ (𝑥, 𝑥 + ℎ)
より、
′′ 𝑥
𝑓
ℎ
𝑓 𝑥 + ℎ = 𝑓 𝑥 + ℎ𝑓 ′ 𝑥 + ℎ2
2
𝑓 𝑥+ℎ −𝑓 𝑥
d𝑓 𝑥
−
ℎ
d𝑥
≤
max
𝑦∈ 𝑥,𝑥+ℎ
𝑓 ′′ 𝑦
ℎ
=𝑂 ℎ
2
同様に、 𝑓 が 𝐶 3 級ならば ∃𝑥ℎ+ ∈ 𝑥, 𝑥 + ℎ , 𝑥ℎ− ∈ 𝑥 − ℎ, 𝑥
′′ 𝑥
′′′ 𝑥 +
𝑓
𝑓
ℎ
𝑓 𝑥 + ℎ = 𝑓 𝑥 + ℎ𝑓 ′ 𝑥 + ℎ2
+ ℎ3
2
6
′′
′′′ −
𝑓
𝑥
𝑓
𝑥ℎ
𝑓 𝑥 − ℎ = 𝑓 𝑥 − ℎ𝑓 ′ 𝑥 + ℎ2
− ℎ3
2
6
なので、
′′′ 𝑥 + + 𝑓′′′(𝑥 − )
𝑓 𝑥+ℎ −𝑓 𝑥−ℎ
d𝑓 𝑥
𝑓
ℎ
ℎ
−
= ℎ2
2ℎ
d𝑥
12
特に、
2
𝑓 𝑥+ℎ −𝑓 𝑥−ℎ
d𝑓 𝑥
ℎ
−
&lt;
max
𝑓 ′′′ 𝑦
= 𝑂(ℎ2 )
𝑦∈ 𝑥−ℎ,𝑥+ℎ
2ℎ
d𝑥
6
16


# Page. 18

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

4.3.2 数値微分の例
関数 𝑓(𝑥) = 0.01𝑥 2 + 0.1𝑥 の数値微分を求めたい
まず関数を定義して、プロットしてみる
17


# Page. 19

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

4.3.2 数値部微分の例
関数 𝑓(𝑥) = 0.01𝑥 2 + 0.1𝑥 の解析的な解は
d𝑓
(𝑥) = 0.02𝑥 + 0.1
d𝑥
点 𝑥 = 5 と 𝑥 = 10 における微分を数値的に求める（真の値はそれぞれ 0.2 と 0.3）
前方差分の場合：
中心差分の場合：
18


# Page. 20

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

4.3.3 偏微分
今回、2変数関数 𝑓 𝑥1 , 𝑥2 = 𝑥02 + 𝑥12 を考える
偏微分
➢
𝜕𝑓
𝜕𝑓
、
片方の変数を止めながら、指定された変数について微分を行う
𝜕𝑥0
𝜕𝑥1
𝜕𝑓
= 2𝑥0
𝜕𝑥0
𝜕𝑓
= 2𝑥1
𝜕𝑥1
数値に求めるには、他の変数を止めた１変数関数の数値微分をこれまで通りに求めればよい：
例えば、上で定義した 𝑓 の (3,4) における偏微分（
𝜕𝑓
𝜕𝑓
= 6,
= 8）を数値的に求める：
𝜕𝑥0
𝜕𝑥1
19


# Page. 21

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

20


