SlideShare a Scribd company logo
1 of 190
Download to read offline
(주)엑셈 / 임도형
• 대상
• 인공지능을 감 잡아보고 싶은 개발자.
• 인공지능으로 무언가 구현해야 하는 개발자.
• 인공지능 서비스를 고민하는 기획자, 경영자
• 인공지능의 심오한 이론을 얘기하지 않습니다. 실제 구동되는 코
드를 통하여 어떤 것인지 감잡고, 다음 액션을 꾀할 수 있는 것을
목적으로 합니다.
• 바이블도 아니고, 최신도 아니고, 요약도 아니고, 순수 진실도 아
닙니다.
대상, 내용, 목적, 주의
2개의 상자가 있다.
• 익은 것
• 안익은 것
사람이 분류해야 한다.
2개 상자의 것들을 보고 감 잡고 분류한다.
귤 익은 것 분류하기 - 사람
로봇을 위한 프로그램을 작성해야 한다.
• ‘xxx하면 우측 상자에, 그렇지 않은 경우 좌측 상자에’
감잡고 분류할 때 사용한 기준을 하드코딩해야 한다.
귤 익은 것 분류하기 - 로봇
2개 상자의 것을 보고 삼았던 기준은 크기
큰 것은 익은 것, 작은 것은 안 익은 것.
대충 있었던 크기를 측정하고 그것을 하드 코딩.
• ‘if(size > 7.5) then …’
귤 익은 것 분류하기 - 로봇
크다작다
기준
익은거안익은거
하드 코딩한 기준 마저 스스로 찾아내게 하고 싶다.
사과 익은 거 분류하기 - 로봇
사과 기준 찾기
크다작다
기준
익은거
사과 기준 찾기
크다작다
기준
안 익은거
사과 기준 찾기
크다작다
기준
안 익은거
사과 기준 찾기
크다작다
기준
안 익은거
사과 기준 찾기
크다작다
기준
익은거
사과 기준 찾기
크다작다
기준
익은거
사과 기준 찾기
크다작다
기준
안 익은거
사과 기준 찾기
크다작다
기준
익은거안 익은거
사과 기준 찾기 – 찾았다!
크다작다
기준
익은거안 익은거
입력을 받아 몇개의 그룹으로 분류한다.
귤은 내가 기준을 찾았다. (직접 코딩한 알고리즘)
사과는 기계가 기준을 찾았다.(기계가 찾은 알고리즘)
하지만 둘다 목적과 쓰임새는 동일.
분류기
분류기크기 익었다 분류
• 분류를 위해 ‘크기를 재서 기준 크기를 가지고 구별’ ←model
• 학습 시키려면 사과 2상자가 필요. 익은거 상자, 안익은거 상자.
←training set
• 여러번 반복해서, ← iteration, step, epoch
• 원하는 기준 크기를 찾아냄. ← learning, training
• 그리고 구분 안된 바구니에 적용. ← test set, evaluation set
용어
사과 분류를 학습한 기준으로 적용했더니, 결과가 않좋다.
Training set으로 100% 하더라도, test set은 결과가 안좋을 수 있다.
사과 분류 적용
분류해 놓은 것을 확인해 보니 크기가 큰데도, 색깔이 덜 빨깐 사과
가 있다.
사과 분류 적용
크다작다
안익은거 익은거
기준을 다시 찾자 – 색깔을 고려
크다작다
안익은거
익은거
뻘겋다
퍼렇다
기준을 다시 찾자 – 색깔을 고려
크다작다
안익은거
익은거
뻘겋다
퍼렇다
기준을 다시 찾자 – 가르자
크다작다
안익은거
익은거
뻘겋다
퍼렇다
기준
기준이 선이다
기준
귤일때는 값이 기준이었는데,
이젠 기준이 선이다.
새 기준의 의미
익은거
안익은거
크기
색깔
크기하고 색깔하고 같이 고려해서 어느정도 이상이면 익은거
처음이자 마지막 수식
선은 다음 식으로 표현
w1x1 + w2x2 = b x2 w1x1 +	w2x2 =	b
x1
선
x1
x2
x1 + x2 = 3.5
크기 정도(x1)하고
색깔 정도(x2)를 합쳐서
3.5정도인 거
x1 +	x2 =	3.5
1 2 3
1
2
선과 점
x1
x2
x1 + x2 = 3.5
크기 정도(x1)하고
색깔 정도(x2)를 합쳐서
3.5정도인 거
x1 +	x2 =	3.5
1 2 3
1
2 (2,	2)
(3,	1.3)
(1, 1)
(2, 0.7)
점의 값
x1
x2
x1 + x2 = 3.5
크기 정도(x1)하고
색깔 정도(x2)를 합쳐서
3.5정도인 거
1 2 3
1
2 4 = 2	+	2
4.3	=	3	+	1.3
2	=	1	+	1
2.7	=	2 +	0.7
x1 +	x2 =	3.5
선으로 구분된 영역
x1
x2
x1 + x2 = 3.5
크기 정도(x1)하고
색깔 정도(x2)를 합쳐서
3.5정도인 거
1 2 3
1
2 4 = 2	+	2
4.3	=	3	+	1.3
2	=	1	+	1
2.7	=	2 +	0.7
x1 +	x2 =	3.5
기준을 찾는다는 건
선을 표현하는 w1, w2, b을 찾는 것.
w1x1 + w2x2 = b x2
x1
w1x1 +	w2x2 =	b
선식의 다른 표현
x2
x1
w1x1 +	w2x2 + b = 0
x1
x2
1
w1
w2
b
+ w1x1 + w2x2+ b 0
• 크기가 3이고, 색깔이 2인 경우
• 계산 값은 1.5
그림 표현의 예
3
2
1
1
1
-3.5
+ 1.5
익은 사과
x2
x1 +	x2 – 3.5 = 0
x1
3
2
1
+
1
1
-3.5
3 + 2 – 3.5 = 1.5
(3,	2)
크기가 3, 색깔이 2. 계산 값은 1.5
0 보다 크다. 선 우측에 있다.
안 익은 사과
x2
x1 +	x2 – 3.5 = 0
x1
1
1
1
+
1
1
-3.5
1 + 1 – 3.5 = - 1.5
(1,	1)
크기가 1, 색깔이 1. 계산 값은 -1.5
0 보다 작다. 선 좌측에 있다.
그림 표현
x2
x1 +	x2 – 3.5 = 0
x1
3
2
1
+
1
1
-3.5
1.5
(3,	2)
2
1
1
+
1
1
-3.5
- 1.5
(1,	1)
0보다 큰 것은 우측
0보다 작은 것은 좌측
잘못된 분류
1x1 +	1x2 - 3.5 = 0
9
1
1
+
1
1
-3.5
6.5(9,	1)
크기가 9이고 색깔이 1.
안익었으니 계산값이 0보다 작아야 하는데 크다.
그림 표현
크기
색깔
1
1
1
-3.5
+ 1 x 크기 + 1 x 색깔 + (-3.5)
그림표현에서의 화살표 위의 숫자가 기준 선을 의미.
색깔
크기
1x1 +	1x2 -3.5 = 0
선 조정 필요
9
1
1
1
1
-3.5
+ 9 + 1 – 3.5 = 6.5
선을 나타내는 1, 1, -3.5의 값을 조정해서
계산 값이 0보다 작게 해야 한다.
선 조정 아이디어
9
1
1
1
1
-3.5
+ 9 + 1 – 3.5 = 6.5
계산 값에 왕창 영향 끼치는 크기(9)의 것을 색깔(1) 보다
더 크게 조정하자.
선 조정 아이디어
계산 값에 왕창 영향 끼치는 크기(9)의 것을 색깔(1) 보다
더 크게 조정하자.
물론 잘 분류했을 때에는 조정할 필요 없고.
선 조정 아이디어
조정 값 = 오차 * 입력값 * 학습율
선 조정 예
조정 값 = 오차 * 입력값 * 학습율
조정된 크기 비중 = 이전 크기 비중 – ( 1 x 9 x 0.1 )
조정된 색깔 비중 = 이전 색깔 비중 – ( 1 x 1 x 0.1 )
조정된 기준값 = 이전 기준값 – ( 1 x 1 x 0.1 )
선 조정 예
조정 값 = 오차 * 입력값 * 학습율
크기 비중 = 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
선의 학습 실 예
https://www.youtube.com/watch?v=tYxkIOTdeu8
선의 학습 실 예
https://www.youtube.com/embed/V2MMyk7bdWY
실제로 저 간단한 로직으로 선을 찾을 수 있다.
학습할 수 있다.
선을 찾을 수 있다
• 크기에다가 색깔을 추가하니 더 잘된다. ← 크기, 색깔을 입력, 특
질(feature)라 한다.
• 각 사과 마다 2개 값의 특질이 있다. 크기 3, 색깔 2 ← 입력 벡터
혹은 특질 벡터라 한다.
• 사과 예의 경우 2개 특질(크기, 색깔)을 사용했다. ← 입력 벡터가
2차원.
• 학습을 한다는 건 선을 구성하는 3개의 값을 찾는 것이다.
• 각 입력에 곱해지는 w1, w2들을 가중치(weight)라 칭한다.
용어
귤의 예에서, 그 기준의 값에
따라 오차의 크기가 결정된다.
결국 학습의 목표는 오차를
최소로, 혹은 오차함수의 값
이 최소가되는 w를 찾는것.
비용 함수는 모델을 구성하는
가중치(w)의 함수이다.
예에서의 기준값에 의해 발생
하는 오차의 정도.
비용 함수(Cost Function)
비용함수를 최소로 하는 w를 찾는 것이 학습이다
학습과 비용함수
오차평면에서 공을 올려 놓았을 때 공이 굴러가는 방향(오차가
적어지는 방향)으로 w를 조정한다.
경사 하강법(Gradient Descent)
경사
경사하강법은 비용함수를 구하고, 이를 각 weight 별로 편미분하면
각 weight 별로 수정할 다음 값을 구할 수 있다. 그렇다고 한다.
선형 모델(w1x1 + w2x2 = b)에서는 경사하강법의 결과가 직관적으
로 설명했던 방법과 동일하다.
결국 사과예에서 학습한 방법은 경사하강법을 사용한 것이다.
사과 예에서 학습방법
경사하강법 알고리즘들
https://imgur.com/a/Hqolp
여러개의 수상돌기에서 자극이 합해져서
그 값이 어느 값 이상일 경우
축색돌기로 자극을 발생시킨다.
신경세포
http://m.blog.daum.net/lpds417/17453443
신경세포와 유사
http://m.blog.daum.net/lpds417/17453443
선형분리의 문제를 학습할 수 있다.
퍼셉트론(Perceptron)
x1
x2
1
w1
w2
b
+
w1x1 + w2x2+ b
0 or 1
하지만 간단한 XOR도 못한다.
선형분리가 불가능한 것은 풀지 못한다.
XOR는 선형분리로 풀지 못하는 문제이다.
퍼셉트론의 한계
http://programmermagazine.github.io/201404/book/pmag.html
선형 분리 여부
http://sebastianraschka.com/Articles/2014_naive_bayes_1.html
• 입력 차원을 늘린다.(사과 예)
• 입력을 비선형 변환하여 선형분리 가능하도록 한다.
• 혹은 MLP
선형 분리 불가 문제의 해결법
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
입력과 출력 사이에 층이 더 있다.
개별 perceptron의 결과를 다음 층의 입력으로 사용하고 결과적으
로 선형 분리의 제약을 극복한다.
MLP(Multi Layer Perceptron)
http://docs.opencv.org/2.4/modules/ml/doc/neural_networks.html
1개의 퍼셉트론은 1개의 선형 분리를 할 수 있다.
퍼셉트론의 결과를 다른 퍼셉트론의 입력으로 하면 여러개의 선으
로 분리를 할 수 있다.
퍼셉트론의 능력
https://www.wikipendium.no/TDT4137_Cognitive_Architectures
온라인 시뮬레이션
http://playground.tensorflow.org
이미지를 구성하는 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
Universal Approximator
• 어떠한 함수도 근사화할 수 있다.
DNN의 능력
• DNN은 임의의 함수를 근사화 할 수 있다.
• 함수의 내부를 모르더라도.
• 입력과 출력 데이터로.
DNN의 함수 근사화 능력
함수
DNN 출력입력
학습
DNN 0(고양이)
학습
DNN 1(강아지)
학습
DNN 0(고양이)
학습
DNN 1(강아지)
• 처음 보는 입력이라도 출력을 낸다. 의미 있는.
학습된 후에는?
DNN ?
• 고양이, 강아지 구분 함수.
• 어떻게 구분하는 지는 정의하지 않았다.
• 사람이 정의하지는 못했지만, 분명이 그런 로직(함수)가 존재한
다.
• 단순한 입력, 출력 쌍으로 그 함수를 근사화 하였다.
함수를 근사화 한것이다.
• 단순히 입출력 쌍을 반복하여 학습시킨다.
• 하지만 로직을 찾아내기 어려운 문제에는 아주 효과적이다.
• 얼굴 인식, 물체 인식 같은.
단순, 하지만 강력한 방법
함수 예
https://www.slideshare.net/JenAman/large-scale-deep-learning-with-tensorflow
고양이
DNN
이미지
함수 예
https://www.slideshare.net/JenAman/large-scale-deep-learning-with-tensorflow
“안녕하세요”
DNN
음파
함수 예
https://www.slideshare.net/JenAman/large-scale-deep-learning-with-tensorflow
정상 / 비정상
DNN
시스템 데이타
함수 예
다음 수
함수 예
https://www.slideshare.net/JenAman/large-scale-deep-learning-with-tensorflow
“안녕하세요”
DNN
영어
“Hello”
한국어
• DNN은 함수 근사화 능력이 있다.
• 입출력 쌍을 계속 제공하여 DNN내부의 웨이트를 업데이트 한다.
• 이를 위해 내부적으로 BP와 GD 알고리즘을 사용.
• 충분한 입출력 데이터와 컴퓨팅 파워가 필요.
• 이를 반복하여 함수를 근사화하는 것을 DNN의 학습, Deep
Learning이라 한다.
BP(Back Propagation), GD(Gradient Descent)
딥러닝
• 예전에는 사람 손으로 불을 줄이고, 시간을 봐서 뜸을 들였다.
• 지금은 인공지능 밥통이 알아서 한다.
• 사람 손이 아닌 기계가 알아서 하면 인공지능이다.
• 전문가의 지식을 직접 하드코딩 할 수도 있고(귤의 예 같이), 데이
터에서 로직을 찾을 수 있다(사과의 예 같이).
인공지능(AL; Artificial Intelligence)
• 인공지능의 한 분야.
• 데이터에서 가치 찾아내는 방법
• 수 많은 방법이 있다.
• SVM, 의사결정트리, Random Forest, Bayesian, K-Means Clustering, K-NN,
Neural Network
머신 러닝(ML; Machine Learning)
• 신경망을 사용한 머신러닝의 한 방법
• 신경망의 은닉층이 많아서(deep) Deep Learning이라 부른다.
딥 러닝(DL; Deep Learning)
2012년 AI 부활
DNN은 사실 기존 NN과 다른게 없다.
AI, 기계학습에 대한 엄청난 기대가 20년 전 쯤에 있었지만 엄청난
계산량의 필요로 인해 결과를 보이지 못했고, 기대만큼의 실망이
있었다.
최근 Big(저장공간, 컴퓨팅 파워)덕분에 압도적인 성능을 보임.
실망했던 용어 대신 붐을 일으키기 위한 용어이다.
신경망과 심층신경망
인간이 고안한 알고리즘이건, 기계가 학습한 알고리즘이건 어떤
기계가 판단해서 처리하면 AI라 한다.
AI 밥통, AI 세탁기, 자동주행 자동차.
단지 기계가 학습한 경우를 기계학습이라 한다.
그리고 요즘 신경망의 압도적인 성능으로 기계학습의 대부분은 신
경망을 사용한다.
그래서, 그냥 AL = ML = DL 라고 부른다. 맞는 말은 아니지만.
AI, ML, DL
AI, ML, DL
https://insidebigdata.com/2017/02/13/difference-ai-machine-learning-deep-l
earning/
• 가장 많이 사용하고 있는 ML 프레임웤
• 실제 실행되는 코어와 연산을 정의하고 요청하는 front end.
ML 프레임웤
https://www.slideshare.net/JenAman/large-scale-deep-lear
ning-with-tensorflow?from_action=save
• 연산될 내용을 정의한다.
그래프
X
W
matmul + relu
b
y
• Core와의 세션을 생성하고, 그래프와 데이타를 전달하여 연산을
실행한다.
• 실제 연산은 sess.run()을 호출할 때 실행된다.
세션 생성, 연산 실행
sess.run(y,	feed_dict={x:	batch_x,	y:	batch_y})
• 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]))
• 3개 정의 + 실행
• 모델 정의 : NN 모델 정의.
• Cost 함수
• Optimizer
TensorFlow의 딥러닝 코드 구조
모델 정의(출력 계산 방법)
Optimizer	정의(Cost함수
최소화 방법)
Cost 함수 정의(원하는 바)
실행
• MSE(Mean Squared Error)
• CE(Cross Entropy)
• KL-Divergence
• MLE(Maximum Likelihood Estimation)
Cost Function 종류
• 오차에 대하여 w를 업데이트 시키는 알고리즘들.
• GD(Gradient Descent)
• Batch GD
• Mini-Batch GD
• SGD(Stochastic GD)
• Momentum
• AdaGrad
• AdaDelta
• Adam
• RMSprop
Optimizer 종류
• DropOut
• BN(Batch Normalization)
• Regularization
• Data Augmentation
Overfitting 방지법 종류
https://en.wikipedia.org/wiki/Overfitting
• 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
• 학습율
• w의 변경되는 정도
Learning Rate
https://www.quora.com/In-an-artificial-neural-network-algorithm-what-ha
ppens-if-my-learning-rate-is-wrong-too-high-or-too-low
• activation function중의 하나.
• 최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의
값으로 나타낸다.
• 확률 처럼 표현된다.
SoftMax
http://www.jianshu.com/p/cad5567aeb58
• 출력된 값과 원하는 값과의 차이를 가지고 그 전의 w를 값들을 변
경하는 알고리즘.
• 뒤에서부터 그 오차의 값이 전파된다는 이름.
• 실제 변경되는 값의 크기는 GD로 결정됨.
BackPropagation
• 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
사람눈에는 특정 모양에 반응하는 신경세포들이 있다.
이를 구현한 가장 간단한 방법이 convolution filter이다.
Convolution Filter
https://developer.apple.com/library/content/documentation/Performance/Conceptual/vImage/Convoluti
onOperations/ConvolutionOperations.html
필터 모양의 자극이 있으면 그 결과가 최대가 된다.
필터 모양이 있는 지 찾아낸다.
Convolution Filter - 의미
http://www.kdnuggets.com/2016/08/brohrer-convolutional-neural-networks-explanation.html
필터 적용 시의 이동 칸 수.
보통은 1.
Convolution Filter - Stride
http://cs231n.github.io/convolutional-networks/
stride	1 stride	2
필터 특성상 이미지가 작아지는 것을 방지하기 위해 원 이미지를
키우는 것.
Convolution Filter - Padding
http://blog.csdn.net/tianzhaixing2013/article/details/64922396
Max Pooling
https://cambridgespark.com/content/tutorials/convolutional-neural-networks-with-keras/index.html
• convolution 필터와 pooling이 반복하여 feature 추출.
• 이후 일반 DNN로 분류.
특징 추출과 분류
http://parse.ele.tue.nl/education/cluster2
• 이미지 처리에 뛰어남.
• 이미지 외의 것에도 좋은 성능을 보임.
CNN 성능
구조
Discriminator.	판별기.
이미지가 진짜인지 가짜인지 판별한다.
Generator.	생성기.
노이즈에서 가짜 이미지를 생성한다.
Generative Adversarial Networks
generatorZ G discriminator D_gene
X discriminator D_real노이즈
진짜
이미지
가짜
이미지
가짜이미지
에 대한
판별값
진짜이미지
에 대한
판별값
판별기(discriminator)의 목적
generatorZ G discriminator D_gene
X discriminator D_real
진짜 이미지(X)에 대한
결과(D_real)은 1(진짜)
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 0(가짜)
판별기(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)
생성기(generator)의 목적
generatorZ G discriminator D_gene
X discriminator D_real
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 1(진짜)
생성기(generator)의 비용함수
generatorZ G discriminator D_gene
X discriminator D_real
D_gene이 1이면 좋은 거
loss_G =	log(D_gene)
생성한 가짜 이미지( G)에 대한
결과(D_gene)는 1(진짜)
• 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)
• 생성기는 판별기가 구별못하는 가짜 이미지를 생성한다.
학습이 완료되면
• 진짜 이미지는 구하기 쉽다.
• 판별기를 학습시키기 위한 가짜 이미지를 따로 준비하지 않았다.
GAN의 의미 – 레이블링 데이타 없이
generatorZ G discriminator D_gene
X discriminator D_real
• 생성기의 목적은 판별기가 구별하지 못하게 하는 것.
• 판별기 없이는 생성기도 학습하지 못한다.
• 생성기의 출력을 판별기의 입력으로 사용.
GAN의 의미 - 생성기 학습을 위한 판별기
generatorZ G discriminator D_gene
X discriminator D_real
• 의미에 맞는 비용함수를 정의해서 사용.
• 그러고 나면 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)
• 이미지는 784 차원.
• 임의의 이미지 대부분은 의미 없는 이미지.
• 자연스런 숫자처럼 보이는 이미지는 784차원 공간에서 극히 일
부분.
• 입력으로 사용된 128차원은 그 ‘극히 일부분’에 매핑된다.
• 128차원의 대부분은 자연스런 숫자
• 이런 입력 공간을 잠재 공간(Latent Space)라 한다.
생성기 입력으로 사용한 노이즈
잠재 공간의 다른 점
?
GAN 다른 예
https://www.youtube.com/watch?v=mfx7uAkUtCI
잠재 공간 상의 중간 점
https://medium.com/@juliendespois/latent-space-visualizat
ion-deep-learning-bits-2-bd09a46920df
중간점 다른 예
https://arxiv.org/abs/1707.02392v1
• 2014년도 이미지 인식 대회 우승 모델
• ImageNet 데이터 사용
• 학습된 모델을 공개.
• 43개 층의 ConvNet
• 모델 파일의 크기 500M
VGG 사용
Cost Function
total_loss	=	BETA	*	content_loss	 +	 ALPHA	*	style_loss
스타일은 바뀌더라도
내용은 변하면 안되.
스타일을 비슷하게 하자.
• Convolution Network안의 특정 층의 값들은, convolution 필터링된
특질들의 값.
• 뒤로 갈 수록 추상적인 의미를 갖는다.
• 원 이미지의 특정층 값과 스타일을 바꾸는 이미지의 값을 비교
Content Loss
https://dreamtolearn.com/ryan/data_analytics_viz/74
• 특정 층의 값을 그대로 비교.
• 실제 코드에서는 conv4_2의 값을 비교해서 사용.
Content Loss
• 특정층의 값들의 Gram Matrix 값.
• Gram Matrix는 필터들 간의 correlation 값.
• 반복되는 패턴이 없으면 0, 있으면 특정 값이 된다.
• 5개 층의 Gram Matrix값을 비교해서 사용.
Style Loss
Cost Function
total_loss	=	BETA	*	content_loss	 +	 ALPHA	*	style_loss
스타일은 바뀌더라도
내용은 변하면 안되.
스타일을 비슷하게 하자.
• 모델을 로딩할 때 W, b는 Constant,
• 업데이트 할 이미지는 Variable로 선언.
• 반복하여 업데이트 되는 것은 대상 이미지.
코드 트릭
• 정해져 있지 않다.
• 그 보단 원하는 작업에 맞는 Cost Function을 선택한다.
• GAN의 경우
• loss_D = log(D_real) + log(1-D_gene)
• loss_G = log(D_gene)
Cost Function의 선택
• 각 타겟값과 계산값과의 차이를 최소로 한다.
MSE(Mean Squared Error)
• 두 데이터 집합 간의 분포의 차이를 볼 때는 다음을 사용
• Cross Entropy
• KL-Divergence
분포의 차이
• 상태를 가지고 있고, 다음 연산때 그 상태가 입력으로 사용된다.
RNN(Recurrent NN)
http://aikorea.org/blog/rnn-tutorial-1/
• [h, e, l, l, o]의 학습 예
• h -> e
• e -> l
• l -> l
• l - > o
• 첫 번 째 l일때와 두번째 l
일 때의 출력이 다르다.
입출력 예
• 4자리 단어
• 앞 3자리를 입력, 끝 1자리 출력
RNN 적용 예 - autocomplete
w[0,
0
,
0
,…,
0
]
o[
0
,
0
,
0
,…,
0
]
r		[
0
,
0
,
0
,…,
0
]output
RNN 적용 예 – autocomplete - 입력
w	[	0,	0,	0,								…,	0]
o	[	0,	0,	0,									…,	0]
r	[	0,	0,	0,										…,	0]
n_step=3
RNN 입력의 연속 개수
n_input=26	(입력 벡터 차원)
• 28차원의 벡터, 28개 연속
RNN 예 – MNIST - 입력
n_input=28	(입력 벡터 차원)
n_step=28
RNN 입력의 연속 개수
• 기계 번역에 사용
RNN(Recurrent NN)
https://drive.google.com/file/d/0B8z5oUpB2DysZWF1RTFu
X1NEZUk/view
• RNN의 단점을 보완한 모델
LSTM(Long Short Term Memory)
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
• 4000개의 단어들이 있다면, 무식하게 one-hot 벡터로 표현하면
4000차원.
• 이를 적은 차원으로 표현해 보자.
• 4000차원을 100차원 처럼.
단어를 표현하는 방법
구조
https://www.slideshare.net/JunKim22/spark-zeppelin-77273056
• 작은 차원으로 임베딩된 결과는 단어간의 관계를 갖는다.
• man : woman = king : queen
임베딩된 결과
http://www.lifestyletrading101.com/word2vec-deep-learning/
• 제조 라인에서 발생
• 전체 생산시간의 10%
• 발생 원인을 모름. 조치만 가능. 예방 불가
• 모든 제조설비에서 발생
순간 정지
• on/off의 binary데이타.
• 반복된 공정이고, 이로 인해 주기성이 있다.
• 다른 센서 사이에 순서가 있고, 의존성이 있다.
PLC 센서 데이타
• 딥러닝으로 이러한 순간정지를 예측하고 싶다.
• 그런데 순간정지 데이타가 없다.
순간정지 데이터 부재
DNN
순간정지
데이터
센서
데이타
• 주기성 데이터는 신경망으로 학습이 잘된다.
주기성 데이터의 학습
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
• 실제 데이타는 비가동 노이즈가 많이 섞여 있다. 20% 이상.
• 과거 40초간의 데이터를 입력으로 하고, 1초 뒤의 값을 출력으로
학습.
• CNN을 사용.
주기성 데이터의 학습
• 현재까지의 데이터를 가지고 다음 1초의 값을 알 수 있다.
• 그런데 만약 실제 데이터가 예측한 값과 다르다면, 이상 발생.
• 그러한 곳이 순간정지이다.
• 실제 이 방법으로 추출한 순간정지의 정확도는 90% 이상.
학습된 네트웤
• 비지도 학습
• 레이블링 된 데이터가 없는 상황에서 데이터를 생성.
• 이상 탐지(Anomaly Detection)
• 비일치 찾기에 사용된 방법은 Anomaly Detection으로 다양한 영역에 사
용 가능.
• 순간정지 알람
• 알람 발생의 로직 작성 없이 알람 발생 가능.
순간정지 데이터 추출의 의미
• 수 많은 센서들. 약 4000개의 센서.
• 어떤 센서가 순간정지 발생에 영향을 끼치는 지 모른다.
• 해당 센서를 탐지 할 수 있다면, 미리 조치하고 발생을 방지할 수
있다.
순간정지 원인 탐지
• 신호(출력과 관계를 갖는 부분)만 동일하다면 학습된 DNN의 출력은 동
일할 것이다.
• 다음 이미지들은 배경은 달라도 모두 고양이.
• 노이즈(배경, 출력과 무관한)를 줄여도 DNN의 출력은 동일.
• 출력이 동일하도록 유지하면서 입력을 억제할 경우, 신호 부분만 남길
수 있다.
신호와 노이즈
• 학습이 완료된 후 Cost Function에 다음을 추가
• 입력의 값을 작게(억제)하도록 함.
• 그리고 DNN이 아닌 입력을 업데이트.
방법
• 특정 패턴의 존재 여부를 출력으로 학습.
• 학습 완료 후 적용하면, 해당 패턴만 추릴 수 있다.
실험 결과
• 측정된 센서 데이터를 입력으로하고, PUE*를 출력으로 하여 학
습시킴.
• 실제 데이터를 사용.
* PUE(Power Usage Effectiveness) : 에너지 사용 효율 정도. 작을 수록 좋다
DNN 적용
입력
• mean absolute error 0.4%
예측 결과
• 함수 근사화 : 센서값 à PUE
• 임의의 입력값에 대한 PUE를 예측할 수 있다.
• 학습된 DNN은 시뮬레이터로 사용 가능.
고찰
• 운영 파라매터를 변경하며 시뮬레이션 하고, PUE의 변동을 예측
할 수 있다.
• 최적의 PUE를 위한 운영 파라매터와 값을 찾고 적용 가능.
• 가상 적인 환경에서 요인별 분석이 가능함.
• 외부 온도가 가장 영향이 크다고 분석됨.
시뮬레이션이 가능하면
강화 학습
https://www.slideshare.net/carpedm20/reinforcement-learning-a
n-introduction-64037079
• 강화학습에 DNN을 사용한 것.
DQN(Deep Q Network)
Environment
Agent
Action 𝑎" = 2State 𝑠" Reward 𝑟" = 1
점프
https://www.slideshare.net/deview/ai-67608549
• 학습셑과 테스트셑은 분리되어야 한다.
• 학습셑으로 검증하는 것은 의미가 없다.
• 7:3, 8:2, 9:1로.
데이터의 구성 – 학습셑과 테스트셑
• 각 클래스의 데이터 수는 동일해야 한다.
• 고양이 90개, 강아지 10개로 구성하면 안된다.
데이터 구성 – 클래스 데이터 수 동일
• 오버피팅이 일어나기 시작할 때
학습 중단 시점
https://deeplearning4j.org/earlystopping
• 이론상으로는 관계 없다.
• 아주 크거나 아주 작거나
• 혹은 음수도 괜찮다.
• 하지만 0 ~ 1 혹은 0 ~ 255값을 많이 사용한다.
데이터 값의 범위
• 층의 갯수, 노드의 갯수, 활성화함수의 종류, 등등등…
• 황금룰은 없다.
• 찾아내기 힘든 뽀족한 첨탑주위보다는 어쨋든 높은 고산지대에
서 해매기를 권고.
하이퍼파라매터 결정 방법
• Batch Normalization이나 DropOut도 효과가 좋다.
• 하지만 핵심은 충분한 데이타양이다.
• 데이타 증강(data augmentation)을 추천
• 이미지의 경우
• 회전
• 반전
• 축소, 확대
• 밝기, 명암대비 확대/축소
• 색상 변경
오버피팅 방지
https://arxiv.org/pdf/1709.01643.pdf
• 새로운 모델?
• 하이퍼 파라매터?
• 더 많은 데이터?
• 더 큰 모델?
더 낳은 성능을 위해선?
• 이미 학습이 되어 있는 것으로 다른 것을 학습.
• 가장 큰 장점은 이미 확보한 성능에서 시작한다.
전이 학습
• 처음에는 크게 준다. 0.001
• cost의 추이를 보고 학습율을 줄인다.
학습율
• TensorFlow 공식 홈 : https://www.tensorflow.org/get_started/
• 모두를 위한 머신러닝/딥러닝 강의 : https://hunkim.github.io/ml/
• 골빈해커의 텐서플로우 튜토리얼 :
https://github.com/golbin/TensorFlow-Tutorials
학습 리소스

