---
title: Deep Learningの基礎　図だくさん解説　~プログラムが自己学習する仕組み~
tags:  #深層学習 #deep learning #machine learning #ai #chat gpt #backpropagation #誤差逆伝播法  
author: [MarbIe choco](https://www.docswell.com/user/marbie)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EQMK126JP.jpg?width=480
description: Deep learningの学習がどのような仕組みで進むのかを、数学知識をなるべく使わないように説明してみました。 図多めにして流し見しやすくしています
published: March 22, 25
canonical: https://www.docswell.com/s/marbie/5MX2RE-2025-03-22-130734
---
# Page. 1

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

Deep Learningの基礎 ~プログラムが学習する仕組み～
順伝播： 現在の𝑾, 𝒃をもとに、出力を計算。Forward propagationとも。
W,bを更新
逆伝播： 現在の𝑾, 𝒃をもとに、出力を計算。Backpropagation。
𝟏
𝟏 𝚫𝒃𝟐
𝟐
𝟏
𝚫𝒃
𝟏
𝚫𝒙
𝚫𝒙
𝚫𝑾
𝜟𝒙𝟐
𝚫𝒙
𝚫𝑾
×𝒙
4.2
+4.2
5.1
-5.1
6.5
-
6.1
-6.1
5.0
-
5.3
-5.3
5.8
-5.8
6.2
5.0
6.0
6.5
5.0
× 𝑾𝟏 -
6.2
-5.0
-6.0
𝚫𝑾𝟑
𝚫𝒙𝟐 𝚫𝒃𝟑 𝚫𝒑
+4.2
4.2
+4.2
+4.2
4.2
+4.2
+4.2
- 5.1
5.1
-5.1
- 5.1
5.1
-5.1
- 5.1
- 6.5
6.5
-6.5
- 6.5
6.5
-6.5
- 6.5
- 6.1
6.1
-6.1
- 6.1
6.1
-6.1
- 6.1
- 5.0
5.0
-5.0
- 5.0
5.0
-5.0
- 5.0
5.3
-5.3
- 5.3
5.3
-5.3
- 5.8
5.8
-5.8
- 5.8
5.8
-5.8
-
6.2
- 6.2
6.2
×1 -
5.3
6.2
- 5.0
- 6.0
× 𝒙𝟏
× 𝑾𝟐 -
6.2
×1
5.0
-5.0
- 5.0
6.0
-6.0
- 6.0
× 𝒙𝟐
× 𝑾𝟑 -
6.2
5.0
-5.0
6.0
-6.0
×1 -
5.3
- 5.8
- 6.2
- 5.0
1/n
- 6.0


# Page. 2

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

はじめに
最近、ニュースの話題がAI一色
➢特に生成系AIと呼ばれる連中
• ChatGPT
• 画像生成
実は“AI”は結構ざっくりしたくくり
➢定義によっては、電卓もAI
昨今話題になっているAIは、
Machine Learning、その中でも
Deep Learningという技術をベースにした物
AI
Machine
Learning
Deep
Learning
Chat
GPT
本ゼミでは、こいつを勉強していきます
画像
生成
2


# Page. 3

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

Deep Learning 勉強会 第1回
プログラムが自分で学習する仕組み
3


# Page. 4

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

今日のもくじ
• ルールベースプログラムの限界
• 自己学習型プログラム -- Machine Learningの着想
• ニューラルネットの登場
• 学習手法：勾配降下法
• ディープラーニング
4


# Page. 5

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

ルールベースプログラムの限界
5


# Page. 6

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

AIって、普通のプログラムとどう違うの？
まず大前提として、AIはプログラムの一種
➢でも、AIはかなり異質なジャンルではある
違いを正しく捉えるため、
“プログラム”とは何なのかを再確認しよう
🤔そもそもプログラムって一言で言うと？
6


# Page. 7

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

プログラムとは、コンピュータへの命令書
コンピュータ
➢厳密な命令書を渡すと、その通りにこなす機械
➢この命令書がプログラム
平均値を求めよ
[10,20,30,40]
1. 合計する
2. ４で割る
プログラマー
➢人がしてきた作業の内容を命令書に落とし込み、 # 平均値をもとめるプログラム
代わりにやってもらうお仕事
input = [10, 20, 30, 40]
✅ある作業を人間がする時の思考過程を、
細かく書き下しているだけ
goukei = 0
i = 0
while i &lt; 4:
goukei = goukei + input[i]
i = i + 1
➢逆に言えば、思考過程が説明しにくい事は、
heikin = goukei / 4
プログラム化するのも困難
return heikin
7


# Page. 8

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

試しに、手書き数字を分類するプログラムを書いてみよう
人が書いた0-9の数字を自動分類したい
前提（テキトー）
• 8x8のpixelアート
• 各pixelは0か1
• 0なら白、1なら黒
• 入力としては8x8の二次元配列
さあ、プログラムを書いてみよう！
0
1
2
3
4
5
6
7
8
9
まずは、人間が分類する時の思考過程を…
8


# Page. 9

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

あれ、なんか難しいな……
Q. なんで難しい？
A. 正に、思考過程を説明しにくいから
➢人が無意識にやってる領域に近いタスク
普段なんとなく判断しているが、
論理的に導出してるわけではない
輪っかが２つあったら
８とか…
いや輪っかって
どう説明すんだよ
４回折れたら２やな
５だって同じだろボケ
➢視覚的なタスクは特にその傾向あり
自分でもどうやってるかわからないのに
命令書なんて作れない！
9


# Page. 10

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

がんばって思考過程を説明できたとしても…
手書きのランダム性に対応しきれない
• 形のバリエーション
• 書き損じによるノイズ
• 回転 etc.
➢人が考えたロジックを書き下す、
従来通りの手法では限界がある
僕らの考えたさいきょうの
“0の定義”
1. 左右対称
2. を直線で結んだ形
じゃあこれは？
これどうすんの？
これとかもさ～
🤔根本的にアプローチを変える必要性
え…
あ…
お前どっちの味方だよ
10


# Page. 11

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

自己学習型プログラム
Machine Learningの着想
11


# Page. 12

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

そもそも人間はどうやって見分けてる？
人間は長い年月をかけ、
大量の“数字”を見てきている
膨大な具体例から、それらに共通する
本質的に重要なパターンを徐々に学習
🤔プログラムでも再現できないか？
たとえば...
1 2 3
1
2
3
12


# Page. 13

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

こんなプログラムがあったらいいのに（妄想）
学習可能なプログラム！
1. 大量の画像と答えを用意
2. プログラムが以下を反復
1. 推論フェーズ
1. 何らかのロジックで、何の数字か推測
2. 答え合わせ
学習
if dot[1][3]:
return 1
else:
return 0
if dot[1][3] and !dot[2][2]:
return 1
else:
return 0
2. 学習フェーズ
1. 間違えたら、次は正解に近づくよう、
プログラム自身を書き換える
3. 間違えなくなったら完成！
0
1
0
1
13


# Page. 14

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

自己学習型プログラムの難しさ
🤔そもそも何をどう書き換える？
• if-elseの追加？
• for ループでも追加する？
自己学習プログラム
🤔着実に賢くなるように学習できる？
• 正解に近づく保証のある書き換え方針はあるの？
• ランダムに書き換えてもいいけど、時間がかかりすぎる
if dot[1][3] and !dot[2][2]:
return 1
else:
return 0
• cf) 遺伝的アルゴリズム
💡逆に言えば、こんなプログラムなら良いのでは？
1. 書き換える場所がはっきりしている
2. 正解に近づく保証のある学習方針が、理論的に求まる
0
1
14


