SlideShare a Scribd company logo
1 of 146
Download to read offline
곰가드
뉴런 부터 YOLO 까지
곰가드
knholic@gmail.com
gomguard.tistory.com
우리가 꿈꾸는 기계는?
자비스 처럼
주변에 뭐가 있는지 알고
어떻게 하는 것이 최선인지
인간의 언어로 조언해주는 시스템
그 중
오늘 알아볼 것은
[주변에 뭐가 있는지 아는]
부분 입니다
사람을 따라서 만들자 : 뉴런
신경계를 구성하는 세포인 뉴런은
신호들을 받으면 종합한 뒤에 출력하기도 하고 안하기도 합니다.
뉴런을 따라 만든 인공 뉴런 : Perceptron
𝑦 =
1 ( 𝑤1 𝑥1+ 𝑤2 𝑥2 + 𝜃 ≥ 0 )
0 ( 𝑤1 𝑥1+ 𝑤2 𝑥2 + 𝜃 < 0 ){
x1
𝑥1
𝑥2
𝑤1
𝑤2
𝑦
Bias
Input
Input
Activation
Function
𝜃
Weight
Perceptron 이 사용하는 활성 함수: 계단 함수
𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) =
1 (𝑥 ≥ 0 )
0 (𝑥 < 0 ){
뉴런처럼 정보의 합이 0을 넘을 때만 출력
가장 간단한 AND 게이트 부터
𝑥1
𝑥2
𝑦
AND Gate 의 회로기호
𝑥1 𝑥2 𝑦
0 0 0
0 1 0
1 0 0
1 1 1
AND Gate 의 입출력
AND 게이트는 문제 없이 분리 가능
0 0
0 1
하나의 선으로 0 과 1을 분리할 수 있는 AND 게이트
그럼 XOR 게이트는??
0
0
1
1
?
?
?
?
하나의 선으로는 0 과 1을 분리할 수 없는 XOR 게이트
XOR 게이트
𝑥1
𝑥2
𝑦AND
AND
OR
XOR 게이트는 AND 와 OR 게이트의 조합으로 만들 수 있구나
그럼 퍼셉트론 여러 개를 쌓아보자 : MLP
Input Layer
𝑥1
𝑥2
x11
Output Layer
𝑦 𝑦′
Hidden Layer
x11
𝑎2
𝑎1 𝑎1
′
𝑎2
′
𝑏00
(0)
𝑏01
(0)
𝑤10
(0)
𝑤11
(0)
𝑤20
(0)
𝑤21
(0)
𝑏00
(1)
𝑤10
(1)
𝑤20
(1)
MLP 로 XOR 게이트를 풀어보자
Input Layer
𝑥1
𝑥2
x1𝑏
Hidden Layer
NAND Gate
OR Gate
Output Layer
XOR Gate
MLP 로도 XOR 게이트를 만들어 낼 수 있다
Layer 의 개수에 따라 결정할 수 있는 영역
1 hidden layer 2 hidden layer 3 hidden layer
답을 얻을 수 있는 건 알겠는데
MLP 는 어떻게 학습하는거지?
농구 연습을 통해
한번 알아보자
던지는 것 마다 골인 사람은
벌써 학습 완료된 모델
매번 빗나가는 사람들은
학습 과정인 모델들
공을 던졌을 때 안들어가면
어떻게 안들어갔는지 살펴보고
약간 반대방향으로 던지는 것 처럼
계산한 값이 원래 답보다 크면
가중치를 조금 작게
원래 답보다 작으면
가중치를 조금 크게 조절해보자
다시 말해서
계산한 값과 답의 차이를
가능한 작게 만드는 것이 학습
1. 오차함수를 정하고
2. ∇(𝑔𝑟𝑎𝑑𝑖𝑒𝑛𝑡) 를 구해서
3. weight 를 업데이트 하자
𝑤 𝑛𝑒𝑤
= 𝑤 − 𝛾∇𝐶(𝑥)
가장 기본적인 오차함수 : MSE
Minimum Squared Error =
1
𝑛
σ𝑖 ෝ𝑦𝑖 − 𝑦𝑖
2
𝑦0
𝑦1
𝑦2
𝑦3
𝑦4
ෞ𝑦0
ෞ𝑦1
ෞ𝑦2
ෞ𝑦3
ෞ𝑦4
# 각 정답과 예상값의 차이를 제곱해서 평균내는 방법
가장 기본적인 오차함수 : ACE
Averaged Cross Entropy Error = −
1
𝑛
σ𝑖 𝑦𝑖 𝑙𝑜𝑔 ෝ𝑦𝑖
𝑦0 𝑦1
𝑦2
𝑦3 𝑦4
log(ෞ𝑦0)
log(ෞ𝑦1)
log(ෞ𝑦2)
log(ෞ𝑦3)
log(ෞ𝑦4)
# 정답이 One-hot 인코딩 되어 있는 경우에만 사용가능
𝑤+
= 𝑤 − 𝜂 ∗
𝜕𝐸
𝜕𝑤
학습을 수학적으로 표기하면
learning rate :
한번에 얼마나 학습할지
gradient :
어떤 방향으로 학습할지
그런데 계단함수는
𝜕𝐸
𝜕𝑤
가 항상 0…
똑같이 0에서 1까지 출력하는데
미분 가능한 함수를 찾아보자
𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) =
1
1+𝑒−𝑥
새로운 함수 Sigmoid
𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) =
1 (𝑥 ≥ 0 )
0 (𝑥 < 0 ){
미분 가능한
Sigmoid 를 사용하면
학습이 가능
MLP 의 학습과정을
간단한 예제를 통해서
살펴봅시다
𝑤10
(0)
𝑤11
(0)
𝑥1
0.5
0.15
0.2
0.075
0.1
𝑧11 𝑎11
𝑤10
(1)
𝑤20
(1)
𝑦1
𝑧21 𝑎21
𝑧20 𝑎20
𝑤11
(1)
𝑤21
(1)
𝑦2
𝑧10 𝑎10
0.4
0.5
0.45
0.55
0.518
0.524
0.207
0.209
0.236
0.288
0.609
0.633
0.3
0.9
𝐸𝑡𝑜𝑡 =
1
2
෍ 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑜𝑢𝑡𝑝𝑢𝑡 2 =
1
2
0.3 − 0.609 2 +
1
2
0.9 − 0.621 2 = 0.087
초록색 값들은 인풋값
파란색 값들은 계산값
학습 전 전체 에러값은 0.087
Sigmoid
Function
Sigmoid
Function
Sigmoid
Function
Sigmoid
Function
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(1) =
𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
𝜕𝑎20
𝜕𝑧20
𝜕𝑧20
𝜕𝑤10
(1)
𝐸𝑡𝑜𝑡 =
1
2
𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20
2
+ 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦2 − 𝑎21
2 𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
= 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ −1 + 0
𝑎20 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧20)
𝜕𝑎20
𝜕𝑧20
= 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20
𝑧20 = 𝑤10
(1)
𝑎10 + 𝑤20
(1)
𝑎20
𝜕𝑧20
𝜕𝑤10
(1)
= 𝑎10 + 0
𝑤10
(1)
𝑦1𝑧20 𝑎20
0.4
0.207 0.609
0.3
0.518
𝑧10 𝑎10
먼저 𝑤10
(1)
을 학습시키자
𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
𝜕𝑎20
𝜕𝑧20
𝜕𝑧20
𝜕𝑤10
(1)
𝑤10
(1)
𝑦1𝑧20 𝑎20
0.4
0.207 0.609
0.3
0.518
𝑧10 𝑎10
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(1) =
𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
𝜕𝑎20
𝜕𝑧20
𝜕𝑧20
𝜕𝑤10
(1)
= − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 𝑎10
= − 0.3 − 0.609 ∗ 0.609 ∗ 1 − 0.609 ∗ 0.518
= 0.0381
𝑤10
1 +
= 𝑤 − 𝜂 ∗
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
1 = 0.4 − 0.5 ∗ 0.0381 = 0.380
𝑤10
1
이 전체 에러에 미치는 영향은 0.0381, 갱신한 𝑤10
1 +
값은 0.380
두 번째 층은 첫 번째 층보다
조금 복잡합니다
𝑤10
(0)
𝑥1
0.5
0.15
0.075
𝑧11 𝑎11
𝑤10
(1)
𝑤20
(1)
𝑦1
𝑧21 𝑎21
𝑧20 𝑎20
𝑤11
(1)
𝑤21
(1)
𝑦2
𝑧10 𝑎10
0.4
0.5
0.45
0.55
0.518
0.524
0.207
0.209
0.236
0.288
0.609
0.633
0.3
0.9
𝑤10
(0)
은 𝑤10
(1)
과 달리 𝒚 𝟏, 𝒚 𝟐 양쪽에 다 영향을 미칩니다
𝑤10
(0)
𝑥1
0.5
0.15
0.075
𝑧11 𝑎11
𝑤10
(1)
𝑤20
(1)
𝑦1
𝑧21 𝑎21
𝑧20 𝑎20
𝑤11
(1)
𝑤21
(1)
𝑦2
𝑧10 𝑎10
0.4
0.5
0.45
0.55
0.518
0.524
0.207
0.209
0.236
0.288
0.609
0.633
0.3
0.9
따라서 갱신값을 구할 때 𝐸 𝑦1과 𝐸 𝑦2 을 모두 고려해야 합니다
𝑤10
(0)
𝑥1
0.5
0.15
0.075
𝑧11 𝑎11
𝑤10
(1)
𝑤20
(1)
𝑦1
𝑧21 𝑎21
𝑧20 𝑎20
𝑤11
(1)
𝑤21
(1)
𝑦2
𝑧10 𝑎10
0.4
0.5
0.45
0.55
0.518
0.524
0.207
0.209
0.236
0.288
0.609
0.633
0.3
0.9
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(0) =
𝜕𝐸𝑡𝑜𝑡
𝜕𝑎10
𝜕𝑎10
𝜕𝑧10
𝜕𝑧10
𝜕𝑤10
(0) 𝐸𝑡𝑜𝑡 = 𝐸 𝑦1 + 𝐸 𝑦2
𝑤10
(1)
𝑦1𝑧20 𝑎20
0.4
0.207 0.609
0.3
0.518
𝑧10 𝑎10𝑤10
(0)
𝑥1
0.5
0.15
0.075
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(0) = (
𝜕𝐸1
𝜕𝑎10
+
𝜕𝐸2
𝜕𝑎10
)
𝜕𝑎10
𝜕𝑧10
𝜕𝑧10
𝜕𝑤10
(0)
𝜕𝐸1
𝜕𝑎10
=
𝜕𝐸1
𝜕𝑎20
𝜕𝑎20
𝜕𝑧20
𝜕𝑧20
𝜕𝑎10
= − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 𝑤10
(1)
= − 0.3 − 0.609 ∗ 0.609 ∗ 1 − 0.609 ∗ 0.4
= 0.0294
# 𝑎10 가 𝐸1 에 미치는 영향은 0.0294
𝑤11
(1)
𝑦2𝑧21 𝑎21
0.5
0.209 0.621
0.9
0.518
𝑧10 𝑎10𝑤10
(0)
𝑥1
0.5
0.15
0.075
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(0) = (
𝜕𝐸1
𝜕𝑎10
+
𝜕𝐸2
𝜕𝑎10
)
𝜕𝑎10
𝜕𝑧10
𝜕𝑧10
𝜕𝑤10
(0)
𝜕𝐸2
𝜕𝑎10
=
𝜕𝐸2
𝜕𝑎21
𝜕𝑎21
𝜕𝑧21
𝜕𝑧21
𝜕𝑎10
= − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦2 − 𝑎21 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧21 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧21 ∗ 𝑤11
(1)
= − 0.9 − 0.621 ∗ 0.621 ∗ 1 − 0.621 ∗ 0.5
= − 0.0328
# 𝑎10 가 𝐸2 에 미치는 영향은 -0.0328
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(0) = (
𝜕𝐸1
𝜕𝑎10
+
𝜕𝐸2
𝜕𝑎10
)
𝜕𝑎10
𝜕𝑧10
𝜕𝑧10
𝜕𝑤10
(0)
𝜕𝐸2
𝜕𝑎10
= −0.0345
𝜕𝐸1
𝜕𝑎10
= 0.0305
𝜕𝑎10
𝜕𝑧10
= 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧10 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧10
= 0.0294 − 0.0328 ∗ 0.249 ∗ 0.5
= −0.00042
𝑤10
0 +
= 𝑤 − 𝜂 ∗
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
0
= 0.15 − 0.5 ∗ (−0.00042) = 0.1502
새로운 𝑤10
0 +
의 값은 0.1502
# 𝑤10
(0)
가 𝐸𝑡𝑜𝑡 에 미치는 영향은 -0.00042
𝑤10
(0)
𝑤11
(0)
𝑥1
0.5
0.15
0.2
0.075
0.095
𝑧11 𝑎11
𝑤10
(1)
𝑤20
(1)
𝑦1
𝑧21 𝑎21
𝑧20 𝑎20
𝑤11
(1)
𝑤21
(1)
𝑦2
𝑧10 𝑎10
0.4
0.5
0.45
0.55
0.519
0.524
0.197
0.131
0.248
0.276
0.581
0.628
0.3
0.9
0.380
0.1502
0.250
0.527
0.478
0.1909
𝐸𝑡𝑜𝑡 = 0.087 → 0.076 학습 1회 이후 오류 13% 감소
한 회씩 반복할 때마다
Loss 값이 낮아진다
더 복잡한 문제는
층을 더 깊게 하고
더 넓게 하면
풀 수 있겠구나
더 복잡한 문제를 풀어보자
그런데 학습이 잘 안되는걸?
원인
1. 잘못된 활성화 함수
2. 잘못된 초기값 설정
3. 불안정한 학습과정
𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) =
1
1+𝑒−𝑥 𝑆′ (𝑥) =
1
1+𝑒−𝑥 ( 1 −
1
1+𝑒−𝑥 )
(0 , ¼] – 최대점 ¼, 0 에서 수평
Sigmoid 에 문제가 있어
𝑥1
𝑤1
𝑦Input
Sigmoid
Function
Sigmoid
Function
Sigmoid
Function
𝑤2 𝑤3
𝑎1 𝑧1 𝑎2 𝑧2 𝑎3 𝑧3
𝑎1 = 𝑥1 ∗ 𝑤1 𝑎2 = 𝑧1 ∗ 𝑤2 𝑎3 = 𝑧2 ∗ 𝑤3
𝑧1 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎1) 𝑧2 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎2) 𝑧3 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎3)
𝑦 = 𝑧3
# Sigmoid 가 많이 반복되면 대부분의 수가 0.659 로 수렴하는 것이 문제
하지만
더 큰 문제는
𝜕𝑦
𝜕𝑤3
=
𝜕𝑦
𝜕𝑧3
𝜕𝑧3
𝜕𝑎3
𝜕𝑎3
𝜕𝑤3
= 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎3 ∗ 𝑧2
𝜕𝑦
𝜕𝑤2
=
𝜕𝑦
𝜕𝑎3
𝜕𝑎3
𝜕𝑧2
𝜕𝑧2
𝜕𝑎2
𝜕𝑎2
𝜕𝑤2
= 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′
𝑎3 ∗
𝑤3 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎2 ∗ 𝑧1
𝜕𝑦
𝜕𝑤1
=
𝜕𝑦
𝜕𝑎2
𝜕𝑎2
𝜕𝑧1
𝜕𝑧1
𝜕𝑎1
𝜕𝑎1
𝜕𝑤1
= 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′
𝑎3 ∗ 𝑤3 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′
𝑎2 ∗
𝑤2 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎1 ∗ 𝑥1
𝑥
𝑤1
𝑦
𝑤2
𝑤3
𝑎3
𝑧3
𝑎2
𝑧2
𝑎1
𝑧1
𝑎3 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧3)
𝑧3 = 𝑎2 ∗ 𝑤3
𝑦 = 𝑧3
𝑎2 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧2)
𝑧2 = 𝑎1 ∗ 𝑤2
𝑎1 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧1)
𝑧1 = 𝑥 ∗ 𝑤1
𝑆′ (𝑥) : (0 , ¼] – 최대점 ¼, 0 에서 수평
S’ 의 최대점이 ¼ 이기 때문에
곱할 때 마다 ¼ 로 값들이 줄어들어서
3번 이상 S’ 가 반복 되면
𝜕𝑧
𝜕𝑎
가 거의 0 이 되어
학습이 불가능하게 됩니다
새로운 함수 : Tanh Function
𝑇𝑎𝑛ℎ(𝑥) =
𝑒2𝑥+ 1
𝑒2𝑥−1
𝑇′ (𝑥) =1 − tanh2(x)
(0 , 1] – 최대점 1, 0 에서 수평
새로운 함수 : Tanh Function
𝑇′ (𝑥) =1 − tanh2(x)
(0 , 1] – 최대점 1, 0 에서 수평
새 함수 Tanh 는 Sigmoid 와
비슷하게 생겼고
도함수의 최대값도 1이라는
점에서 사용할 만 합니다
새로운 함수 : ReLU Function
𝑅𝑒𝐿𝑈(𝑥) = max 0, 𝑥
Rectified Linear Unit
𝑅′(𝑦) =
1 (𝑥 ≥ 0 )
0 (𝑥 < 0 ){
새로운 함수 : ReLU Function
𝑅′(𝑦) =
1 (𝑥 ≥ 0 )
0 (𝑥 < 0 ){
ReLU 는 학습이 빠르고
미분값이 0, 1 두개 중 하나이기
때문에 컴퓨팅 자원을 덜 소모해서
가장 일반적으로 쓰는 함수입니다
이후에도
PReLU, Leaky ReLU, SoftPlus 등
아직도 끊임 없이 연구되고 있으니
적절한 함수를 사용하시면 됩니다
초기값을 설정하는 것도
매우 매우 중요합니다
처음부터 정답과 비슷한
답을 내는 초기값을 설정한다면
당연히 학습이 빠르겠지요?
예전엔 초기값을
랜덤하게 설정했지만 이젠
Xavier 나 He initialization 을 사용합니다
잘못된 초기값 해결방법
Activation Function Initialization Code
Sigmoid Xavier
np.random.randn(n_input, n_output)
/ sqrt(n_input)
ReLU He
np.random.randn(n_input, n_output)
/ sqrt(n_input / 2)
1. Gaussian 으로 초기화 하고
2. 인풋개수의 제곱근으로 나누면 Xavier Initialization
3. 인풋개수의 절반의 제곱근으로 나누면 He Initialization
잘못된 초기값 해결방법
Activation Function Initialization Code
Sigmoid Xavier
np.random.randn(n_input, n_output)
/ sqrt(n_input)
ReLU He
np.random.randn(n_input, n_output)
/ sqrt(n_input / 2)
Sigmoid 사용할 땐 Xavier ,
ReLU 사용할 땐 He 를 사용하면 좋습니다
그런데 신경망이 깊어지면
가중치들이 조금만 변해도 결과가
엄청나게 달라지는 불안정한 현상이 생깁니다
𝑥
𝑤1 𝑤1
′
𝑤2
𝑤3
𝑂𝑢𝑡 𝑂𝑢𝑡′
𝑤2
′
𝑤3
′ 이렇게 Input 값이 같아도
가중치가 조금씩 달라지면
Output 값은 완전히
달라지는 경우들이 생깁니다
이런 현상을 해결하기 위해서
각 활성함수의 출력 값을
정규화합니다
𝑥
𝑤1 𝑤1
′
𝑤2
𝑤3
𝑂𝑢𝑡 𝑂𝑢𝑡′
𝑤2
′
𝑤3
′
𝐵𝑁
𝐵𝑁
𝐵𝑁
배치 정규화를
어느정도 해줄지도
역전파를 통해 스스로
학습할 수 있습니다
𝑥
𝑤1 𝑤1
′
𝑤2
𝑤3
𝑂𝑢𝑡 𝑂𝑢𝑡′
𝑤2
′
𝑤3
′
𝐵𝑁
𝐵𝑁
𝐵𝑁
그런데 테스트할 때는
얼만큼 옮겨야 Output 값이
좋을지 알 수 없잖아요?
𝑥
𝑤1 𝑤1
′
𝑤2
𝑤3
𝑂𝑢𝑡 𝑂𝑢𝑡′
𝑤2
′
𝑤3
′
𝐵𝑁
𝐵𝑁
𝐵𝑁
그래서 트레이닝 하는 과정에서
옮긴 정도를 저장해 놓고
테스트할 때 재사용해야 합니다
𝑥
𝑤1 𝑤1
′
𝑤2
𝑤3
𝑂𝑢𝑡 𝑂𝑢𝑡′
𝑤2
′
𝑤3
′
𝐵𝑁
𝐵𝑁
𝐵𝑁
Batch Normalization 은
Training 과정 자체의 안정화를 통해
Vanishing Gradient 를 해결하는
근본적인 방법이라고 할 수 있습니다
이제 학습은 잘 되는데
학습속도가 더 빠르면 좋겠다
더 빠르게 학습할 순 없을까요?
10000
Data
Gradient
Descent
Stochastic
Gradient
Descent
2500
Data
2500
Data
2500
Data
2500
Data
Gradient Descent 방법은
모든 데이터를 고려해서
오차를 구하는 방법입니다
이제부턴 데이터 전체를
읽은 뒤 학습하지 말고
조금씩 읽은 뒤
조금씩 학습해 볼까요?
10000
Data
Gradient
Descent
Stochastic
Gradient
Descent
2500
Data
2500
Data
2500
Data
2500
Data
10000
Data
Gradient
Descent
Stochastic
Gradient
Descent
2500
Data
2500
Data
2500
Data
2500
Data
SGD
GDStart End
더 비틀비틀 가는 것 같지만
기존 보다 더 빠르게 학습합니다
조금 빨라지긴 했지만
아직도 너무 느립니다
𝑤+
= 𝑤 − 𝜂 ∗
𝜕𝐸
𝜕𝑤
학습에서 변할 수 있는 부분은
Learning Rate 랑 Gradient 부분
이 부분들을 적절히 변화시켜보자
SGD
𝜕𝐸
𝜕𝑤
Gradient
𝜂
Learning rate
Momentum
NAG
Adam
Adagrad
RMSProp
AdaDelta
Nadam
GD
참고 : 하용호
- 자습해도 모르겠던 딥러닝,
머리속에 인스톨 시켜드립니다.
모든 데이터를
검토한 뒤
방향을 찾자
조금씩 데이터를
검토한 뒤
자주 방향을 찾자
관성 개념을 도입해서
덜 비틀거리면서 가보자
관성방향으로 먼저 움직인 뒤
계산한 방향으로 가보자
처음엔 빠르게 학습하고
나중엔 세밀하게 학습하자
세밀한정도가 너무 작아져서
학습이 안되는 것을 막자
세밀하게 학습하되
상황을 보며 정도를 정하자
gradient, learning rate
둘 다 고려해서 방향을 찾자
Adam 에서 Momentum 대신
NAG 를 사용하자
Nesterov Accelerated Gradient
여러 Optimizer 의 최적값 찾는 과정
gradient
learning rate
학습도 잘 되고
속도도 빨라졌으니
이젠 인식 해보자!
잘 나온다!
이것도 인식 해보자!
사. 자?????????
이미지 회전했다고 사자라니
왜 이런 결과가 나올까요?
- 1 to 0 : 10개- 0 to 1 : 10개
MLP 의 문제점
한 칸씩만 움직였는데
변화하는 인풋값이 20개
그럼 이미지에서 특징들을 추출해서
특징값을 input 값으로 넣자
특징을 추출해내서 변화에 대응하자
추출할 수 있는 특징 : 질감, 각도, 길이, 두께
CNN 이 그림을
인지하는 과정을
체험해볼까요?
1단계 : 가로, 동그라미, 세모, 부드러움
2단계 :눈, 코, 귀, 발
3단계 :고양이!
64 X 64
Convolution
Layer
32 X 32
Pooling
Layer
32 X 32
Convolution
Layer
16 X 16
Pooling
Layer
Fully-Connected
layer
64 X 64
Input
CNN 기본 구조
CNN 의 핵심
컨볼루션 과 풀링
생선 그림을 가지고 CNN 과정을 살펴 봅시다
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0
0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0
0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0
0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0
0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0
0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0
0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0
0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0
0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0
0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0
0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0
0 1 0
0 1 0
0 1 1 1 1 1 1 1 0
0 3 1 1 1 1 1 3 0
0 3 1 1 0 1 1 3 0
0 1 1 1 0 1 1 1 0
0 0 1 2 0 2 1 0 0
0 1 1 1 1 1 1 1 0
0 3 1 2 2 2 1 3 0
0 3 0 2 2 2 0 3 0
0 3 0 1 1 1 0 3 0
0 3 1 2 0 0 0 3 0
0 1 1 1 0 0 1 2 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Convolution Max Pooling
Convolution : 세로 필터
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0
0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0
0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0
0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0
0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0
0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0
0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0
0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0
0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0
0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0
0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 0
0 3 1 1 1 1 1 3 0
0 3 1 1 0 1 1 3 0
0 1 1 1 0 1 1 1 0
0 0 1 2 0 2 1 0 0
0 1 1 1 1 1 1 1 0
0 3 1 2 2 2 1 3 0
0 3 0 2 2 2 0 3 0
0 3 0 1 1 1 0 3 0
0 3 1 2 0 0 0 3 0
0 1 1 1 0 0 1 2 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Convolution Max Pooling
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 2 3 2 2 2 3 3 2 2 2 3 2 1 0 0
0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0
0 0 1 1 1 0 1 1 2 2 2 1 0 1 1 1 0 0
0 0 1 1 1 1 1 2 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 0 1 1 2 2 2 1 0 1 1 1 0 0
0 0 1 1 1 1 1 2 1 1 1 1 1 1 1 1 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0
0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0
0 0 1 1 1 1 2 2 1 0 0 0 0 1 1 1 0 0
0 0 1 1 1 1 2 2 1 0 0 0 0 1 1 1 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0
0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 2 3 2 3 2 3 2 0
0 1 1 0 0 0 1 1 0
0 1 1 1 0 1 1 1 0
0 0 1 1 0 1 1 0 0
0 1 1 1 0 1 1 1 0
0 1 1 2 2 2 1 1 0
0 1 1 2 2 2 1 1 0
0 1 1 0 0 0 1 1 0
0 1 1 2 1 0 1 1 0
0 1 1 1 0 0 1 1 0
0 0 1 2 3 3 1 0 0
0 0 0 0 0 0 0 0 0
0 0 0
1 1 1
0 0 0
Convolution : 가로 필터
1 0 1
0 1 0
1 0 1
0 1 2 2 2 2 2 1 0
0 2 3 3 2 3 3 2 0
0 2 2 1 0 1 2 2 0
0 1 3 1 0 1 3 1 0
0 0 1 2 0 2 1 0 0
0 1 3 2 2 2 3 1 0
0 2 2 3 5 3 2 2 0
0 2 2 5 3 3 2 2 0
0 2 2 2 1 1 2 2 0
0 2 2 2 1 0 2 2 0
0 1 3 2 1 1 3 2 0
0 0 1 3 2 2 3 1 0
0 0 0 1 2 2 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 2 1 2 1 2 2 1 2 1 2 1 1 0 0
0 0 1 1 2 2 0 2 1 1 2 0 2 2 1 1 0 0
0 0 2 2 3 1 3 1 2 2 1 3 1 3 2 2 0 0
0 0 2 1 2 1 0 1 0 0 1 0 1 2 1 2 0 0
0 0 1 2 1 1 0 0 0 0 0 0 1 1 2 1 0 0
0 0 1 0 3 0 1 0 0 0 0 1 0 3 0 1 0 0
0 0 0 1 0 3 0 1 0 0 1 0 3 0 1 0 0 0
0 0 0 0 1 1 2 1 0 0 1 2 1 1 0 0 0 0
0 0 0 0 1 1 2 1 0 0 1 2 1 1 0 0 0 0
0 0 0 1 0 3 0 1 0 0 1 0 3 0 1 0 0 0
0 0 1 0 3 0 2 0 2 1 1 2 0 3 0 1 0 0
0 0 1 2 1 2 0 3 0 2 2 0 2 1 2 1 0 0
0 0 2 1 2 0 3 0 5 2 2 3 0 2 1 2 0 0
0 0 2 1 2 2 0 5 0 3 3 0 2 2 1 2 0 0
0 0 2 1 2 0 2 0 3 1 1 2 0 2 1 2 0 0
0 0 2 1 2 1 0 2 0 1 1 0 1 2 1 2 0 0
0 0 2 1 2 1 1 1 1 0 0 0 0 2 1 2 0 0
0 0 2 1 2 1 2 2 1 0 0 0 0 2 1 2 0 0
0 0 1 2 1 2 2 2 1 0 0 0 0 2 1 2 0 0
0 0 1 0 3 1 2 1 1 0 0 0 1 1 2 1 0 0
0 0 0 1 0 3 0 1 0 0 0 1 0 3 0 1 0 0
0 0 0 0 1 0 3 1 2 2 2 1 3 0 1 0 0 0
0 0 0 0 0 1 0 2 1 1 1 2 0 1 0 0 0 0
0 0 0 0 0 0 1 1 2 2 2 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Convolution Max Pooling
Convolution : 지느러미 필터
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0
0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0
0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0
0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0
0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0
0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0
0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0
0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0
0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0
0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0
0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0
0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0
0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0
0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 0
0 3 1 1 1 1 1 3 0
0 3 1 1 0 1 1 3 0
0 1 1 1 0 1 1 1 0
0 0 1 2 0 2 1 0 0
0 1 1 1 1 1 1 1 0
0 3 1 2 2 2 1 3 0
0 3 0 2 2 2 0 3 0
0 3 0 1 1 1 0 3 0
0 3 1 2 0 0 0 3 0
0 1 1 1 0 0 1 2 0
0 0 1 1 1 1 1 0 0
0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0
0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0
0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Convolution Max Pooling
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0
0 0 1 1 1 2 0 1 1 1 2 0 1 2 1 0 0 0
0 0 1 1 1 1 2 0 1 1 1 2 0 2 2 1 0 0
0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0
0 0 0 2 1 0 0 0 0 0 0 0 1 0 1 1 0 0
0 0 0 0 3 0 0 0 0 0 0 1 0 1 0 1 0 0
0 0 0 0 0 3 0 0 0 0 1 0 1 0 1 0 0 0
0 0 0 0 0 1 2 0 0 0 1 1 0 1 0 0 0 0
0 0 0 0 1 0 1 1 0 0 0 2 1 0 0 0 0 0
0 0 0 1 0 1 0 1 0 0 0 0 3 0 0 0 0 0
0 0 1 0 1 0 2 0 1 1 0 0 0 3 0 0 0 0
0 0 1 1 0 2 0 2 0 1 2 0 0 1 2 0 0 0
0 0 1 1 1 0 2 0 3 1 1 2 0 1 1 1 0 0
0 0 1 1 1 1 0 3 0 2 2 0 1 1 1 1 0 0
0 0 1 1 1 0 1 0 2 0 1 2 0 1 1 1 0 0
0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0
0 0 1 1 1 1 2 1 0 0 0 0 0 1 1 1 0 0
0 0 0 2 1 0 1 2 1 0 0 0 0 1 1 1 0 0
0 0 0 0 3 0 0 1 1 0 0 0 1 0 1 1 0 0
0 0 0 0 0 3 0 0 0 0 0 1 0 1 0 1 0 0
0 0 0 0 0 0 3 1 1 1 1 0 1 0 1 0 0 0
0 0 0 0 0 0 0 2 1 1 1 1 0 1 0 0 0 0
0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 0 0
0 1 2 2 1 2 2 2 0
0 2 1 1 0 0 1 1 0
0 0 3 0 0 1 1 1 0
0 0 1 2 0 2 1 0 0
0 1 1 2 1 0 3 0 0
0 1 2 2 3 2 1 2 0
0 1 1 3 2 2 1 1 0
0 1 1 1 1 0 1 1 0
0 2 1 2 1 0 1 1 0
0 0 3 1 1 1 1 1 0
0 0 0 3 1 1 1 1 0
0 0 0 0 1 1 1 0 0
1 0 0
0 1 0
0 0 1
Convolution : 대각선 필터
어떤 물체의 특징이
이미지 중 어디에 있는지
알아내는 과정
Convolution?
Pooling?
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0
0 0 0 0 0 1 1 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 2 2 3 3 3 3 0 0 0 0 0 0 0
0 0 0 1 1 3 3 3 3 3 3 0 0 0 0 0 0 0
0 0 0 2 2 3 3 3 3 3 3 0 0 0 0 0 0 0
0 0 0 2 2 2 2 3 3 3 3 0 0 0 0 0 0 0
0 0 0 1 1 1 1 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0
0 0 0 1 1 1 1 3 3 3 3 1 1 1 1 0 0 0
0 0 0 2 2 2 2 3 3 3 3 2 2 2 2 0 0 0
0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0
0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0
0 0 1 3 3 3 0 0 0
0 1 3 3 3 3 0 0 0
0 2 3 3 3 3 0 0 0
0 1 1 3 3 3 0 0 0
0 0 0 3 3 3 0 0 0
0 0 0 3 3 3 0 0 0
0 0 0 3 3 3 0 0 0
0 2 2 3 3 3 2 2 0
0 3 3 3 3 3 3 3 0
0 2 2 2 2 2 2 2 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0
0 0 0 0 1 1 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 2 2 3 3 3 3 0 0 0 0 0 0 0 0
0 0 1 1 3 3 3 3 3 3 0 0 0 0 0 0 0 0
0 0 2 2 3 3 3 3 3 3 0 0 0 0 0 0 0 0
0 0 2 2 2 2 3 3 3 3 0 0 0 0 0 0 0 0
0 0 1 1 1 1 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0
0 0 1 1 1 1 3 3 3 3 1 1 1 1 0 0 0 0
0 0 2 2 2 2 3 3 3 3 2 2 2 2 0 0 0 0
0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0
0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0
0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0
0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0
0 0 1 3 3 0 0 0 0
0 1 3 3 3 0 0 0 0
0 2 3 3 3 0 0 0 0
0 1 1 3 3 0 0 0 0
0 0 0 3 3 0 0 0 0
0 0 0 3 3 0 0 0 0
0 0 0 3 3 0 0 0 0
0 2 2 3 3 2 2 0 0
0 3 3 3 3 3 3 0 0
0 2 2 2 2 2 2 0 0
0 0 0 0 0 0 0 0 0
MLP - 총 38 pixel 변화
Pooling - 총 12 pixel 변화
변화 pixel 수
약 70% 감소
이미지가 1칸 이동할 때
물체의 위치나 각도 등의
변화에 잘 대처할 수 있게
하는 과정
Pooling?
CNN 은 어떻게
필터를 학습할까요?
𝑤+
= 𝑤 − 𝜂 ∗
𝜕𝐸
𝜕𝑤
MLP 와 마찬가지로
예제를 통해 살펴볼까요
12 X 12
Convolution
Layer
6 X 6
Pooling
Layer
4 X 4
Convolution
Layer
2 X 2
Pooling
Layer
4 X 1
Fully-Connected
layer
15 X 15
Input
4 ∗ 4
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
3 ∗ 3
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑙 − 1 𝑙 𝑙 + 1 𝐿, 𝑙 +2
어떻게 학습하는지
살펴보겠습니다
3 ∗ 3
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝐿, 𝑙 +2𝑙 + 1
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑤 𝑙+1
가 전체 Cost 에
어떤 영향을 미치는지 알아야
갱신이 가능하겠죠?
𝐿, 𝑙 +2𝑙 + 1
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝜕𝐶
𝜕𝑤 𝑙+1 를 구하는 것이
목적이라는 것
잊지마세요
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑙+1
= 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑧 𝐿
은 Fully Connected Layer 를
거친 뒤 최종 값 입니다
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
은 MaxPooling Layer 를
거친 뒤 값 입니다
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑛𝑏 𝑎00
𝑙+1
은 MaxPooling Layer
에 대상이 되는 수들의 집합을
나타내는 표기법 입니다
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1 𝑎 𝑜𝑝
𝑙+1은 𝑧 𝑜𝑝
𝑙+1이 활성화 함수를
거치고 난 뒤의 값입니다
이번 예제에서는 계산의 편의를
위해 항등함수를 사용합니다
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑧 𝑜𝑝
𝑙+1은 ෥𝑎 𝑚′ 𝑛′
𝑙
이 3 ∗ 3 𝑐𝑜𝑛𝑣 𝑙𝑎𝑦𝑒𝑟
를 거치고 난 뒤의 값입니다
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑤 𝑙+1
𝑧 𝐿 = ෍
𝑞
𝑤 𝑞
𝑙+2 ෤𝑎 𝑞
𝑙+1
෤𝑎 𝑜′ 𝑝′
𝑙+1
= 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝
𝑙+1)
𝑛𝑏 𝑎00
𝑙+1
= 𝑎00
𝑙+1
, 𝑎01
𝑙+1
, 𝑎10
𝑙+1
, 𝑎11
𝑙+1
𝑧 𝑜𝑝
𝑙+1 = ෍
𝑎=0
𝐴−1
෍
𝑏=0
𝐵−1
𝑤 𝑎𝑏
𝑙+1
𝑎(𝑜+𝑎)(𝑝+𝑏)
𝑙
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑤 𝑙+1
를 학습하려면 𝑤 𝑙+1
이 Cost 에
얼마나 영향을 미치는지
𝜕𝐶
𝜕𝑤 𝑙+1 구해야 합니다
𝐿, 𝑙 +2𝑙 + 1
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝑟
𝐿
𝜕𝑎 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑤 𝑜𝑝
𝑙+1
𝜕𝑧 𝑟
𝐿
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1 =
𝜕 σ 𝑜′ 𝑝′ 𝑤 𝑜′ 𝑝′
𝑙+2
෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1 = 𝑤 𝑜′ 𝑝′
𝑙+2
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1 =
𝜕max[𝑎 𝑙+1]
𝜕𝑎 𝑜𝑝
𝑙+1 =
1, 𝑖𝑓 𝑎 𝑜𝑝
𝑙+1
= max(𝑎)
{ 0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑤 𝑜𝑝
𝑙+1 =
𝜕 σ 𝑎 σ 𝑏 𝑤 𝑎𝑏
𝑙+1
෤𝑎(𝑚′+𝑎)(𝑛′+𝑏)
𝑙
𝜕𝑤 𝑜𝑝
𝑙+1
= ෍
𝑎
෍
𝑏
𝑤 𝑎𝑏
𝑙+1
෤𝑎(𝑚′+𝑎)(𝑛′+𝑏)
𝑙
= 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟
𝐿
∗ −1
𝜕𝐶
𝜕𝑎 𝑟
𝐿
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
෥𝑎 𝑚′ 𝑛′
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝜕𝐶
𝜕𝑤 𝑙+1 을 구하기 위해서는 아래의 요소들을
하나씩 구해서 곱하기만 하면 됩니다
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝐿, 𝑙 +2𝑙 + 1
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝑟
𝐿
𝜕𝑎 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑤 𝑜𝑝
𝑙+1
෥𝑎 𝑚′ 𝑛′
𝑙
= − 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟
𝐿 ∗ 𝑤 𝑜′ 𝑝′
𝑙+2
∗ ෍
𝑎
෍
𝑏
𝑤 𝑎𝑏
𝑙+1
෤𝑎(𝑚′+𝑎)(𝑛′+𝑏)
𝑙
𝑧 𝑜𝑝
𝑙+1, 𝑎 𝑜𝑝
𝑙+1
𝑤+ = 𝑤 − 𝜂 ∗
𝜕𝐸
𝜕𝑤
= 𝑤 + 𝜂 ∗ 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟
𝐿
∗ 𝑤 𝑜′ 𝑝′
𝑙+2
∗ ෍
𝑎
෍
𝑏
𝑤 𝑎𝑏
𝑙+1
෤𝑎(𝑚′+𝑎)(𝑛′+𝑏)
𝑙
이제 어떻게 Filter 를
학습하는지도 알았는데…
어떻게 쌓아야할까요?
VGG, GoogleNet, ResNet 등
여러 모델들이 계속 나오고 있으니
문제의 난이도에 맞게 선택해서 사용하면 됩니다
# Layers 수가 많다고 모든 문제에
적합한 것은 아니니 주의해서 사용하셔야 합니다
이제 잘 나온다!
그럼 이것도 한번 맞추게 해보자
개? ?고양이?
한 이미지에 여러 개를
판별할 수는 없을까요?
이미지에 여러 구역을
랜덤하게 CNN 으로
판별해보자
Detect Model : OverFeat
NewYork Univ - 2014
영상을 키워가면서
단일 크기의 윈도우로
계속 판별해서 알아내기
Detect Model : OverFeat
NewYork Univ - 2014
영상을 키워가면서
판별하기 때문에
객체의 크기 변화에 대응 가능
Detect Model : OverFeat
NewYork Univ - 2014
분류된 객체의 위치를 추정하는 작업
Detect Model : OverFeat
NewYork Univ - 2014
동일 객체로 추정되는 사각형들을 합치기
하지만 OverFeat는
구역을 너무 많이 나눠서
너무 오래 걸립니다
그럼 일단 객체를 찾은 뒤에
CNN 으로 판별해보자
Detect Model : R-CNN
UC Berkeley - 2014
Input Region Proposals
(Selective Search)
classifier
Compute
Regions
DOG
CAT
Classify
# 객체를 먼저 찾는
과정을 추가
OverFeat 보다는 빨라졌지만
아직도 실시간 처리는
불가능한 속도
R-CNN 에서 개선 가능한 곳은
Region proposal, Classifier
두 군데
Classifier 를 일단
개선해보자
Detect Model : Fast R-CNN
Microsoft - 2015
Region Proposals
(Selective Search)
Compute
Regions
classifier
Classify
DOG
CAT
convolution
& pooling
R-CNN 과 달라진 부분
중복 구역 제거
계산 시간 단축
Convolution, Pooling 과정 통해
계산량을 크게 줄인 Fast R-CNN
다음은
Region Proposal 과정을
개선해보자
Detect Model : Faster R-CNN
Microsoft - 2015기존의 Region Proposal 과정을 개선한
Region Proposal Network 층을 추가
Region Proposal Network
R-CNN Fast R-CNN Faster R-CNN
Time per image 50 secs 2 secs 0.2 secs
SpeedUp 1x 25x 250x
mAP 66.00% 66.90% 66.90%
R-CNN benchmark
Faster R-CNN 의 경우 초당 5 frame 의 연산이 가능하지만
Real-Time Image Detection 이 가능하진 않습니다
이후에도 Yolo, SSD 등
새로운 모델들이 나오고 있고
계속 발전 중입니다
Image Detection 도
상황에 맞는 모델을
사용하면 되겠죠?
망이 깊다고
모든 문제를 잘 해결할 수는
없다는 점을 꼭 명심하셔야 합니다
무엇이든
전체적인 흐름을 보고 가면 어렵지 않아요
RNN, Gan 은 다음편에서…
gomguard.tistory.com
감사합니다
knholic@gmail.com
gomguard.tistory.com

More Related Content

What's hot

강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
NAVER Engineering
 

What's hot (20)

머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
 
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Hands-on 팀] : 수어 번역을 통한 위험 상황 속 의사소통 시스템 구축
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Hands-on 팀] : 수어 번역을 통한 위험 상황 속 의사소통 시스템 구축제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Hands-on 팀] : 수어 번역을 통한 위험 상황 속 의사소통 시스템 구축
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [Hands-on 팀] : 수어 번역을 통한 위험 상황 속 의사소통 시스템 구축
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능코드와 실습으로 이해하는 인공지능
코드와 실습으로 이해하는 인공지능
 
