SlideShare a Scribd company logo
1 of 165
Download to read offline
Deep Neural Networks:
CNN, RNN,AE, and Some Practical Techniques
강필성
고려대학교 산업경영공학부
pilsung_kang@korea.ac.kr
AGENDA
01
02
03
합성곱 신경망: CNN
순환신경망: RNN
오토인코더:Auto-Encoder
04 DNN 학습 시 고려사항
00 인공신경망: 개요
2/165
Neural Networks: Perceptron
• 퍼셉트론
단일 뉴런의 작동 원리를 모사
 뉴런: 시냅스로부터 탐지된 자극을 수상돌기를 통해 세포핵에 전달 후 역치를 넘어서는 자극
에 대해서는 축색돌기를 이용하여 다른 뉴런으로 정보를 전달
 퍼셉트론: 입력변수의 값들에 대한 가중합에 대한 활성함수를 적용하여 최종 결과물 생성
3/165
Neural Networks: Perceptron
• 퍼셉트론의 구조 및 역할
퍼셉트론은 뉴런이 하나인 단세포 생물!
여러 변수들의 정보를
나름대로 취합해서
얼마만큼 다음 단계로
전달할지 결정한다
(활성화)
원하는 값(t)과 예측값(y)의
차이를 손실함수로 정의
4/165
Neural Networks: Perceptron
• 퍼셉트론의 목적
주어진 학습 데이터의 입력 정보(x)와 출력 정보(t)의 관계를 잘 찾도록 가중치 w를 조
절하자!
• 관계가 잘 찾아졌는지는 어떻게 아는가?
현재 퍼셉트론의 결과물 y가 실제 정답 t에 얼마나 가까운지를 손실 함수(loss function)
를 통해 측정 (손실 함수는 객체별로 산출)
 회귀: 주로 squared loss 사용:
 분류: 주로 cross-entropy loss 사용 (퍼셉트로는 이범주 분류만 가능):
전체 데이터 셋에 대해서 현재 퍼셉트론이 얼마나 잘못하고 있는지는 비용 함수(cost
function)을 사용하며, 이는 모든 객체의 손실함수에 대한 평균값을 주로 사용함
5/165
학습: 기울기 하강 (Gradient Descent)
• 학습: 현재 퍼셉트론이 얼마나 틀렸는지를 알았으니 좀 더 잘 맞출 수 있도록 가중
치 w를 조절하는 것
기울기 하강: 눈을 가린 채로 산에서 가장 낮은 곳을 찾아가기
http://cs231n.stanford.edu/slides/winter1516_lecture3.pdf 6/165
학습: 기울기 하강 (Gradient Descent)
• 기울기 하강
파란색 선: 가중치 w의 변화에 따른 비용함수 값의 변화
검은색 점: 현재 해의 위치
화살표: 비용함수를 최소화하기 위해 가중치 w가 이동해야 하는 방향
7/165
학습: 기울기 하강 (Gradient Descent)
• 비용함수를 현재의 가중치 값(w)에 대해 1차 미분을 수행한 뒤 아래의 절차를 따
름
1차 미분 값(gradient)이 0인가?
 그렇다: 현재의 가중치 값이 최적!  학습 종료
 아니다: 현재의 가중치 값이 최적이 아님  좀 더 학습해봐
1차 미분 값(gradient)가 0이 아닐 경우 어떻게 해야 좀 더 잘하는 퍼셉트론을 만들 수
있는가?
 1차 미분 값(gradient)의 부호에 대한 반대 방향으로 가중치를 이동
반대 방향으로 얼마나 움직여야 하는가?
 그건 잘 모름…
 조금씩 적당히(???) 움직여보고 그 다음에 다시 gradient를 구해보자
 하다 보면 되겠지…
8/165
학습: 기울기 하강 (Gradient Descent) (optional)
• 기울기 하강: Gradient descent algorithm
함수의 테일러 전개
목적함수가 최소화인 경우 함수의 1차 미분 값(gradient)이 0이 아니면 Gradient의 반
대 방향으로 이동해야 목적함수의 값을 감소시킬 수 있음
이동 후의 새로운 함수 값은 이동 전의 함수 값보다 작음
어느 방향으로 갈 것인가?
얼마만큼 갈 것인가?
9/165
학습: 기울기 하강 (Gradient Descent)
• Use chain rule
• Gradients for w and x
• Update w
10/165
학습: 기울기 하강 (Gradient Descent)
• Gradient Descent 에서 weight가 업데이트 되는 원리
현재의 출력값(y)과 정답(t)이
차이가 많이 날 수록
가중치를 많이 업데이트 하라
대상 가중치와 연결된 입력
변수의 값이 클 수록
가중치를 많이 업데이트 하라
11/165
인공 신경망: Multi-Layer Perceptron (MLP)
• 퍼셉트론(선형 모델)의 한계
단 하나의 직선을 그어 파란색 원과 붉은색 사각형을 분류할 수 있는가?
12/165
인공 신경망: Multi-Layer Perceptron (MLP)
• 다층 퍼셉트론: 여러 개의 퍼셉트론을 결합하여 해결!
문제를 한꺼번에 풀지 말고 풀 수 있는 형태의 문제 여러 개로 나누어서 풀자
 두 직선 사이에 있으면 네모로 판정하고 바깥쪽에 있으면 원으로 판별하자
 각각의 직선은 퍼셉트론으로 만들어 낼 수 있으니 두 개의 퍼셉트론으로 해결 가능
13/165
인공 신경망: Multi-Layer Perceptron (MLP)
• 다층 퍼셉트론: 여러 개의 퍼셉트론을 결합하여 해결!
문제를 한꺼번에 풀지 말고 풀 수 있는 형태의 문제 여러 개로 나누어서 풀자
 두 직선 사이에 있으면 네모로 판정하고 바깥쪽에 있으면 원으로 판별하자
