More Related Content Similar to 딥러닝-오차역전파법2 (12) 딥러닝-오차역전파법23. 복습
640 x 480
-> 307,200(3컬러)
-> 921,600
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
921,600
4 12 234 153 ... 205
921,600
1층 신경망
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
2층 신경망
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
3층 신경망
921,600 921,600
2,764,800
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
출력단
4. 복습
640 x 480
-> 307,200(3컬러)
-> 921,600
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
921,600
4 12 234 153 ... 205
921,600
1층 신경망
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
2층 신경망
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
3층 신경망
921,600 921,600
2,764,800
퍼셉트론
퍼셉트론
퍼셉트론
퍼셉트론
...
출력단
12. 1. 노드의 역전파
곱셈 연산 순전파와 역전파 z= xy
역방향 입력 : E
역방향 출력 : 역방향 입력(E)
순방향 출력
순방향 입력
14. 1. 노드의 역전파
x
E y = E
dz
dx
E
곱셈 연산 순전파와 역전파 z= xy
E x = E
dz
dy
z= xy
dz
dx
= y
dz
dy
= x
x
x
z
y
16. 1. 노드의 역전파
곱셈 연산 순전파와 역전파 z= xy
x
10
50
5
x
6.5
1.3
13
역방향 입력 : E
역방향 출력 : 역방향 입력(E)
순방향 출력
순방향 입력
17. 1. 노드의 역전파
곱셈 연산 순전파와 역전파 z= xy
x
10
50
5
역방향 입력 : 1.3
역방향 출력 : 1.3 *
50
10
= 1.3 * 5 = 6.5
18. 1. 노드의 역전파
사과 쇼핑의 역전파 예시
X
100
X
200 220
사과의 개수
2 1.1
소비세
1??
19. 1. 노드의 역전파
모든 사과 가격
역방향 입력 : E
역방향 출력 : 역방향 입력(E)
순방향 출력
순방향 입력
사과 쇼핑의 역전파 예시
20. 1. 노드의 역전파
1.1
모든 사과 가격
역방향 입력 : 1
역방향 출력 : 1 *
220
200
= 1 * 1.1 = 1.1
사과 쇼핑의 역전파 예시
21. 1. 노드의 역전파
사과 쇼핑의 역전파 예시
X
100
X
200 220
사과의 개수
2
1.1
소비세
11.1?
22. 1. 노드의 역전파
역방향 입력 : 1.1
역방향 출력 : 1.1 *
200
100
= 1.1 * 2 = 2.2
사과 쇼핑의 역전파 예시
2.2
23. 1. 노드의 역전파
사과 쇼핑의 역전파 예시
X
100
X
200 220
사과의 개수
2
1.1
소비세
11.12.2
24. 1. 노드의 역전파
문제 : 계산그래프의 역전파를 완성하시오.
X
100
+
200 650
사과의 개수
2
1.1
소비세
X
150
귤의 개수
3
450
X
715
1? ??
?
?
??
?
26. 2. 단순한 계층 구현하기
1.곱셈 계층 (소스 : ch05/layer_naive.py)
x
x
out
y
27. 2. 단순한 계층 구현하기
x
dx = dout * y
= dout *
dz
dx
dout
dy = dout * x
= dout *
dz
dy
1.곱셈 계층 (소스 : ch05/layer_naive.py)
28. 2. 단순한 계층 구현하기
x
x
z
y
dout*y
dout
dout*x
1.곱셈 계층 (소스 : ch05/layer_naive.py)
29. 2. 단순한 계층 구현하기
1.곱셈 계층 (소스 : ch05/layer_naive.py)
역방향 입력 : E
역방향 출력 : 역방향 입력(E)
순방향 출력
순방향 입력
역방향 입력 : 1
역방향 출력 : 1 *
𝟐𝟐𝟎
𝟐𝟎𝟎
= 1.1
30. 2. 단순한 계층 구현하기
1.곱셈 계층 (소스 : ch05/layer_naive.py)
역방향 입력 : 1
역방향 출력 : 1 *
𝟐𝟐𝟎
𝟐𝟎𝟎
= 1.1
31. 2. 단순한 계층 구현하기
1.곱셈 계층 (소스 : ch05/layer_naive.py)
X 역방향 출력 = 역방향 입력 * Y 순방향 입력
= 1 * 1.1
= 1.1
32. 2. 단순한 계층 구현하기
1.곱셈 계층 (소스 : ch05/layer_naive.py)
X 역방향 출력 = 역방향 입력 * Y 순방향 입력
= 1.1 * 2
= 2.2
33. 2. 단순한 계층 구현하기
1.곱셈 계층 예제(소스 : ch05/buy_apple.py)
실행 결과
34. 2. 단순한 계층 구현하기
2.덧셈 계층 (소스 : ch05/layer_naive.py)
+
x
z
y
35. 2. 단순한 계층 구현하기
2.덧셈 계층과 곱셈 계층을 이용한 예제 (소스 : ch05/buy_apple_orange.py)
실행 결과
구현 계산 그래프
39. 3. 활성화 함수 계층 구현하기
1. 활성화 함수란?
계단 함수 시그모이드 함수 RELU 함수
41. 3. 활성화 함수 계층 구현하기
2. ReLU 계층
RELU 함수
𝒚 =
𝒙 (𝒙 > 𝟎)
𝟎 (𝒙 ≤ 𝟎)
𝒅𝒚
𝒅𝒙
=
𝟏 (𝒙 > 𝟎)
𝟎 (𝒙 ≤ 𝟎)
42. 3. 활성화 함수 계층 구현하기
2. ReLU 계층 𝒅𝒚
𝒅𝒙
=
𝟏 (𝒙 > 𝟎)
𝟎 (𝒙 ≤ 𝟎)
relu
x y
dout
=dout *
𝒅𝒚
𝒅𝒙
=dout * 1
𝒚 =
𝒙 (𝒙 > 𝟎)
𝟎 (𝒙 ≤ 𝟎)
x > 0 x ≤ 0
relu
x y
dout
=dout *
𝒅𝒚
𝒅𝒙
=dout * 0
dout 0
43. 3. 활성화 함수 계층 구현하기
2. ReLU 계층 (소스:common/layers.py)
relu
x y
dout
x > 0
x ≤ 0
relu
x y
dout
dout
0
44. 3. 활성화 함수 계층 구현하기
2. ReLU 계층 예제(page 166)
45. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
시그모이드 함수
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
46. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
47. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
48. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
? 1
/
x 𝒚 =
𝟏
𝒙
? 1
49. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
/
x 𝒚 =
𝟏
𝒙
?
=1 *
𝒅
𝒅𝒙
𝟏
𝒙
=-𝒚−𝟐
1
? = 1 *
𝒅𝒚
𝒅𝒙
<- y =
𝟏
𝒙
=
𝒅
𝒅𝒙
𝟏
𝒙
=
𝒅
𝒅𝒙
𝒙−𝟏
= -𝒙−𝟐
<- y= 𝒙−𝟏
= -𝒚−𝟐
50. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
1-𝒚−𝟐
51. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
+
exp(-x) 1+exp(-x)
1
-𝒚−𝟐-𝒚−𝟐
-𝒚−𝟐
52. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
1-𝒚−𝟐-𝒚−𝟐
-𝒚−𝟐
53. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
? = -𝒚−𝟐
*
𝒅𝒚
𝒅𝒙
<- y = exp(-x)
= -𝒚−𝟐 𝒅
𝒅𝒙
exp(−x)
= -𝒚−𝟐
exp(-x)
-x
exp
exp(-x)
-𝒚−𝟐
?
=-𝒚−𝟐 *
𝒅𝒚
𝒅𝒙
=-𝒚−𝟐
exp(-x)
54. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
1-𝒚−𝟐-𝒚−𝟐
-𝒚−𝟐
-𝒚−𝟐 exp(-x)
55. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
x
x -x
-1
-𝒚−𝟐 exp(-x)
? = -𝒚−𝟐
exp(-x)
𝒅𝒚
𝒅𝒙
<- y = -x
= -𝒚−𝟐
exp(-x)
𝒅
𝒅𝒙
(-x)
= -𝒚−𝟐
exp(-x) -1
= 𝒚−𝟐
exp(-x)
𝒚−𝟐
exp(-x)
-𝒚−𝟐 exp(-x) x
56. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층
x
x -x
exp +
exp(-x)
/
1+exp(-x)
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
y
-1 1
y =
𝟏
𝟏 + 𝒆𝒙𝒑(−𝒙)
1-𝒚−𝟐-𝒚−𝟐
-𝒚−𝟐
-𝒚−𝟐 exp(-x)𝒚−𝟐 exp(-x)
-𝒚−𝟐
exp(-x) x
57. 3. 활성화 함수 계층 구현하기
3. 시그모이드 계층 (소스:common/layers.py)
60. 4. Affine/Softmax 계층 구현하기
𝟏 𝟐
1
1. Affine 계층 – 행렬 형상 표기
𝟐 𝟑 𝟏
𝟏 𝟒 𝟑
(2,)
(2,3)
𝟏 𝟐
𝟐 𝟏
(2,2)
(3,)
1차원 백터
2 5 3
(1,)
1
1
1
(3,1)
2차원 매트릭스
(1,2)𝟏 𝟐
61. 4. Affine/Softmax 계층 구현하기
1. Affine 계층 – Affine 변환이란?
𝑿 = 𝟏 𝟐 , W = 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑
X 〮 W = 𝟏 𝟐 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑
= 4 11 7
행렬의 내적
어파인 변환(Affine Trasnform)
(2,) (2,3)
(1,3)
65. 4. Affine/Softmax 계층 구현하기
1. Affine 계층 – Affine 변환 방법
𝟏 𝟐 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑 1*3 + 2*3 = 3 + 6 = 9
𝟏 𝟐 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑 1*3 + 2*4 = 3 + 8 = 11
𝟏 𝟐 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑 1*2 + 2*1 = 2 + 2 = 4
66. 4. Affine/Softmax 계층 구현하기
1. Affine 계층 – Affine 변환 방법
X W = 𝟏 𝟐 〮 𝟐 𝟑 𝟏
𝟏 𝟒 𝟑
= = 𝟒 𝟏𝟏 𝟕
〮(dot) 는 행렬의 내적 연산
69. 4. Affine/Softmax 계층 구현하기
dot
X
X 〮 W
W
+
Y
B
(2,)
(2,3)
(1,3)
(3,)
(1,3)
1. Affine 계층
𝒅𝑳
𝒅𝒀
=1
(3,)
𝒅𝑳
𝒅𝒀
(3,) 𝒅𝑳
𝒅𝒀
(3,)
70. 4. Affine/Softmax 계층 구현하기
1. Affine 계층
dot
X
W
(2,3)
(1,3)
X 〮 W
𝒅𝑳
𝒅𝒀
(3,)
(2,)
𝒅𝑳
𝒅X
=
𝒅𝑳
𝒅𝒀
〮
𝒅
𝒅X
(X〮W)
=
𝒅𝑳
𝒅𝒀
〮 WT
𝒅𝑳
𝒅X
(2,)
(3,2)(3,)
(2,)
74. 4. Affine/Softmax 계층 구현하기
1. Affine 계층
dot
X
W
(2,3)
(1,3)
X 〮 W
𝒅𝑳
𝒅𝒀
(3,)
(2,)
𝒅𝑳
𝒅W
= XT〮
𝒅𝑳
𝒅𝒀
𝒅𝑳
𝒅X
(2,)
(3,)(2,1)(2,3)
𝒅𝑳
𝒅W
(2,3)
75. 4. Affine/Softmax 계층 구현하기
dot
X
X 〮 W
W
+
Y
B
(2,)
(2,3)
(1,3)
(3,)
(1,3)
1. Affine 계층
𝒅𝑳
𝒅𝒀
(3,)
𝒅𝑳
𝒅𝒀
(3,) 𝒅𝑳
𝒅𝒀
(3,)
𝒅𝑳
𝒅X
(2,)
𝒅𝑳
𝒅W
(2,3)
77. 4. Affine/Softmax 계층 구현하기
dot
X
X 〮 W
W
+
Y
B
(N,2)
(2,3)
(N,3)
(3,)
(N,3)
1. Affine 계층 - 배치용
𝒅𝑳
𝒅𝒀
(N,3)
𝒅𝑳
𝒅𝒀
(N,3) 𝒅𝑳
𝒅𝒀
(3,)
𝒅𝑳
𝒅X
(N,2)
𝒅𝑳
𝒅W
(2,3)
89. 5. 오차역전파법을 적용한 신경망 구현하기
오차역전파법을 적용한 학습 구현(ch05/train_neuralnet.py)
90. 5. 오차역전파법을 적용한 신경망 구현하기
수치미분과 오차역전파법 적용된 신경망 성능 비교
오차역전파법이 적용된 학습
ch05/train_neuralnet.py
최종 훈련 성능 : 97.8%
최종 시험 성능 : 96.9%
수치미분이 적용된 학습
ch04/train_neuralnet.py
최종 훈련 성능 : 94.6%
최종 시험 성능 : 94.6%