More Related Content

What's hot

인공신경망
인공신경망인공신경망
인공신경망종열 현
 
Wasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 IWasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 ISungbin Lim
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 
Control as Inference.pptx
Control as Inference.pptxControl as Inference.pptx
Control as Inference.pptxssuserbd1647
 
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定Keiichi Namikoshi
 
Causal Inference : Primer (2019-06-01 잔디콘)
Causal Inference : Primer (2019-06-01 잔디콘)Causal Inference : Primer (2019-06-01 잔디콘)
Causal Inference : Primer (2019-06-01 잔디콘)Minho Lee
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)SANG WON PARK
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process ModelsDeep Learning JP
 
Parametric and nonparametric
Parametric and nonparametricParametric and nonparametric
Parametric and nonparametricSivapriyaS12
 
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱BOAZ Bigdata
 
[DL輪読会]Meta Reinforcement Learning
[DL輪読会]Meta Reinforcement Learning[DL輪読会]Meta Reinforcement Learning
[DL輪読会]Meta Reinforcement LearningDeep Learning JP
 
CNNの構造最適化手法について
CNNの構造最適化手法についてCNNの構造最適化手法について
CNNの構造最適化手法についてMasanoriSuganuma
 
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...Kazuyuki Miyazawa
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법 홍배 김
 
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習Yusuke Iwasawa
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみたYoshihiko Shiraki
 
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural imagesDeep Learning JP
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木 Miyoshi Yuya
 
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable ConvolutionsDeep Learning JP
 