14/165
심층 신경망: Deep Neural Networks (DNN)
• Deep Neural Network (DNN)
여러 층으로 이루어진 복잡한 구조의 인공신경망
15/165
심층 신경망: Deep Neural Networks (DNN)
• 왜 DNN인가?
고차원의 데이터(이미지, 음성, 텍스트 등)에 대해 속성을 정의하지 않고 원 데이터
(Raw Data)를 그대로 사용해도 알아서 속성을 판별할 수 있음
16/165
심층 신경망: 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
심층 신경망: 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
심층 신경망: 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
심층 신경망: 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
심층 신경망: Deep Neural Networks (DNN)
하용호, 백날 자습해도 이해 안가던 딥러닝, 머리속에 인스톨 시켜드립니다
21/165
심층 신경망: Deep Neural Networks (DNN)
• 해결책 1-1: 층별로 차근차근 학습을 시켜보자
벽돌집을 쌓을 때 벽돌을 한 줄씩 쌓아가듯이…
Deep Learning의 대부 Hinton 교수님이 처음 성공  근데 지금은 잘 안씀
https://dl.dropboxusercontent.com/u/19557502/7_03_unsupervised_pretraining.pdf
22/165
심층 신경망: Deep Neural Networks (DNN)
• 해결책 1-2: Gradient가 멀리까지 가도록 새로운 활성 함수를 쓰자
Rectified Linear Unit (ReLU) 사용  요즘에는 거의 모든 DNN은 ReLU 및 ReLU를
변형한 활성 함수 사용
https://www.tinymind.com/learn/terms/relu
23/165
심층 신경망: Deep Neural Networks (DNN)
• 과거에는 무엇이 문제였는가? 2) 구조가 너무 복잡하여 과적합 위험이 있음
은닉층과 은닉노드의 수 증가로 어떤 형태의 함수(회귀)나 분류 경계면(분류)도 찾아
낼 가능성이 있음
데이터의 숫자가 적을 때는 이 특징이 꼭 좋은 것만은 아님
 검은색을 찾으랬더니…
 초록색을 찾고 있네…
24/165
심층 신경망: Deep Neural Networks (DNN)
• 해결책 2: Drop-Out
부분 최적화의 합 ≠ 전체 최적화
학습 과정에서 일부러 특정 노드들에 연결된 가중치들은 업데이트를 하지 말자
어떤 노드를 업데이트 시키지 않을 것인가는 무작위로 그때그때 바꿔가며 결정하자
25/165
심층 신경망: Deep Neural Networks (DNN)
• 해결책 2: Drop-Out
부분 최적화의 합 ≠ 전체 최적화
우리네 일상도 별반 다르지 않습니다…
https://www.superookie.com/contents/58d3d99f8b129f44aa761811
http://www.yes24.com/24/goods/13144172
사람도 쉬고, hidden node도 쉬고…
26/165
심층 신경망: Deep Neural Networks (DNN)
• 과적합 방지에 성공한 High Capacity 모델의 효과
27/165
AGENDA
01
02
03
합성곱 신경망: CNN
순환신경망: RNN
오토인코더:Auto-Encoder
04 DNN 학습 시 고려사항
00 인공신경망: 개요
28/165
Convolutional Neural Network (CNN)
• 합성곱 신경망
Convolution 연산을 통해 이미지로부터 필요한 특질(feature)을 스스로 학습할 수 있는
능력을 갖춘 심층 신경망 구조
• 이미지 인식 종류
29/165
Convolutional Neural Network (CNN)
• 일반적 활용 사례: 보행자 인식 (자율 주행 자동차의 안전한 운행을 위해 필요)
30/165
Convolutional Neural Network (CNN)
• 일반적 활용 사례: 얼굴 및 표정 인식
누가 지각/결석을 했지? 수업이 얼마나 따분한가?
출석을 부르며 수업 시간을 때울 수 있었던 즐거움이 사라지는 건 비밀…
31/165
Convolutional Neural Network (CNN)
• 비즈니스 활용 사례: 재고 파악
https://www.slideshare.net/awskorea/amazon-deeplearningcasesandmlonaws
32/165
Convolutional Neural Network (CNN)
• 제조업 활용 사례: 불량 제품 및 원인 영역 탐지 (by landing.ai)
33/165
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
Convolutional Neural Network (CNN)
• CNN 작동 과정
일반적인 CNN은 Convolution 연산,Activation 연산(대부분 ReLU), Pooling 연산의 반
복으로 구성됨 (Feature Learning)
일정 횟수 이상의 Feature Learning 과정 이후에는 Flatten 과정을 통해 이미지가 1차원
의 벡터로 변환됨
35/165
CNN Basics: Image Representation
• Image Representation: 이미지를 어떻게 컴퓨터한테 숫자로 인식시킬 것인가?
누구의 눈일까요?
36/165
CNN Basics: Image Representation
• Image Representation: 이미지를 어떻게 컴퓨터한테 숫자로 인식시킬 것인가?
제 눈입니다…
37/165
CNN Basics: Image Representation
• 컬러 이미지는 3차원의Tensor로 표현됨:Width X Height X 3 (RGB)
2,247
1,685
38/165
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
CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
특정 속성을 탐지하는데 사용하는 matrix
https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 40/165
CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
특정 속성을 탐지하는데 사용하는 matrix
https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 41/165
CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
이슈: 한번에 한 칸씩 이동하면 너무 오래 걸리지 않을까?
해결책: Filter가 한번에 여러 칸을 이동하도록 허용하자 (Stride)
https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 42/165
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
CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
해결책: Padding (원래 이미지 테두리에 0의 값을 갖는 pad를 추가)
44/165
CNN Basics: Convolution
• Image Convolution (Filter, Kernel)
Convolution with padding
45/165
CNN Basics: Convolution
• Padding과 Stride 크기에 따른 Output Size
https://medium.com/machine-learning-bites/deeplearning-series-convolutional-neural-networks-a9c2f2ee1524 46/165
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
CNN Basics: Pooling
• Pooling
문제점: 고차원의 Tensor를 보다 Compact하게 축약해야 하지 않을까?
Pooling: 일정 영역의 정보를 축약하는 역할
https://pythonmachinelearning.pro/introduction-to-convolutional-neural-networks-for-vision-tasks/ 48/165
CNN Basics: Strided Convolution
• Strided Convolution
Average Pooling은 strided convolution의 특수한 케이스: 모든 weight가 1/n
0.25 0.25
0.25 0.25
Kernel matrix
49/165
CNN Basics: Flatten
• 평탄화: Flatten
2차원/3차원의 Matrix/Tensor 구조를 1차원의Vector로 변환하는 과정
https://www.superdatascience.com/convolutional-neural-networks-cnn-step-3-flattening/
50/165
Convolutional Neural Network (CNN)
• Power of deep layers in CNN
Layer의 수가 많아질수록 이미지 분류 성능이 증가하는 추세를 보임
51/165
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
Convolutional Neural Network (CNN)
• 대표적인 CNN 구조
Alexnet VGGNet
GoogLeNet ResNet 53/165
CNN Architecture 1:AlexNet
• AlexNet
54/165
CNN Architecture 1:AlexNet
• AlexNet
55/165
CNN Architecture 1:AlexNet
• AlexNet
224*224 크기의 이미지를 Input으로 사용
초기 단계에서는 큰 필터 사이즈와 Stride를 사용
상위 Layer로 갈수록 작은 필터 사이즈와 Stride를 사용
2개의 Fully connected layer 존재
파라미터 총 수: 60 million
56/165
CNN Architecture 2:VGGNet
• VGGNet
57/165
CNN Architecture 2:VGGNet
• VGGNet
AlexNet에 비해 단순하지만 깊은 구조
3 by 3 convolution with stride 1을 기본 연산으로 하며 중간 중간에 2 by 2 max
polling을 수행
파라미터 총 수: 138 million
58/165
CNN Architecture 3: GoogLeNet
• GoogLeNet
핵심은 Inception module
https://medium.com/coinmonks/paper-review-of-googlenet-inception-v1-winner-of-ilsvlc-2014-image-classification-c2b3565a64e7 59/165
CNN Architecture 3: GoogLeNet
• GoogLeNet
왜 한 입력 image에 한 종류의 filter size만 적용해야 하는가?
뭐가 잘 될지 모르니 1 by 1, 3 by 3, 5 by 5, 3 by 3 max pooling을 다 해보자!
60/165
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
CNN Architecture 3: GoogLeNet
• GoogLeNet
1 by 1 convolution의 역할: feature map의 depth를 감소시켜 연산량을 감소시킴
1 by 1 Conv. 연산량: (14 × 14 × 16) × (1 × 1 × 480) = 1.5M
5 by 5 Conv. 연산량: (14 × 14 × 48) × (5 × 5 × 16) = 3.8M
총 연산량: 1.5M + 3.8M = 5.3M << 112.9M
62/165
CNN Architecture 3: GoogLeNet
• GoogLeNet
63/165
CNN Architecture 4: ResNet
• 깊게, 깊게, 더 깊게!
https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 64/165
CNN Architecture 4: ResNet
• 깊게, 깊게, 더 깊게!
https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 65/165
CNN Architecture 4: ResNet
• 깊게, 깊게, 더 깊게!
https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 66/165
CNN Architecture 4: ResNet
• 핵심은 residual learning
67/165
CNN Architecture 4: ResNet
• Residual learning: skip connection
일정 시점마다 input x 자체를 skip connection을 통해 연결
 Gradient flow가 원활하게 이루어짐 (모델을 깊게 쌓는 것에 대한 부담이 줄어듬)
 Fully connected layer 제거 (모델의 파라미터 수를 줄임)