머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)
 
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
알아두면 쓸데있는 신기한 강화학습 NAVER 2017알아두면 쓸데있는 신기한 강화학습 NAVER 2017
알아두면 쓸데있는 신기한 강화학습 NAVER 2017
 
[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터[논문리뷰] Data Augmentation for 1D 시계열 데이터
[논문리뷰] Data Augmentation for 1D 시계열 데이터
 
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색 제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
제 15회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [YouPlace 팀] : 카프카와 스파크를 활용한 유튜브 영상 속 제주 명소 검색
 
인공지능, 머신러닝의 이해 강의자료 2019.12.20
인공지능, 머신러닝의 이해 강의자료 2019.12.20인공지능, 머신러닝의 이해 강의자료 2019.12.20
인공지능, 머신러닝의 이해 강의자료 2019.12.20
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
인공지능 방법론 - 딥러닝 이해하기
인공지능 방법론 - 딥러닝 이해하기인공지능 방법론 - 딥러닝 이해하기
인공지능 방법론 - 딥러닝 이해하기
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법
 
Relative attributes
Relative attributesRelative attributes
Relative attributes
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 

Similar to [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기

Similar to [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 (20)

03. linear regression
03. linear regression03. linear regression
03. linear regression
 
Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )04. logistic regression ( 로지스틱 회귀 )
04. logistic regression ( 로지스틱 회귀 )
 
Gaussian Mixture Model
Gaussian Mixture ModelGaussian Mixture Model
Gaussian Mixture Model
 
파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강
 
02. naive bayes classifier revision
02. naive bayes classifier   revision02. naive bayes classifier   revision
02. naive bayes classifier revision
 
Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2Chapter 7 Regularization for deep learning - 2
Chapter 7 Regularization for deep learning - 2
 
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리 학습을 위한 PPT! (Deep Learning for Natural Language Processing)
 
페리 수열(Farey sequence)
페리 수열(Farey sequence)페리 수열(Farey sequence)
페리 수열(Farey sequence)
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기
 
선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)선형대수 08. 선형 변환 (Linear Transformation)
선형대수 08. 선형 변환 (Linear Transformation)
 
Deep Learning from scratch 3장 : neural network
Deep Learning from scratch 3장 : neural networkDeep Learning from scratch 3장 : neural network
Deep Learning from scratch 3장 : neural network
 
Deep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningDeep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learning
 
Optimization algorithms in machine learning
Optimization algorithms in machine learningOptimization algorithms in machine learning
Optimization algorithms in machine learning
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2
 
해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3해커에게 전해들은 머신러닝 #3
해커에게 전해들은 머신러닝 #3
 
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
[컴퓨터비전과 인공지능] 10. 신경망 학습하기 파트 1 - 1. 활성화 함수
 
Decision tree
Decision treeDecision tree
Decision tree
 
Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)Variational AutoEncoder(VAE)
Variational AutoEncoder(VAE)
 
