텐서플로우로 배우는 딥러닝
전북대학교주찬웅
현재 가장 핫한 토픽
https://www.youtube.com/watch?v=VOC3huqHrss
인공지능이란?
인공지능
머신러닝
딥러닝
머신러닝이란?
If 배가 고프면, then 밥을 먹어라 데이터 기반 → 예측 + 학습
Explicit Programming Machine Learning
간단한 문제 복잡한 문제
Ex) 스팸필터, 추천 시스템,
요일과 교통상황 사이의 상관관계
머신러닝이란?
지도학습
비지도학습 강화학습
지도학습이란?
• 입력데이터와 정답데이터가 주어졌을 때,
이 데이터의 상관관계를 가장 잘 표현하는 함수를 구하는 것
입력
? 정답
지도학습이란?
개 or 고양이
분류해주는 모델
(Classification)
각각의
확률
지도학습이란?
집 값을 예측해주는
모델(Regression)
연속적인
값
집의 위치
층수
집 주위의 교통환경
방의 개수
해당 지역 범죄율
비지도학습이란?
• 입력데이터만 주어졌을 때, 모델 스스로 데이터안에서 어떠한 관계를 찾아
내는 것
• 정답데이터가 주어지지 않는다는 점에서 지도학습과의 차이점을 보임
강화학습이란?
• 환경과 상호작용을 하며, 잘한 행동에는 칭찬을 못한 행동에 대해서
벌을 주면서 최적의 행동을 찾는 것
강화학습이란?
https://www.youtube.com/watch?v=Tm
PfTpjtdgg
왜 딥러닝일까?
• 머신러닝을 이용한 학습방법은 오래 전부터 존재
• 하지만, 머신러닝이 Linear한 성질 때문에, XOR문제와 같은 간단한
비선형 문제조차도 해결 불가능
• H(s) = WX (W : 가중치의 벡터, X: 입력의 벡터)
딥러닝이란?
• 인간의 뇌를 본따서 만든 인공신경망을 이용하여 학습하는 것
• 인공신경망을 넓고 다층(Deep)으로 쌓으면 딥러닝(Deep-Learning)
딥러닝이란?
• 신경망을 다층으로 쌓으면 비선형 문제도 해결 가능
• 신경망 출력에 비선형 활성화 함수를 추가함
활성화 함수란?
• 어떠한 입력이 들어와서 함수 출력이 나왔을 때, 이 함수를 활성화 하
는 함수
• 아무리 Linear한 함수를 다층으로 쌓아도 선형 함수
• 활성화 함수를 사용함으로써 함수가 비선형이 됨
어떻게 학습을 할까?
• 입력데이터와 정답데이터가 필요(지도학습)
• 입력데이터와 정답데이터에 맞는 최적의 함수를 찾아야함
1
2
3
1
2
3
입력 정답
F(x)
어떻게 학습을 할까?
• F(x) = Wx 라는 일차 방정식으로 표현
• 우리가 구해야 할 것은 W(weight : 가중치) 만약 W가 ‘2’라면?
1
2
3
2
4
6
입력 추측(정답X)
F(x) = Wx
1
2
3
실제 정답
어떻게 학습을 할까?
• 오차(loss/cost/object)를 줄이면 결국 잘 맞는 함수이지 않을까?
• Regression 문제에서는 MSE(Mean Square Error)를 사용. 출력
과 정답 값의 차이를 나타내는 함수
• Classification 문제에서는 Cross-Entropy를 사용.
어떻게 학습을 할까?
2
4
6
출력(정답X)
1
2
3
정답
=
1
3
2 − 1 2 + 4 − 2 2 + 6 − 3 2
=
14
3
= 4.67
F(x) = 2(w) * X
어떻게 학습을 할까?
0
5
10
15
20
-2 -1 0 1 2 3 4
MSE
W(weight)
어떻게 학습을 할까?
• MSE가 최소가 되는 지점을 구해야함(Minimize 문제)
• 미분을 하여 그 값(기울기)이 0이 되는 W가 해당 그래프의 최소값
0
5
10
15
20
-2 -1 0 1 2 3 4
MSE
W(weight)
기울기 = 0
어떻게 학습을 할까?
• 경사 하강법을 이용(Gradient Descent Algorithm)
• 𝑊 = 𝑊 − 𝛼
𝜕𝐸
𝜕𝑊
(𝛼 ∶ 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑅𝑎𝑡𝑒 학습률)
0
5
10
15
20
-2 0 2 4
MSE
W(weight)
어떻게 학습을 할까?
• 경사 하강법을 이용(Gradient Descent Algorithm)
• 𝑊 = 𝑊 − 𝛼
𝜕𝐸
𝜕𝑊
(𝛼 ∶ 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑅𝑎𝑡𝑒 학습률)
0
5
10
15
20
-2 0 2 4
MSE
W(weight)
어떻게 학습을 할까?
• 경사 하강법을 이용(Gradient Descent Algorithm)
• 𝑊 = 𝑊 − 𝛼
𝜕𝐸
𝜕𝑊
(𝛼 ∶ 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑅𝑎𝑡𝑒 학습률)
0
5
10
15
20
-2 0 2 4
MSE
W(weight)
어떻게 학습을 할까?
• 경사 하강법을 이용(Gradient Descent Algorithm)
• 𝑊 = 𝑊 − 𝛼
𝜕𝐸
𝜕𝑊
(𝛼 ∶ 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑅𝑎𝑡𝑒 학습률)
0
5
10
15
20
-2 0 2 4
MSE
W(weight)
딥러닝의 큰 문제점
• 기존 머신러닝(Linear)은 층이 하나라서 미분이 가능했음
• 딥러닝은 층이 깊어지면 사실상 미분이 불가능해짐
• 딥러닝이 오래전부터 있었지만 더 이상 발전을 못해 왔음(빙하기)
• Backpropagation이라는 알고리즘이 나온 후 부터 다시 발전
미분 가능?
Backpropagation이란?
• 현재 딥러닝 학습에서 사용되는 가장 중요한 개념
• 복잡한 형태의 함수를 Chain rule을 이용해 쉽게 기울기를 구할 수
있음
W
Backpropagation이란?
W
MSE
𝜕𝐸
𝜕𝑊
=
𝜕𝐸
𝜕𝑜𝑢𝑡
∗
𝜕𝑜𝑢𝑡
𝜕𝑖𝑛
∗
𝜕𝑖𝑛
𝜕𝑊
Chain rule :
out
in
후에 다시 경사하강법을 이용하여 W 업데이트
활성화 함수
또 다시 빙하기
• Deep하게 층을 쌓고 Backpropagation을 통해서 여러 복잡한 문제
들 해결
• But, 너무 층이 깊어지면서 Backpropagation으로 오류가 입력단까
지 전달되지 못하는 현상 발견
• 이러한 문제를 Vanishing Gradient라고 함
Vanishing Gradient
• 원인은 비선형 문제를 풀기위해서 추가한 활성화 함수들(tanh, sigmoid)
• 모든 출력을 [0,1]사이로 압축해버리는 Sigmoid 특성때문에 기울기가 거의
사라져버림
• 아무리 미분 값이 커도 최대 0.25
• Backpropagation을 할 때, 최대 0.25인 값을 곱해서 점점 그 값이 희미해
짐
Sigmoid의 미분
Vanishing Gradient
• 이 문제를 해결하기 위해서 아주 간단한 활성화 함수를 추가
• 0보다 작으면 0, 0보다 크면 그 값을 그대로 출력해주는 활성화 함수
(Rectified Linear Unit : ReLU)
• ReLU를 미분하면 계단함수가 나옴, 기울기는 더 이상 사라지지 않게 됨
ReLU의 미분
CNN의 발견
• Convolution Neural Network(합성곱 신경망)
• 현재 거의 모든 영상처리에 사용
• 이미지를 단순하게 픽셀로 계산하는 것이 아니고, 이미지의 공간 특성
을 살릴 수 있게 Convolution Filter를 통해서 이미지에서 Feature
를 추출하고 그 Feature들을 이용하여 이미지를 분류
Feature 추출 단계 분류 단계
RNN의 발견
• Recurrent Neural Network(순환 신경망)
• 현재 대부분 시계열 데이터 처리에 사용
• 현재 상태의 출력을 다시 입력으로 사용함으로써 이전 상태를 기억
Tensorflow란?
• 구글에서 개발한 파이썬 딥러닝 라이브러리
• 미분이나 여러 복잡한 계산들을 쉽게 함수로 정의해놓음으로써, 쉽게
원하는 모델 구현 가능
Tensorflow의 차별점
• 기존 Numpy로 구성된 딥러닝 네트워크는 데이터와 모델이 한번에 만
들어지고 학습이 이루어짐
• Tensorflow는 일단 모델의 껍데기를 먼저 구성해놓고, Session을
시작하면서 모델들을 Session위로 불러옴
• 그 후에 Placeholder를 통해 학습할 데이터를 흘려줌
Tensorflow에서 꼭 알아야할 개념
• tf.Placeholder
• tf.Variable
• tf.nn
• tf.train
• tf.Session
• feed_dict
간단한 예제
1
2
3
1
2
3
입력 정답
F(x)
0
5
10
15
20
-2 0 2 4
MSE
W(weight)
간단한 예제
모델의 껍데기를 만드는 부분
간단한 예제
X Y
X * W
간단한 예제
𝑊 = 𝑊 − 𝛼
𝜕𝐸
𝜕𝑊
(𝛼 ∶ 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑅𝑎𝑡𝑒 학습률)
간단한 예제
실제 데이터를 흘려보내서 학습하는 부분
간단한 예제
X Y
X * W
tf.Session
간단한 예제
1 Epoch : 모든 데이터 셋을 한 번 학습
1 iteration : 1회 학습
minibatch : 데이터 셋을 batch size 크기로 쪼개서 학습
ex) 총 데이터가 100개, batch size가 10이면,
1 iteration = 10개 데이터에 대해서 학습
1 Epoch = 100/batch size = 10 iteration
1 Epoch
batch size 데이터 셋
간단한 예제
X Y
X * W
tf.Session
Flow
간단한 예제
라이브러리 사용으로 Cost를 쉽게 Minimize할 수 있음
간단한 예제
참고
• https://github.com/jcwleo/
• https://www.youtube.com/watch?v=VOC3huq
Hrss
• https://www.youtube.com/watch?v=TmPfTpjt
dgg
• https://brunch.co.kr/@chris-song/39
• http://pythonkim.tistory.com/40
• https://ml4a.github.io/images/figures/relu.png
감사합니다
QnA

텐서플로우로 배우는 딥러닝