What's hot (20)

인공신경망
인공신경망인공신경망
인공신경망
 
Wasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 IWasserstein GAN 수학 이해하기 I
Wasserstein GAN 수학 이해하기 I
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 
Control as Inference.pptx
Control as Inference.pptxControl as Inference.pptx
Control as Inference.pptx
 
強化学習5章
強化学習5章強化学習5章
強化学習5章
 
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定
Multi-agent Inverse reinforcement learning: 相互作用する行動主体の報酬推定
 
Causal Inference : Primer (2019-06-01 잔디콘)
Causal Inference : Primer (2019-06-01 잔디콘)Causal Inference : Primer (2019-06-01 잔디콘)
Causal Inference : Primer (2019-06-01 잔디콘)
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)
 
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
[DL輪読会]Scalable Training of Inference Networks for Gaussian-Process Models
 
Parametric and nonparametric
Parametric and nonparametricParametric and nonparametric
Parametric and nonparametric
 
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
제 12회 보아즈(BOAZ) 빅데이터 컨퍼런스 -꽤 GAN찮은 헤어 살롱
 
[DL輪読会]Meta Reinforcement Learning
[DL輪読会]Meta Reinforcement Learning[DL輪読会]Meta Reinforcement Learning
[DL輪読会]Meta Reinforcement Learning
 
