3. Neural Networks: Perceptron
• 퍼셉트론
단일 뉴런의 작동 원리를 모사
뉴런: 시냅스로부터 탐지된 자극을 수상돌기를 통해 세포핵에 전달 후 역치를 넘어서는 자극
에 대해서는 축색돌기를 이용하여 다른 뉴런으로 정보를 전달
퍼셉트론: 입력변수의 값들에 대한 가중합에 대한 활성함수를 적용하여 최종 결과물 생성
3/165
4. Neural Networks: Perceptron
• 퍼셉트론의 구조 및 역할
퍼셉트론은 뉴런이 하나인 단세포 생물!
여러 변수들의 정보를
나름대로 취합해서
얼마만큼 다음 단계로
전달할지 결정한다
(활성화)
원하는 값(t)과 예측값(y)의
차이를 손실함수로 정의
4/165
5. Neural Networks: Perceptron
• 퍼셉트론의 목적
주어진 학습 데이터의 입력 정보(x)와 출력 정보(t)의 관계를 잘 찾도록 가중치 w를 조
절하자!
• 관계가 잘 찾아졌는지는 어떻게 아는가?
현재 퍼셉트론의 결과물 y가 실제 정답 t에 얼마나 가까운지를 손실 함수(loss function)
를 통해 측정 (손실 함수는 객체별로 산출)
회귀: 주로 squared loss 사용:
분류: 주로 cross-entropy loss 사용 (퍼셉트로는 이범주 분류만 가능):
전체 데이터 셋에 대해서 현재 퍼셉트론이 얼마나 잘못하고 있는지는 비용 함수(cost
function)을 사용하며, 이는 모든 객체의 손실함수에 대한 평균값을 주로 사용함
5/165
6. 학습: 기울기 하강 (Gradient Descent)
• 학습: 현재 퍼셉트론이 얼마나 틀렸는지를 알았으니 좀 더 잘 맞출 수 있도록 가중
치 w를 조절하는 것
기울기 하강: 눈을 가린 채로 산에서 가장 낮은 곳을 찾아가기
http://cs231n.stanford.edu/slides/winter1516_lecture3.pdf 6/165
7. 학습: 기울기 하강 (Gradient Descent)
• 기울기 하강
파란색 선: 가중치 w의 변화에 따른 비용함수 값의 변화
검은색 점: 현재 해의 위치
화살표: 비용함수를 최소화하기 위해 가중치 w가 이동해야 하는 방향
7/165
8. 학습: 기울기 하강 (Gradient Descent)
• 비용함수를 현재의 가중치 값(w)에 대해 1차 미분을 수행한 뒤 아래의 절차를 따
름
1차 미분 값(gradient)이 0인가?
그렇다: 현재의 가중치 값이 최적! 학습 종료
아니다: 현재의 가중치 값이 최적이 아님 좀 더 학습해봐
1차 미분 값(gradient)가 0이 아닐 경우 어떻게 해야 좀 더 잘하는 퍼셉트론을 만들 수
있는가?
1차 미분 값(gradient)의 부호에 대한 반대 방향으로 가중치를 이동
반대 방향으로 얼마나 움직여야 하는가?
그건 잘 모름…
조금씩 적당히(???) 움직여보고 그 다음에 다시 gradient를 구해보자
하다 보면 되겠지…
8/165
9. 학습: 기울기 하강 (Gradient Descent) (optional)
• 기울기 하강: Gradient descent algorithm
함수의 테일러 전개
목적함수가 최소화인 경우 함수의 1차 미분 값(gradient)이 0이 아니면 Gradient의 반
대 방향으로 이동해야 목적함수의 값을 감소시킬 수 있음
이동 후의 새로운 함수 값은 이동 전의 함수 값보다 작음
어느 방향으로 갈 것인가?
얼마만큼 갈 것인가?
9/165
10. 학습: 기울기 하강 (Gradient Descent)
• Use chain rule
• Gradients for w and x
• Update w
10/165
11. 학습: 기울기 하강 (Gradient Descent)
• Gradient Descent 에서 weight가 업데이트 되는 원리
현재의 출력값(y)과 정답(t)이
차이가 많이 날 수록
가중치를 많이 업데이트 하라
대상 가중치와 연결된 입력
변수의 값이 클 수록
가중치를 많이 업데이트 하라
11/165
12. 인공 신경망: Multi-Layer Perceptron (MLP)
• 퍼셉트론(선형 모델)의 한계
단 하나의 직선을 그어 파란색 원과 붉은색 사각형을 분류할 수 있는가?
12/165
13. 인공 신경망: Multi-Layer Perceptron (MLP)
• 다층 퍼셉트론: 여러 개의 퍼셉트론을 결합하여 해결!
문제를 한꺼번에 풀지 말고 풀 수 있는 형태의 문제 여러 개로 나누어서 풀자
두 직선 사이에 있으면 네모로 판정하고 바깥쪽에 있으면 원으로 판별하자
각각의 직선은 퍼셉트론으로 만들어 낼 수 있으니 두 개의 퍼셉트론으로 해결 가능
13/165
14. 인공 신경망: Multi-Layer Perceptron (MLP)
• 다층 퍼셉트론: 여러 개의 퍼셉트론을 결합하여 해결!
문제를 한꺼번에 풀지 말고 풀 수 있는 형태의 문제 여러 개로 나누어서 풀자
두 직선 사이에 있으면 네모로 판정하고 바깥쪽에 있으면 원으로 판별하자
14/165
15. 심층 신경망: Deep Neural Networks (DNN)
• Deep Neural Network (DNN)
여러 층으로 이루어진 복잡한 구조의 인공신경망
15/165
16. 심층 신경망: Deep Neural Networks (DNN)
• 왜 DNN인가?
고차원의 데이터(이미지, 음성, 텍스트 등)에 대해 속성을 정의하지 않고 원 데이터
(Raw Data)를 그대로 사용해도 알아서 속성을 판별할 수 있음
16/165
17. 심층 신경망: Deep Neural Networks (DNN)
• 왜 DNN인가?
기존의 기계학습 방법론에 비해 우수한 예측 정확도
특정 분야(음성, 이미지 인식 등)에서는 (인간의 능력과 유사할 정도로) 월등히 우수한 성능
을 나타내기도 함
RecognitionAccuracy for Labeled Faces in theWild (LFW) dataset (13,233 images, 5,749 people)
• Human: 95% vs. DeepFace in Facebook: 97.35%
Taigman,Y. et al. (2014). DeepFace:Closing the Gap to Human-Level Performance in FaceVerification,CVPR’14.
17/165
18. 심층 신경망: Deep Neural Networks (DNN)
• 왜 DNN인가?
특정 데이터(도메인)에서 학습된 구조를 다른 데이터(도메인)에서도 사용할 수 있음
(Transfer Learning)
Oquab, M., Bottou, L., Laptev, I., & Sivic, J. (2014). Learning and transferring mid-level image representations using convolutional neural networks. In Proceedings of the IEEE conference on computer
vision and pattern recognition (pp. 1717-1724).
18/165
19. 심층 신경망: Deep Neural Networks (DNN)
• 왜 DNN인가?
지금까지 사람은 쉽게 잘 하나 기계가 잘 못하던 과업(Task)들에 대해서 진일보한 성능
을 보여줌 (음성인식, 시각인지, 언어인지 등)
Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhudinov, R., ... & Bengio, Y. (2015, June). Show, attend and tell: Neural image caption generation with visual attention. In International
Conference on Machine Learning (pp. 2048-2057).
19/165
20. 심층 신경망: Deep Neural Networks (DNN)
• 과거에는 무엇이 문제였는가? 1) 학습이 잘 안됨!
Vanishing gradient problem: 은닉층의 수가 증가함에 따라 하위 층으로 갈수록
Gradient가 0이 될 가능성이 높아져서 Error Backpropagation이 잘 되지 않음
https://dl.dropboxusercontent.com/u/19557502/7_02_difficulty_of_training.pdf
20/165
21. 심층 신경망: Deep Neural Networks (DNN)
하용호, 백날 자습해도 이해 안가던 딥러닝, 머리속에 인스톨 시켜드립니다
21/165
22. 심층 신경망: Deep Neural Networks (DNN)
• 해결책 1-1: 층별로 차근차근 학습을 시켜보자
벽돌집을 쌓을 때 벽돌을 한 줄씩 쌓아가듯이…
Deep Learning의 대부 Hinton 교수님이 처음 성공 근데 지금은 잘 안씀
https://dl.dropboxusercontent.com/u/19557502/7_03_unsupervised_pretraining.pdf
22/165
23. 심층 신경망: Deep Neural Networks (DNN)
• 해결책 1-2: Gradient가 멀리까지 가도록 새로운 활성 함수를 쓰자
Rectified Linear Unit (ReLU) 사용 요즘에는 거의 모든 DNN은 ReLU 및 ReLU를
변형한 활성 함수 사용
https://www.tinymind.com/learn/terms/relu
23/165
24. 심층 신경망: Deep Neural Networks (DNN)
• 과거에는 무엇이 문제였는가? 2) 구조가 너무 복잡하여 과적합 위험이 있음
은닉층과 은닉노드의 수 증가로 어떤 형태의 함수(회귀)나 분류 경계면(분류)도 찾아
낼 가능성이 있음
데이터의 숫자가 적을 때는 이 특징이 꼭 좋은 것만은 아님
검은색을 찾으랬더니…
초록색을 찾고 있네…
24/165
25. 심층 신경망: Deep Neural Networks (DNN)
• 해결책 2: Drop-Out
부분 최적화의 합 ≠ 전체 최적화
학습 과정에서 일부러 특정 노드들에 연결된 가중치들은 업데이트를 하지 말자
어떤 노드를 업데이트 시키지 않을 것인가는 무작위로 그때그때 바꿔가며 결정하자
25/165
26. 심층 신경망: Deep Neural Networks (DNN)
• 해결책 2: Drop-Out
부분 최적화의 합 ≠ 전체 최적화
우리네 일상도 별반 다르지 않습니다…
https://www.superookie.com/contents/58d3d99f8b129f44aa761811
http://www.yes24.com/24/goods/13144172
사람도 쉬고, hidden node도 쉬고…
26/165
27. 심층 신경망: Deep Neural Networks (DNN)
• 과적합 방지에 성공한 High Capacity 모델의 효과
27/165
34. Convolutional Neural Network (CNN)
• CNN 작동 과정
일반적인 CNN은 Convolution 연산,Activation 연산(대부분 ReLU), Pooling 연산의 반
복으로 구성됨 (Feature Learning)
일정 횟수 이상의 Feature Learning 과정 이후에는 Flatten 과정을 통해 이미지가 1차원
의 벡터로 변환됨
https://kr.mathworks.com/solutions/deep-learning/convolutional-neural-network.html
34/165
35. Convolutional Neural Network (CNN)
• CNN 작동 과정
일반적인 CNN은 Convolution 연산,Activation 연산(대부분 ReLU), Pooling 연산의 반
복으로 구성됨 (Feature Learning)
일정 횟수 이상의 Feature Learning 과정 이후에는 Flatten 과정을 통해 이미지가 1차원
의 벡터로 변환됨
35/165
36. CNN Basics: Image Representation
• Image Representation: 이미지를 어떻게 컴퓨터한테 숫자로 인식시킬 것인가?
누구의 눈일까요?
36/165
37. CNN Basics: Image Representation
• Image Representation: 이미지를 어떻게 컴퓨터한테 숫자로 인식시킬 것인가?
제 눈입니다…
37/165
38. CNN Basics: Image Representation
• 컬러 이미지는 3차원의Tensor로 표현됨:Width X Height X 3 (RGB)
2,247
1,685
38/165
39. CNN Basics: Convolution
• 문제점
모든 픽셀을 서로 다른 가중치로 연결하게 되면 Input layer와 First hidden layer 사이에
너무 많은 weights가 생김
• Image Convolution (Filter, Kernel)
특정 속성을 탐지하는데 사용하는 matrix (예: edge detection)
She appeared on the cover of the journal Optical Engineering in 1991, and the model herself was invited to a
conference of the Image Science and Technology society in 1997. (덕중의 덕은 양덕이니라)
https://www.software.ac.uk/blog/2016-10-03-how-photo-playboy-became-part-scientific-culture 39/165
42. CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
이슈: 한번에 한 칸씩 이동하면 너무 오래 걸리지 않을까?
해결책: Filter가 한번에 여러 칸을 이동하도록 허용하자 (Stride)
https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 42/165
43. CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
문제점: 가장자리에 있는 픽셀들은 중앙에 위치한 픽셀들에 비해 Convolution 연산이
적게 수행됨
해결책: Padding (원래 이미지 테두리에 0의 값을 갖는 pad를 추가)
Padding
with size 1
https://medium.com/machine-learning-bites/deeplearning-series-convolutional-neural-networks-a9c2f2ee1524 43/165
44. CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
해결책: Padding (원래 이미지 테두리에 0의 값을 갖는 pad를 추가)
44/165
46. CNN Basics: Convolution
• Padding과 Stride 크기에 따른 Output Size
https://medium.com/machine-learning-bites/deeplearning-series-convolutional-neural-networks-a9c2f2ee1524 46/165
47. CNN Basics:Activation
• Activation
Convolution을 통해 학습된 값들의 비선형 변환을 수행
대부분 Rectified Linear Unit (ReLU)을 사용
https://medium.com/data-science-group-iitr/building-a-convolutional-neural-network-in-python-with-tensorflow-d251c3ca8117
47/165
48. CNN Basics: Pooling
• Pooling
문제점: 고차원의 Tensor를 보다 Compact하게 축약해야 하지 않을까?
Pooling: 일정 영역의 정보를 축약하는 역할
https://pythonmachinelearning.pro/introduction-to-convolutional-neural-networks-for-vision-tasks/ 48/165
52. Convolutional Neural Network (CNN)
• Power of deep layers in CNN
시간이 지날수록 효율적이며(Operation 수가 적으며) 정확한 모델 구조가 등장
https://www.topbots.com/14-design-patterns-improve-convolutional-neural-network-cnn-architecture/
52/165
56. CNN Architecture 1:AlexNet
• AlexNet
224*224 크기의 이미지를 Input으로 사용
초기 단계에서는 큰 필터 사이즈와 Stride를 사용
상위 Layer로 갈수록 작은 필터 사이즈와 Stride를 사용
2개의 Fully connected layer 존재
파라미터 총 수: 60 million
56/165
58. CNN Architecture 2:VGGNet
• VGGNet
AlexNet에 비해 단순하지만 깊은 구조
3 by 3 convolution with stride 1을 기본 연산으로 하며 중간 중간에 2 by 2 max
polling을 수행
파라미터 총 수: 138 million
58/165
60. CNN Architecture 3: GoogLeNet
• GoogLeNet
왜 한 입력 image에 한 종류의 filter size만 적용해야 하는가?
뭐가 잘 될지 모르니 1 by 1, 3 by 3, 5 by 5, 3 by 3 max pooling을 다 해보자!
60/165
61. CNN Architecture 3: GoogLeNet
• GoogLeNet
1 by 1 convolution의 역할: feature map의 depth를 감소시켜 연산량을 감소시킴
예: 1 by 1 convolution을 수행하지 않고 5 by 5 convolution을 수행
연산량: (14 × 14 × 48) × (5 × 5 × 480) = 112.9M
61/165
68. CNN Architecture 4: ResNet
• Residual learning: skip connection
일정 시점마다 input x 자체를 skip connection을 통해 연결
Gradient flow가 원활하게 이루어짐 (모델을 깊게 쌓는 것에 대한 부담이 줄어듬)
Fully connected layer 제거 (모델의 파라미터 수를 줄임)
Plain net Residual net
68/165
80. CNN Localization
• Image Localization
Class Activation Map (CAM) (Zhou et al., 2016)
Localize significant areas based only on class label information
80/165
81. CNN Localization
• Image Localization
Class Activation Map (CAM)
예측한 분류 범주에 가장 큰 영향을 끼치는 이미지의 영역을 추정
81/165
82. CNN Localization
• Image Localization
Class Activation Map (CAM)
예측한 분류 범주에 가장 큰 영향을 끼치는 이미지의 영역을 추정
82/165
83. Class Activation Map
• CAM 작동 원리
: 마지막 convolution layer unit k의 activation (x, y)는 공간적 좌표
Global average pooling 수행:
범주 c에 대한 softmax 함수 계산 전 입력값
: Unit k의 범주 c에 대한 가중치
83/165
84. Class Activation Map
• CAM 작동 원리
범주 c에 대한 softmax 함수의 출력
Sc는 다음과 같이 표현될 수 있고, Mc를 c범주에 대한 class activation map으로 정의할
수 있음
84/165
85. Class Activation Map
• CAM 작동 원리
원본 이미지의 크기(I)와 feature map(F)의 크기가
다르기 때문에 (일반적으로 I > F) upsampling을 수행
85/165
97. RNN Basic: LSTM
• LSTM: Long Short-Term Memory
Gradient exploding/vanishing 문제를 해결하여 Long-term dependency 학습 가능
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
Vanilla RNN
Operation symbols
LSTM
97/165
98. RNN Basic: LSTM
• LSTM: Long Short-Term Memory
LSTM의 구조가 복잡하여 다양한 diagram들이 존재
https://www.researchgate.net/figure/The-architecture-of-a-LSTM-memory-cell_fig2_314251130 98/165
99. RNN Basic: LSTM
• LSTM: Long Short-Term Memory
LSTM의 구조가 복잡하여 다양한 diagram들이 존재
https://www.researchgate.net/figure/An-example-of-a-basic-LSTM-cell-left-and-a-basic-RNN-cell-right-Figure-follows-a_fig2_306377072 99/165
100. RNN Basic: LSTM
• Cell state
LSTM 핵심 구성 요소, 아래 그림에서는 다이어그램의 상부를 관통하는 선(line)
100/165
101. RNN Basic: LSTM
• Step 1: 지금까지의 cell state에 저장된 정보 중에서 얼마만큼을 망각(forget)할 것
인지 결정
Forget gate: 이전 단계의 hidden state 와 현 단계의 입력 으로부터 0과 1사이
의 값을 출력 (Sigmoid 함수 사용)
1: 지금까지 cell state에 저장된 모든 정보를 보존
0: 지금까지 cell state에 저장된 모든 정보를 무시
101/165
102. RNN Basic: LSTM
• Step 2: 새로운 정보를 얼마만큼 cell state에 저장할 것인지를 결정
Input gate: 어떤 값을 업데이트 할 것인지 결정
Tanh layer를 사용하여 새로운 cell state의 후보 을 생성
102/165
103. RNN Basic: LSTM
• Step 3: 예전 cell state를 새로운 cell state로 업데이트
예전 cell state를 얼마만큼 망각할 것인가를 계산한 forget gate 결과값과 곱함
새로운 cell state 후보와 얼마만큼 보존할 것인가를 계산한 input gate 결과값을 곱함
두 값을 더하여 새로운 cell state 값으로 결정
103/165
104. RNN Basic: LSTM
• Step 4: 출력 값을 결정
이전 hidden state 값과 현재의 입력 값을 이용하여 output gate 값을 산출
Output gate 값과 현재의 cell state 값을 결합하여 현재의 hidden state 값을 계산
104/165
106. RNN: GRU
• GRU: Gated Recurrent Unit
LSTM을 단순화한 구조, 실제 활용에서는 LSTM과 GRU의 성능 차이는 미비함
별도의 Cell state가 존재하지 않음
LSTM의 forget gate와 input gage를 하나의 update gate로 결합
Reset gate를 통해 망각과 새로운 정보 업데이트 정도를 결정
Update gate
Reset gate
106/165
107. RNNVariations: Bidirectional RNN
• Bidirectional RNN: 양방향 순환신경망
정보의 입력을 시간의 순방향과 역방향 관점에서 함께 처리
http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf 107/165
108. RNNVariations: Bidirectional RNN
• Deep-Bidirectional RNN
RNN의 hidden layer가 꼭 한 층일 필요가 있나? 더 쌓아보자!
http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf 108/165
110. RNN:Attention
• 두 가지 대표적 Attention 메커니즘
Bahadanau attention (Bahdanau et al., 2015)
Attention scores are separated trained, the current hidden state is a function of the
context vector and the previous hidden state
Luong attention (Luong et al., 2015)
Attention scores are not trained, the new current hidden state is the simple tanh of the
weighted concatenation of the context vector and the current hidden state of the decoder
Bahdanau attention Luong attention
110/165
111. RNN:Attention
• Luong Attention
Decoder의 새로운 hidden state는
Weighted concatenation of the context vector와
Current hidden state of the decoder를
Concatenation한 뒤 Tanh함수를 적용한 것
이 hidden state가 RNN의 출력을 결정하는 softmax에 입력으로 투입
111/165
112. RNN:Attention
• Luong attention
A variable-length alignment vector:
score is referred as a context-based function:
Context vector
112/165
117. Denoising Auto-Encoder
• Auto-Encoder를 포함한 인공신경망의 단점
입력에 대한 약간의 변형(small perturbations)에도 모델이 민감하게 반응함
• 학습 과정에서 입력에 일부러 noise를 첨가해 보는 것은 어떨까?
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798
입력에
노이즈를
첨가해도
노이즈가
제거된
결과값이
나오도록
117/165
118. Denoising Auto-Encoder
• 노이즈는 어떻게 주어야 하나?
주로 Random Gaussian noise를 생성
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798 118/165
119. Convolutional Auto-Encoder
• 앞서 예시한 Hand-written Digit은 입력 데이터를 이미지가 아닌 벡터로 사용
16 by 16 행렬을 256차원의 vector로 취급하고 오토 인코더 학습
• CAE = 이미지 자체를 취급하는 오토인코더
https://blog.manash.me/implementing-pca-feedforward-and-convolutional-autoencoders-and-using-it-for-image-reconstruction-8ee44198ea55
119/165
120. Convolutional Auto-Encoder
• CAE = 이미지 자체를 취급하는 오토인코더
https://blog.manash.me/implementing-pca-feedforward-and-convolutional-autoencoders-and-using-it-for-image-reconstruction-8ee44198ea55
120/165
121. Convolutional Auto-Encoder
• CAE가 꼭 원본 이미지를 복원하는 목적으로만 사용되는 것은 아님
Image segmentation
입력: 이미지
출력: 픽셀 단위의 범주 (도로, 자동차, 하늘, 인도 등)
https://github.com/arahusky/Tensorflow-Segmentation
121/165
123. Convolutional Auto-Encoder
• CAE 고려사항: Decoder 학습 시 feature map의 크기를 어떻게 증가시킬 것인가?
https://www.researchgate.net/figure/The-structure-of-proposed-Convolutional-AutoEncoders-CAE-for-MNIST-In-the-middle-there_fig1_320658590
Encoder 과정은 CNN의 forward path
123/165
124. Convolutional Auto-Encoder
• CAE 고려사항: Decoder 학습 시 feature map의 크기를 어떻게 증가시킬 것인가?
https://www.researchgate.net/figure/The-structure-of-proposed-Convolutional-AutoEncoders-CAE-for-MNIST-In-the-middle-there_fig1_320658590
다시 어떻게 크기를 키우지?
124/165
131. Weight Initialization
• Weight Initialization
Network의 weights를 어떤 방식으로 초기화할 것인가?
SGD가 됐건 뭐가 됐건 어쨌든 처음에 이상한 결과라도 나와야 학습을 하니까…
• 전략 1: 전부 0으로 고정시켜보자
Zero initialization: weights와 bias를 모두 0으로 초기화
동일한 layer에 있는 모든 hidden units의 gradient가 같아짐 선형 모델과 일치
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 131/165
132. Weight Initialization
• 전략 1: 전부 0으로 고정시켜보자
아래처럼 생긴 데이터셋에 대해서
iteration = 15,000, loss = 0.693, accuracy = 50%
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 132/165
133. Weight Initialization
• 전략 2: 그래도 조금씩은 달라야 하니까 Normal Distribution에서 Random
Number를 할당하자
Normal distribution의 평균은 0으로, 분산은 알아서 적당히…
문제점: 분산에 따라 Weight가 너무 크거나 너무 작으면 Wx+b도 매우 크거나 작게 되
고 이는 sigmoid activation function의 gradient가 0에 가까운 값을 갖는 gradient
vanishing 현상의 원인이 됨
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 133/165
134. Weight Initialization
• 전략 2: 그래도 조금씩은 달라야 하니까 Normal Distribution에서 Random
Number를 할당하자
전략 1의 예시와 같은 데이터셋에서
Iteration = 15,000, loss = 0.383, accuracy = 86%
Zero initialization보다는 낫지만 그래도 뭔가 부족함
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 134/165
135. Weight Initialization
• 전략 3: Normal Distribution의 분산을 적당한 값으로 정해보자
Xavier initialization:Tanh 활성함수를 사용하는 경우
L번째 layer의 입력 값들과 출력 값들의 분산을 같도록 하자
분산은 (L-1)번째 layer의 hidden nodes의 역수라는 것을 증명할 수 있음
Weight를 sampling하는 분포
Forward path만 고려하면
Forward와 Backward paths를 함께 고려하면
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 135/165
136. Weight Initialization
• 전략 3: Normal Distribution의 분산을 적당한 값으로 정해보자
He initialization: LeLU 계열 함수를 사용하는 경우
L번째 layer의 입력 값들과 출력 값들의 분산을 같도록 하자
분산은 다음과 같음을 증명할 수 있음
Weight를 sampling하는 분포
이전 Layer의 hidden unit의 수가 많을수록 더 작은 random number들로 initialization 됨
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 136/165
137. Weight Initialization
• 전략 3: Normal Distribution의 분산을 적당한 값으로 정해보자
전략 1&2의 예시와 같은 데이터셋에서
Iteration = 15,000, loss = 0.074, accuracy = 96%
Layer의 size만 고려했음에도 상당한 효과를 나타냄
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 137/165
138. Weight Initialization
• Weight initialization 기법과 Random distribution에 따른 gradient의 평균 크기
https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404 138/165
139. Weight Initialization
• Weight initialization 기법에 따른Training loss 변화
좌: Zero initialization
중: Random initialization with a fixed variance
우: Xavier initialization
https://intoli.com/blog/neural-network-initialization/ 139/165
140. Gradient DescentVariations
• Gradient Descent revisited
Batch gradient descent: 모든 training examples들에 대한 gradient의 평균을 사용
Stochastic gradient descent: 개별 example의 gradient를 사용
Mini-batch gradient descent: n개의 mini-batch examples의 gradient 평균을 사용
어느 방향으로 갈 것인가?
얼마만큼 갈 것인가?
140/165
141. Gradient DescentVariations
• Challenges
적절한 learning rate ( )를 정하는 것이 어려움
너무 크면 발산(diverge)하거나, 최적 근처에서 fluctuation이 생김
너무 작으면 convergence 속도가 너무 느림
Learning rate scheduling도 어려움
처음에는 상대적으로 크게 설정하고 학습이 진행될수록 작게 설정해야 함 누구나 다 아
는 사실
그런데 어떻게? 얼마나 빈번하게? 얼마만큼 감소시켜야 하나?
모든 weight에 단일 learning rate를 적용하는 것도 문제의 소지가 있음
Feature의 빈도가 다름
목적 함수가 non-convex이므로 numerical suboptimal local minima에 빠질 위험 존재
실험적으로는 local minima가 문제가 아니라 saddle points(방향에 따라서 gradient가 양수/
음수가 혼재하는 경우)가 문제 SGD가 탈출하기 어려움
141/165
144. Gradient DescentVariations
• Nesterov Accelerated Gradient (NAG)
지금까지 왔던 방향으로 w를 먼저 움직인 뒤에
Gradient를 계산하자
http://cs231n.github.io/neural-networks-3/
144/165
145. Gradient DescentVariations
• Adagrad:Adapts the learning rate to the parameters
i번째 weight의 t시점에서의 gradient
t+1시점의 weight를 계산할 때, 그 weight가 지금까지 얼마나 많이 움직였는지를 반영
diagonal matrix: 지금까지 wi의 gradient들의 제곱을 누적합
실험적으로 제곱근을 사용하지 않으면 성능이 매우 좋지 않은 것으로 알려짐
Matrix-vector form
http://ruder.io/optimizing-gradient-descent/index.html#challenges
145/165
146. Gradient DescentVariations
• Adadelta
Adagrad는 과거 gradient 변화량을 모두 누적하는 관계로 급격하게 단조 감소하는 경
향이 있음 (aggressive and monotonically decreasing)
Adadelta는 최근 일부 시점의 과거 gradient 변화량만 반영하여 learning rate의 변화량
을 조정 (일정 기간 동안 update가 없었던 경우에는 learning rate가 증가할 수도 있음)
Running average
Adadelta vs.Adagrad
http://ruder.io/optimizing-gradient-descent/index.html#challenges
Adadelta Adagrad
과거 gradient의
제곱을 전부 누적
과거 gradient의 제곱을
decaying하면서 누적
146/165
147. Gradient DescentVariations
• RMSProp
Geoffrey Hinton교수의 강의 슬라이드에서 소개
이 방법론을 차용한 논문들이 참고문헌을 인용할 대상 논문이 없어서 강의 슬라이드를
참고문헌으로 제시함
Adadelta에서 gamma값을 0.9로 고정시킨 방법론 (Adadelta와 독립적으로 제안되어 둘
다 인정받음)
http://ruder.io/optimizing-gradient-descent/index.html#challenges
147/165
148. Gradient DescentVariations
• Adam
Adaptive Moment Estimation
Adadelta나 RMSProp처럼 learning rate도 adaptive하게 조정하고,
Momentum처럼 gradient의 관성도 반영하자
Gradient의 관성 반영 요소:
지금까지 Gradient의 변화량 반영 요소:
관찰점: m0와 v0를 최초에 0벡터로 지정하니 계속 0으로 가려고 하더라
해결책: bias-corrected first and second moment 사용
Weight update rule
http://ruder.io/optimizing-gradient-descent/index.html#challenges
148/165
149. Regularization
• Cost function in machine learning
Loss function
회귀(regression) 문제의 경우 Mean squared error를 주로 사용
분류(classification) 문제의 경우 Cross Entropy (Negative log-likelihood)를 주로 사용
GAN의 경우 KL-Divergence를 주로 사용
주어진 학습 데이터에
대해서 틀리지 말되
149/165
150. Regularization
• Cost function in machine learning
Regularization term
lambda: hyperparameter, m: number of training examples
과도한 학습은 방지하자
(원리도 모르고 무작정 답만 외우지 말자)
150/165
151. Batch Normalization
• Motivation
학습이 불안정한 근본적 이유: Internal Covariance Shift
Network의 각 층이나 activation마다 input의 distribution이 달라지는 현상
Ioffe, S., & Szegedy, C. (2015). Batch normalization: Accelerating deep network training by reducing internal covariate shift. arXiv preprint arXiv:1502.03167.
https://m.blog.naver.com/laonple/220808903260
151/165
152. Batch Normalization
• 최초의 해결책:Whitening
Input feature들의 correlation을 제거하고 variance는 1로 만들어 줌
문제점: Covariance matrix와 이의 Inverse matrix를 계산해야 하므로 계산량이 많음
일부 parameter(특히 bias term)의 영향력이 감소함
• Batch Normalization
개별 feature들이 이미 uncorrelated 되어 있음을 가정
Feature 각각에 대해서만 scalar 형태로 mean과 variance를 구해서 normalize 수행
단순히 mean과 variance를 0, 1로 고정하면 activation의 non-linearity를 제거하는 역효
과 발생
Sigmoid의 경우 0 근처에서는 linear한 성질이 큼
Normalize된 값들에 scale factor(gamma)와 shift factor(beta)를 추가하고 이를 back-
propagation 과정에서 같이 학습함
Mini-batch 단위로 mean과 variance를 계산하여 적용함
https://shuuki4.wordpress.com/2016/01/13/batch-normalization-%EC%84%A4%EB%AA%85-%EB%B0%8F-%EA%B5%AC%ED%98%84/
152/165
154. Batch Normalization
• Batch Normalization
주로 Non-linear 활성 함수 앞쪽에 배치가 되어 수행됨
https://m.blog.naver.com/laonple/220808903260
154/165
155. Batch Normalization
• Batch Normalization:Training vs.Test
Training: 각 mini-batch마다 gamma와 beta를 구해서 저장
Test: 학습 시 mini-batch마다 구했던 gamma와 beta의 평균을 사용
https://m.blog.naver.com/laonple/220808903260
155/165
157. Data Augmentation
• 상황
내가 사용하고 싶은 모델은 파라미터의 수가 엄청나게 많은데 보유하고 있는 데이터의
수가 너무 적다
• 목적
현재 보유한 데이터를 어떻게 하면 그럴듯하게 뻥튀기(?)를 해서 모델 학습에 도움이
되게 할 수 있을까?
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 157/165
159. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Flip: 좌우/상하 반전
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 159/165
160. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Rotation: 이미지 회전
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 160/165
161. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Scale: 이미지 크기 조절
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 161/165
162. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Crop: 이미지 일부 잘라내기
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 162/165
163. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Translation: X축/Y축으로 이미지 이동
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 163/165
164. Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Gaussian Noise: 원본 이미지에 노이즈를 첨가
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 164/165