Plain net Residual net
68/165
CNN Architecture 5: DenseNet
• Standard Connectivity
• Resnet Connectivity
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 69/165
CNN Architecture 5: DenseNet
• Dense Connectivity
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 70/165
CNN Architecture 5: DenseNet
• Dense & Slim
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 71/165
CNN Architecture 5: DenseNet
• Forward Propagation
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 72/165
CNN Architecture 5: DenseNet
• Composite layer in Densenet
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 73/165
CNN Architecture 5: DenseNet
• Composite layer in Densenet with bottleneck layer
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 74/165
CNN Architecture 5: DenseNet
• Densenet
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 75/165
CNN Architecture 5: DenseNet
• Densenet의 장점 1: Gradient flow가 잘 된다
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 76/165
CNN Architecture 5: DenseNet
• Densenet의 장점 2: 파라미터의 수가 적다
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 77/165
CNN Architecture 5: DenseNet
• Densenet의 장점 3: Feature 수준의 다양성이 보장된다
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 78/165
CNN Architecture 5: DenseNet
• Densenet의 장점 3: Feature 수준의 다양성이 보장된다
https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 79/165
CNN Localization
• Image Localization
Class Activation Map (CAM) (Zhou et al., 2016)
 Localize significant areas based only on class label information
80/165
CNN Localization
• Image Localization
Class Activation Map (CAM)
 예측한 분류 범주에 가장 큰 영향을 끼치는 이미지의 영역을 추정
81/165
CNN Localization
• Image Localization
Class Activation Map (CAM)
 예측한 분류 범주에 가장 큰 영향을 끼치는 이미지의 영역을 추정
82/165
Class Activation Map
• CAM 작동 원리
 : 마지막 convolution layer unit k의 activation (x, y)는 공간적 좌표
Global average pooling 수행:
범주 c에 대한 softmax 함수 계산 전 입력값
 : Unit k의 범주 c에 대한 가중치