CNNの構造最適化手法について
CNNの構造最適化手法についてCNNの構造最適化手法について
CNNの構造最適化手法について
 
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
 
Normalization 방법
Normalization 방법 Normalization 방법
Normalization 방법
 
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習
JSAI2017:敵対的訓練を利用したドメイン不変な表現の学習
 
fastTextの実装を見てみた
fastTextの実装を見てみたfastTextの実装を見てみた
fastTextの実装を見てみた
 
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
[DL輪読会]HoloGAN: Unsupervised learning of 3D representations from natural images
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
 

Similar to 코드와 실습으로 이해하는 인공지능

세미나
세미나세미나
세미나Dongyi Kim
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기라한사 아
 
ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term ReviewMario Cho
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련Haesun Park
 
03. linear regression
03. linear regression03. linear regression
03. linear regressionJeonghun Yoon
 
Deep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningDeep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningJinSooKim80
 
Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Kiho Hong
 
Machine learning bysogood
Machine learning bysogoodMachine learning bysogood
Machine learning bysogoodS.Good Kim
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced partNAVER D2
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망jdo
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagationJinSooKim80
 
2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions현정 김
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2jdo
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
Ml for 정형데이터
Ml for 정형데이터Ml for 정형데이터
Ml for 정형데이터JEEHYUN PAIK
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습Juhui Park
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기정주 김
 
