2. • 대상
• 인공지능을 감 잡아보고 싶은 개발자.
• 인공지능으로 무언가 구현해야 하는 개발자.
• 인공지능 서비스를 고민하는 기획자, 경영자
• 인공지능의 심오한 이론을 얘기하지 않습니다. 실제 구동되는 코
드를 통하여 어떤 것인지 감잡고, 다음 액션을 꾀할 수 있는 것을
목적으로 합니다.
• 바이블도 아니고, 최신도 아니고, 요약도 아니고, 순수 진실도 아
닙니다.
대상, 내용, 목적, 주의
4. 2개의 상자가 있다.
• 익은 것
• 안익은 것
사람이 분류해야 한다.
2개 상자의 것들을 보고 감 잡고 분류한다.
귤 익은 것 분류하기 - 사람
5. 로봇을 위한 프로그램을 작성해야 한다.
• ‘xxx하면 우측 상자에, 그렇지 않은 경우 좌측 상자에’
감잡고 분류할 때 사용한 기준을 하드코딩해야 한다.
귤 익은 것 분류하기 - 로봇
6. 2개 상자의 것을 보고 삼았던 기준은 크기
큰 것은 익은 것, 작은 것은 안 익은 것.
대충 있었던 크기를 측정하고 그것을 하드 코딩.
• ‘if(size > 7.5) then …’
귤 익은 것 분류하기 - 로봇
크다작다
기준
익은거안익은거
17. 입력을 받아 몇개의 그룹으로 분류한다.
귤은 내가 기준을 찾았다. (직접 코딩한 알고리즘)
사과는 기계가 기준을 찾았다.(기계가 찾은 알고리즘)
하지만 둘다 목적과 쓰임새는 동일.
분류기
분류기크기 익었다 분류
18. • 분류를 위해 ‘크기를 재서 기준 크기를 가지고 구별’ ←model
• 학습 시키려면 사과 2상자가 필요. 익은거 상자, 안익은거 상자.
←training set
• 여러번 반복해서, ← iteration, step, epoch
• 원하는 기준 크기를 찾아냄. ← learning, training
• 그리고 구분 안된 바구니에 적용. ← test set, evaluation set
용어
20. 사과 분류를 학습한 기준으로 적용했더니, 결과가 않좋다.
Training set으로 100% 하더라도, test set은 결과가 안좋을 수 있다.
사과 분류 적용
21. 분류해 놓은 것을 확인해 보니 크기가 큰데도, 색깔이 덜 빨깐 사과
가 있다.
사과 분류 적용
크다작다
안익은거 익은거
45. 선 조정 예
조정 값 = 오차 * 입력값 * 학습율
조정된 크기 비중 = 이전 크기 비중 – ( 1 x 9 x 0.1 )
조정된 색깔 비중 = 이전 색깔 비중 – ( 1 x 1 x 0.1 )
조정된 기준값 = 이전 기준값 – ( 1 x 1 x 0.1 )
46. 선 조정 예
조정 값 = 오차 * 입력값 * 학습율
크기 비중 = 1 – ( 1 x 9 x 0.1 ) = 0.1
색깔 비중 = 1 – ( 1 x 1 x 0.1 ) = 0.9
기준값 = -3.5 – ( 1 x 1 x 0.1 ) = -3.6
1x1 + 1x2 -3.5 = 0 0.1x1 + 0.9x2 -3.6 = 0
47. 선의 학습 실 예
https://www.youtube.com/watch?v=tYxkIOTdeu8
48. 선의 학습 실 예
https://www.youtube.com/embed/V2MMyk7bdWY
49. 실제로 저 간단한 로직으로 선을 찾을 수 있다.
학습할 수 있다.
선을 찾을 수 있다
50. • 크기에다가 색깔을 추가하니 더 잘된다. ← 크기, 색깔을 입력, 특
질(feature)라 한다.
• 각 사과 마다 2개 값의 특질이 있다. 크기 3, 색깔 2 ← 입력 벡터
혹은 특질 벡터라 한다.
• 사과 예의 경우 2개 특질(크기, 색깔)을 사용했다. ← 입력 벡터가
2차원.
• 학습을 한다는 건 선을 구성하는 3개의 값을 찾는 것이다.
• 각 입력에 곱해지는 w1, w2들을 가중치(weight)라 칭한다.
용어
52. 귤의 예에서, 그 기준의 값에
따라 오차의 크기가 결정된다.
결국 학습의 목표는 오차를
최소로, 혹은 오차함수의 값
이 최소가되는 w를 찾는것.
비용 함수는 모델을 구성하는
가중치(w)의 함수이다.
예에서의 기준값에 의해 발생
하는 오차의 정도.
비용 함수(Cost Function)
54. 오차평면에서 공을 올려 놓았을 때 공이 굴러가는 방향(오차가
적어지는 방향)으로 w를 조정한다.
경사 하강법(Gradient Descent)
경사
55. 경사하강법은 비용함수를 구하고, 이를 각 weight 별로 편미분하면
각 weight 별로 수정할 다음 값을 구할 수 있다. 그렇다고 한다.
선형 모델(w1x1 + w2x2 = b)에서는 경사하강법의 결과가 직관적으
로 설명했던 방법과 동일하다.
결국 사과예에서 학습한 방법은 경사하강법을 사용한 것이다.
사과 예에서 학습방법
63. • 입력 차원을 늘린다.(사과 예)
• 입력을 비선형 변환하여 선형분리 가능하도록 한다.
• 혹은 MLP
선형 분리 불가 문제의 해결법
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
64. 입력과 출력 사이에 층이 더 있다.
개별 perceptron의 결과를 다음 층의 입력으로 사용하고 결과적으
로 선형 분리의 제약을 극복한다.
MLP(Multi Layer Perceptron)
http://docs.opencv.org/2.4/modules/ml/doc/neural_networks.html
65. 1개의 퍼셉트론은 1개의 선형 분리를 할 수 있다.
퍼셉트론의 결과를 다른 퍼셉트론의 입력으로 하면 여러개의 선으
로 분리를 할 수 있다.
퍼셉트론의 능력
https://www.wikipendium.no/TDT4137_Cognitive_Architectures
67. 이미지를 구성하는 pixel의 각 값으로 구성된 입력벡터를 NN의 입
력으로 한다.
그리고 학습시 해당 출력 노드만 1로 하고, 나머지는 0으로 학습.
test 시에는 출력 노드중 최대 값을 가진 것으로 인식.
숫자 인식의 예
https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional
-neural-networks-f40359318721#.ylp7hd52a
http://neuralnetworksanddeeplearning.com/chap1.html
84. • DNN은 함수 근사화 능력이 있다.
• 입출력 쌍을 계속 제공하여 DNN내부의 웨이트를 업데이트 한다.
• 이를 위해 내부적으로 BP와 GD 알고리즘을 사용.
• 충분한 입출력 데이터와 컴퓨팅 파워가 필요.
• 이를 반복하여 함수를 근사화하는 것을 DNN의 학습, Deep
Learning이라 한다.
BP(Back Propagation), GD(Gradient Descent)
딥러닝
86. • 예전에는 사람 손으로 불을 줄이고, 시간을 봐서 뜸을 들였다.
• 지금은 인공지능 밥통이 알아서 한다.
• 사람 손이 아닌 기계가 알아서 하면 인공지능이다.
• 전문가의 지식을 직접 하드코딩 할 수도 있고(귤의 예 같이), 데이
터에서 로직을 찾을 수 있다(사과의 예 같이).
인공지능(AL; Artificial Intelligence)
87. • 인공지능의 한 분야.
• 데이터에서 가치 찾아내는 방법
• 수 많은 방법이 있다.
• SVM, 의사결정트리, Random Forest, Bayesian, K-Means Clustering, K-NN,
Neural Network
머신 러닝(ML; Machine Learning)
88. • 신경망을 사용한 머신러닝의 한 방법
• 신경망의 은닉층이 많아서(deep) Deep Learning이라 부른다.
딥 러닝(DL; Deep Learning)
90. DNN은 사실 기존 NN과 다른게 없다.
AI, 기계학습에 대한 엄청난 기대가 20년 전 쯤에 있었지만 엄청난
계산량의 필요로 인해 결과를 보이지 못했고, 기대만큼의 실망이
있었다.
최근 Big(저장공간, 컴퓨팅 파워)덕분에 압도적인 성능을 보임.
실망했던 용어 대신 붐을 일으키기 위한 용어이다.
신경망과 심층신경망
91. 인간이 고안한 알고리즘이건, 기계가 학습한 알고리즘이건 어떤
기계가 판단해서 처리하면 AI라 한다.
AI 밥통, AI 세탁기, 자동주행 자동차.
단지 기계가 학습한 경우를 기계학습이라 한다.
그리고 요즘 신경망의 압도적인 성능으로 기계학습의 대부분은 신
경망을 사용한다.
그래서, 그냥 AL = ML = DL 라고 부른다. 맞는 말은 아니지만.
AI, ML, DL
94. • 가장 많이 사용하고 있는 ML 프레임웤
• 실제 실행되는 코어와 연산을 정의하고 요청하는 front end.
ML 프레임웤
https://www.slideshare.net/JenAman/large-scale-deep-lear
ning-with-tensorflow?from_action=save
96. • Core와의 세션을 생성하고, 그래프와 데이타를 전달하여 연산을
실행한다.
• 실제 연산은 sess.run()을 호출할 때 실행된다.
세션 생성, 연산 실행
sess.run(y, feed_dict={x: batch_x, y: batch_y})
97. • Constant : 상수. 변하지 않는 값.
• Variable : 변수. 업데이트 대상.
• Placeholder : 데이터.
3가지 타입
W = tf.
Variab
le(tf.ra
ndom_
normal
([3, 2])
)
b = tf.Variable(tf.random_normal([2, 1]))
X = tf.placeholder(tf.float32, [None, 3])
W = tf.Variable(tf.random_normal([3, 2]))
b = tf.Variable(tf.random_normal([2, 1]))
98. • 3개 정의 + 실행
• 모델 정의 : NN 모델 정의.
• Cost 함수
• Optimizer
TensorFlow의 딥러닝 코드 구조
모델 정의(출력 계산 방법)
Optimizer 정의(Cost함수
최소화 방법)
Cost 함수 정의(원하는 바)
실행
100. • MSE(Mean Squared Error)
• CE(Cross Entropy)
• KL-Divergence
• MLE(Maximum Likelihood Estimation)
Cost Function 종류
101. • 오차에 대하여 w를 업데이트 시키는 알고리즘들.
• GD(Gradient Descent)
• Batch GD
• Mini-Batch GD
• SGD(Stochastic GD)
• Momentum
• AdaGrad
• AdaDelta
• Adam
• RMSprop
Optimizer 종류
102. • DropOut
• BN(Batch Normalization)
• Regularization
• Data Augmentation
Overfitting 방지법 종류
https://en.wikipedia.org/wiki/Overfitting
103. • sigmoid ( = logistics)
• Tanh
• ReLU
• Leaky ReLU
Activation Function 종류
https://stats.stackexchange.com/questions/115258/comprehensive-list-of-
activation-functions-in-neural-networks-with-pros-cons
105. • activation function중의 하나.
• 최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의
값으로 나타낸다.
• 확률 처럼 표현된다.
SoftMax
http://www.jianshu.com/p/cad5567aeb58
106. • 출력된 값과 원하는 값과의 차이를 가지고 그 전의 w를 값들을 변
경하는 알고리즘.
• 뒤에서부터 그 오차의 값이 전파된다는 이름.
• 실제 변경되는 값의 크기는 GD로 결정됨.
BackPropagation
108. • Convolution filter와 pooling을 반복.
• 이후 일반 DNN에 적용.
CNN(Convolutional NN) 구조
https://sites.google.com/site/nttrungmtwiki/home/it/deep-learning/convolution-neural-network/underst
anding-convolutional-neural-networks-for-nlp
109. 사람눈에는 특정 모양에 반응하는 신경세포들이 있다.
이를 구현한 가장 간단한 방법이 convolution filter이다.
Convolution Filter
https://developer.apple.com/library/content/documentation/Performance/Conceptual/vImage/Convoluti
onOperations/ConvolutionOperations.html
110. 필터 모양의 자극이 있으면 그 결과가 최대가 된다.
필터 모양이 있는 지 찾아낸다.
Convolution Filter - 의미
http://www.kdnuggets.com/2016/08/brohrer-convolutional-neural-networks-explanation.html
111. 필터 적용 시의 이동 칸 수.
보통은 1.
Convolution Filter - Stride
http://cs231n.github.io/convolutional-networks/
stride 1 stride 2
112. 필터 특성상 이미지가 작아지는 것을 방지하기 위해 원 이미지를
키우는 것.
Convolution Filter - Padding
http://blog.csdn.net/tianzhaixing2013/article/details/64922396
119. 판별기(discriminator)의 목적
generatorZ G discriminator D_gene
X discriminator D_real
진짜 이미지(X)에 대한
결과(D_real)은 1(진짜)
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 0(가짜)
120. 판별기(discriminator)의 비용함수
generatorZ G discriminator D_gene
X discriminator D_real
진짜 이미지(X)에 대한
결과(D_real)은 1(진짜)
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 0(가짜)
D_real은 1이면 좋은 거고, D_gene은 0이면 좋은 거고
loss_D = log(D_real) + log(1-D_gene)
122. 생성기(generator)의 비용함수
generatorZ G discriminator D_gene
X discriminator D_real
D_gene이 1이면 좋은 거
loss_G = log(D_gene)
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 1(진짜)
123. • loss_G와 loss_D를 교대로 학습
개별 학습
generatorZ G discriminator D_gene
X discriminator D_real
loss_D = log(D_real) + log(1-D_gene)
loss_G = log(D_gene)
125. • 진짜 이미지는 구하기 쉽다.
• 판별기를 학습시키기 위한 가짜 이미지를 따로 준비하지 않았다.
GAN의 의미 – 레이블링 데이타 없이
generatorZ G discriminator D_gene
X discriminator D_real
126. • 생성기의 목적은 판별기가 구별하지 못하게 하는 것.
• 판별기 없이는 생성기도 학습하지 못한다.
• 생성기의 출력을 판별기의 입력으로 사용.
GAN의 의미 - 생성기 학습을 위한 판별기
generatorZ G discriminator D_gene
X discriminator D_real
127. • 의미에 맞는 비용함수를 정의해서 사용.
• 그러고 나면 DNN은 해당 비용함수를 최소화하도록 학습된다.
GAN의 의미
D_gene이 1이면 좋은 거
loss_G = log(D_gene)
D_real은 1이면 좋은 거고, D_gene은 0이면 좋은 거고
loss_D = log(D_real) + log(1-D_gene)
128. • 이미지는 784 차원.
• 임의의 이미지 대부분은 의미 없는 이미지.
• 자연스런 숫자처럼 보이는 이미지는 784차원 공간에서 극히 일
부분.
• 입력으로 사용된 128차원은 그 ‘극히 일부분’에 매핑된다.
• 128차원의 대부분은 자연스런 숫자
• 이런 입력 공간을 잠재 공간(Latent Space)라 한다.
생성기 입력으로 사용한 노이즈
137. • Convolution Network안의 특정 층의 값들은, convolution 필터링된
특질들의 값.
• 뒤로 갈 수록 추상적인 의미를 갖는다.
• 원 이미지의 특정층 값과 스타일을 바꾸는 이미지의 값을 비교
Content Loss
https://dreamtolearn.com/ryan/data_analytics_viz/74
138. • 특정 층의 값을 그대로 비교.
• 실제 코드에서는 conv4_2의 값을 비교해서 사용.
Content Loss
139. • 특정층의 값들의 Gram Matrix 값.
• Gram Matrix는 필터들 간의 correlation 값.
• 반복되는 패턴이 없으면 0, 있으면 특정 값이 된다.
• 5개 층의 Gram Matrix값을 비교해서 사용.
Style Loss
157. • 작은 차원으로 임베딩된 결과는 단어간의 관계를 갖는다.
• man : woman = king : queen
임베딩된 결과
http://www.lifestyletrading101.com/word2vec-deep-learning/
159. • 제조 라인에서 발생
• 전체 생산시간의 10%
• 발생 원인을 모름. 조치만 가능. 예방 불가
• 모든 제조설비에서 발생
순간 정지
160. • on/off의 binary데이타.
• 반복된 공정이고, 이로 인해 주기성이 있다.
• 다른 센서 사이에 순서가 있고, 의존성이 있다.
PLC 센서 데이타
161. • 딥러닝으로 이러한 순간정지를 예측하고 싶다.
• 그런데 순간정지 데이타가 없다.
순간정지 데이터 부재
DNN
순간정지
데이터
센서
데이타
162. • 주기성 데이터는 신경망으로 학습이 잘된다.
주기성 데이터의 학습
https://www.google.co.kr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=8&ved=0ahUKEwilken714bXAhULGZQKHcLMCaQQF
ghbMAc&url=https%3A%2F%2Frepository.tudelft.nl%2Fislandora%2Fobject%2Fuuid%3Ad375f5e3-23ef-415a-bd0c-1392adc1
bf18%2Fdatastream%2FOBJ%2Fdownload&usg=AOvVaw156gmdTGdaaG_lGn-lfexE
163. • 실제 데이타는 비가동 노이즈가 많이 섞여 있다. 20% 이상.
• 과거 40초간의 데이터를 입력으로 하고, 1초 뒤의 값을 출력으로
학습.
• CNN을 사용.
주기성 데이터의 학습
164. • 현재까지의 데이터를 가지고 다음 1초의 값을 알 수 있다.
• 그런데 만약 실제 데이터가 예측한 값과 다르다면, 이상 발생.
• 그러한 곳이 순간정지이다.
• 실제 이 방법으로 추출한 순간정지의 정확도는 90% 이상.
학습된 네트웤
165. • 비지도 학습
• 레이블링 된 데이터가 없는 상황에서 데이터를 생성.
• 이상 탐지(Anomaly Detection)
• 비일치 찾기에 사용된 방법은 Anomaly Detection으로 다양한 영역에 사
용 가능.
• 순간정지 알람
• 알람 발생의 로직 작성 없이 알람 발생 가능.
순간정지 데이터 추출의 의미
167. • 수 많은 센서들. 약 4000개의 센서.
• 어떤 센서가 순간정지 발생에 영향을 끼치는 지 모른다.
• 해당 센서를 탐지 할 수 있다면, 미리 조치하고 발생을 방지할 수
있다.
순간정지 원인 탐지
168. • 신호(출력과 관계를 갖는 부분)만 동일하다면 학습된 DNN의 출력은 동
일할 것이다.
• 다음 이미지들은 배경은 달라도 모두 고양이.
• 노이즈(배경, 출력과 무관한)를 줄여도 DNN의 출력은 동일.
• 출력이 동일하도록 유지하면서 입력을 억제할 경우, 신호 부분만 남길
수 있다.
신호와 노이즈
169. • 학습이 완료된 후 Cost Function에 다음을 추가
• 입력의 값을 작게(억제)하도록 함.
• 그리고 DNN이 아닌 입력을 업데이트.
방법
170. • 특정 패턴의 존재 여부를 출력으로 학습.
• 학습 완료 후 적용하면, 해당 패턴만 추릴 수 있다.
실험 결과
172. • 측정된 센서 데이터를 입력으로하고, PUE*를 출력으로 하여 학
습시킴.
• 실제 데이터를 사용.
* PUE(Power Usage Effectiveness) : 에너지 사용 효율 정도. 작을 수록 좋다
DNN 적용
179. • 강화학습에 DNN을 사용한 것.
DQN(Deep Q Network)
Environment
Agent
Action 𝑎" = 2State 𝑠" Reward 𝑟" = 1
점프
https://www.slideshare.net/deview/ai-67608549
181. • 학습셑과 테스트셑은 분리되어야 한다.
• 학습셑으로 검증하는 것은 의미가 없다.
• 7:3, 8:2, 9:1로.
데이터의 구성 – 학습셑과 테스트셑
182. • 각 클래스의 데이터 수는 동일해야 한다.
• 고양이 90개, 강아지 10개로 구성하면 안된다.
데이터 구성 – 클래스 데이터 수 동일
183. • 오버피팅이 일어나기 시작할 때
학습 중단 시점
https://deeplearning4j.org/earlystopping
184. • 이론상으로는 관계 없다.
• 아주 크거나 아주 작거나
• 혹은 음수도 괜찮다.
• 하지만 0 ~ 1 혹은 0 ~ 255값을 많이 사용한다.
데이터 값의 범위
185. • 층의 갯수, 노드의 갯수, 활성화함수의 종류, 등등등…
• 황금룰은 없다.
• 찾아내기 힘든 뽀족한 첨탑주위보다는 어쨋든 높은 고산지대에
서 해매기를 권고.
하이퍼파라매터 결정 방법
186. • Batch Normalization이나 DropOut도 효과가 좋다.
• 하지만 핵심은 충분한 데이타양이다.
• 데이타 증강(data augmentation)을 추천
• 이미지의 경우
• 회전
• 반전
• 축소, 확대
• 밝기, 명암대비 확대/축소
• 색상 변경
오버피팅 방지
https://arxiv.org/pdf/1709.01643.pdf
187. • 새로운 모델?
• 하이퍼 파라매터?
• 더 많은 데이터?
• 더 큰 모델?
더 낳은 성능을 위해선?
188. • 이미 학습이 되어 있는 것으로 다른 것을 학습.
• 가장 큰 장점은 이미 확보한 성능에서 시작한다.
전이 학습
189. • 처음에는 크게 준다. 0.001
• cost의 추이를 보고 학습율을 줄인다.
학습율
190. • TensorFlow 공식 홈 : https://www.tensorflow.org/get_started/
• 모두를 위한 머신러닝/딥러닝 강의 : https://hunkim.github.io/ml/
• 골빈해커의 텐서플로우 튜토리얼 :
https://github.com/golbin/TensorFlow-Tutorials
학습 리소스