83/165
Class Activation Map
• CAM 작동 원리
범주 c에 대한 softmax 함수의 출력
Sc는 다음과 같이 표현될 수 있고, Mc를 c범주에 대한 class activation map으로 정의할
수 있음
84/165
Class Activation Map
• CAM 작동 원리
원본 이미지의 크기(I)와 feature map(F)의 크기가
다르기 때문에 (일반적으로 I > F) upsampling을 수행
85/165
AGENDA
01
02
03
합성곱 신경망: CNN
순환신경망: RNN
오토인코더:Auto-Encoder
04 DNN 학습 시 고려사항
00 인공신경망: 개요
86/165
RNN Basics: Sequence
• 순서(sequence)가 없는 인공신경망 구조
87/165
RNN Basics: Sequence
• 순서(sequence)가 있는 인공신경망 구조
88/165
RNN Basics: Sequence
• 순서(sequence)가 있는 인공신경망 구조 (벡터 표현)
89/165
RNN Basics: Sequence
• 순서(sequence)가 있는 인공신경망 구조
입력-출력에 따른 활용 사례
Image captioning
90/165
RNN Basics: Sequence
• NN structure with sequence
Input-Output structure
Machine translation/Dialog system
https://esciencegroup.com/2016/03/04/fun-with-recurrent-neural-nets-one-more-dive-into-cntk-and-tensorflow/
91/165
RNN Basics: Sequence
• NN structure with sequence
Input-Output structure
Text classification/Sentiment analysis
92/165
RNN Basics: Forward Path
• 기본 RNN(Vanilla RNN) 구조에서 정보의 흐름
f( )와 g( )는 활성 함수
93/165
RNN Basics: GradientVanishing/Exploding Problem
• RNN에서의 Backpropagation
f( )는 Tanh로 가정
Cost
94/165
RNN Basics: GradientVanishing/Exploding Problem
• RNN에서의 Backpropagation
일반적으로
f( )는 Tanh이고
95/165
RNN Basics: GradientVanishing/Exploding Problem
• RNN에서의 Backpropagation
96/165
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
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
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
RNN Basic: LSTM
• Cell state
LSTM 핵심 구성 요소, 아래 그림에서는 다이어그램의 상부를 관통하는 선(line)
100/165
RNN Basic: LSTM
• Step 1: 지금까지의 cell state에 저장된 정보 중에서 얼마만큼을 망각(forget)할 것
인지 결정
Forget gate: 이전 단계의 hidden state 와 현 단계의 입력 으로부터 0과 1사이
의 값을 출력 (Sigmoid 함수 사용)
 1: 지금까지 cell state에 저장된 모든 정보를 보존
 0: 지금까지 cell state에 저장된 모든 정보를 무시
101/165
RNN Basic: LSTM
• Step 2: 새로운 정보를 얼마만큼 cell state에 저장할 것인지를 결정
Input gate: 어떤 값을 업데이트 할 것인지 결정
Tanh layer를 사용하여 새로운 cell state의 후보 을 생성
102/165
RNN Basic: LSTM
• Step 3: 예전 cell state를 새로운 cell state로 업데이트
예전 cell state를 얼마만큼 망각할 것인가를 계산한 forget gate 결과값과 곱함
새로운 cell state 후보와 얼마만큼 보존할 것인가를 계산한 input gate 결과값을 곱함
두 값을 더하여 새로운 cell state 값으로 결정
103/165
RNN Basic: LSTM
• Step 4: 출력 값을 결정
이전 hidden state 값과 현재의 입력 값을 이용하여 output gate 값을 산출
Output gate 값과 현재의 cell state 값을 결합하여 현재의 hidden state 값을 계산
104/165
RNN Basic: LSTM
• LSTM 요약
105/165
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
RNNVariations: Bidirectional RNN
• Bidirectional RNN: 양방향 순환신경망
정보의 입력을 시간의 순방향과 역방향 관점에서 함께 처리
http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf 107/165
RNNVariations: Bidirectional RNN
• Deep-Bidirectional RNN
RNN의 hidden layer가 꼭 한 층일 필요가 있나? 더 쌓아보자!
http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf 108/165
RNN:Attention
• Attention
어느 시점 정보가 RNN의 최종 출력 값에 영향을 미치는지를 알려줄 수 있는 메커니즘
Source: (Raffel and Ellis, 2016) 109/165
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
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
RNN:Attention
• Luong attention
A variable-length alignment vector:
score is referred as a context-based function:
Context vector
112/165
AGENDA
01
02
03
합성곱 신경망: CNN
순환신경망: RNN
오토인코더:Auto-Encoder
04 DNN 학습 시 고려사항
00 인공신경망: 개요
113/165
Auto-Encoder
• Auto-Encoder (Auto-Associative Neural Network)
입력과 출력이 동일한 인공 신경망 구조
 Loss function:
114/165
Auto-Encoder
• Auto-Encoder (Auto-Associative Neural Network)
반드시 입력 변수의 수보다 은닉 노드의 수가 더 적은 은닉 층이 있어야 함
 이 층에서 정보의 축약이 이루어짐
115/165
Auto-Encoder
• Auto-Encoder (Auto-Associative Neural Network) 예시
숫자 2를 학습시키는 오토 인코더  5를 입력으로 제공하면 5가 산출되지 않을 가능
성이 높음 (Loss가 큼)
116/165
Denoising Auto-Encoder
• Auto-Encoder를 포함한 인공신경망의 단점
입력에 대한 약간의 변형(small perturbations)에도 모델이 민감하게 반응함
• 학습 과정에서 입력에 일부러 noise를 첨가해 보는 것은 어떨까?
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798
입력에
노이즈를
첨가해도
노이즈가
제거된
결과값이
나오도록
117/165
Denoising Auto-Encoder
• 노이즈는 어떻게 주어야 하나?
주로 Random Gaussian noise를 생성
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798 118/165
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
Convolutional Auto-Encoder
• CAE = 이미지 자체를 취급하는 오토인코더
https://blog.manash.me/implementing-pca-feedforward-and-convolutional-autoencoders-and-using-it-for-image-reconstruction-8ee44198ea55
120/165
Convolutional Auto-Encoder
• CAE가 꼭 원본 이미지를 복원하는 목적으로만 사용되는 것은 아님
Image segmentation
 입력: 이미지
 출력: 픽셀 단위의 범주 (도로, 자동차, 하늘, 인도 등)
https://github.com/arahusky/Tensorflow-Segmentation
121/165
Convolutional Auto-Encoder
• CAE가 꼭 원본 이미지를 복원하는 목적으로만 사용되는 것은 아님
Saliency detection
 입력: 이미지
 출력: 가장 집중해야 하는 중요한 영역
