Download presentation
Presentation is loading. Please wait.
1
Deep Learning Basics Junghwan Goh (Kyung Hee University)
“Debugger” Deep Learning Basics Junghwan Goh (Kyung Hee University) nd Deep Neural Network Workshop
2
딥러닝이 대세라는데… 신경망 (1990) 3만개가 넘는 뉴스 기사 딥러닝 (Today) 딥러닝 (2013)
3
딥러닝이 대세라는데…
4
딥러닝 우리도 할 수 있다 오늘 워크샵이 끝나면 당신도 할 수 있다! 27년 전에는 이랬지만… - 1991년 11월 연합뉴스
이번에 한국통신 연구개발단 韓一松박사팀이 개발한 신경망칩은 20개의 뉴런소자에 6백40개의 연결고리를 갖고 처리속도가 10억CPS(초당 연결고리연산수)에 달하는 것으로 지난 10월말 시제품이 제작됐다. … 개발이 끝난 연결고리 6백40개짜리는 지능이 ‘거머리와 지렁이의 중간’정도이고 금년말까지 제작될 3천5백개짜리는 ‘지렁이’ 수준이며 내년 4월까지 개발될 칩은 ‘지렁이와 파리의 중간’ 정도가 되는데 현재 이 분야에서 세계 최고수준인 日本의 경우도 뉴런 5백개, 연결고리 3만개정도로 이 수준에 속한다. 신경망칩은 △칩당 6백-1천개의 연결고리규모로는 인쇄체인식, 자연음합성, 로봇제어 △칩당 3천5백-5천개의 연결고리로는 무인차량, 음성인식, 필기체인식 △칩당 1만개 이상의 연결고리로는 자동번역, 고선명연상압축, 지능형컴퓨터등에 적용할 수 있을 것으로 예상되고 있다. 오늘 워크샵이 끝나면 당신도 할 수 있다! - 1991년 11월 연합뉴스
5
기본 아이디어 인공지능을 만들자 뇌를 모방하자 컴퓨터로
Three-dimensional network of Drosophila brain hemisphere, R. Mizutani et. al. 인공지능을 만들자 뇌를 모방하자 컴퓨터로
6
신경망의 구조
7
소프트웨어로 구현
8
이 나뭇가지와 인공지능이 무슨 관련이… 조금 비슷한 예: NAND게이트만 있으면 잘 조합해서 CPU를 만들 수 있다
그리고 만들었다
9
Mark 1 perceptron (1957) The Mark I Perceptron machine was the first implementation of the perceptron algorithm. The machine was connected to a camera that used 20×20 cadmium sulfide photocells to produce a 400-pixel image. The main visible feature is a patchboard that allowed experimentation with different combinations of input features. To the right of that are arrays of potentiometers that implemented the adaptive weights.
10
(single layer) Perceptron
문제: 크기와 가축화 두 개 변수가 주어졌을 때 개와 고양이를 구분하시오 퍼셉트론을 이용한 풀이: = 이고, 이 때 적절한 wi (weight)와 b(bias)를 찾는다. 어떻게? 1. 아무 값으로나 초기화 한다 2. 데이터를 대입해 f(x)를 구하고 weight값을 변경해 나간다 3. 에러가 주어진 값보다 작아질 때 까지 반복.
11
(single layer) Perceptron
문제: 크기와 가축화 두 개 변수가 주어졌을 때 개와 고양이를 구분하시오 ↓평면의 방정식 퍼셉트론을 이용한 풀이: f(x) = 𝚯[w1x1 + w2x2 + b] 1 if ≥ 0 0 if < 0 x1 w1 𝚺wixi w1 = -1 w2 = -1 b = 1.25 w2 x2 데이터를 대입해 오류가 가장 작아지는 Weight와 bias를 알아냄 w1 = -1 w2 = -1 b = 0.7 b
12
그런데 간단한 문제를 풀 수 없다 f(x) = 𝚯[w1x1 + w2x2 + b] XOR 문제 같으면 0 다르면 1
3차원 공간에서 평면을 아무리 회전시켜도 z=0과 만나는 접선은 언제나 직선 비선형이 필요하다 .. and the First AI Winter came in 70’s
13
Multi layer perceptron
입력층 은닉층 출력층 활성화 함수 (activation function) 특정 값 이상이면 1 아니면 0 완화해서 sigmoid 변형해서 tanh, ReLU, ELU, … 비선형 함수를 사용 x1 w11 w12 σ1 은닉 층을 추가하면 더 일반적인 문제들을 풀 수 있다 - single layer로 못 풀던 문제가 풀림 은닉 층이 2개 이상 = Deep Learning w21 x2 w22 σ2 w01 w02 1 은닉 층의 노드의 갯수를 조정할 수 있다 은닉 층을 몇 개 쌓을지, 몇 개 노드를 사용할 지, 각 노드의 활성화 함수를 어떻게 결정할지, 그 외 등등에 따라 신경망의 성질이 달라진다 – Hyperparameter tuning
14
XOR문제 풀기 𝚯[ 𝚯(x1 - x2 - 0.5) + 𝚯(-x1 + x2 - 0.5) - 0.5 ]
z1 1 -1 -1 x2 1 z2 1 := Z1 -0.5 -0.5 -0.5 XOR = ( X1 and not X2 ) OR ( not X1 and X2 ) 1 1 := Z2
15
Universal approximation theorem
1개의 은닉층을 가진 신경망을 이용하면 어떠한 함수든 근사시킬 수 있다 “The standard multilayer feed-forward network with a single hidden layer, which contains finite number of hidden neurons, is a universal approximator among continuous functions on compact subsets of Rn, under mild assumptions on the activation function." 단, 적절한 갯수의 노드가 주어져야 함.
16
성능 평가하기 가장 기초적인 평가 기준: accuracy = (맞춘 갯수)/(전체 갯수) 고에너지에서 자주 사용되는 기준:
Efficiency = TPR = (signal 맞춘 갯수)/(signal전체) Background rejection = 1-FPR = 1-(background를 signal로 오인한 갯수)/(background 전체) TPR은 높게, FPR은 낮게 -> ROC curve (Receiver Operating Characteristic)
17
Overfitting 과적합 너무 많은 변수를 사용해서 입력 데이터 각각을 학습
학습에 사용한 데이터만 잘 맞추는 결과를 만들어 냄 결국 실전에 적용했을 때 오히려 정확도가 떨어짐 너무 적게 주면 underfitting – 적절한 변수의 갯수를 어떻게 정할 것인가? 딥러닝의 경우는 단순하지 않다 – 여러 해결책이 제안됨 ex: dropout 딥러닝에서 노드의 수에 비해 데이터가 적을 때는 계속해서 문제가 된다.
18
Overfitting Vanishing gradient Sloooow 은닉 층을 많이 넣으면 profit?
최근 여러 문제가 해결되어 은닉 층을 많이 넣을 수 있게 됨
19
무엇이 바뀌었나? Big data Convolutional NN Initial condition
2006 Rebranding Neural Network → Deep Learning Initial condition Activation functions Regularization techniques Robust optimizers … and more: Multi layer with Backpropagation Big data High performance computing GPU acceleration Software frameworks Educational resources
20
Backpropagation 어떻게 “학습” 할 것인가? 오차가 줄어드는 방향으로 Weight를 바꿔가면서 반복한다…
오차 → cost function = loss ftn. = error ftn. 평균제곱오차 ε = ½𝚺k(yk-tk)2 크로스 엔트로피 ε = - 𝚺k tk log(yk) 어떻게 “학습” 할 것인가? 오차가 줄어드는 방향으로 Weight를 바꿔가면서 반복한다… 단점 : 최소점을 찾기 힘들어 학습이 잘 되지 않음 해결책: Gradient decent에서 미분을 해 가장 기울기가 큰 방향으로 이동 하게 되는데, 이 때 각 레이어마다 미분 공식을 직접 사용, 체인룰을 적용 자주 사용하는 activation function들에 대해서 의외로 공식이 간단해진다! Gradient에 따라 변수를 얼마나 변화시킬지 쉽게 계산된다. Learning rate η를 조정할 수 있다
21
Choice of activation function
Backpropagation을 위해 미분 가능한 activation function을 사용해야 함 대부분 은닉층에서 ReLU를 사용하면 됨. 먼저 적용 해 보고 다른 것을 시도. Sigmoid는 전통적으로 많이 사용되어 왔지만 vanishing gradient를 주기 쉬움
22
Stochastic Gradient Descent
SGD: 무작위로 데이터를 일부 골라 낸 다음 Grad를 계산 계산을 위해 몇 개 데이터를 사용할까? 전체 다 이용: 한 스텝 계산이 오래 걸림 하나씩 사용: 수렴하지 않을수도 있음 몇 개씩 모아서 사용 mini batch 여기에 learning rate를 스텝마다 조절, 이전 스텝에서의 변화량(운동량)을 고려해 더 잘 동작하게 함 SGD Learning rate를 adaptive하게 ADAM Momentum고려 가장 보편적이고 우수한 성능 일단 이거 쓰세요
23
과적합 해결하기 하지만 많은 데이터 확보로부터 시작! 기본: 데이터를 훨씬 많이 준비한다.
도움을 주는 해결책들이 많이 알려짐 예: Dropout 학습 중 노드를 일정 확률로 비활성화 시킨다 모델 적용시에는 dropout을 하지 않는다 하지만 많은 데이터 확보로부터 시작!
24
데이터 늘리기 데이터는 유한한데 고려할 변수는 많을 때 어떻게 해야 할까? 답: data augmentation
더 robust한 학습 결과를 얻을 수 있음 Augmentation하지 않을 때 문제: 글자 인식에서 색칠 된 부분이 어느 쪽으로 치우쳤느냐를 학습 Noise에 심각하게 영향을 받을 수 있음
25
소프트웨어 프레임워크 시중에 많은 소프트웨어가 등장 해 경쟁하고 있다. 어느 것을 선택 할 것인가?
빨리 배워서 적용 할 수 있는 것 = 예제가 많은 것 = 남들이 많이 쓰는 것 그냥 내가 쓰고 싶은 것 딥러닝을 사용하고 싶은 물리학자에게 Keras는 좋은 선택 Keras는 일반적인 사용자를 위한 인터페이스, 실제 백엔드는 TensorFlow가 가장 잘 지원됨 다른 조합도 가능함 (ex. Keras + mxnet)
26
… neural networks are the second best way of doing just about anything …
– John Denker
27
VGG numpy ReLU momentum Stochastic gradient decent Neural Network pooling classification Generative adversarial network dropout python sigmoid keras Softmax Recursive neural network Back propagation ADAM Batch normalization pytorch stride LeNet recall Recurrent neural network Convolutional neural network Loss function mxnet Tensorflow Learning rate Activation function perceptron regression accuracy overtraining
Similar presentations