Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
곰가드
뉴런 부터 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
...
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)
...
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)
l...
𝑤+
= 𝑤 − 𝜂 ∗
𝜕𝐸
𝜕𝑤
학습을 수학적으로 표기하면
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....
𝜕𝐸𝑡𝑜𝑡
𝜕𝑤10
(1) =
𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
𝜕𝑎20
𝜕𝑧20
𝜕𝑧20
𝜕𝑤10
(1)
𝐸𝑡𝑜𝑡 =
1
2
𝑡𝑎𝑟𝑔𝑒𝑡 𝑦1 − 𝑎20
2
+ 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦2 − 𝑎21
2 𝜕𝐸𝑡𝑜𝑡
𝜕𝑎20
= 𝑡𝑎𝑟𝑔𝑒𝑡 𝑦...
𝑤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 − 𝑎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....
𝑤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....
𝑤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....
𝑤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...
𝑤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
(0) = (
𝜕𝐸1
𝜕𝑎10
+
𝜕𝐸2
𝜕𝑎10
)
𝜕𝑎10
𝜕𝑧10
𝜕𝑧10
𝜕𝑤10
(0)
𝜕𝐸2
𝜕𝑎10
= −0.0345
𝜕𝐸1
𝜕𝑎10
= 0.0305
𝜕𝑎10
𝜕𝑧10
= 𝑠𝑖𝑔𝑚𝑜𝑖𝑑 ...
𝑤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
...
한 회씩 반복할 때마다
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
=
𝜕𝑦
𝜕𝑧3
𝜕𝑧3
𝜕𝑎3
𝜕𝑎3
𝜕𝑤3
= 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′ 𝑎3 ∗ 𝑧2
𝜕𝑦
𝜕𝑤2
=
𝜕𝑦
𝜕𝑎3
𝜕𝑎3
𝜕𝑧2
𝜕𝑧2
𝜕𝑎2
𝜕𝑎2
𝜕𝑤2
= 1 ∗ 𝑠𝑖𝑔𝑚𝑜𝑖𝑑′
𝑎3 ∗
𝑤3 ∗ 𝑠𝑖...
𝑆′ (𝑥) : (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)
ReL...
잘못된 초기값 해결방법
Activation Function Initialization Code
Sigmoid Xavier
np.random.randn(n_input, n_output)
/ sqrt(n_input)
ReL...
그런데 신경망이 깊어지면
가중치들이 조금만 변해도 결과가
엄청나게 달라지는 불안정한 현상이 생깁니다
𝑥
𝑤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
Dat...
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
참고 : 하용호
- 자습해도 모르겠던 딥러닝,
머리속에 인스톨 ...
여러 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...
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 ...
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 ...
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 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 ...
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 ...
어떤 물체의 특징이
이미지 중 어디에 있는지
알아내는 과정
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 ...
물체의 위치나 각도 등의
변화에 잘 대처할 수 있게
하는 과정
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...
어떻게 학습하는지
살펴보겠습니다
3 ∗ 3
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
𝐿, 𝑙 +2𝑙 + 1
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹...
𝐿, 𝑙 +2𝑙 + 1
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+1
𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑙+1
= 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙+1
...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝑎 𝑜𝑝
𝑙+1 = 𝑓(𝑧 𝑙+1
) ∶ 𝑓 𝑥 = 𝑥
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝐿
𝜕𝑎 𝐿
𝜕𝑧 𝐿
𝜕𝑧 𝐿
𝜕 ෤𝑎 𝑙+1
𝜕 ෤𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑎 𝑙+1
𝜕𝑧 𝑙+1
𝜕𝑧 𝑙...
𝐿, 𝑙 +2𝑙 + 1
𝜕𝐶
𝜕𝑤 𝑙+1 =
𝜕𝐶
𝜕𝑎 𝑟
𝐿
𝜕𝑎 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕𝑧 𝑟
𝐿
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕 ෤𝑎 𝑜′ 𝑝′
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑎 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
𝑙+1
𝜕𝑧 𝑜𝑝
...
2 ∗ 2
𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡
𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′
𝐿, 𝑙 +2𝑙 + 1
𝑧 𝐿
෤𝑎 𝑜′ 𝑝′
𝑙+1
1 ∗ 4 ∶ 𝑤 𝑙+2
𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥
3 ∗ 3 ∶ 𝑤 𝑙+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
Class...
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 과정 통해
계산량을 크게 줄인 Fast R-CNN
다음은
Region Proposal 과정을
개선해보자
Detect Model : Faster R-CNN
Microsoft - 2015기존의 Region Proposal 과정을 개선한
Region Proposal Network 층을 추가
Region Proposal Netw...
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 be...
이후에도 Yolo, SSD 등
새로운 모델들이 나오고 있고
계속 발전 중입니다
Image Detection 도
상황에 맞는 모델을
사용하면 되겠죠?
망이 깊다고
모든 문제를 잘 해결할 수는
없다는 점을 꼭 명심하셔야 합니다
무엇이든
전체적인 흐름을 보고 가면 어렵지 않아요
RNN, Gan 은 다음편에서…
gomguard.tistory.com
감사합니다
knholic@gmail.com
gomguard.tistory.com
[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기
Prochain SlideShare
Chargement dans…5
×

sur

Les vidéos YouTube ne sont plus prises en charge sur SlideShare

Regarder la vidéo sur YouTube

[GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 2 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 3 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 4 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 5 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 6 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 7 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 8 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 9 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 10 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 11 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 12 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 13 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 14 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 15 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 16 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 17 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 18 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 19 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 20 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 21 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 22 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 23 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 24 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 25 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 26 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 27 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 28 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 29 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 30 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 31 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 32 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 33 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 34 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 35 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 36 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 37 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 38 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 39 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 40 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 41 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 42 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 43 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 44 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 45 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 46 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 47 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 48 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 49 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 50 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 51 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 52 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 53 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 54 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 55 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 56 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 57 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 58 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 59 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 60 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 61 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 62 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 63 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 64 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 65 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 66 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 67 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 68 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 69 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 70 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 71 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 72 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 73 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 74 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 75 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 76 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 77 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 78 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 79 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 80 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 81 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 82 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 83 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 84 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 85 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 86 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 87 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 88 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 89 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 90 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 91 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 92 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 93 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 94 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 95 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 96 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 97 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 98 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 99 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 100 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 101 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 102 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 103 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 104 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 105 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 106 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 107 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 108 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 109 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 110 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 111 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 112 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 113 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 114 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 115 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 116 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 117 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 118 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 119 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 120 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 121 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 122 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 123 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 124 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 125 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 126 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 127 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 128 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 129 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 130 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 131 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 132 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 133 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 134 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 135 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 136 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 137 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 138 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 139 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 140 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 141 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 142 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 143 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 144 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 145 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 146 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 147 [GomGuard] 뉴런부터 YOLO 까지 - 딥러닝 전반에 대한 이야기 Slide 148

11

Partager

Télécharger pour lire hors ligne

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

Télécharger pour lire hors ligne

뉴런, perceptron, cnn, r-cnn, fast r-cnn, faster r-cnn 및
backpropagation, activation function, batch normalization, cost function, optimizer 등 전반적인 딥뉴럴 네트워크에 대한 지식을 다루고 있습니다.

mail : knholic@gmail.com
blog : gomguard.tistory.com

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

  1. 1. 곰가드 뉴런 부터 YOLO 까지
  2. 2. 곰가드 knholic@gmail.com gomguard.tistory.com
  3. 3. 우리가 꿈꾸는 기계는?
  4. 4. 자비스 처럼 주변에 뭐가 있는지 알고 어떻게 하는 것이 최선인지 인간의 언어로 조언해주는 시스템
  5. 5. 그 중 오늘 알아볼 것은 [주변에 뭐가 있는지 아는] 부분 입니다
  6. 6. 사람을 따라서 만들자 : 뉴런 신경계를 구성하는 세포인 뉴런은 신호들을 받으면 종합한 뒤에 출력하기도 하고 안하기도 합니다.
  7. 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. 8. Perceptron 이 사용하는 활성 함수: 계단 함수 𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){ 뉴런처럼 정보의 합이 0을 넘을 때만 출력
  9. 9. 가장 간단한 AND 게이트 부터 𝑥1 𝑥2 𝑦 AND Gate 의 회로기호 𝑥1 𝑥2 𝑦 0 0 0 0 1 0 1 0 0 1 1 1 AND Gate 의 입출력
  10. 10. AND 게이트는 문제 없이 분리 가능 0 0 0 1 하나의 선으로 0 과 1을 분리할 수 있는 AND 게이트
  11. 11. 그럼 XOR 게이트는?? 0 0 1 1 ? ? ? ? 하나의 선으로는 0 과 1을 분리할 수 없는 XOR 게이트
  12. 12. XOR 게이트 𝑥1 𝑥2 𝑦AND AND OR XOR 게이트는 AND 와 OR 게이트의 조합으로 만들 수 있구나
  13. 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. 14. MLP 로 XOR 게이트를 풀어보자 Input Layer 𝑥1 𝑥2 x1𝑏 Hidden Layer NAND Gate OR Gate Output Layer XOR Gate MLP 로도 XOR 게이트를 만들어 낼 수 있다
  15. 15. Layer 의 개수에 따라 결정할 수 있는 영역 1 hidden layer 2 hidden layer 3 hidden layer
  16. 16. 답을 얻을 수 있는 건 알겠는데 MLP 는 어떻게 학습하는거지?
  17. 17. 농구 연습을 통해 한번 알아보자
  18. 18. 던지는 것 마다 골인 사람은 벌써 학습 완료된 모델 매번 빗나가는 사람들은 학습 과정인 모델들
  19. 19. 공을 던졌을 때 안들어가면 어떻게 안들어갔는지 살펴보고 약간 반대방향으로 던지는 것 처럼
  20. 20. 계산한 값이 원래 답보다 크면 가중치를 조금 작게 원래 답보다 작으면 가중치를 조금 크게 조절해보자
  21. 21. 다시 말해서 계산한 값과 답의 차이를 가능한 작게 만드는 것이 학습
  22. 22. 1. 오차함수를 정하고 2. ∇(𝑔𝑟𝑎𝑑𝑖𝑒𝑛𝑡) 를 구해서 3. weight 를 업데이트 하자 𝑤 𝑛𝑒𝑤 = 𝑤 − 𝛾∇𝐶(𝑥)
  23. 23. 가장 기본적인 오차함수 : MSE Minimum Squared Error = 1 𝑛 σ𝑖 ෝ𝑦𝑖 − 𝑦𝑖 2 𝑦0 𝑦1 𝑦2 𝑦3 𝑦4 ෞ𝑦0 ෞ𝑦1 ෞ𝑦2 ෞ𝑦3 ෞ𝑦4 # 각 정답과 예상값의 차이를 제곱해서 평균내는 방법
  24. 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. 25. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 학습을 수학적으로 표기하면 learning rate : 한번에 얼마나 학습할지 gradient : 어떤 방향으로 학습할지
  26. 26. 그런데 계단함수는 𝜕𝐸 𝜕𝑤 가 항상 0…
  27. 27. 똑같이 0에서 1까지 출력하는데 미분 가능한 함수를 찾아보자
  28. 28. 𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) = 1 1+𝑒−𝑥 새로운 함수 Sigmoid 𝑆𝑡𝑒𝑝 𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛 (𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){
  29. 29. 미분 가능한 Sigmoid 를 사용하면 학습이 가능
  30. 30. MLP 의 학습과정을 간단한 예제를 통해서 살펴봅시다
  31. 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. 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. 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. 34. 두 번째 층은 첫 번째 층보다 조금 복잡합니다
  35. 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. 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. 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. 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. 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. 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. 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. 42. 한 회씩 반복할 때마다 Loss 값이 낮아진다
  43. 43. 더 복잡한 문제는 층을 더 깊게 하고 더 넓게 하면 풀 수 있겠구나
  44. 44. 더 복잡한 문제를 풀어보자
  45. 45. 그런데 학습이 잘 안되는걸? 원인 1. 잘못된 활성화 함수 2. 잘못된 초기값 설정 3. 불안정한 학습과정
  46. 46. 𝑆𝑖𝑔𝑚𝑜𝑖𝑑(𝑥) = 1 1+𝑒−𝑥 𝑆′ (𝑥) = 1 1+𝑒−𝑥 ( 1 − 1 1+𝑒−𝑥 ) (0 , ¼] – 최대점 ¼, 0 에서 수평 Sigmoid 에 문제가 있어
  47. 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 로 수렴하는 것이 문제
  48. 48. 하지만 더 큰 문제는
  49. 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. 50. 𝑆′ (𝑥) : (0 , ¼] – 최대점 ¼, 0 에서 수평 S’ 의 최대점이 ¼ 이기 때문에 곱할 때 마다 ¼ 로 값들이 줄어들어서 3번 이상 S’ 가 반복 되면 𝜕𝑧 𝜕𝑎 가 거의 0 이 되어 학습이 불가능하게 됩니다
  51. 51. 새로운 함수 : Tanh Function 𝑇𝑎𝑛ℎ(𝑥) = 𝑒2𝑥+ 1 𝑒2𝑥−1 𝑇′ (𝑥) =1 − tanh2(x) (0 , 1] – 최대점 1, 0 에서 수평
  52. 52. 새로운 함수 : Tanh Function 𝑇′ (𝑥) =1 − tanh2(x) (0 , 1] – 최대점 1, 0 에서 수평 새 함수 Tanh 는 Sigmoid 와 비슷하게 생겼고 도함수의 최대값도 1이라는 점에서 사용할 만 합니다
  53. 53. 새로운 함수 : ReLU Function 𝑅𝑒𝐿𝑈(𝑥) = max 0, 𝑥 Rectified Linear Unit 𝑅′(𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){
  54. 54. 새로운 함수 : ReLU Function 𝑅′(𝑦) = 1 (𝑥 ≥ 0 ) 0 (𝑥 < 0 ){ ReLU 는 학습이 빠르고 미분값이 0, 1 두개 중 하나이기 때문에 컴퓨팅 자원을 덜 소모해서 가장 일반적으로 쓰는 함수입니다
  55. 55. 이후에도 PReLU, Leaky ReLU, SoftPlus 등 아직도 끊임 없이 연구되고 있으니 적절한 함수를 사용하시면 됩니다
  56. 56. 초기값을 설정하는 것도 매우 매우 중요합니다
  57. 57. 처음부터 정답과 비슷한 답을 내는 초기값을 설정한다면 당연히 학습이 빠르겠지요?
  58. 58. 예전엔 초기값을 랜덤하게 설정했지만 이젠 Xavier 나 He initialization 을 사용합니다
  59. 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. 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. 61. 그런데 신경망이 깊어지면 가중치들이 조금만 변해도 결과가 엄청나게 달라지는 불안정한 현상이 생깁니다
  62. 62. 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 이렇게 Input 값이 같아도 가중치가 조금씩 달라지면 Output 값은 완전히 달라지는 경우들이 생깁니다
  63. 63. 이런 현상을 해결하기 위해서 각 활성함수의 출력 값을 정규화합니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  64. 64. 배치 정규화를 어느정도 해줄지도 역전파를 통해 스스로 학습할 수 있습니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  65. 65. 그런데 테스트할 때는 얼만큼 옮겨야 Output 값이 좋을지 알 수 없잖아요? 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  66. 66. 그래서 트레이닝 하는 과정에서 옮긴 정도를 저장해 놓고 테스트할 때 재사용해야 합니다 𝑥 𝑤1 𝑤1 ′ 𝑤2 𝑤3 𝑂𝑢𝑡 𝑂𝑢𝑡′ 𝑤2 ′ 𝑤3 ′ 𝐵𝑁 𝐵𝑁 𝐵𝑁
  67. 67. Batch Normalization 은 Training 과정 자체의 안정화를 통해 Vanishing Gradient 를 해결하는 근본적인 방법이라고 할 수 있습니다
  68. 68. 이제 학습은 잘 되는데 학습속도가 더 빠르면 좋겠다
  69. 69. 더 빠르게 학습할 순 없을까요?
  70. 70. 10000 Data Gradient Descent Stochastic Gradient Descent 2500 Data 2500 Data 2500 Data 2500 Data Gradient Descent 방법은 모든 데이터를 고려해서 오차를 구하는 방법입니다
  71. 71. 이제부턴 데이터 전체를 읽은 뒤 학습하지 말고 조금씩 읽은 뒤 조금씩 학습해 볼까요? 10000 Data Gradient Descent Stochastic Gradient Descent 2500 Data 2500 Data 2500 Data 2500 Data
  72. 72. 10000 Data Gradient Descent Stochastic Gradient Descent 2500 Data 2500 Data 2500 Data 2500 Data SGD GDStart End 더 비틀비틀 가는 것 같지만 기존 보다 더 빠르게 학습합니다
  73. 73. 조금 빨라지긴 했지만 아직도 너무 느립니다
  74. 74. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 학습에서 변할 수 있는 부분은 Learning Rate 랑 Gradient 부분 이 부분들을 적절히 변화시켜보자
  75. 75. SGD 𝜕𝐸 𝜕𝑤 Gradient 𝜂 Learning rate Momentum NAG Adam Adagrad RMSProp AdaDelta Nadam GD 참고 : 하용호 - 자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다. 모든 데이터를 검토한 뒤 방향을 찾자 조금씩 데이터를 검토한 뒤 자주 방향을 찾자 관성 개념을 도입해서 덜 비틀거리면서 가보자 관성방향으로 먼저 움직인 뒤 계산한 방향으로 가보자 처음엔 빠르게 학습하고 나중엔 세밀하게 학습하자 세밀한정도가 너무 작아져서 학습이 안되는 것을 막자 세밀하게 학습하되 상황을 보며 정도를 정하자 gradient, learning rate 둘 다 고려해서 방향을 찾자 Adam 에서 Momentum 대신 NAG 를 사용하자 Nesterov Accelerated Gradient
  76. 76. 여러 Optimizer 의 최적값 찾는 과정 gradient learning rate
  77. 77. 학습도 잘 되고 속도도 빨라졌으니
  78. 78. 이젠 인식 해보자!
  79. 79. 잘 나온다!
  80. 80. 이것도 인식 해보자!
  81. 81. 사. 자?????????
  82. 82. 이미지 회전했다고 사자라니 왜 이런 결과가 나올까요?
  83. 83. - 1 to 0 : 10개- 0 to 1 : 10개 MLP 의 문제점 한 칸씩만 움직였는데 변화하는 인풋값이 20개
  84. 84. 그럼 이미지에서 특징들을 추출해서 특징값을 input 값으로 넣자
  85. 85. 특징을 추출해내서 변화에 대응하자
  86. 86. 추출할 수 있는 특징 : 질감, 각도, 길이, 두께
  87. 87. CNN 이 그림을 인지하는 과정을 체험해볼까요?
  88. 88. 1단계 : 가로, 동그라미, 세모, 부드러움
  89. 89. 2단계 :눈, 코, 귀, 발
  90. 90. 3단계 :고양이!
  91. 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 기본 구조
  92. 92. CNN 의 핵심 컨볼루션 과 풀링
  93. 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. 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. 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. 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. 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. 98. 어떤 물체의 특징이 이미지 중 어디에 있는지 알아내는 과정 Convolution?
  99. 99. Pooling?
  100. 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. 101. 물체의 위치나 각도 등의 변화에 잘 대처할 수 있게 하는 과정 Pooling?
  102. 102. CNN 은 어떻게 필터를 학습할까요?
  103. 103. 𝑤+ = 𝑤 − 𝜂 ∗ 𝜕𝐸 𝜕𝑤 MLP 와 마찬가지로
  104. 104. 예제를 통해 살펴볼까요
  105. 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. 106. 어떻게 학습하는지 살펴보겠습니다 3 ∗ 3 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟
  107. 107. 𝐿, 𝑙 +2𝑙 + 1 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝑤 𝑙+1 가 전체 Cost 에 어떤 영향을 미치는지 알아야 갱신이 가능하겠죠?
  108. 108. 𝐿, 𝑙 +2𝑙 + 1 2 ∗ 2 𝑀𝑎𝑥𝑃𝑜𝑜𝑙𝑖𝑛𝑔 𝑈𝑛𝑖𝑡 𝑖𝑛𝑑𝑒𝑥 − 𝑜′, 𝑝′ 𝑧 𝐿 ෤𝑎 𝑜′ 𝑝′ 𝑙+1 1 ∗ 4 ∶ 𝑤 𝑙+2 𝑊𝑒𝑖𝑔ℎ𝑡 𝑀𝑎𝑡𝑟𝑖𝑥 3 ∗ 3 ∶ 𝑤 𝑙+1 𝐶𝑜𝑛𝑣𝑜𝑙𝑢𝑡𝑖𝑜𝑛 𝐹𝑖𝑙𝑡𝑒𝑟 𝑖𝑛𝑑𝑒𝑥 − 𝑜, 𝑝 ෥𝑎 𝑚′ 𝑛′ 𝑙 𝑧 𝑜𝑝 𝑙+1, 𝑎 𝑜𝑝 𝑙+1 𝜕𝐶 𝜕𝑤 𝑙+1 를 구하는 것이 목적이라는 것 잊지마세요
  109. 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. 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. 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. 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. 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. 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. 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. 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. 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. 118. 이제 어떻게 Filter 를 학습하는지도 알았는데… 어떻게 쌓아야할까요?
  119. 119. VGG, GoogleNet, ResNet 등 여러 모델들이 계속 나오고 있으니 문제의 난이도에 맞게 선택해서 사용하면 됩니다
  120. 120. # Layers 수가 많다고 모든 문제에 적합한 것은 아니니 주의해서 사용하셔야 합니다
  121. 121. 이제 잘 나온다!
  122. 122. 그럼 이것도 한번 맞추게 해보자
  123. 123. 개? ?고양이?
  124. 124. 한 이미지에 여러 개를 판별할 수는 없을까요?
  125. 125. 이미지에 여러 구역을 랜덤하게 CNN 으로 판별해보자
  126. 126. Detect Model : OverFeat NewYork Univ - 2014 영상을 키워가면서 단일 크기의 윈도우로 계속 판별해서 알아내기
  127. 127. Detect Model : OverFeat NewYork Univ - 2014 영상을 키워가면서 판별하기 때문에 객체의 크기 변화에 대응 가능
  128. 128. Detect Model : OverFeat NewYork Univ - 2014 분류된 객체의 위치를 추정하는 작업
  129. 129. Detect Model : OverFeat NewYork Univ - 2014 동일 객체로 추정되는 사각형들을 합치기
  130. 130. 하지만 OverFeat는 구역을 너무 많이 나눠서 너무 오래 걸립니다
  131. 131. 그럼 일단 객체를 찾은 뒤에 CNN 으로 판별해보자
  132. 132. Detect Model : R-CNN UC Berkeley - 2014 Input Region Proposals (Selective Search) classifier Compute Regions DOG CAT Classify # 객체를 먼저 찾는 과정을 추가
  133. 133. OverFeat 보다는 빨라졌지만 아직도 실시간 처리는 불가능한 속도
  134. 134. R-CNN 에서 개선 가능한 곳은 Region proposal, Classifier 두 군데
  135. 135. Classifier 를 일단 개선해보자
  136. 136. Detect Model : Fast R-CNN Microsoft - 2015 Region Proposals (Selective Search) Compute Regions classifier Classify DOG CAT convolution & pooling R-CNN 과 달라진 부분 중복 구역 제거 계산 시간 단축
  137. 137. Convolution, Pooling 과정 통해 계산량을 크게 줄인 Fast R-CNN
  138. 138. 다음은 Region Proposal 과정을 개선해보자
  139. 139. Detect Model : Faster R-CNN Microsoft - 2015기존의 Region Proposal 과정을 개선한 Region Proposal Network 층을 추가 Region Proposal Network
  140. 140. 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 이 가능하진 않습니다
  141. 141. 이후에도 Yolo, SSD 등 새로운 모델들이 나오고 있고 계속 발전 중입니다
  142. 142. Image Detection 도 상황에 맞는 모델을 사용하면 되겠죠?
  143. 143. 망이 깊다고 모든 문제를 잘 해결할 수는 없다는 점을 꼭 명심하셔야 합니다
  144. 144. 무엇이든 전체적인 흐름을 보고 가면 어렵지 않아요 RNN, Gan 은 다음편에서… gomguard.tistory.com
  145. 145. 감사합니다 knholic@gmail.com gomguard.tistory.com
  • snowcuq

    Dec. 27, 2020
  • chaehyunju

    Oct. 14, 2020
  • DongjunYun2

    Jun. 9, 2020
  • jheum7

    Jan. 25, 2020
  • MartinJung4

    Nov. 8, 2019
  • Yeonjoong

    Jun. 5, 2019
  • byungilkim7

    Jan. 12, 2019
  • JisooKim112

    Aug. 22, 2018
  • taekyunLee2

    May. 9, 2018
  • gphy

    Apr. 16, 2018
  • jasonhong56

    Mar. 8, 2018

뉴런, perceptron, cnn, r-cnn, fast r-cnn, faster r-cnn 및 backpropagation, activation function, batch normalization, cost function, optimizer 등 전반적인 딥뉴럴 네트워크에 대한 지식을 다루고 있습니다. mail : knholic@gmail.com blog : gomguard.tistory.com

Vues

Nombre de vues

14 237

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

6

Actions

Téléchargements

174

Partages

0

Commentaires

0

Mentions J'aime

11

×