# Page. 15

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

こんなプログラムはどうだろう？
描くのめんどくさすぎたので、
ここから4x3マスのpixel絵で…
画像が何の数字か、確率で求める！
1.
画像のpixelを1列に並べる
2.
黒を1, 白を0とした数字列に変換
3.
これに適当な数を掛け算＆足し算
1列に並べる
𝒙𝟎 𝒙𝟏 𝒙𝟐 𝒙𝟐 𝒙𝟒 𝒙𝟓 𝒙𝟔 𝒙𝟕 𝒙𝟖 𝒙𝟗 𝒙𝟏𝟎 𝒙𝟏𝟏
𝒙
1
1
1
1
0
1
1
0
1
1
1
1
• 適当な数は、プログラムが内部で保持するパラメタ（𝑤𝑒𝑖𝑔ℎ𝑡, 𝑏𝑖𝑎𝑠)
𝑤0 𝑥0 + 𝑤1 𝑥1 + ⋯ 𝑤11 𝑥11 + 𝑏
4.
できた値を、画像が“0”である確率()とする
5.
手順3と4を“0”から“9”まで実施
6.
一番、確率()が高かった数字を推測結果とする
𝒑
70
10
2
1
6
2
1
3
1
4
𝒑𝟎
𝒑𝟏
𝒑𝟐
𝒑𝟑
𝒑𝟒
𝒑𝟓
𝒑𝟔
𝒑𝟕
𝒑𝟖
𝒑𝟗
※各数字で独立に求めるので、普通は合計100%にならない。あくまで確率っぽい値
🤔色々疑問は多いと思うけど、一旦どんな計算か具体例で理解しよう
70%の確率で “0” !
15