Multinomial classification and application of ML
Multinomial classification and application of MLMultinomial classification and application of ML
Multinomial classification and application of ML
 

[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기

  • 4. 자비스 처럼 주변에 뭐가 있는지 알고 어떻게 하는 것이 최선인지 인간의 언어로 조언해주는 시스템
  • 5. 그 중 오늘 알아볼 것은 [주변에 뭐가 있는지 아는] 부분 입니다
  • 6. 사람을 따라서 만들자 : 뉴런 신경계를 구성하는 세포인 뉴런은 신호들을 받으면 종합한 뒤에 출력하기도 하고 안하기도 합니다.
  • 7. 뉴런을 따라 만든 인공 뉴런 : Perceptron 𝑦 = 1 ( 𝑤1 𝑥1+ 𝑤2 𝑥2 + 𝜃 ≥ 0 ) 0 ( 𝑤1 𝑥1+ 𝑤2 𝑥2 + 𝜃 < 0 ){ x1 𝑥1 𝑥2 𝑤1 𝑤2 𝑦 Bias Input Input Activation Function 𝜃 Weight
  • 8. Perceptron 이 사용하는 활성 함수: 계단 함수 𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){ 뉴런처럼 정보의 합이 0을 넘을 때만 출력
  • 9. 가장 간단한 AND 게이트 부터 𝑥1 𝑥2 𝑦 AND Gate 의 회로기호 𝑥1 𝑥2 𝑦 0 0 0 0 1 0 1 0 0 1 1 1 AND Gate 의 입출력
  • 10. AND 게이트는 문제 없이 분리 가능 0 0 0 1 하나의 선으로 0 과 1을 분리할 수 있는 AND 게이트
  • 11. 그럼 XOR 게이트는?? 0 0 1 1 ? ? ? ? 하나의 선으로는 0 과 1을 분리할 수 없는 XOR 게이트
  • 12. XOR 게이트 𝑥1 𝑥2 𝑦AND AND OR XOR 게이트는 AND 와 OR 게이트의 조합으로 만들 수 있구나
  • 13. 그럼 퍼셉트론 여러 개를 쌓아보자 : MLP Input Layer 𝑥1 𝑥2 x11 Output Layer 𝑦 𝑦′ Hidden Layer x11 𝑎2 𝑎1 𝑎1 ′ 𝑎2 ′ 𝑏00 (0) 𝑏01 (0) 𝑤10 (0) 𝑤11 (0) 𝑤20 (0) 𝑤21 (0) 𝑏00 (1) 𝑤10 (1) 𝑤20 (1)
  • 14. MLP 로 XOR 게이트를 풀어보자 Input Layer 𝑥1 𝑥2 x1𝑏 Hidden Layer NAND Gate OR Gate Output Layer XOR Gate MLP 로도 XOR 게이트를 만들어 낼 수 있다
  • 15. Layer 의 개수에 따라 결정할 수 있는 영역 1 hidden layer 2 hidden layer 3 hidden layer
  • 16. 답을 얻을 수 있는 건 알겠는데 MLP 는 어떻게 학습하는거지?
  • 18. 던지는 것 마다 골인 사람은 벌써 학습 완료된 모델 매번 빗나가는 사람들은 학습 과정인 모델들
  • 19. 공을 던졌을 때 안들어가면 어떻게 안들어갔는지 살펴보고 약간 반대방향으로 던지는 것 처럼
  • 20. 계산한 값이 원래 답보다 크면 가중치를 조금 작게 원래 답보다 작으면 가중치를 조금 크게 조절해보자
  • 21. 다시 말해서 계산한 값과 답의 차이를 가능한 작게 만드는 것이 학습
  • 22. 1. 오차함수를 정하고 2. ∇(𝑔𝑟𝑎𝑑𝑖𝑒𝑛𝑡) 를 구해서 3. weight 를 업데이트 하자 𝑤 𝑛𝑒𝑤 = 𝑤 − 𝛾∇𝐶(𝑥)
  • 23. 가장 기본적인 오차함수 : MSE Minimum Squared Error = 1 𝑛 σ𝑖 ෝ𝑦𝑖 − 𝑦𝑖 2 𝑦0 𝑦1 𝑦2 𝑦3 𝑦4 ෞ𝑦0 ෞ𝑦1 ෞ𝑦2 ෞ𝑦3 ෞ𝑦4 # 각 정답과 예상값의 차이를 제곱해서 평균내는 방법
  • 24. 가장 기본적인 오차함수 : ACE Averaged Cross Entropy Error = − 1 𝑛 σ𝑖 𝑦𝑖 𝑙𝑜𝑔 ෝ𝑦𝑖 𝑦0 𝑦1 𝑦2 𝑦3 𝑦4 log(ෞ𝑦0) log(ෞ𝑦1) log(ෞ𝑦2) log(ෞ𝑦3) log(ෞ𝑦4) # 정답이 One-hot 인코딩 되어 있는 경우에만 사용가능
  • 25. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 학습을 수학적으로 표기하면 learning rate : 한번에 얼마나 학습할지 gradient : 어떤 방향으로 학습할지
  • 27. 똑같이 0에서 1까지 출력하는데 미분 가능한 함수를 찾아보자
  • 28. 𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) = 1 1+𝑒−𝑥 새로운 함수 Sigmoid 𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){
  • 29. 미분 가능한 Sigmoid 를 사용하면 학습이 가능
  • 30. MLP 의 학습과정을 간단한 예제를 통해서 살펴봅시다
  • 31. 𝑤10 (0) 𝑤11 (0) 𝑥1 0.5 0.15 0.2 0.075 0.1 𝑧11 𝑎11 𝑤10 (1) 𝑤20 (1) 𝑦1 𝑧21 𝑎21 𝑧20 𝑎20 𝑤11 (1) 𝑤21 (1) 𝑦2 𝑧10 𝑎10 0.4 0.5 0.45 0.55 0.518 0.524 0.207 0.209 0.236 0.288 0.609 0.633 0.3 0.9 𝐸𝑡𝑜𝑡 = 1 2 ෍ 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑜𝑢𝑡𝑝𝑢𝑡 2 = 1 2 0.3 − 0.609 2 + 1 2 0.9 − 0.621 2 = 0.087 초록색 값들은 인풋값 파란색 값들은 계산값 학습 전 전체 에러값은 0.087 Sigmoid Function Sigmoid Function Sigmoid Function Sigmoid Function
  • 32. 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (1) = 𝜕𝐸𝑡𝑜𝑡 𝜕𝑎20 𝜕𝑎20 𝜕𝑧20 𝜕𝑧20 𝜕𝑤10 (1) 𝐸𝑡𝑜𝑡 = 1 2 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 2 + 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦2 − 𝑎21 2 𝜕𝐸𝑡𝑜𝑡 𝜕𝑎20 = 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ −1 + 0 𝑎20 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧20) 𝜕𝑎20 𝜕𝑧20 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 𝑧20 = 𝑤10 (1) 𝑎10 + 𝑤20 (1) 𝑎20 𝜕𝑧20 𝜕𝑤10 (1) = 𝑎10 + 0 𝑤10 (1) 𝑦1𝑧20 𝑎20 0.4 0.207 0.609 0.3 0.518 𝑧10 𝑎10 먼저 𝑤10 (1) 을 학습시키자 𝜕𝐸𝑡𝑜𝑡 𝜕𝑎20 𝜕𝑎20 𝜕𝑧20 𝜕𝑧20 𝜕𝑤10 (1)
  • 33. 𝑤10 (1) 𝑦1𝑧20 𝑎20 0.4 0.207 0.609 0.3 0.518 𝑧10 𝑎10 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (1) = 𝜕𝐸𝑡𝑜𝑡 𝜕𝑎20 𝜕𝑎20 𝜕𝑧20 𝜕𝑧20 𝜕𝑤10 (1) = − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 𝑎10 = − 0.3 − 0.609 ∗ 0.609 ∗ 1 − 0.609 ∗ 0.518 = 0.0381 𝑤10 1 + = 𝑤 − 𝜂 ∗ 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 1 = 0.4 − 0.5 ∗ 0.0381 = 0.380 𝑤10 1 이 전체 에러에 미치는 영향은 0.0381, 갱신한 𝑤10 1 + 값은 0.380
  • 34. 두 번째 층은 첫 번째 층보다 조금 복잡합니다
  • 35. 𝑤10 (0) 𝑥1 0.5 0.15 0.075 𝑧11 𝑎11 𝑤10 (1) 𝑤20 (1) 𝑦1 𝑧21 𝑎21 𝑧20 𝑎20 𝑤11 (1) 𝑤21 (1) 𝑦2 𝑧10 𝑎10 0.4 0.5 0.45 0.55 0.518 0.524 0.207 0.209 0.236 0.288 0.609 0.633 0.3 0.9 𝑤10 (0) 은 𝑤10 (1) 과 달리 𝒚 𝟏, 𝒚 𝟐 양쪽에 다 영향을 미칩니다
  • 36. 𝑤10 (0) 𝑥1 0.5 0.15 0.075 𝑧11 𝑎11 𝑤10 (1) 𝑤20 (1) 𝑦1 𝑧21 𝑎21 𝑧20 𝑎20 𝑤11 (1) 𝑤21 (1) 𝑦2 𝑧10 𝑎10 0.4 0.5 0.45 0.55 0.518 0.524 0.207 0.209 0.236 0.288 0.609 0.633 0.3 0.9 따라서 갱신값을 구할 때 𝐸 𝑦1과 𝐸 𝑦2 을 모두 고려해야 합니다
  • 37. 𝑤10 (0) 𝑥1 0.5 0.15 0.075 𝑧11 𝑎11 𝑤10 (1) 𝑤20 (1) 𝑦1 𝑧21 𝑎21 𝑧20 𝑎20 𝑤11 (1) 𝑤21 (1) 𝑦2 𝑧10 𝑎10 0.4 0.5 0.45 0.55 0.518 0.524 0.207 0.209 0.236 0.288 0.609 0.633 0.3 0.9 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (0) = 𝜕𝐸𝑡𝑜𝑡 𝜕𝑎10 𝜕𝑎10 𝜕𝑧10 𝜕𝑧10 𝜕𝑤10 (0) 𝐸𝑡𝑜𝑡 = 𝐸 𝑦1 + 𝐸 𝑦2
  • 38. 𝑤10 (1) 𝑦1𝑧20 𝑎20 0.4 0.207 0.609 0.3 0.518 𝑧10 𝑎10𝑤10 (0) 𝑥1 0.5 0.15 0.075 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (0) = ( 𝜕𝐸1 𝜕𝑎10 + 𝜕𝐸2 𝜕𝑎10 ) 𝜕𝑎10 𝜕𝑧10 𝜕𝑧10 𝜕𝑤10 (0) 𝜕𝐸1 𝜕𝑎10 = 𝜕𝐸1 𝜕𝑎20 𝜕𝑎20 𝜕𝑧20 𝜕𝑧20 𝜕𝑎10 = − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧20 ∗ 𝑤10 (1) = − 0.3 − 0.609 ∗ 0.609 ∗ 1 − 0.609 ∗ 0.4 = 0.0294 # 𝑎10 가 𝐸1 에 미치는 영향은 0.0294
  • 39. 𝑤11 (1) 𝑦2𝑧21 𝑎21 0.5 0.209 0.621 0.9 0.518 𝑧10 𝑎10𝑤10 (0) 𝑥1 0.5 0.15 0.075 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (0) = ( 𝜕𝐸1 𝜕𝑎10 + 𝜕𝐸2 𝜕𝑎10 ) 𝜕𝑎10 𝜕𝑧10 𝜕𝑧10 𝜕𝑤10 (0) 𝜕𝐸2 𝜕𝑎10 = 𝜕𝐸2 𝜕𝑎21 𝜕𝑎21 𝜕𝑧21 𝜕𝑧21 𝜕𝑎10 = − 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦2 − 𝑎21 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧21 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧21 ∗ 𝑤11 (1) = − 0.9 − 0.621 ∗ 0.621 ∗ 1 − 0.621 ∗ 0.5 = − 0.0328 # 𝑎10 가 𝐸2 에 미치는 영향은 -0.0328
  • 40. 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 (0) = ( 𝜕𝐸1 𝜕𝑎10 + 𝜕𝐸2 𝜕𝑎10 ) 𝜕𝑎10 𝜕𝑧10 𝜕𝑧10 𝜕𝑤10 (0) 𝜕𝐸2 𝜕𝑎10 = −0.0345 𝜕𝐸1 𝜕𝑎10 = 0.0305 𝜕𝑎10 𝜕𝑧10 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧10 ∗ 1 − 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑧10 = 0.0294 − 0.0328 ∗ 0.249 ∗ 0.5 = −0.00042 𝑤10 0 + = 𝑤 − 𝜂 ∗ 𝜕𝐸𝑡𝑜𝑡 𝜕𝑤10 0 = 0.15 − 0.5 ∗ (−0.00042) = 0.1502 새로운 𝑤10 0 + 의 값은 0.1502 # 𝑤10 (0) 가 𝐸𝑡𝑜𝑡 에 미치는 영향은 -0.00042
  • 41. 𝑤10 (0) 𝑤11 (0) 𝑥1 0.5 0.15 0.2 0.075 0.095 𝑧11 𝑎11 𝑤10 (1) 𝑤20 (1) 𝑦1 𝑧21 𝑎21 𝑧20 𝑎20 𝑤11 (1) 𝑤21 (1) 𝑦2 𝑧10 𝑎10 0.4 0.5 0.45 0.55 0.519 0.524 0.197 0.131 0.248 0.276 0.581 0.628 0.3 0.9 0.380 0.1502 0.250 0.527 0.478 0.1909 𝐸𝑡𝑜𝑡 = 0.087 → 0.076 학습 1회 이후 오류 13% 감소
  • 42. 한 회씩 반복할 때마다 Loss 값이 낮아진다
  • 43. 더 복잡한 문제는 층을 더 깊게 하고 더 넓게 하면 풀 수 있겠구나
  • 44. 더 복잡한 문제를 풀어보자
  • 45. 그런데 학습이 잘 안되는걸? 원인 1. 잘못된 활성화 함수 2. 잘못된 초기값 설정 3. 불안정한 학습과정
  • 46. 𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) = 1 1+𝑒−𝑥 𝑆′ (𝑥) = 1 1+𝑒−𝑥 ( 1 − 1 1+𝑒−𝑥 ) (0 , ¼] – 최대점 ¼, 0 에서 수평 Sigmoid 에 문제가 있어
  • 47. 𝑥1 𝑤1 𝑦Input Sigmoid Function Sigmoid Function Sigmoid Function 𝑤2 𝑤3 𝑎1 𝑧1 𝑎2 𝑧2 𝑎3 𝑧3 𝑎1 = 𝑥1 ∗ 𝑤1 𝑎2 = 𝑧1 ∗ 𝑤2 𝑎3 = 𝑧2 ∗ 𝑤3 𝑧1 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎1) 𝑧2 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎2) 𝑧3 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑎3) 𝑦 = 𝑧3 # Sigmoid 가 많이 반복되면 대부분의 수가 0.659 로 수렴하는 것이 문제
  • 49. 𝜕𝑦 𝜕𝑤3 = 𝜕𝑦 𝜕𝑧3 𝜕𝑧3 𝜕𝑎3 𝜕𝑎3 𝜕𝑤3 = 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎3 ∗ 𝑧2 𝜕𝑦 𝜕𝑤2 = 𝜕𝑦 𝜕𝑎3 𝜕𝑎3 𝜕𝑧2 𝜕𝑧2 𝜕𝑎2 𝜕𝑎2 𝜕𝑤2 = 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎3 ∗ 𝑤3 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎2 ∗ 𝑧1 𝜕𝑦 𝜕𝑤1 = 𝜕𝑦 𝜕𝑎2 𝜕𝑎2 𝜕𝑧1 𝜕𝑧1 𝜕𝑎1 𝜕𝑎1 𝜕𝑤1 = 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎3 ∗ 𝑤3 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎2 ∗ 𝑤2 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎1 ∗ 𝑥1 𝑥 𝑤1 𝑦 𝑤2 𝑤3 𝑎3 𝑧3 𝑎2 𝑧2 𝑎1 𝑧1 𝑎3 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧3) 𝑧3 = 𝑎2 ∗ 𝑤3 𝑦 = 𝑧3 𝑎2 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧2) 𝑧2 = 𝑎1 ∗ 𝑤2 𝑎1 = 𝑠𝑖𝑔𝑚𝑜𝑖𝑑(𝑧1) 𝑧1 = 𝑥 ∗ 𝑤1
  • 50. 𝑆′ (𝑥) : (0 , ¼] – 최대점 ¼, 0 에서 수평 S’ 의 최대점이 ¼ 이기 때문에 곱할 때 마다 ¼ 로 값들이 줄어들어서 3번 이상 S’ 가 반복 되면 𝜕𝑧 𝜕𝑎 가 거의 0 이 되어 학습이 불가능하게 됩니다
  • 51. 새로운 함수 : Tanh Function 𝑇𝑎𝑛ℎ(𝑥) = 𝑒2𝑥+ 1 𝑒2𝑥−1 𝑇′ (𝑥) =1 − tanh2(x) (0 , 1] – 최대점 1, 0 에서 수평
  • 52. 새로운 함수 : Tanh Function 𝑇′ (𝑥) =1 − tanh2(x) (0 , 1] – 최대점 1, 0 에서 수평 새 함수 Tanh 는 Sigmoid 와 비슷하게 생겼고 도함수의 최대값도 1이라는 점에서 사용할 만 합니다
  • 53. 새로운 함수 : ReLU Function 𝑅𝑒𝐿𝑈(𝑥) = max 0, 𝑥 Rectified Linear Unit 𝑅′(𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){
  • 54. 새로운 함수 : ReLU Function 𝑅′(𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){ ReLU 는 학습이 빠르고 미분값이 0, 1 두개 중 하나이기 때문에 컴퓨팅 자원을 덜 소모해서 가장 일반적으로 쓰는 함수입니다
  • 55. 이후에도 PReLU, Leaky ReLU, SoftPlus 등 아직도 끊임 없이 연구되고 있으니 적절한 함수를 사용하시면 됩니다
  • 56. 초기값을 설정하는 것도 매우 매우 중요합니다
  • 57. 처음부터 정답과 비슷한 답을 내는 초기값을 설정한다면 당연히 학습이 빠르겠지요?
  • 58. 예전엔 초기값을 랜덤하게 설정했지만 이젠 Xavier 나 He initialization 을 사용합니다
  • 59. 잘못된 초기값 해결방법 Activation Function Initialization Code Sigmoid Xavier np.random.randn(n_input, n_output) / sqrt(n_input) ReLU He np.random.randn(n_input, n_output) / sqrt(n_input / 2) 1. Gaussian 으로 초기화 하고 2. 인풋개수의 제곱근으로 나누면 Xavier Initialization 3. 인풋개수의 절반의 제곱근으로 나누면 He Initialization
  • 60. 잘못된 초기값 해결방법 Activation Function Initialization Code Sigmoid Xavier np.random.randn(n_input, n_output) / sqrt(n_input) ReLU He np.random.randn(n_input, n_output) / sqrt(n_input / 2) Sigmoid 사용할 땐 Xavier , ReLU 사용할 땐 He 를 사용하면 좋습니다
  • 61. 그런데 신경망이 깊어지면 가중치들이 조금만 변해도 결과가 엄청나게 달라지는 불안정한 현상이 생깁니다
  • 62. 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 이렇게 Input 값이 같아도 가중치가 조금씩 달라지면 Output 값은 완전히 달라지는 경우들이 생깁니다
  • 63. 이런 현상을 해결하기 위해서 각 활성함수의 출력 값을 정규화합니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  • 64. 배치 정규화를 어느정도 해줄지도 역전파를 통해 스스로 학습할 수 있습니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  • 65. 그런데 테스트할 때는 얼만큼 옮겨야 Output 값이 좋을지 알 수 없잖아요? 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  • 66. 그래서 트레이닝 하는 과정에서 옮긴 정도를 저장해 놓고 테스트할 때 재사용해야 합니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  • 67. Batch Normalization 은 Training 과정 자체의 안정화를 통해 Vanishing Gradient 를 해결하는 근본적인 방법이라고 할 수 있습니다
  • 68. 이제 학습은 잘 되는데 학습속도가 더 빠르면 좋겠다
  • 69. 더 빠르게 학습할 순 없을까요?
  • 71. 이제부턴 데이터 전체를 읽은 뒤 학습하지 말고 조금씩 읽은 뒤 조금씩 학습해 볼까요? 10000 Data Gradient Descent Stochastic Gradient Descent 2500 Data 2500 Data 2500 Data 2500 Data
  • 74. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 학습에서 변할 수 있는 부분은 Learning Rate 랑 Gradient 부분 이 부분들을 적절히 변화시켜보자
  • 75. SGD 𝜕𝐸 𝜕𝑤 Gradient 𝜂 Learning rate Momentum NAG Adam Adagrad RMSProp AdaDelta Nadam GD 참고 : 하용호 - 자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다. 모든 데이터를 검토한 뒤 방향을 찾자 조금씩 데이터를 검토한 뒤 자주 방향을 찾자 관성 개념을 도입해서 덜 비틀거리면서 가보자 관성방향으로 먼저 움직인 뒤 계산한 방향으로 가보자 처음엔 빠르게 학습하고 나중엔 세밀하게 학습하자 세밀한정도가 너무 작아져서 학습이 안되는 것을 막자 세밀하게 학습하되 상황을 보며 정도를 정하자 gradient, learning rate 둘 다 고려해서 방향을 찾자 Adam 에서 Momentum 대신 NAG 를 사용하자 Nesterov Accelerated Gradient
  • 76. 여러 Optimizer 의 최적값 찾는 과정 gradient learning rate
  • 82. 이미지 회전했다고 사자라니 왜 이런 결과가 나올까요?
  • 83. - 1 to 0 : 10개- 0 to 1 : 10개 MLP 의 문제점 한 칸씩만 움직였는데 변화하는 인풋값이 20개
  • 84. 그럼 이미지에서 특징들을 추출해서 특징값을 input 값으로 넣자
  • 86. 추출할 수 있는 특징 : 질감, 각도, 길이, 두께
  • 87. CNN 이 그림을 인지하는 과정을 체험해볼까요?
  • 88. 1단계 : 가로, 동그라미, 세모, 부드러움
  • 89. 2단계 :눈, 코, 귀, 발
  • 91. 64 X 64 Convolution Layer 32 X 32 Pooling Layer 32 X 32 Convolution Layer 16 X 16 Pooling Layer Fully-Connected layer 64 X 64 Input CNN 기본 구조
  • 93. 생선 그림을 가지고 CNN 과정을 살펴 봅시다 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  • 94. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0 0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0 0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0 0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0 0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0 0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0 0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 0 0 3 1 1 1 1 1 3 0 0 3 1 1 0 1 1 3 0 0 1 1 1 0 1 1 1 0 0 0 1 2 0 2 1 0 0 0 1 1 1 1 1 1 1 0 0 3 1 2 2 2 1 3 0 0 3 0 2 2 2 0 3 0 0 3 0 1 1 1 0 3 0 0 3 1 2 0 0 0 3 0 0 1 1 1 0 0 1 2 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Convolution Max Pooling Convolution : 세로 필터
  • 95. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0 0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0 0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0 0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0 0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0 0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0 0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 3 1 1 1 1 1 3 0 0 3 1 1 0 1 1 3 0 0 1 1 1 0 1 1 1 0 0 0 1 2 0 2 1 0 0 0 1 1 1 1 1 1 1 0 0 3 1 2 2 2 1 3 0 0 3 0 2 2 2 0 3 0 0 3 0 1 1 1 0 3 0 0 3 1 2 0 0 0 3 0 0 1 1 1 0 0 1 2 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Convolution Max Pooling 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 2 2 2 3 3 2 2 2 3 2 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 2 2 2 1 0 1 1 1 0 0 0 0 1 1 1 1 1 2 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 1 1 2 2 2 1 0 1 1 1 0 0 0 0 1 1 1 1 1 2 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 2 2 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 2 2 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 2 3 2 3 2 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 1 2 2 2 1 1 0 0 1 1 2 2 2 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 2 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 2 3 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 Convolution : 가로 필터
  • 96. 1 0 1 0 1 0 1 0 1 0 1 2 2 2 2 2 1 0 0 2 3 3 2 3 3 2 0 0 2 2 1 0 1 2 2 0 0 1 3 1 0 1 3 1 0 0 0 1 2 0 2 1 0 0 0 1 3 2 2 2 3 1 0 0 2 2 3 5 3 2 2 0 0 2 2 5 3 3 2 2 0 0 2 2 2 1 1 2 2 0 0 2 2 2 1 0 2 2 0 0 1 3 2 1 1 3 2 0 0 0 1 3 2 2 3 1 0 0 0 0 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 2 1 2 2 1 2 1 2 1 1 0 0 0 0 1 1 2 2 0 2 1 1 2 0 2 2 1 1 0 0 0 0 2 2 3 1 3 1 2 2 1 3 1 3 2 2 0 0 0 0 2 1 2 1 0 1 0 0 1 0 1 2 1 2 0 0 0 0 1 2 1 1 0 0 0 0 0 0 1 1 2 1 0 0 0 0 1 0 3 0 1 0 0 0 0 1 0 3 0 1 0 0 0 0 0 1 0 3 0 1 0 0 1 0 3 0 1 0 0 0 0 0 0 0 1 1 2 1 0 0 1 2 1 1 0 0 0 0 0 0 0 0 1 1 2 1 0 0 1 2 1 1 0 0 0 0 0 0 0 1 0 3 0 1 0 0 1 0 3 0 1 0 0 0 0 0 1 0 3 0 2 0 2 1 1 2 0 3 0 1 0 0 0 0 1 2 1 2 0 3 0 2 2 0 2 1 2 1 0 0 0 0 2 1 2 0 3 0 5 2 2 3 0 2 1 2 0 0 0 0 2 1 2 2 0 5 0 3 3 0 2 2 1 2 0 0 0 0 2 1 2 0 2 0 3 1 1 2 0 2 1 2 0 0 0 0 2 1 2 1 0 2 0 1 1 0 1 2 1 2 0 0 0 0 2 1 2 1 1 1 1 0 0 0 0 2 1 2 0 0 0 0 2 1 2 1 2 2 1 0 0 0 0 2 1 2 0 0 0 0 1 2 1 2 2 2 1 0 0 0 0 2 1 2 0 0 0 0 1 0 3 1 2 1 1 0 0 0 1 1 2 1 0 0 0 0 0 1 0 3 0 1 0 0 0 1 0 3 0 1 0 0 0 0 0 0 1 0 3 1 2 2 2 1 3 0 1 0 0 0 0 0 0 0 0 1 0 2 1 1 1 2 0 1 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Convolution Max Pooling Convolution : 지느러미 필터
  • 97. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 2 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 3 1 1 1 1 1 1 1 1 1 1 3 0 0 0 0 0 0 3 0 0 1 0 0 0 0 1 0 0 3 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 2 1 0 1 1 1 1 1 1 0 1 2 0 0 0 0 0 0 3 0 0 1 2 1 2 2 1 0 0 3 0 0 0 0 0 0 3 0 0 2 1 2 1 1 2 0 0 3 0 0 0 0 0 0 3 0 0 1 1 1 1 1 1 0 0 3 0 0 0 0 0 0 3 0 0 1 0 1 0 0 1 0 0 3 0 0 0 0 0 0 3 0 0 1 1 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 2 1 0 2 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 3 1 1 1 1 1 3 0 0 3 1 1 0 1 1 3 0 0 1 1 1 0 1 1 1 0 0 0 1 2 0 2 1 0 0 0 1 1 1 1 1 1 1 0 0 3 1 2 2 2 1 3 0 0 3 0 2 2 2 0 3 0 0 3 0 1 1 1 0 3 0 0 3 1 2 0 0 0 3 0 0 1 1 1 0 0 1 2 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Convolution Max Pooling 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 1 1 2 0 1 1 1 2 0 1 2 1 0 0 0 0 0 1 1 1 1 2 0 1 1 1 2 0 2 2 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 3 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 2 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 2 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 3 0 0 0 0 0 0 0 1 0 1 0 2 0 1 1 0 0 0 3 0 0 0 0 0 0 1 1 0 2 0 2 0 1 2 0 0 1 2 0 0 0 0 0 1 1 1 0 2 0 3 1 1 2 0 1 1 1 0 0 0 0 1 1 1 1 0 3 0 2 2 0 1 1 1 1 0 0 0 0 1 1 1 0 1 0 2 0 1 2 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 2 1 0 0 0 0 0 1 1 1 0 0 0 0 0 2 1 0 1 2 1 0 0 0 0 1 1 1 0 0 0 0 0 0 3 0 0 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 3 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 2 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 2 2 1 2 2 2 0 0 2 1 1 0 0 1 1 0 0 0 3 0 0 1 1 1 0 0 0 1 2 0 2 1 0 0 0 1 1 2 1 0 3 0 0 0 1 2 2 3 2 1 2 0 0 1 1 3 2 2 1 1 0 0 1 1 1 1 0 1 1 0 0 2 1 2 1 0 1 1 0 0 0 3 1 1 1 1 1 0 0 0 0 3 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 Convolution : 대각선 필터
  • 98. 어떤 물체의 특징이 이미지 중 어디에 있는지 알아내는 과정 Convolution?
  • 100. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 2 2 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 2 2 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 2 2 2 2 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 3 3 3 1 1 1 1 0 0 0 0 0 0 2 2 2 2 3 3 3 3 2 2 2 2 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 3 3 3 0 0 0 0 1 3 3 3 3 0 0 0 0 2 3 3 3 3 0 0 0 0 1 1 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 0 0 3 3 3 0 0 0 0 2 2 3 3 3 2 2 0 0 3 3 3 3 3 3 3 0 0 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 2 2 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 2 2 3 3 3 3 3 3 0 0 0 0 0 0 0 0 0 0 2 2 2 2 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 3 3 3 0 0 0 0 0 0 0 0 0 0 1 1 1 1 3 3 3 3 1 1 1 1 0 0 0 0 0 0 2 2 2 2 3 3 3 3 2 2 2 2 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 3 3 3 3 3 3 3 3 3 3 3 3 0 0 0 0 0 0 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 3 3 0 0 0 0 0 1 3 3 3 0 0 0 0 0 2 3 3 3 0 0 0 0 0 1 1 3 3 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 0 3 3 0 0 0 0 0 0 0 3 3 0 0 0 0 0 2 2 3 3 2 2 0 0 0 3 3 3 3 3 3 0 0 0 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 MLP - 총 38 pixel 변화 Pooling - 총 12 pixel 변화 변화 pixel 수 약 70% 감소 이미지가 1칸 이동할 때
  • 101. 물체의 위치나 각도 등의 변화에 잘 대처할 수 있게 하는 과정 Pooling?
  • 102. CNN 은 어떻게 필터를 학습할까요?
  • 103. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 MLP 와 마찬가지로
  • 105. 12 X 12 Convolution Layer 6 X 6 Pooling Layer 4 X 4 Convolution Layer 2 X 2 Pooling Layer 4 X 1 Fully-Connected layer 15 X 15 Input 4 ∗ 4 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 3 ∗ 3 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑙 − 1 𝑙 𝑙 + 1 𝐿, 𝑙 +2
  • 106. 어떻게 학습하는지 살펴보겠습니다 3 ∗ 3 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
  • 107. 𝐿, 𝑙 +2𝑙 + 1 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑤 𝑙+1 가 전체 Cost 에 어떤 영향을 미치는지 알아야 갱신이 가능하겠죠?
  • 108. 𝐿, 𝑙 +2𝑙 + 1 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝜕𝐶 𝜕𝑤 𝑙+1 를 구하는 것이 목적이라는 것 잊지마세요
  • 109. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1
  • 110. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑧 𝐿 은 Fully Connected Layer 를 거친 뒤 최종 값 입니다
  • 111. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 은 MaxPooling Layer 를 거친 뒤 값 입니다
  • 112. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑛𝑏 𝑎00 𝑙+1 은 MaxPooling Layer 에 대상이 되는 수들의 집합을 나타내는 표기법 입니다
  • 113. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑎 𝑜𝑝 𝑙+1은 𝑧 𝑜𝑝 𝑙+1이 활성화 함수를 거치고 난 뒤의 값입니다 이번 예제에서는 계산의 편의를 위해 항등함수를 사용합니다
  • 114. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑧 𝑜𝑝 𝑙+1은 ෥𝑎 𝑚′ 𝑛′ 𝑙 이 3 ∗ 3 𝑐𝑜𝑛𝑣 𝑙𝑎𝑦𝑒𝑟 를 거치고 난 뒤의 값입니다
  • 115. 𝐿, 𝑙 +2𝑙 + 1 𝑎 𝑜𝑝 𝑙+1 = 𝑓(𝑧 𝑙+1 ) ∶ 𝑓 𝑥 = 𝑥 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝐿 𝜕𝑎 𝐿 𝜕𝑧 𝐿 𝜕𝑧 𝐿 𝜕 ෤𝑎 𝑙+1 𝜕 ෤𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑎 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑧 𝑙+1 𝜕𝑤 𝑙+1 𝑧 𝐿 = ෍ 𝑞 𝑤 𝑞 𝑙+2 ෤𝑎 𝑞 𝑙+1 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑚𝑎𝑥 𝑛𝑏(𝑎 𝑜𝑝 𝑙+1) 𝑛𝑏 𝑎00 𝑙+1 = 𝑎00 𝑙+1 , 𝑎01 𝑙+1 , 𝑎10 𝑙+1 , 𝑎11 𝑙+1 𝑧 𝑜𝑝 𝑙+1 = ෍ 𝑎=0 𝐴−1 ෍ 𝑏=0 𝐵−1 𝑤 𝑎𝑏 𝑙+1 𝑎(𝑜+𝑎)(𝑝+𝑏) 𝑙 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑤 𝑙+1 를 학습하려면 𝑤 𝑙+1 이 Cost 에 얼마나 영향을 미치는지 𝜕𝐶 𝜕𝑤 𝑙+1 구해야 합니다
  • 116. 𝐿, 𝑙 +2𝑙 + 1 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝑟 𝐿 𝜕𝑎 𝑟 𝐿 𝜕𝑧 𝑟 𝐿 𝜕𝑧 𝑟 𝐿 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕𝑎 𝑜𝑝 𝑙+1 𝜕𝑎 𝑜𝑝 𝑙+1 𝜕𝑧 𝑜𝑝 𝑙+1 𝜕𝑧 𝑜𝑝 𝑙+1 𝜕𝑤 𝑜𝑝 𝑙+1 𝜕𝑧 𝑟 𝐿 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝜕 σ 𝑜′ 𝑝′ 𝑤 𝑜′ 𝑝′ 𝑙+2 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 = 𝑤 𝑜′ 𝑝′ 𝑙+2 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕𝑎 𝑜𝑝 𝑙+1 = 𝜕max[𝑎 𝑙+1] 𝜕𝑎 𝑜𝑝 𝑙+1 = 1, 𝑖𝑓 𝑎 𝑜𝑝 𝑙+1 = max(𝑎) { 0, 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒 𝜕𝑧 𝑜𝑝 𝑙+1 𝜕𝑤 𝑜𝑝 𝑙+1 = 𝜕 σ 𝑎 σ 𝑏 𝑤 𝑎𝑏 𝑙+1 ෤𝑎(𝑚′+𝑎)(𝑛′+𝑏) 𝑙 𝜕𝑤 𝑜𝑝 𝑙+1 = ෍ 𝑎 ෍ 𝑏 𝑤 𝑎𝑏 𝑙+1 ෤𝑎(𝑚′+𝑎)(𝑛′+𝑏) 𝑙 = 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟 𝐿 ∗ −1 𝜕𝐶 𝜕𝑎 𝑟 𝐿 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝜕𝐶 𝜕𝑤 𝑙+1 을 구하기 위해서는 아래의 요소들을 하나씩 구해서 곱하기만 하면 됩니다
  • 117. 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝐿, 𝑙 +2𝑙 + 1 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 𝜕𝐶 𝜕𝑤 𝑙+1 = 𝜕𝐶 𝜕𝑎 𝑟 𝐿 𝜕𝑎 𝑟 𝐿 𝜕𝑧 𝑟 𝐿 𝜕𝑧 𝑟 𝐿 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 𝜕𝑎 𝑜𝑝 𝑙+1 𝜕𝑎 𝑜𝑝 𝑙+1 𝜕𝑧 𝑜𝑝 𝑙+1 𝜕𝑧 𝑜𝑝 𝑙+1 𝜕𝑤 𝑜𝑝 𝑙+1 ෥𝑎 𝑚′ 𝑛′ 𝑙 = − 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟 𝐿 ∗ 𝑤 𝑜′ 𝑝′ 𝑙+2 ∗ ෍ 𝑎 ෍ 𝑏 𝑤 𝑎𝑏 𝑙+1 ෤𝑎(𝑚′+𝑎)(𝑛′+𝑏) 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 = 𝑤 + 𝜂 ∗ 𝑡𝑎𝑟𝑔𝑒𝑡 − 𝑎 𝑟 𝐿 ∗ 𝑤 𝑜′ 𝑝′ 𝑙+2 ∗ ෍ 𝑎 ෍ 𝑏 𝑤 𝑎𝑏 𝑙+1 ෤𝑎(𝑚′+𝑎)(𝑛′+𝑏) 𝑙
  • 118. 이제 어떻게 Filter 를 학습하는지도 알았는데… 어떻게 쌓아야할까요?
  • 119. VGG, GoogleNet, ResNet 등 여러 모델들이 계속 나오고 있으니 문제의 난이도에 맞게 선택해서 사용하면 됩니다
  • 120. # Layers 수가 많다고 모든 문제에 적합한 것은 아니니 주의해서 사용하셔야 합니다
  • 122. 그럼 이것도 한번 맞추게 해보자
  • 123.
  • 125. 한 이미지에 여러 개를 판별할 수는 없을까요?
  • 126. 이미지에 여러 구역을 랜덤하게 CNN 으로 판별해보자
  • 127. Detect Model : OverFeat NewYork Univ - 2014 영상을 키워가면서 단일 크기의 윈도우로 계속 판별해서 알아내기
  • 128. Detect Model : OverFeat NewYork Univ - 2014 영상을 키워가면서 판별하기 때문에 객체의 크기 변화에 대응 가능
  • 129. Detect Model : OverFeat NewYork Univ - 2014 분류된 객체의 위치를 추정하는 작업
  • 130. Detect Model : OverFeat NewYork Univ - 2014 동일 객체로 추정되는 사각형들을 합치기
  • 131. 하지만 OverFeat는 구역을 너무 많이 나눠서 너무 오래 걸립니다
  • 132. 그럼 일단 객체를 찾은 뒤에 CNN 으로 판별해보자
  • 133. Detect Model : R-CNN UC Berkeley - 2014 Input Region Proposals (Selective Search) classifier Compute Regions DOG CAT Classify # 객체를 먼저 찾는 과정을 추가
  • 134. OverFeat 보다는 빨라졌지만 아직도 실시간 처리는 불가능한 속도
  • 135. R-CNN 에서 개선 가능한 곳은 Region proposal, Classifier 두 군데
  • 137. Detect Model : Fast R-CNN Microsoft - 2015 Region Proposals (Selective Search) Compute Regions classifier Classify DOG CAT convolution & pooling R-CNN 과 달라진 부분 중복 구역 제거 계산 시간 단축
  • 138. Convolution, Pooling 과정 통해 계산량을 크게 줄인 Fast R-CNN
  • 140. Detect Model : Faster R-CNN Microsoft - 2015기존의 Region Proposal 과정을 개선한 Region Proposal Network 층을 추가 Region Proposal Network
  • 141. R-CNN Fast R-CNN Faster R-CNN Time per image 50 secs 2 secs 0.2 secs SpeedUp 1x 25x 250x mAP 66.00% 66.90% 66.90% R-CNN benchmark Faster R-CNN 의 경우 초당 5 frame 의 연산이 가능하지만 Real-Time Image Detection 이 가능하진 않습니다
  • 142. 이후에도 Yolo, SSD 등 새로운 모델들이 나오고 있고 계속 발전 중입니다
  • 143. Image Detection 도 상황에 맞는 모델을 사용하면 되겠죠?
  • 144. 망이 깊다고 모든 문제를 잘 해결할 수는 없다는 점을 꼭 명심하셔야 합니다
  • 145. 무엇이든 전체적인 흐름을 보고 가면 어렵지 않아요 RNN, Gan 은 다음편에서… gomguard.tistory.com