From maching learning to deep learning
From maching learning to deep learningFrom maching learning to deep learning
From maching learning to deep learningYongdae Kim
 
Vector Optimization
Vector Optimization Vector Optimization
Vector Optimization SEMINARGROOT
 

Similar to 코드와 실습으로 이해하는 인공지능 (20)

세미나
세미나세미나
세미나
 
자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기자바로 Mnist 구현하고_스프링웹서버붙이기
자바로 Mnist 구현하고_스프링웹서버붙이기
 
ESM Mid term Review
ESM Mid term ReviewESM Mid term Review
ESM Mid term Review
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
03. linear regression
03. linear regression03. linear regression
03. linear regression
 
Deep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learningDeep Learning from scratch 4장 : neural network learning
Deep Learning from scratch 4장 : neural network learning
 
Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)Variational inference intro. (korean ver.)
Variational inference intro. (korean ver.)
 
Machine learning bysogood
Machine learning bysogoodMachine learning bysogood
Machine learning bysogood
 
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
[한양대 aloha] 프로그래밍 경진대회 문제_Advanced part
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망[컴퓨터비전과 인공지능] 5. 신경망
[컴퓨터비전과 인공지능] 5. 신경망
 
Deep Learning from scratch 5장 : backpropagation
 Deep Learning from scratch 5장 : backpropagation Deep Learning from scratch 5장 : backpropagation
Deep Learning from scratch 5장 : backpropagation
 
2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions2018 Ajou Programming Contest solutions
2018 Ajou Programming Contest solutions
 
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
[컴퓨터비전과 인공지능] 7. 합성곱 신경망 2
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
Ml for 정형데이터
Ml for 정형데이터Ml for 정형데이터
Ml for 정형데이터
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 
From maching learning to deep learning
From maching learning to deep learningFrom maching learning to deep learning
From maching learning to deep learning
 