# Page. 16

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

具体的にプログラムの流れをなぞってみる：推論フェーズ①
𝑝0 = 𝑤0 𝑥0 + 𝑤1 𝑥1 + ⋯ 𝑤11 𝑥11 + 𝑏
1列に並べる
画像が”0”で
ある確率()
1.1
1 𝑥0
𝑤0 𝑤1 𝑤2 𝑤3 𝑤4 𝑤5 𝑤6 𝑤7 𝑤8 𝑤9 𝑤10 𝑤11
1 𝑥1
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
𝑏0
0.8
𝑝0
1 𝑥2
1 𝑥3
0 𝑥4
1 𝑥5
1 𝑥6
0 𝑥7
1 𝑥8
1 𝑥9
1 𝑥10
1 𝑥11
𝒙
※数字はテキトー。整合性取れてないです…
16


# Page. 17

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

具体的にプログラムの流れをなぞってみる：推論フェーズ②
1列に並べる
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1 𝑥0
1.1
𝑏0
0.8
𝑝0
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1 𝑥1
-0.2
𝑏1
0.1
𝑝1
𝑤0 ′ 𝑤1 ′ 𝑤2 ′ 𝑤3 ′ 𝑤4 ′ 𝑤5 ′ 𝑤6 ′ 𝑤7 ′ 𝑤8 ′ 𝑤9 ′ 𝑤10 ′ 𝑤11 ′
1 𝑥2
画像が”1”で
ある確率()
1 𝑥3
0 𝑥4
1 𝑥5
1 𝑥6
0 𝑥7
1 𝑥8
1 𝑥9
1 𝑥10
1 𝑥11
𝒙
17


# Page. 18

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

具体的にプログラムの流れをなぞってみる：推論フェーズ②
この計算を式にすると、
𝒑 = 𝑾𝒙 + 𝒃
1列に並べる
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1 𝑥0
1.1
𝑏0
0.8
𝑝0
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1 𝑥1
-0.2
𝑏1
0.1
𝑝1
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1 𝑥2
0.3
𝑏2
1.5
𝑝2
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1 𝑥3
-1.4
𝑏3
1.1
𝑝3
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
0 𝑥4
1.0
𝑏4
-0.9
𝑝4
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1 𝑥5
1.5
𝑏5
0.3
𝑝5
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1 𝑥6
-0.9
𝑏6
0.8
𝑝6
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
0 𝑥7
-0.3
𝑏7
1.2
𝑝7
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1 𝑥8
0.7
-1.0
𝑝8
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1 𝑥9
𝑏8
0.4
𝑏9
1.0
𝑝9
𝑾
1 𝑥10
1 𝑥11
𝒙
𝒃
1.5
max
𝒑
きっとこれは「２」！
18


# Page. 19

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

さて、なんでこの形？？？
実はこの形、さっきの2条件を満たしてる
1. 書き換える場所がはっきりしている
➢𝑾,𝒃の値。
➢行う演算は掛け算と足し算だけ。
それに使う係数を最適化するイメージ
2. 正解に近づく保証のある学習方針が、
理論的に求まる
➢ここを今から見ていくよ
19


# Page. 20

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

どう書き換えたら正解に近づく？
まずは、何が正解かはっきりさせよう
➢推測結果が “0”であること？
➢🤔もう少し情報量を増やしたい
➢推測結果より少し手前の、𝒑に着目
理想の𝒑に極力近い𝒑を出す事を正解とする
➢理想の決め方は色々あるが、とりま右下図
𝒑
0.8
0.1
🤔さて、𝒑を理想の𝒑に近づけるには？
➢最終的に𝑾, 𝒃をどう書き換えるべきか知りたい
➢分かるところから順番に行こう！
1.5
1.1
-0.9
0.3
0.8
1.2
-1.0
1.0
理想の𝒑
𝑝0
𝑝1
𝑝2
𝑝3
𝑝4
𝑝5
𝑝6
𝑝7
𝑝8
𝑝9
5
-5
-5
-5
０だけ高くて、
他は低い
-5
-5
-5
-5
-5
-5
20


# Page. 21

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