122/165
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
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
Convolutional Auto-Encoder
• Unpooling:
Max pooling을 사용할 경우 해당 위치를 기억해 두었다가 그 정보를 사용
http://jihochoi.blogspot.com/2018/01/fully-convolutional-network-for.html
125/165
Convolutional Auto-Encoder
• Transpose convolution
Convolution과 같은 연산을 통해 feature map의 크기를 키우는 과정
 Convolution
• Feature map: 3 by 3
• Padding: 1
• Stride: 1
• Feature map: 3 by 3
• Padding: 1
• Stride: 2
http://www.cvc.uab.es/people/joans/slides_tensorflow/tensorflow_html/layers.html
126/165
Convolutional Auto-Encoder
• Transpose convolution
• Feature map: 3 by 3
• Padding: 0
• Stride: 1
• Feature map: 3 by 3
• Padding: 0
• Stride: 1
• Feature map: 3 by 3
• Padding: 0
• Stride: 2
http://www.cvc.uab.es/people/joans/slides_tensorflow/tensorflow_html/layers.html
Convolution Transpose
Convolution
Transpose
Convolution
127/165
Convolutional Auto-Encoder
• (주의)Transpose convolution에서 padding의 의미
Padding = 1 in convolution: feature map 주변에 0의 값을 갖는 pad를 1pixel씩 덧댐
Padding = 0 in transpose convolution: feature map 주변에 0의 값을 갖는 pad를 (filter
width(or height)-1) 만큼 덧대는 것 (3 by 3 filter size의 경우 2 pixels씩 덧댐)
Padding = 1 in transpose convolution:feature map 주변에 0의 값을 갖는 pad를 (filter
width(or height)-1)-1 만큼 덧대는 것 (3 by 3 filter size의 경우 1 pixel씩 덧댐)
• Feature map: 3 by 3
• Padding: 0
• Stride: 0
• Feature map: 3 by 3
• Padding: 1
• Stride: 0
• Feature map: 3 by 3
• Padding: 0
• Stride: 1
• Feature map: 3 by 3
• Padding: 1
• Stride: 1
128/165
Convolutional Auto-Encoder
• Transpose convolution과 Unpooling의 차이
https://modulabs-biomedical.github.io/Learning_Deconvolution_Network_for_Semantic_Segmentation 129/165
AGENDA
01
02
03
합성곱 신경망: CNN
순환신경망: RNN
오토인코더:Auto-Encoder
04 DNN 학습 시 고려사항
00 인공신경망: 개요
130/165
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
Weight Initialization
• 전략 1: 전부 0으로 고정시켜보자
아래처럼 생긴 데이터셋에 대해서
iteration = 15,000, loss = 0.693, accuracy = 50%
https://towardsdatascience.com/weight-initialization-techniques-in-neural-networks-26c649eb3b78 132/165
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
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
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
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
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
Weight Initialization
• Weight initialization 기법과 Random distribution에 따른 gradient의 평균 크기
https://towardsdatascience.com/hyper-parameters-in-action-part-ii-weight-initializers-35aee1a28404 138/165
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
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
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
Gradient DescentVariations
• Variations of Gradient Descent
하용호. 자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다. (https://www.slideshare.net/yongho/ss-79607172) 142/165
Gradient DescentVariations
• Momentum
지금까지 왔던 방향을 반영하자(관성)
http://ruder.io/optimizing-gradient-descent/index.html#challenges
143/165
Gradient DescentVariations
• Nesterov Accelerated Gradient (NAG)
지금까지 왔던 방향으로 w를 먼저 움직인 뒤에
Gradient를 계산하자
http://cs231n.github.io/neural-networks-3/
144/165
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
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
Gradient DescentVariations
• RMSProp
Geoffrey Hinton교수의 강의 슬라이드에서 소개
이 방법론을 차용한 논문들이 참고문헌을 인용할 대상 논문이 없어서 강의 슬라이드를
참고문헌으로 제시함
Adadelta에서 gamma값을 0.9로 고정시킨 방법론 (Adadelta와 독립적으로 제안되어 둘
다 인정받음)
http://ruder.io/optimizing-gradient-descent/index.html#challenges
147/165
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
Regularization
• Cost function in machine learning
Loss function
 회귀(regression) 문제의 경우 Mean squared error를 주로 사용
 분류(classification) 문제의 경우 Cross Entropy (Negative log-likelihood)를 주로 사용
 GAN의 경우 KL-Divergence를 주로 사용
주어진 학습 데이터에
대해서 틀리지 말되
149/165
Regularization
• Cost function in machine learning
Regularization term
 lambda: hyperparameter, m: number of training examples
과도한 학습은 방지하자
(원리도 모르고 무작정 답만 외우지 말자)
150/165
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
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
Batch Normalization
• Batch Normalization:Algorithm
153/165
Batch Normalization
• Batch Normalization
주로 Non-linear 활성 함수 앞쪽에 배치가 되어 수행됨
https://m.blog.naver.com/laonple/220808903260
154/165
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
Batch Normalization
• Batch Normalization: 효과
상대적으로 학습이
빠르면서
최종 성능도
다소 향상됨
156/165
Data Augmentation
• 상황
내가 사용하고 싶은 모델은 파라미터의 수가 엄청나게 많은데 보유하고 있는 데이터의
수가 너무 적다
• 목적
현재 보유한 데이터를 어떻게 하면 그럴듯하게 뻥튀기(?)를 해서 모델 학습에 도움이
되게 할 수 있을까?
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 157/165
Data Augmentation
• 예시
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced
실제로 내가 가진 건
한 장의 이미지지만
모델을 학습 시킬 때는
20장인 것처럼…
158/165
Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Flip: 좌우/상하 반전
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 159/165
Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Rotation: 이미지 회전
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 160/165
Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Scale: 이미지 크기 조절
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 161/165
Data Augmentation
• 어떻게 하면 이미지 한 장을 모델에게 여러 장처럼 보여줄 것인가?
Crop: 이미지 일부 잘라내기
https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 162/165
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
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
165/165

More Related Content

What's hot

Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングAtsushi KOMIYA
 
ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)Hideo Terada
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거도형 임
 