Vector Optimization
Vector Optimization Vector Optimization
Vector Optimization
 

More from 도형 임

인공지능과 심리상담
인공지능과 심리상담인공지능과 심리상담
인공지능과 심리상담도형 임
 
Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning도형 임
 
Deep learning application_to_manufacturing
Deep learning application_to_manufacturingDeep learning application_to_manufacturing
Deep learning application_to_manufacturing도형 임
 
프로그래머를 고려하는 당신에게
프로그래머를 고려하는 당신에게프로그래머를 고려하는 당신에게
프로그래머를 고려하는 당신에게도형 임
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)도형 임
 
알파고 학습 이해하기
알파고 학습 이해하기알파고 학습 이해하기
알파고 학습 이해하기도형 임
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질도형 임
 
유지보수성이 sw의 품질이다.
유지보수성이 sw의 품질이다.유지보수성이 sw의 품질이다.
유지보수성이 sw의 품질이다.도형 임
 
Release and versioning
Release and versioningRelease and versioning
Release and versioning도형 임
 
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드도형 임
 
고품질 Sw와 개발문화
고품질 Sw와 개발문화고품질 Sw와 개발문화
고품질 Sw와 개발문화도형 임
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리도형 임
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스도형 임
 
행복, 그리고 인지과학
행복, 그리고 인지과학행복, 그리고 인지과학
행복, 그리고 인지과학도형 임
 
유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발도형 임
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드도형 임
 
흰머리 성성하게 개발하기 위해
흰머리 성성하게 개발하기 위해흰머리 성성하게 개발하기 위해
흰머리 성성하게 개발하기 위해도형 임
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
행복한 소프트웨어 개발
행복한 소프트웨어 개발행복한 소프트웨어 개발
행복한 소프트웨어 개발도형 임
 
Java 그쪽 동네는
Java 그쪽 동네는Java 그쪽 동네는
Java 그쪽 동네는도형 임
 

More from 도형 임 (20)

인공지능과 심리상담
인공지능과 심리상담인공지능과 심리상담
인공지능과 심리상담
 
Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning
 
Deep learning application_to_manufacturing
Deep learning application_to_manufacturingDeep learning application_to_manufacturing
Deep learning application_to_manufacturing
 
프로그래머를 고려하는 당신에게
프로그래머를 고려하는 당신에게프로그래머를 고려하는 당신에게
프로그래머를 고려하는 당신에게
 
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
 
알파고 학습 이해하기
알파고 학습 이해하기알파고 학습 이해하기
알파고 학습 이해하기
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질
 
유지보수성이 sw의 품질이다.
유지보수성이 sw의 품질이다.유지보수성이 sw의 품질이다.
유지보수성이 sw의 품질이다.
 
Release and versioning
Release and versioningRelease and versioning
Release and versioning
 
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
 
고품질 Sw와 개발문화
고품질 Sw와 개발문화고품질 Sw와 개발문화
고품질 Sw와 개발문화
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
행복, 그리고 인지과학
행복, 그리고 인지과학행복, 그리고 인지과학
행복, 그리고 인지과학
 
유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발
 
Git 사용 가이드
Git 사용 가이드Git 사용 가이드
Git 사용 가이드
 
흰머리 성성하게 개발하기 위해
흰머리 성성하게 개발하기 위해흰머리 성성하게 개발하기 위해
흰머리 성성하게 개발하기 위해
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
행복한 소프트웨어 개발
행복한 소프트웨어 개발행복한 소프트웨어 개발
행복한 소프트웨어 개발
 
Java 그쪽 동네는
Java 그쪽 동네는Java 그쪽 동네는
Java 그쪽 동네는
 