どう書き換えたら理想のpに？ ～まずはpの変化量～
まず、𝒑が変化すべき量は簡単
➢理想の𝒑から実際の𝒑を引くだけ
𝒑が変化すべき量 𝚫𝒑 が求まる
➢ただ、𝒑はあくまで𝑾, 𝒃, 𝒙から生じた値
➢知りたいのは、𝑾, 𝒃が変化すべき量
➢では、𝒑を𝚫𝒑だけ増やすために、
𝑾, 𝒃をどう変えたらいい？
𝒑 = 𝑾𝒙 + 𝒃
理想の𝒑
𝒑
𝚫𝒑
5
0.8
+4.2
-5
0.1
- 5.1
-5
1.5
- 6.5
-5
1.1
- 6.1
-5
-0.9
- 4.1
-5
0.3
- 5.3
-5
0.8
- 5.8
-5
1.2
- 6.2
-5
-1.0
- 4.0
-5
1.0
- 6.0
21


# Page. 22

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

どう書き換えたらいいの？ ～次はｂの変化量～
一旦、𝑾を固定して考える
𝒃は𝒑と完全に連動してる
➢ 𝒃を増やせば𝒑も増える。逆も同じ
✅𝒃は𝒑と同じ方向に変化させれば良さそう
➢ 𝚫𝒃 = 𝚫𝒑
🤔では、𝒃を𝚫𝒑 だけ増やせば、
𝑾はそのままで良い？
➢ これと全く同じ入力なら、それで正解できるが…
➢ 𝑾, 𝒃どちらも活かして上手く情報抽出したい
➢ 𝒃だけ賢くしても、高が知れてる🙅
ネタバレすると, 𝚫𝒃 は小さくして更新に使う
𝟏
➢ 𝒃 ← 𝒃 + 𝜼Δ𝒃
➢ 𝒃の変化だけでなく、𝑾の変化も併せて𝒑を理想に近づけるため
𝚫𝒃
𝚫𝒑
+4.2
+4.2
- 5.1
- 5.1
- 6.5
- 6.5
- 6.1
- 6.1
- 4.1
- 4.1
- 5.3
- 5.3
- 5.8
- 5.8
- 6.2
- 6.2
- 4.0
22
-
- 4.0
6.0
- 6.0


# Page. 23

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

どう書き換えたらいいの？ ～最後はWの変化量～
𝒘𝟎,𝟎 𝒘𝟎,𝟏 𝒘𝟎,𝟐 𝒘𝟎,𝟑 𝒘𝟎,𝟒 𝒘𝟎,𝟓 𝒘𝟎,𝟔 𝒘𝟎,𝟕 𝒘𝟎,𝟖 𝒘𝟎,𝟗 𝒘𝟎,𝟏𝟎 𝒘𝟎,𝟏𝟏
ひとまず𝑾の一行目だけ考える
𝑤0,0 𝑥0 + 𝑤0,1 𝑥1 + 𝑤0,2 𝑥2 + 𝑤0,3 𝑥3 + 𝑤0,4 𝑥4 … = 𝑝0
1
1
1
1
0
今、𝑝0 は増やしたい☝！
• 大きい𝒙に掛かってる𝑤は沢山増やしたい
➢ 𝑝0 を効率的に増やせる
• Δ𝑝𝑖 が大きい𝒑𝒊 の計算に使う𝒘は沢山増やしたい
➢ Δ𝒑𝒊 が大きい=理想の𝒑が遠いから沢山変化させたい
𝚫𝒑
+4.2
- 5.1
それを実現する式は、こう
➢Δ𝑤 = Δ𝑝𝑥
- 6.5
- 6.1
- 4.1
- 5.3
𝑊全体だと、以下の式
➢Δ𝑾=𝚫𝒑𝒙𝑻
- 5.8
- 6.2
- 4.0
23
6.0
Δ𝑝0
Δ𝑝1
Δ𝑝2
Δ𝑝3
Δ𝑝4
Δ𝑝5
Δ𝑝6
Δ𝑝7
Δ𝑝8
Δ𝑝9


# Page. 24

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

W, bの変化量の計算方法まとめ
𝒑 = 𝑾𝒙 + 𝒃
1. 画像𝒙, 現在の𝑾, 𝒃をもとに𝒑を計算
2. 理想の𝒑と差分を取り、𝚫𝒑を計算
3.
𝑾, 𝒃が変化すべき差分、𝚫𝑾, 𝚫𝒃を、
以下の式を基に計算
• 𝚫𝒃 = 𝚫𝒑
• 𝚫𝑾 = 𝚫𝒑𝒙𝐓
• (𝚫𝒙 = 𝑾𝑻 𝚫𝒑 )
式は覚えなくても大丈夫
𝑾, 𝒙, 𝒑をコネコネすれば求まる、位で
では、これを使って𝑾, 𝒃を更新しよう
𝚫𝒃
𝚫𝒑
+ 4.2
+ 4.2
- 5.1
- 5.1
- 6.5
- 6.5
- 6.1
- 6.1
- 4.1
- 4.1
- 5.3
- 5.3
- 5.8
- 5.8
- 6.2
- 6.2
- 4.0
- 4.0
- 6.0
24 -
6.0