[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개Donghyeon Kim
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장Sunggon Song
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기NAVER Engineering
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초Hyungsoo Ryoo
 
自習形式で学ぶ「DIGITS による画像分類入門」
自習形式で学ぶ「DIGITS による画像分類入門」自習形式で学ぶ「DIGITS による画像分類入門」
自習形式で学ぶ「DIGITS による画像分類入門」NVIDIA Japan
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요Byoung-Hee Kim
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가Yongha Kim
 
Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)yukihiro domae
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Preferred Networks
 
십분딥러닝_17_DIM(Deep InfoMax)
십분딥러닝_17_DIM(Deep InfoMax)십분딥러닝_17_DIM(Deep InfoMax)
십분딥러닝_17_DIM(Deep InfoMax)HyunKyu Jeon
 
動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)cvpaper. challenge
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催Preferred Networks
 
Dynamic Routing Between Capsules
Dynamic Routing Between CapsulesDynamic Routing Between Capsules
Dynamic Routing Between Capsulesharmonylab
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝Jinwon Lee
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 Yoon Sup Choi
 

What's hot (20)

Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
 
ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)ディープラーニングの2値化(Binarized Neural Network)
ディープラーニングの2値化(Binarized Neural Network)
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
 
[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개[기초개념] Recurrent Neural Network (RNN) 소개
[기초개념] Recurrent Neural Network (RNN) 소개
 
밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장밑바닥부터 시작하는딥러닝 8장
밑바닥부터 시작하는딥러닝 8장
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초
 
自習形式で学ぶ「DIGITS による画像分類入門」
自習形式で学ぶ「DIGITS による画像分類入門」自習形式で学ぶ「DIGITS による画像分類入門」
自習形式で学ぶ「DIGITS による画像分類入門」
 
순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요순환신경망(Recurrent neural networks) 개요
순환신경망(Recurrent neural networks) 개요
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 
Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)Graph convolution (スペクトルアプローチ)
Graph convolution (スペクトルアプローチ)
 
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
 
십분딥러닝_17_DIM(Deep InfoMax)
십분딥러닝_17_DIM(Deep InfoMax)십분딥러닝_17_DIM(Deep InfoMax)
십분딥러닝_17_DIM(Deep InfoMax)
 
動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)動画認識における代表的なモデル・データセット(メタサーベイ)
動画認識における代表的なモデル・データセット(メタサーベイ)
 
数式からみるWord2Vec
数式からみるWord2Vec数式からみるWord2Vec
数式からみるWord2Vec
 
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
PFP:材料探索のための汎用Neural Network Potential - 2021/10/4 QCMSR + DLAP共催
 
Dynamic Routing Between Capsules
Dynamic Routing Between CapsulesDynamic Routing Between Capsules
Dynamic Routing Between Capsules
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우 내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
내가 대학원에 들어왔을 때 알았더라면 좋았을 연구 노하우
 

Similar to Deep neural networks cnn rnn_ae_some practical techniques

Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning도형 임
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84Soukwon Jun
 
Deep learning의 이해
Deep learning의 이해Deep learning의 이해
Deep learning의 이해KwangPil Hong
 
180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pubJaewook. Kang
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래Joon Kim
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition준영 박
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Networkagdatalab
 
[Tf2017] day4 jwkang_pub
[Tf2017] day4 jwkang_pub[Tf2017] day4 jwkang_pub
[Tf2017] day4 jwkang_pubJaewook. Kang
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...Gyubin Son
 
[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_sparkNAVER D2
 
EveryBody Tensorflow module2 GIST Jan 2018 Korean
EveryBody Tensorflow module2 GIST Jan 2018 KoreanEveryBody Tensorflow module2 GIST Jan 2018 Korean
EveryBody Tensorflow module2 GIST Jan 2018 KoreanJaewook. Kang
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagationDea-hwan Ki
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝NAVER Engineering
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Korea, Sejong University.
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)Tae Young Lee
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)XAIC
 
180525 mobile visionnet_hanlim_extended
180525 mobile visionnet_hanlim_extended180525 mobile visionnet_hanlim_extended
180525 mobile visionnet_hanlim_extendedJaewook. Kang
 

Similar to Deep neural networks cnn rnn_ae_some practical techniques (20)

Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning
 
Final project v0.84
Final project v0.84Final project v0.84
Final project v0.84
 
Deep learning의 이해
Deep learning의 이해Deep learning의 이해
Deep learning의 이해
 
180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래
 
Nationality recognition
Nationality recognitionNationality recognition
Nationality recognition
 
Deep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural NetworkDeep Learning & Convolutional Neural Network
Deep Learning & Convolutional Neural Network
 
[Tf2017] day4 jwkang_pub
[Tf2017] day4 jwkang_pub[Tf2017] day4 jwkang_pub
[Tf2017] day4 jwkang_pub
 
Deep learning overview
Deep learning overviewDeep learning overview
Deep learning overview
 
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
[paper review] 손규빈 - Eye in the sky & 3D human pose estimation in video with ...
 
[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark[264] large scale deep-learning_on_spark
[264] large scale deep-learning_on_spark
 
EveryBody Tensorflow module2 GIST Jan 2018 Korean
EveryBody Tensorflow module2 GIST Jan 2018 KoreanEveryBody Tensorflow module2 GIST Jan 2018 Korean
EveryBody Tensorflow module2 GIST Jan 2018 Korean
 
03.12 cnn backpropagation
03.12 cnn backpropagation03.12 cnn backpropagation
03.12 cnn backpropagation
 
스마트폰 위의 딥러닝
스마트폰 위의 딥러닝스마트폰 위의 딥러닝
스마트폰 위의 딥러닝
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks Image net classification with deep convolutional neural networks
Image net classification with deep convolutional neural networks
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)
 
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)파이콘 한국 2019 튜토리얼 - LRP (Part 2)
파이콘 한국 2019 튜토리얼 - LRP (Part 2)
 
180525 mobile visionnet_hanlim_extended
180525 mobile visionnet_hanlim_extended180525 mobile visionnet_hanlim_extended
180525 mobile visionnet_hanlim_extended
 