코드와 실습으로 이해하는 인공지능

  • 2. • 대상 • 인공지능을 감 잡아보고 싶은 개발자. • 인공지능으로 무언가 구현해야 하는 개발자. • 인공지능 서비스를 고민하는 기획자, 경영자 • 인공지능의 심오한 이론을 얘기하지 않습니다. 실제 구동되는 코 드를 통하여 어떤 것인지 감잡고, 다음 액션을 꾀할 수 있는 것을 목적으로 합니다. • 바이블도 아니고, 최신도 아니고, 요약도 아니고, 순수 진실도 아 닙니다. 대상, 내용, 목적, 주의
  • 3.
  • 4. 2개의 상자가 있다. • 익은 것 • 안익은 것 사람이 분류해야 한다. 2개 상자의 것들을 보고 감 잡고 분류한다. 귤 익은 것 분류하기 - 사람
  • 5. 로봇을 위한 프로그램을 작성해야 한다. • ‘xxx하면 우측 상자에, 그렇지 않은 경우 좌측 상자에’ 감잡고 분류할 때 사용한 기준을 하드코딩해야 한다. 귤 익은 것 분류하기 - 로봇
  • 6. 2개 상자의 것을 보고 삼았던 기준은 크기 큰 것은 익은 것, 작은 것은 안 익은 것. 대충 있었던 크기를 측정하고 그것을 하드 코딩. • ‘if(size > 7.5) then …’ 귤 익은 것 분류하기 - 로봇 크다작다 기준 익은거안익은거
  • 7. 하드 코딩한 기준 마저 스스로 찾아내게 하고 싶다. 사과 익은 거 분류하기 - 로봇
  • 16. 사과 기준 찾기 – 찾았다! 크다작다 기준 익은거안 익은거
  • 17. 입력을 받아 몇개의 그룹으로 분류한다. 귤은 내가 기준을 찾았다. (직접 코딩한 알고리즘) 사과는 기계가 기준을 찾았다.(기계가 찾은 알고리즘) 하지만 둘다 목적과 쓰임새는 동일. 분류기 분류기크기 익었다 분류
  • 18. • 분류를 위해 ‘크기를 재서 기준 크기를 가지고 구별’ ←model • 학습 시키려면 사과 2상자가 필요. 익은거 상자, 안익은거 상자. ←training set • 여러번 반복해서, ← iteration, step, epoch • 원하는 기준 크기를 찾아냄. ← learning, training • 그리고 구분 안된 바구니에 적용. ← test set, evaluation set 용어
  • 19.
  • 20. 사과 분류를 학습한 기준으로 적용했더니, 결과가 않좋다. Training set으로 100% 하더라도, test set은 결과가 안좋을 수 있다. 사과 분류 적용
  • 21. 분류해 놓은 것을 확인해 보니 크기가 큰데도, 색깔이 덜 빨깐 사과 가 있다. 사과 분류 적용 크다작다 안익은거 익은거
  • 22. 기준을 다시 찾자 – 색깔을 고려 크다작다 안익은거 익은거 뻘겋다 퍼렇다
  • 23. 기준을 다시 찾자 – 색깔을 고려 크다작다 안익은거 익은거 뻘겋다 퍼렇다
  • 24. 기준을 다시 찾자 – 가르자 크다작다 안익은거 익은거 뻘겋다 퍼렇다 기준
  • 25. 기준이 선이다 기준 귤일때는 값이 기준이었는데, 이젠 기준이 선이다.
  • 26. 새 기준의 의미 익은거 안익은거 크기 색깔 크기하고 색깔하고 같이 고려해서 어느정도 이상이면 익은거
  • 27. 처음이자 마지막 수식 선은 다음 식으로 표현 w1x1 + w2x2 = b x2 w1x1 + w2x2 = b x1
  • 28. 선 x1 x2 x1 + x2 = 3.5 크기 정도(x1)하고 색깔 정도(x2)를 합쳐서 3.5정도인 거 x1 + x2 = 3.5 1 2 3 1 2
  • 29. 선과 점 x1 x2 x1 + x2 = 3.5 크기 정도(x1)하고 색깔 정도(x2)를 합쳐서 3.5정도인 거 x1 + x2 = 3.5 1 2 3 1 2 (2, 2) (3, 1.3) (1, 1) (2, 0.7)
  • 30. 점의 값 x1 x2 x1 + x2 = 3.5 크기 정도(x1)하고 색깔 정도(x2)를 합쳐서 3.5정도인 거 1 2 3 1 2 4 = 2 + 2 4.3 = 3 + 1.3 2 = 1 + 1 2.7 = 2 + 0.7 x1 + x2 = 3.5
  • 31. 선으로 구분된 영역 x1 x2 x1 + x2 = 3.5 크기 정도(x1)하고 색깔 정도(x2)를 합쳐서 3.5정도인 거 1 2 3 1 2 4 = 2 + 2 4.3 = 3 + 1.3 2 = 1 + 1 2.7 = 2 + 0.7 x1 + x2 = 3.5
  • 32. 기준을 찾는다는 건 선을 표현하는 w1, w2, b을 찾는 것. w1x1 + w2x2 = b x2 x1 w1x1 + w2x2 = b
  • 33.
  • 34. 선식의 다른 표현 x2 x1 w1x1 + w2x2 + b = 0 x1 x2 1 w1 w2 b + w1x1 + w2x2+ b 0
  • 35. • 크기가 3이고, 색깔이 2인 경우 • 계산 값은 1.5 그림 표현의 예 3 2 1 1 1 -3.5 + 1.5
  • 36. 익은 사과 x2 x1 + x2 – 3.5 = 0 x1 3 2 1 + 1 1 -3.5 3 + 2 – 3.5 = 1.5 (3, 2) 크기가 3, 색깔이 2. 계산 값은 1.5 0 보다 크다. 선 우측에 있다.
  • 37. 안 익은 사과 x2 x1 + x2 – 3.5 = 0 x1 1 1 1 + 1 1 -3.5 1 + 1 – 3.5 = - 1.5 (1, 1) 크기가 1, 색깔이 1. 계산 값은 -1.5 0 보다 작다. 선 좌측에 있다.
  • 38. 그림 표현 x2 x1 + x2 – 3.5 = 0 x1 3 2 1 + 1 1 -3.5 1.5 (3, 2) 2 1 1 + 1 1 -3.5 - 1.5 (1, 1) 0보다 큰 것은 우측 0보다 작은 것은 좌측
  • 39. 잘못된 분류 1x1 + 1x2 - 3.5 = 0 9 1 1 + 1 1 -3.5 6.5(9, 1) 크기가 9이고 색깔이 1. 안익었으니 계산값이 0보다 작아야 하는데 크다.
  • 40. 그림 표현 크기 색깔 1 1 1 -3.5 + 1 x 크기 + 1 x 색깔 + (-3.5) 그림표현에서의 화살표 위의 숫자가 기준 선을 의미. 색깔 크기 1x1 + 1x2 -3.5 = 0
  • 41. 선 조정 필요 9 1 1 1 1 -3.5 + 9 + 1 – 3.5 = 6.5 선을 나타내는 1, 1, -3.5의 값을 조정해서 계산 값이 0보다 작게 해야 한다.
  • 42. 선 조정 아이디어 9 1 1 1 1 -3.5 + 9 + 1 – 3.5 = 6.5 계산 값에 왕창 영향 끼치는 크기(9)의 것을 색깔(1) 보다 더 크게 조정하자.
  • 43. 선 조정 아이디어 계산 값에 왕창 영향 끼치는 크기(9)의 것을 색깔(1) 보다 더 크게 조정하자. 물론 잘 분류했을 때에는 조정할 필요 없고.
  • 44. 선 조정 아이디어 조정 값 = 오차 * 입력값 * 학습율
  • 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)라 칭한다. 용어
  • 51.
  • 52. 귤의 예에서, 그 기준의 값에 따라 오차의 크기가 결정된다. 결국 학습의 목표는 오차를 최소로, 혹은 오차함수의 값 이 최소가되는 w를 찾는것. 비용 함수는 모델을 구성하는 가중치(w)의 함수이다. 예에서의 기준값에 의해 발생 하는 오차의 정도. 비용 함수(Cost Function)
  • 53. 비용함수를 최소로 하는 w를 찾는 것이 학습이다 학습과 비용함수
  • 54. 오차평면에서 공을 올려 놓았을 때 공이 굴러가는 방향(오차가 적어지는 방향)으로 w를 조정한다. 경사 하강법(Gradient Descent) 경사
  • 55. 경사하강법은 비용함수를 구하고, 이를 각 weight 별로 편미분하면 각 weight 별로 수정할 다음 값을 구할 수 있다. 그렇다고 한다. 선형 모델(w1x1 + w2x2 = b)에서는 경사하강법의 결과가 직관적으 로 설명했던 방법과 동일하다. 결국 사과예에서 학습한 방법은 경사하강법을 사용한 것이다. 사과 예에서 학습방법
  • 57.
  • 58. 여러개의 수상돌기에서 자극이 합해져서 그 값이 어느 값 이상일 경우 축색돌기로 자극을 발생시킨다. 신경세포 http://m.blog.daum.net/lpds417/17453443
  • 60. 선형분리의 문제를 학습할 수 있다. 퍼셉트론(Perceptron) x1 x2 1 w1 w2 b + w1x1 + w2x2+ b 0 or 1
  • 61. 하지만 간단한 XOR도 못한다. 선형분리가 불가능한 것은 풀지 못한다. XOR는 선형분리로 풀지 못하는 문제이다. 퍼셉트론의 한계 http://programmermagazine.github.io/201404/book/pmag.html
  • 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
  • 68.
  • 69. Universal Approximator • 어떠한 함수도 근사화할 수 있다. DNN의 능력
  • 70. • DNN은 임의의 함수를 근사화 할 수 있다. • 함수의 내부를 모르더라도. • 입력과 출력 데이터로. DNN의 함수 근사화 능력
  • 76. • 처음 보는 입력이라도 출력을 낸다. 의미 있는. 학습된 후에는? DNN ?
  • 77. • 고양이, 강아지 구분 함수. • 어떻게 구분하는 지는 정의하지 않았다. • 사람이 정의하지는 못했지만, 분명이 그런 로직(함수)가 존재한 다. • 단순한 입력, 출력 쌍으로 그 함수를 근사화 하였다. 함수를 근사화 한것이다.
  • 78. • 단순히 입출력 쌍을 반복하여 학습시킨다. • 하지만 로직을 찾아내기 어려운 문제에는 아주 효과적이다. • 얼굴 인식, 물체 인식 같은. 단순, 하지만 강력한 방법
  • 84. • DNN은 함수 근사화 능력이 있다. • 입출력 쌍을 계속 제공하여 DNN내부의 웨이트를 업데이트 한다. • 이를 위해 내부적으로 BP와 GD 알고리즘을 사용. • 충분한 입출력 데이터와 컴퓨팅 파워가 필요. • 이를 반복하여 함수를 근사화하는 것을 DNN의 학습, Deep Learning이라 한다. BP(Back Propagation), GD(Gradient Descent) 딥러닝
  • 85.
  • 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
  • 93.
  • 94. • 가장 많이 사용하고 있는 ML 프레임웤 • 실제 실행되는 코어와 연산을 정의하고 요청하는 front end. ML 프레임웤 https://www.slideshare.net/JenAman/large-scale-deep-lear ning-with-tensorflow?from_action=save
  • 95. • 연산될 내용을 정의한다. 그래프 X W matmul + relu b y
  • 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 함수 정의(원하는 바) 실행
  • 99.
  • 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
  • 104. • 학습율 • w의 변경되는 정도 Learning Rate https://www.quora.com/In-an-artificial-neural-network-algorithm-what-ha ppens-if-my-learning-rate-is-wrong-too-high-or-too-low
  • 105. • activation function중의 하나. • 최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의 값으로 나타낸다. • 확률 처럼 표현된다. SoftMax http://www.jianshu.com/p/cad5567aeb58
  • 106. • 출력된 값과 원하는 값과의 차이를 가지고 그 전의 w를 값들을 변 경하는 알고리즘. • 뒤에서부터 그 오차의 값이 전파된다는 이름. • 실제 변경되는 값의 크기는 GD로 결정됨. BackPropagation
  • 107.
  • 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
  • 114. • convolution 필터와 pooling이 반복하여 feature 추출. • 이후 일반 DNN로 분류. 특징 추출과 분류 http://parse.ele.tue.nl/education/cluster2
  • 115. • 이미지 처리에 뛰어남. • 이미지 외의 것에도 좋은 성능을 보임. CNN 성능
  • 116.
  • 117. 구조 Discriminator. 판별기. 이미지가 진짜인지 가짜인지 판별한다. Generator. 생성기. 노이즈에서 가짜 이미지를 생성한다.
  • 118. Generative Adversarial Networks generatorZ G discriminator D_gene X discriminator D_real노이즈 진짜 이미지 가짜 이미지 가짜이미지 에 대한 판별값 진짜이미지 에 대한 판별값
  • 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)
  • 121. 생성기(generator)의 목적 generatorZ G discriminator D_gene X discriminator D_real 생성한 가짜 이미지( G)에 대한 결과(D_gene)는 1(진짜)
  • 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)
  • 124. • 생성기는 판별기가 구별못하는 가짜 이미지를 생성한다. 학습이 완료되면
  • 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)라 한다. 생성기 입력으로 사용한 노이즈
  • 131. 잠재 공간 상의 중간 점 https://medium.com/@juliendespois/latent-space-visualizat ion-deep-learning-bits-2-bd09a46920df
  • 133.
  • 134.
  • 135. • 2014년도 이미지 인식 대회 우승 모델 • ImageNet 데이터 사용 • 학습된 모델을 공개. • 43개 층의 ConvNet • 모델 파일의 크기 500M VGG 사용
  • 136. Cost Function total_loss = BETA * content_loss + ALPHA * style_loss 스타일은 바뀌더라도 내용은 변하면 안되. 스타일을 비슷하게 하자.
  • 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
  • 140. Cost Function total_loss = BETA * content_loss + ALPHA * style_loss 스타일은 바뀌더라도 내용은 변하면 안되. 스타일을 비슷하게 하자.
  • 141. • 모델을 로딩할 때 W, b는 Constant, • 업데이트 할 이미지는 Variable로 선언. • 반복하여 업데이트 되는 것은 대상 이미지. 코드 트릭
  • 142.
  • 143. • 정해져 있지 않다. • 그 보단 원하는 작업에 맞는 Cost Function을 선택한다. • GAN의 경우 • loss_D = log(D_real) + log(1-D_gene) • loss_G = log(D_gene) Cost Function의 선택
  • 144. • 각 타겟값과 계산값과의 차이를 최소로 한다. MSE(Mean Squared Error)
  • 145. • 두 데이터 집합 간의 분포의 차이를 볼 때는 다음을 사용 • Cross Entropy • KL-Divergence 분포의 차이
  • 146.
  • 147. • 상태를 가지고 있고, 다음 연산때 그 상태가 입력으로 사용된다. RNN(Recurrent NN) http://aikorea.org/blog/rnn-tutorial-1/
  • 148. • [h, e, l, l, o]의 학습 예 • h -> e • e -> l • l -> l • l - > o • 첫 번 째 l일때와 두번째 l 일 때의 출력이 다르다. 입출력 예
  • 149. • 4자리 단어 • 앞 3자리를 입력, 끝 1자리 출력 RNN 적용 예 - autocomplete w[0, 0 , 0 ,…, 0 ] o[ 0 , 0 , 0 ,…, 0 ] r [ 0 , 0 , 0 ,…, 0 ]output
  • 150. RNN 적용 예 – autocomplete - 입력 w [ 0, 0, 0, …, 0] o [ 0, 0, 0, …, 0] r [ 0, 0, 0, …, 0] n_step=3 RNN 입력의 연속 개수 n_input=26 (입력 벡터 차원)
  • 151. • 28차원의 벡터, 28개 연속 RNN 예 – MNIST - 입력 n_input=28 (입력 벡터 차원) n_step=28 RNN 입력의 연속 개수
  • 152. • 기계 번역에 사용 RNN(Recurrent NN) https://drive.google.com/file/d/0B8z5oUpB2DysZWF1RTFu X1NEZUk/view
  • 153. • RNN의 단점을 보완한 모델 LSTM(Long Short Term Memory) http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • 154.
  • 155. • 4000개의 단어들이 있다면, 무식하게 one-hot 벡터로 표현하면 4000차원. • 이를 적은 차원으로 표현해 보자. • 4000차원을 100차원 처럼. 단어를 표현하는 방법
  • 157. • 작은 차원으로 임베딩된 결과는 단어간의 관계를 갖는다. • man : woman = king : queen 임베딩된 결과 http://www.lifestyletrading101.com/word2vec-deep-learning/
  • 158.
  • 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으로 다양한 영역에 사 용 가능. • 순간정지 알람 • 알람 발생의 로직 작성 없이 알람 발생 가능. 순간정지 데이터 추출의 의미
  • 166.
  • 167. • 수 많은 센서들. 약 4000개의 센서. • 어떤 센서가 순간정지 발생에 영향을 끼치는 지 모른다. • 해당 센서를 탐지 할 수 있다면, 미리 조치하고 발생을 방지할 수 있다. 순간정지 원인 탐지
  • 168. • 신호(출력과 관계를 갖는 부분)만 동일하다면 학습된 DNN의 출력은 동 일할 것이다. • 다음 이미지들은 배경은 달라도 모두 고양이. • 노이즈(배경, 출력과 무관한)를 줄여도 DNN의 출력은 동일. • 출력이 동일하도록 유지하면서 입력을 억제할 경우, 신호 부분만 남길 수 있다. 신호와 노이즈
  • 169. • 학습이 완료된 후 Cost Function에 다음을 추가 • 입력의 값을 작게(억제)하도록 함. • 그리고 DNN이 아닌 입력을 업데이트. 방법
  • 170. • 특정 패턴의 존재 여부를 출력으로 학습. • 학습 완료 후 적용하면, 해당 패턴만 추릴 수 있다. 실험 결과
  • 171.
  • 172. • 측정된 센서 데이터를 입력으로하고, PUE*를 출력으로 하여 학 습시킴. • 실제 데이터를 사용. * PUE(Power Usage Effectiveness) : 에너지 사용 효율 정도. 작을 수록 좋다 DNN 적용
  • 173. 입력
  • 174. • mean absolute error 0.4% 예측 결과
  • 175. • 함수 근사화 : 센서값 à PUE • 임의의 입력값에 대한 PUE를 예측할 수 있다. • 학습된 DNN은 시뮬레이터로 사용 가능. 고찰
  • 176. • 운영 파라매터를 변경하며 시뮬레이션 하고, PUE의 변동을 예측 할 수 있다. • 최적의 PUE를 위한 운영 파라매터와 값을 찾고 적용 가능. • 가상 적인 환경에서 요인별 분석이 가능함. • 외부 온도가 가장 영향이 크다고 분석됨. 시뮬레이션이 가능하면
  • 177.
  • 179. • 강화학습에 DNN을 사용한 것. DQN(Deep Q Network) Environment Agent Action 𝑎" = 2State 𝑠" Reward 𝑟" = 1 점프 https://www.slideshare.net/deview/ai-67608549
  • 180.
  • 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 학습 리소스