# Page. 25

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

実際にW, bを更新する方針
𝒑 = 𝑾𝒙 + 𝒃
1. 各画像𝒙𝒊 について𝚫𝑾𝒊 , 𝚫𝒃𝒊 を計算
2. それらの和で、𝑾, 𝒃を少しずつ更新
𝟏
𝜼
𝟏
𝑾𝒏𝒆𝒘 = 𝑾 − σ𝒊 𝜟𝑾𝒊
𝜼
• 𝒃𝒏𝒆𝒘 = 𝒃 − σ𝒊 𝚫𝒃𝒊
•
※ 𝜼 : 学習率 (𝑾, 𝒃を一度に更新する量を調節）
3. １に戻って繰り返す
✅全部の学習画像をうまく解釈する𝑾, 𝒃に近づく
上記の方針を、バッチ勾配降下法と呼ぶ
𝚫𝒃
𝚫𝒑
+ 4.2
+ 4.2
- 5.1
- 5.1
- 6.5
- 6.5
- 6.1
- 6.1
- 4.1
- 4.1
- 5.3
- 5.3
- 5.8
- 5.8
- 6.2
- 6.2
- 4.0
- 4.0
- 6.0
25
- 6.0


# Page. 26

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

これって理想のpに近づく保証あるか？と思ったアナタ
その直感はとても正しいです
今説明したアルゴリズムは、
理想の𝒑に近づきやすい、程度のもの
𝟏
𝜼
𝟏
𝑾𝒏𝒆𝒘 = 𝑾 − 𝜼 σ𝒊 𝜟𝑾𝒊
• 𝒃𝒏𝒆𝒘 = 𝒃 − σ𝒊 𝚫𝒃𝒊
•
実際に学習を回すときにも、
• ※ 𝜼 : 学習率
理想の𝒑から遠ざかるシーンはある
ちょっと頑張ってこの辺を
説明してみます
𝚫𝒃
𝚫𝒑
+ 4.2
+ 4.2
- 5.1
- 5.1
- 6.5
- 6.5
- 6.1
- 6.1
- 4.1
- 4.1
- 5.3
- 5.3
- 5.8
- 5.8
- 6.2
- 6.2
- 4.0
- 4.0
- 6.0
26 -
6.0


# Page. 27

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

学習を別角度から解釈してみる ～損失地形という考え方～
𝒑 = 𝑾𝒙 + 𝒃
学習は、
理想の𝒑を作れる𝑾, 𝒃を探すゲーム
➢どこかにbestな𝑾, 𝒃はある
※簡単のために、𝑝 = 𝑤𝑥を例に。
𝜟𝒑
（低いほど良い）
0.8
網羅的に𝑾, 𝒃を変えて𝒑を測っていけば、
bestは見つけられる
0.6
• イメージとしては、右のグラフが作れる
0.4
• 𝑤 = 1.0がbest.
• こういうグラフを損失地形と呼んだりする
0.2
• 😢けど、手間がかかりすぎる
• さっきの例ですら、𝑾の中に、𝑤は60個もある
• 全てを網羅的に変えて𝒑を計算するのは無理…
𝑶
0.2
0.4 0.6
0.8
1.0
27
1.2
𝑤


# Page. 28

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

学習を別角度から解釈してみる ～損失地形という考え方～
𝒑 = 𝑾𝒙 + 𝒃
1. ひとまず、適当な𝑾, 𝒃を用意
2.
𝑾, 𝒃が変化すべき差分、𝚫𝑾, 𝚫𝒃を、
以下の式を基に計算
• 𝚫𝒃 = 𝚫𝒑
• 𝚫𝑾 = 𝚫𝒑𝒙𝐓
• (𝚫𝒙 = 𝑾𝑻 𝚫𝒑 )
※簡単のために、𝑝 = 𝑤𝑥を例に。
理想の𝑝との差
（低いほど良い）
0.8
w増やせば
よさそう…
0.6
0.4
➢ この式は、今の𝑾, 𝒃の直近の範囲で、
どの方向に変化させれば𝚫𝒑が減るかを求めてる
0.2
➢ 見えない損失地形の一点を覗いてるイメージ
𝑶
0.2
0.4 0.6
0.8
1.0
1.2
𝑤
今のwの値
28


# Page. 29

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

学習を別角度から解釈してみる ～損失地形という考え方～
𝒑 = 𝑾𝒙 + 𝒃
1.
各画像𝒙𝒊 について𝚫𝑾𝒊 , 𝚫𝒃𝒊 を計算
2.
それらの和で、𝑾, 𝒃を少しずつ更新
理想の𝑝との差
（低いほど良い）
𝟏
𝜼
𝟏
𝑾𝒏𝒆𝒘 = 𝑾 − σ𝒊 𝜟𝑾𝒊
𝜼
• 𝒃𝒏𝒆𝒘 = 𝒃 − σ𝒊 𝚫𝒃𝒊
•
※簡単のために、𝑝 = 𝑤𝑥を例に。
※ 𝜼 : 学習率 (𝑾, 𝒃を一度に更新する量を調節）
0.8
0.6
𝑾, 𝒃をどの方向に変えるかは、 𝚫𝑾, 𝚫𝒃で求めてある
0.4
✅その方向にどれだけ大きく変えるかを決めるのが学習率
0.2
そして𝑾, 𝒃更新したら、
また𝚫𝑾, 𝚫𝒃を計算して損失地形を覗く
𝑶
➢ そのため、更新のたびに理想の𝒑に近づく保証はない
0.2
0.4 0.6
今のw
0.8
1.0
1.2
次のw
この歩幅を学習率で調整29
𝑤


# Page. 30

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

本当にこれで学習できるのか、実験で確かめよう
• MNIST dataset
➢公開されてる手書き数字の画像集
➢学習用に60000枚
➢テスト用に10000枚
• 実際にプログラム作って
学習してみた
➢前ページとほぼ同じ計算で学習した
最終的に、テスト用の10000枚の
うち、80%は当てられるように！
30


# Page. 31

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

性能向上の工夫
“Deep” Learning
31/n


# Page. 32

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

線形変換の表現能力の限界
𝒑 = 𝑾𝒙 + 𝒃
• 勾配降下法を得た今、この式で表せる範
囲なら、最適（）なものを探索できる!
🤔だが、この式で表せるのは
“一次関数”的な関係性だけ
➢ 入力と判断結果が比例するような
パターンには強い☺
イメージ
𝒑
o
😢些細な差で急に判断を変えるのが苦手
𝒙
まあ、５かな…
5だね
絶対に5
イメージ
𝒑
一工夫して小回りを利かせたい🤔
絶対に5
o
𝒙
絶対に5
絶対に６
32


# Page. 33

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

活性化関数で、もっと小回りの利くプログラムに！
𝒑 = 𝑨𝒄𝒕(𝑾𝒙 + 𝒃)
線形変換した後、非線形な変換を噛ませる
➢ 活性化関数(activation func.)
代表的なのはReLU関数
𝑥 (𝑥 ≥ 0)
𝑅𝑒𝐿𝑈 𝑥 = ቊ
0 (𝑥 &lt; 0)
𝒑
o
𝒙
✅些細な差による違いに敏感になった
33


# Page. 34

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

ちなみに、ReLUがあっても学習はできるの？
𝒑′ = 𝑾𝒙 + 𝒃
𝒑 = 𝑹𝒆𝑳𝑼(𝒑′)
𝑾
できます！
流れとしては、
1. 𝒑と理想の𝒑から、 𝚫𝒑を計算
2. 𝚫𝒑の要素のうち、
𝒑で０だった箇所を、
０で埋めたものが𝚫𝒑′
➢ 𝒑の値がいくつでも、
影響を与えてないから
𝒑′ ReLU 𝒑
𝒃
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
1.2
-0.91.2 0.2-0.9 1.30.2 0.11.3 -1.30.1 1.2-1.3 1.31.2 0.41.3 0.30.4 -0.90.3 1.1-0.9
1.0
0.8
1.1
0.8
-0.2
𝚫𝒃
0.1
𝚫𝒑′ 0.1
1.1
0.3
4.2
1.5
+4.2
1.5
+4.2
-0.41.0 0.5-0.4 -0.90.5 1.1-0.9 0.41.1 0.10.4 -1.30.1 0.5-1.3 1.20.5 1.31.2 0.41.3
0.4
-1.4
5.1
1.1
-5.1
1.1
-5.1
1.2
-0.91.2 0.2-0.9 1.30.2 0.11.3 -1.30.1 1.2-1.3 1.31.2 0.41.3 0.30.4 -0.90.3 1.1-0.9
1.1
1.0
6.5
-0.9
-6.5
0
-6.5
1.0
-0.41.0 0.5-0.4 -0.90.5 1.1-0.9 0.41.1 0.10.4 -1.30.1 0.5-1.3 1.20.5 1.31.2 0.41.3
0.4
1.5
6.1
0.3
-6.1
0.3
-6.1
1.2
-0.91.2 0.2-0.9 1.30.2 0.11.3 -1.30.1 1.2-1.3 1.31.2 0.41.3 0.30.4 -0.90.3 1.1-0.9
1.1
-0.9
0
0.8
0
0.8
-5.0
-0.3
5.3
1.2
-5.3
1.2
-5.3
0.7
5.8
-1.0
-5.8
0
-5.8
0.4
6.2
1.0
-6.2
1.0
-6.2
1.0
-0.41.0 0.5-0.4 -0.90.5 1.1-0.9 0.41.1 0.10.4 -1.30.1 0.5-1.3 1.20.5 1.31.2 0.41.3
0.4
1.2
-0.91.2 0.2-0.9 1.30.2 0.11.3 -1.30.1 1.2-1.3 1.31.2 0.41.3 0.30.4 -0.90.3 1.1-0.9
1.1
1.0
-0.41.0 0.5-0.4 -0.90.5 1.1-0.9 0.41.1 0.10.4 -1.30.1 0.5-1.3 1.20.5 1.31.2 0.41.3
0.4
1.2
-0.9
0.2
1.3
0.1
-1.3
1.2
1.3
0.4
0.3
-0.9
1.1
1.0
-0.4
0.5
-0.9
1.1
0.4
0.1
-1.3
0.5
1.2
1.3
0.4
0
6.0
𝚫𝑾
×1
𝚫𝒑
0
-5.0
-6.0
-6.0
×𝑥 𝑇
3. 𝚫𝒑′を基に𝚫𝑾, 𝚫𝒃を計算
34


# Page. 35

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

層を重ねて！もっと複雑な関数へ
𝒑 = 𝑹𝒆𝑳𝑼(𝑾𝒙 + 𝒃)
少し複雑なプログラムを表せるようになった
🤔もっと表現能力を上げたい
※構造のシンプルさは維持しつつ
💡上の式を重ね掛けすれば良いのでは？
…
➢𝒙1 = 𝑹𝒆𝑳𝑼 𝑾𝟏 𝒙 + 𝒃𝟏
➢𝒙2 = 𝑹𝒆𝑳𝑼 𝑾𝟐 𝒙𝟏 + 𝒃𝟐
➢…
➢𝒑 = 𝑹𝒆𝑳𝑼 𝑾𝒏 𝒙𝒏−𝟏 + 𝒃𝒏
😆層を重ねるほど表現能力が上がる！
🤔学習はどうすればいい？
35


# Page. 36

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

誤差逆伝播法 Backpropagation
最後の𝒑に近い方から、𝚫𝑾, 𝚫𝒃を求めていく
• 最後の層
• 𝚫𝒃𝟑
+ 4.2
= 𝚫𝒑
𝚫𝒙𝟐 𝚫𝒃𝟑
𝚫𝑾𝟑
- 5.1
𝟐𝐓
• 𝚫𝑾𝟑 = 𝚫𝒑𝒙
𝑻
𝟐
𝟑
• (𝚫𝒙 = 𝑾 𝚫𝒑 )
➢ これを起点に、前の層の計算ができる
- 6.5
- 6.1
- 4.1
- 5.3
× 𝒙𝟐
- 6.2
• 最後の一つ手前の層
4.2
+4.2
+4.2
5.1
5.1
-
- 5.1
6.5
-6.5
- 6.5
6.1
-6.1
- 6.1
5.0
-5.0
- 5.0
5.3
-5.3
5.8
- 5.8
𝚫𝒑
-5.8
6.2
× 𝑾𝟑 -
- 5.3
×1
- 5.8
- 6.2
6.2
5.0
5.0
-
- 5.0
6.0
-6.0
- 6.0
- 4.0
- 6.0
• 𝚫𝒃𝟐 = 𝚫𝒙𝟐
𝐓
• 𝚫𝑾𝟐 = 𝚫𝒙𝟐 𝒙𝟏
• (𝚫𝒙𝟏
𝚫𝒙𝟏 𝚫𝒃𝟐
𝚫𝑾𝟐
𝑻
𝟐
= 𝑾 𝚫𝒙𝟐 )
後ろから伝播するように、更新量が求まる！
4.2
4.2
4.2
5.1
5.1
5.1
6.5
6.5
6.5
6.1
6.1
6.1
5.0
5.0
5.0
5.3
5.3
×1
5.3
5.8
5.8
6.2
6.2
6.2
5.0
5.0
6.0
6.0
5.8
× 𝒙𝟐
𝚫𝒙𝟐
× 𝑾𝟑
36
5.0
6.0


# Page. 37

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

学習のサイクルを最後に図で捉えましょう
順伝播： 現在の𝑾, 𝒃をもとに、出力を計算。Forward propagationとも。
W,bを更新
逆伝播： 現在の𝑾, 𝒃をもとに、出力を計算。Backpropagation。
𝟏
𝟏 𝚫𝒃𝟐
𝟐
𝟏
𝚫𝒃
𝟏
𝚫𝒙
𝚫𝒙
𝚫𝑾
𝜟𝒙𝟐
𝚫𝒙
𝚫𝑾
×𝒙
4.2
+4.2
5.1
-5.1
6.5
-
6.1
-6.1
5.0
-
5.3
-5.3
5.8
-5.8
6.2
5.0
6.0
6.5
5.0
× 𝑾𝟏 -
6.2
-5.0
-6.0
𝚫𝑾𝟑
𝚫𝒙𝟐 𝚫𝒃𝟑 𝚫𝒑
+4.2
4.2
+4.2
+4.2
4.2
+4.2
+4.2
- 5.1
5.1
-5.1
- 5.1
5.1
-5.1
- 5.1
- 6.5
6.5
-6.5
- 6.5
6.5
-6.5
- 6.5
- 6.1
6.1
-6.1
- 6.1
6.1
-6.1
- 6.1
- 5.0
5.0
-5.0
- 5.0
5.0
-5.0
- 5.0
5.3
-5.3
- 5.3
5.3
-5.3
- 5.8
5.8
-5.8
- 5.8
5.8
-5.8
-
6.2
- 6.2
6.2
×1 -
5.3
6.2
- 5.0
- 6.0
× 𝒙𝟏
× 𝑾𝟐 -
6.2
×1
5.0
-5.0
- 5.0
6.0
-6.0
- 6.0
× 𝒙𝟐
× 𝑾𝟑 -
6.2
5.0
-5.0
6.0
-6.0
×1 -
5.3
- 5.8
- 6.2
- 5.0
37/n
- 6.0


# Page. 38

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

本当に層を増やせば性能が上がるのか、実験で確かめよう
• MNIST dataset
• 層を３つに増やして学習
• 条件は１層の時とほぼ同じ
※層が多いと生じる問題を緩和する工夫を少し
• 最終的に、テスト用の10000枚のうち、
86%は当てられるように！
➢ 1層より6%up
38


# Page. 39

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

まとめ（すんませんもう3ページだけ続きます）
😢思考過程が曖昧なタスクは、通常のプログラムでは書きにくい
🤔人間のように、大量のデータから学習するプログラムが欲しい
💡データをバラバラに分解、掛け算と足し算で答えを作るプログラム
➢掛ける数𝑾、足す数𝒃を、学習によって最適化
✅今回は画像を分類したが、タスクは何でも問題ない
✅重要なのは、以下の２つ
1. 入力データと、それに対応する出力の正解データが大量にあること
2. 入力と出力、どちらも何らかの数値の列に変換できること
39/n


# Page. 40

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

最後に、Deep Learning
でよく出る用語と概念を
40/n


# Page. 41

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

Deep Neural Network
• 右の計算を、
よく下の図で表す
• 辺：𝑾
• 丸：𝒙
この見た目から、
(Deep) Neural Networkという
(層が多いときはDeepが付く）
𝒙𝟏
𝒙𝟐
𝒑
41


# Page. 42

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

Neural Networkにもバリエーションがたくさんある
今回のは一番基礎的な、
Feed Forward Networkという種類
➢ある層の全ての丸が、次の層の全てと接続
➢この層を、全結合層（Fully Connected Layer）という
➢全結合層だけでできたNetworkが、Feed Forward
𝒙𝟏
𝒙𝟐
𝒑
この繋げ方を変えることで、様々な能力を持つ
➢他のバリエーションはまた次回以降で。
42/n


# Page. 43

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

ちなみになる話
2024年のノーベル物理学賞は変わった人が受賞
➢Geoffrey Hinton &amp; John Hopfield
AI分野への多大な貢献をたたえて授賞
物理学と関係ない分野から選ばれるのは前代未聞
実はこのHinton氏がbackpropagationを提唱*
※厳密には、backpropの概念自体は前からあったが、
ニューラルネットに導入したのは彼が初
43


# Page. 44

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

おしまい
長々とお付き合いくださりどうもでした
ありがとー
44/n