Deep neural networks cnn rnn_ae_some practical techniques

  • 1. Deep Neural Networks: CNN, RNN,AE, and Some Practical Techniques 강필성 고려대학교 산업경영공학부 pilsung_kang@korea.ac.kr
  • 2. AGENDA 01 02 03 합성곱 신경망: CNN 순환신경망: RNN 오토인코더:Auto-Encoder 04 DNN 학습 시 고려사항 00 인공신경망: 개요 2/165
  • 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
  • 28. AGENDA 01 02 03 합성곱 신경망: CNN 순환신경망: RNN 오토인코더:Auto-Encoder 04 DNN 학습 시 고려사항 00 인공신경망: 개요 28/165
  • 29. Convolutional Neural Network (CNN) • 합성곱 신경망 Convolution 연산을 통해 이미지로부터 필요한 특질(feature)을 스스로 학습할 수 있는 능력을 갖춘 심층 신경망 구조 • 이미지 인식 종류 29/165
  • 30. Convolutional Neural Network (CNN) • 일반적 활용 사례: 보행자 인식 (자율 주행 자동차의 안전한 운행을 위해 필요) 30/165
  • 31. Convolutional Neural Network (CNN) • 일반적 활용 사례: 얼굴 및 표정 인식 누가 지각/결석을 했지? 수업이 얼마나 따분한가? 출석을 부르며 수업 시간을 때울 수 있었던 즐거움이 사라지는 건 비밀… 31/165
  • 32. Convolutional Neural Network (CNN) • 비즈니스 활용 사례: 재고 파악 https://www.slideshare.net/awskorea/amazon-deeplearningcasesandmlonaws 32/165
  • 33. Convolutional Neural Network (CNN) • 제조업 활용 사례: 불량 제품 및 원인 영역 탐지 (by landing.ai) 33/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
  • 40. CNN Basics: Convolution • Image Convolution (Filter, Kernel) 특정 속성을 탐지하는데 사용하는 matrix https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 40/165
  • 41. CNN Basics: Convolution • Image Convolution (Filter, Kernel) 특정 속성을 탐지하는데 사용하는 matrix https://towardsdatascience.com/applied-deep-learning-part-4-convolutional-neural-networks-584bc134c1e2 41/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
  • 45. CNN Basics: Convolution • Image Convolution (Filter, Kernel) Convolution with padding 45/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
  • 49. CNN Basics: Strided Convolution • Strided Convolution Average Pooling은 strided convolution의 특수한 케이스: 모든 weight가 1/n 0.25 0.25 0.25 0.25 Kernel matrix 49/165
  • 50. CNN Basics: Flatten • 평탄화: Flatten 2차원/3차원의 Matrix/Tensor 구조를 1차원의Vector로 변환하는 과정 https://www.superdatascience.com/convolutional-neural-networks-cnn-step-3-flattening/ 50/165
  • 51. Convolutional Neural Network (CNN) • Power of deep layers in CNN Layer의 수가 많아질수록 이미지 분류 성능이 증가하는 추세를 보임 51/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
  • 53. Convolutional Neural Network (CNN) • 대표적인 CNN 구조 Alexnet VGGNet GoogLeNet ResNet 53/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
  • 59. CNN Architecture 3: GoogLeNet • GoogLeNet 핵심은 Inception module https://medium.com/coinmonks/paper-review-of-googlenet-inception-v1-winner-of-ilsvlc-2014-image-classification-c2b3565a64e7 59/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
  • 62. CNN Architecture 3: GoogLeNet • GoogLeNet 1 by 1 convolution의 역할: feature map의 depth를 감소시켜 연산량을 감소시킴 1 by 1 Conv. 연산량: (14 × 14 × 16) × (1 × 1 × 480) = 1.5M 5 by 5 Conv. 연산량: (14 × 14 × 48) × (5 × 5 × 16) = 3.8M 총 연산량: 1.5M + 3.8M = 5.3M << 112.9M 62/165
  • 63. CNN Architecture 3: GoogLeNet • GoogLeNet 63/165
  • 64. CNN Architecture 4: ResNet • 깊게, 깊게, 더 깊게! https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 64/165
  • 65. CNN Architecture 4: ResNet • 깊게, 깊게, 더 깊게! https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 65/165
  • 66. CNN Architecture 4: ResNet • 깊게, 깊게, 더 깊게! https://icml.cc/2016/tutorials/icml2016_tutorial_deep_residual_networks_kaiminghe.pdf 66/165
  • 67. CNN Architecture 4: ResNet • 핵심은 residual learning 67/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
  • 69. CNN Architecture 5: DenseNet • Standard Connectivity • Resnet Connectivity https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 69/165
  • 70. CNN Architecture 5: DenseNet • Dense Connectivity https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 70/165
  • 71. CNN Architecture 5: DenseNet • Dense & Slim https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 71/165
  • 72. CNN Architecture 5: DenseNet • Forward Propagation https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 72/165
  • 73. CNN Architecture 5: DenseNet • Composite layer in Densenet https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 73/165
  • 74. CNN Architecture 5: DenseNet • Composite layer in Densenet with bottleneck layer https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 74/165
  • 75. CNN Architecture 5: DenseNet • Densenet https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 75/165
  • 76. CNN Architecture 5: DenseNet • Densenet의 장점 1: Gradient flow가 잘 된다 https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 76/165
  • 77. CNN Architecture 5: DenseNet • Densenet의 장점 2: 파라미터의 수가 적다 https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 77/165
  • 78. CNN Architecture 5: DenseNet • Densenet의 장점 3: Feature 수준의 다양성이 보장된다 https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 78/165
  • 79. CNN Architecture 5: DenseNet • Densenet의 장점 3: Feature 수준의 다양성이 보장된다 https://pdfs.semanticscholar.org/c3d9/26a85d85a83126f405ad40ff453611148c15.pdf 79/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
  • 86. AGENDA 01 02 03 합성곱 신경망: CNN 순환신경망: RNN 오토인코더:Auto-Encoder 04 DNN 학습 시 고려사항 00 인공신경망: 개요 86/165
  • 87. RNN Basics: Sequence • 순서(sequence)가 없는 인공신경망 구조 87/165
  • 88. RNN Basics: Sequence • 순서(sequence)가 있는 인공신경망 구조 88/165
  • 89. RNN Basics: Sequence • 순서(sequence)가 있는 인공신경망 구조 (벡터 표현) 89/165
  • 90. RNN Basics: Sequence • 순서(sequence)가 있는 인공신경망 구조 입력-출력에 따른 활용 사례 Image captioning 90/165
  • 91. RNN Basics: Sequence • NN structure with sequence Input-Output structure Machine translation/Dialog system https://esciencegroup.com/2016/03/04/fun-with-recurrent-neural-nets-one-more-dive-into-cntk-and-tensorflow/ 91/165
  • 92. RNN Basics: Sequence • NN structure with sequence Input-Output structure Text classification/Sentiment analysis 92/165
  • 93. RNN Basics: Forward Path • 기본 RNN(Vanilla RNN) 구조에서 정보의 흐름 f( )와 g( )는 활성 함수 93/165
  • 94. RNN Basics: GradientVanishing/Exploding Problem • RNN에서의 Backpropagation f( )는 Tanh로 가정 Cost 94/165
  • 95. RNN Basics: GradientVanishing/Exploding Problem • RNN에서의 Backpropagation 일반적으로 f( )는 Tanh이고 95/165
  • 96. RNN Basics: GradientVanishing/Exploding Problem • RNN에서의 Backpropagation 96/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
  • 105. RNN Basic: LSTM • LSTM 요약 105/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
  • 109. RNN:Attention • Attention 어느 시점 정보가 RNN의 최종 출력 값에 영향을 미치는지를 알려줄 수 있는 메커니즘 Source: (Raffel and Ellis, 2016) 109/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
  • 113. AGENDA 01 02 03 합성곱 신경망: CNN 순환신경망: RNN 오토인코더:Auto-Encoder 04 DNN 학습 시 고려사항 00 인공신경망: 개요 113/165
  • 114. Auto-Encoder • Auto-Encoder (Auto-Associative Neural Network) 입력과 출력이 동일한 인공 신경망 구조  Loss function: 114/165
  • 115. Auto-Encoder • Auto-Encoder (Auto-Associative Neural Network) 반드시 입력 변수의 수보다 은닉 노드의 수가 더 적은 은닉 층이 있어야 함  이 층에서 정보의 축약이 이루어짐 115/165
  • 116. Auto-Encoder • Auto-Encoder (Auto-Associative Neural Network) 예시 숫자 2를 학습시키는 오토 인코더  5를 입력으로 제공하면 5가 산출되지 않을 가능 성이 높음 (Loss가 큼) 116/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
  • 122. Convolutional Auto-Encoder • CAE가 꼭 원본 이미지를 복원하는 목적으로만 사용되는 것은 아님 Saliency detection  입력: 이미지  출력: 가장 집중해야 하는 중요한 영역 122/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
  • 125. Convolutional Auto-Encoder • Unpooling: Max pooling을 사용할 경우 해당 위치를 기억해 두었다가 그 정보를 사용 http://jihochoi.blogspot.com/2018/01/fully-convolutional-network-for.html 125/165
  • 126. Convolutional Auto-Encoder • Transpose convolution Convolution과 같은 연산을 통해 feature map의 크기를 키우는 과정  Convolution • Feature map: 3 by 3 • Padding: 1 • Stride: 1 • Feature map: 3 by 3 • Padding: 1 • Stride: 2 http://www.cvc.uab.es/people/joans/slides_tensorflow/tensorflow_html/layers.html 126/165
  • 127. Convolutional Auto-Encoder • Transpose convolution • Feature map: 3 by 3 • Padding: 0 • Stride: 1 • Feature map: 3 by 3 • Padding: 0 • Stride: 1 • Feature map: 3 by 3 • Padding: 0 • Stride: 2 http://www.cvc.uab.es/people/joans/slides_tensorflow/tensorflow_html/layers.html Convolution Transpose Convolution Transpose Convolution 127/165
  • 128. Convolutional Auto-Encoder • (주의)Transpose convolution에서 padding의 의미 Padding = 1 in convolution: feature map 주변에 0의 값을 갖는 pad를 1pixel씩 덧댐 Padding = 0 in transpose convolution: feature map 주변에 0의 값을 갖는 pad를 (filter width(or height)-1) 만큼 덧대는 것 (3 by 3 filter size의 경우 2 pixels씩 덧댐) Padding = 1 in transpose convolution:feature map 주변에 0의 값을 갖는 pad를 (filter width(or height)-1)-1 만큼 덧대는 것 (3 by 3 filter size의 경우 1 pixel씩 덧댐) • Feature map: 3 by 3 • Padding: 0 • Stride: 0 • Feature map: 3 by 3 • Padding: 1 • Stride: 0 • Feature map: 3 by 3 • Padding: 0 • Stride: 1 • Feature map: 3 by 3 • Padding: 1 • Stride: 1 128/165
  • 129. Convolutional Auto-Encoder • Transpose convolution과 Unpooling의 차이 https://modulabs-biomedical.github.io/Learning_Deconvolution_Network_for_Semantic_Segmentation 129/165
  • 130. AGENDA 01 02 03 합성곱 신경망: CNN 순환신경망: RNN 오토인코더:Auto-Encoder 04 DNN 학습 시 고려사항 00 인공신경망: 개요 130/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
  • 142. Gradient DescentVariations • Variations of Gradient Descent 하용호. 자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다. (https://www.slideshare.net/yongho/ss-79607172) 142/165
  • 143. Gradient DescentVariations • Momentum 지금까지 왔던 방향을 반영하자(관성) http://ruder.io/optimizing-gradient-descent/index.html#challenges 143/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
  • 153. Batch Normalization • Batch Normalization:Algorithm 153/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
  • 156. Batch Normalization • Batch Normalization: 효과 상대적으로 학습이 빠르면서 최종 성능도 다소 향상됨 156/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
  • 158. Data Augmentation • 예시 https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced 실제로 내가 가진 건 한 장의 이미지지만 모델을 학습 시킬 때는 20장인 것처럼… 158/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