SlideShare a Scribd company logo
1 of 49
Download to read offline
Convolutional
Neural Networks
Outlook
• Part 1: 파이썬과 텐서플로우 소개
• Part 2: 회귀 분석과 로지스틱 회귀
• Part 3: 뉴럴 네트워크 알고리즘
• Part 4: 콘볼루션 뉴럴 네트워크
2
지난 시간에...
3
Perceptron vs Logistic Neuron
활성화 함수
가중치
𝑤"~𝑤$%
위스콘신 데이터
𝑥"~𝑥$%
4
레이어간 행렬 계산
5
𝑥"
0.6
⋯
𝑥$%
0.2
⋮ ⋱ ⋮
0.5 ⋯ 0.4
⋅
𝑤"
"
⋮
𝑤$%
"
⋱
𝑤"
"%
⋮
𝑤$%
"%
=
1.5
5.9
⋮
0.7
⋱
1.1
0.2
⋮
0.5
		+ 𝑏" ⋯ 𝑏$% =
1.2
2.9
⋮
1.7
⋱
1.6
2.2
⋮
4.1
569 x 10 크기
569개
샘플
𝑥							×		𝑊																				 + 𝑏 = 𝑧
[569, 30] x [30, 10] = [569, 10] + [10] = [569, 10]
10개 편향(bias)
30개 특성
569 x 10개 결과
(logits)
...
𝑥%
𝑥"
𝑥$%
𝑏%
𝑏"%
30 x 10개
가중치
다중 분류
Dog
Cat
Rabbit
𝑦<" =
0.9
0.8
0.7
𝑦<> =
0.5
0.2
0.1
𝑦<" =
0.59
0.26
0.15
𝑦<> =
0.74
0.18
0.08
출력값 정규화
시그모이드 출력
소프트맥스 출력
6
완전 연결 뉴럴 네트워크
...
...
히든 레이어
입력 레이어
출력 레이어
입력 데이터
	
	
	
	
	
	
	
	
	
	
	
	
출력 레이블
	
	
	
	
	
	
	
	
	
	
	
	
𝑥 𝑦<
𝑤", 𝑏" 𝑤>, 𝑏>
시그모이드, 렐루
소프트맥스
7
역전파 알고리즘
8
Neuron
*
+
Softmax
𝑡
𝑦<
𝜕𝐽
𝜕𝑧
= (𝑦 − 𝑦<)
𝑧 = 𝑤×𝑡 + 𝑏
𝑏 = 𝑏 +
𝜕𝐽
𝜕𝑏
=
𝜕𝐽
𝜕𝑧
×
𝜕𝑧
𝜕𝑏
= (𝑦 − 𝑦<)
Neuron
𝑤 = 𝑤 +
𝜕𝐽
𝜕𝑤
=
𝜕𝐽
𝜕𝑧
×
𝜕𝑧
𝜕𝑤
= 𝑦 − 𝑦< 𝑡
𝑧
𝜕𝐽
𝜕𝑡
=
𝜕𝐽
𝜕𝑧
×
𝜕𝑧
𝜕𝑡
= 𝑦 − 𝑦< 𝑤
𝐽𝜕𝐽
𝜕𝑠
=
𝜕𝐽
𝜕𝑡
×
𝜕𝑡
𝜕𝑠
= 𝑦 − 𝑦< 𝑤×𝑡(1 − 𝑡)
𝑠
시그모이드
SGD, mini-batch GD
• Batch 그래디언트 디센트
• 전체 훈련 데이터를 사용
• 가장 좋은 방법, 대규모 데이터 셋에 적용하기 힘
듬
• SGD(Stochastic Gradient Descent):
• 훈련 데이터 하나씩 사용
• 빠른 학습 가능, 노이즈 데이터로 인해 변동이 큼
• mini-batch GD
• 훈련 데이터를 조금씩 나누어 사용
• Batch 와 SGD의 절충안으로 일정 개수의 데이터
를 이용하여 학습
9
레이어 구성
...
...
히든 레이어
100개
입력 레이어
784개
출력 레이어
10개
입력 데이터
28x28=784
	
	
	
	
	
	
	
	
	
	
	
	
출력 레이블
	
	
	
	
	
	
	
	
	
	
	
	
𝑥 𝑦<
𝑤", 𝑏" 𝑤>, 𝑏>
시그모이드
소프트맥스
10
뉴럴 네트워크 구현
CNN
Fully Connected
• 이미지 픽셀을 일렬로 펼쳐서 네트워크에 주입합니다.
...
784×100 + [100]
...
Convolution
• 이미지의 2차원 구조를 그대로 이용합니다.
• 가중치가 재활용되어 사이즈가 크게 줄어 듭니다.
...
...
...
...
3×3 + [1]
...
Convolving
Feature Map
• 콘볼루션으로 만들어진 2차원 맵을 특성 맵이라고 부릅니다.
• 보통 한 레이어에서 여러개의 특성 맵을 만듭니다.
...
...
...
...
⋅ 3×3 + [1]
특성 맵
(Feature Map)
전형적인 특성 맵
• 특성 맵을 만드는 가중치를 커널(kernel), 혹은 필터(filter)라고도 부릅니다.
• 보통 한개 이상의 커널을 사용합니다.
특성 맵(3D)커널, 필터(w)
conv2d()
• 가중치와 바이어스를 직접 생성해 전달
• tf.layers.conv2d()를 사용하면 편리함
...
...
...
...
⋅ 3×3 + [1]
W = tf.Variable(tf.truncated_normal([3, 3, 1, 10], stddev=0.1))
b = tf.Variable(tf.constant(0.1, shape=[10]))
conv = tf.nn.conv2d(x, W) + b
DNN
CNN
소프트맥스 함수
Stride, Padding
스트라이드(stride)
• 필터가 슬라이딩하는 크기를 지정합니다.
스트라이드 계산
𝑜 =
𝑖 − 𝑓
𝑠
+ 1 =
4 − 3
1
+ 1 = 2
입력(i): 4x4
필터(f): 3x3
스트라이드(s): 1
W = tf.Variable(tf.truncated_normal([3, 3, 1, 10], stddev=0.1))
b = tf.Variable(tf.constant(0.1, shape=[10]))
conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1]) + b
패딩(padding)
• 입력 값 주위에 0 으로 채운 패딩을 더합니다(zero-padding)
• 필터가 더 많이 슬라이드되도록 합니다.
패딩 계산
𝑜 =
𝑖 − 𝑓 + 2𝑝
𝑠
+ 1 =
5 − 4 + 2×2
1
+ 1 = 6
입력(i): 5x5
필터(f): 4x4
스트라이드(s): 1
텐서플로우 패딩 계산
• 패딩크기를 직접 지정, tf.pad()
• 패딩 타입(same/valid), 스트라이드 크기 à 패딩 크기 자동 결정
• same
• 출력크기=입력크기/스트라이드
• tf.layer.conv2d(.., padding=‘same’, ..)
• 패딩 크기가 필터의 절반 정도라 하프 패딩이라고도 부름
• valid
• 패딩을 넣지 않음
• tf.layer.conv2d(.., padding=‘valid’, ..)
W = tf.Variable(tf.truncated_normal([3, 3, 1, 10], stddev=0.1))
b = tf.Variable(tf.constant(0.1, shape=[10]))
conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding=‘SAME’) + b
ReLU
• Rectified Linear Unit
• -∞~+∞입력에 대해 0~+∞ 사이의 값을
출력합니다.
𝑦< = max	(0, 𝑧)	
W = tf.Variable(tf.truncated_normal([3, 3, 1, 10], stddev=0.1))
b = tf.Variable(tf.constant(0.1, shape=[10]))
conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding=‘SAME’) + b
acti = tf.nn.relu(conv)
subsampling
서브샘플링
보통 풀링(Pooling)이라고 부름
평균 풀링(Average Pooling), 맥스 풀링(Max Pooling)
데이터 압축의 효과
풀링
• 가중치를 곱하거나 바이어스를 더하는 것이 없음
• 입력 맵에서 읽은 데이터를 재 가공함
• 보통 풀링 크기와 스트라이드 크기가 같음(겹치는 부분 없음)
• 출력크기=입력크기/풀링크기
맥스 풀링
𝑜 =
𝑖 − 𝑓
𝑠
+ 1
=
5 − 3
1
+ 1 = 3
평균 풀링
𝑜 =
𝑖 − 𝑓
𝑠
+ 1
=
5 − 3
1
+ 1 = 3
max_pool()
• 커널 크기와 스트라이드 크기를 구체적으로 지시함
• tf.layers.max_pooling2d()를 사용하면 편리
W = tf.Variable(tf.truncated_normal([3, 3, 1, 10], stddev=0.1))
b = tf.Variable(tf.constant(0.1, shape=[10]))
conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding=‘SAME’) + b
actv = tf.nn.relu(conv)
pool = tf.nn.max_pool(actv, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1])
드롭아웃(dropout)
• 학습할 때 레이어의 일부 노드를 제외합니다.
• 여러개의 네트워크를 앙상블하는 효과를 발휘합니다.
drop_out()
• 드롭 아웃할 확률을 지정합니다.
• 추론(inference)시에는 드롭아웃을 하면 안됩니다.(플레이스 홀더)
• 예제에서는 tf.layers.dropout() 함수를 사용하겠습니다.
drop = tf.nn.dropout(fc_output, keep_prob)
drop = tf.layers.dropout(fc_output, drop_prob)
드롭시킬 비율
드롭시키지 않고 남길 비율
콘볼루션 구현
레이어 구성
...
...
28×28×1
5×5×1
same, 32개
28×28×32
2×2
maxpool
14×14×32
5×5×32
same, 64개
14×14×64
2×2
maxpool
7×7×64
1024 10
𝑦<𝑧
softmax
relu
콘볼루션1
• 5x5 커널, 32개
• 스트라이드 1
• 패딩 same
• ReLU 활성화 함수
28×28×1
5×5×1
same, 32개
28×28×32
relu
풀링1
• 2x2 커널
• 2x2 스트라이드
28×28×32
2×2
maxpool
14×14×32
콘볼루션2
• 5x5 커널, 64개
• 스트라이드 1
• 패딩 same
• ReLU 활성화 함수
5×5×32
same, 64개
14×14×6414×14×32
풀링2
• 2x2 커널
• 2x2 스트라이드
14×14×64
2×2
maxpool
7×7×64
완전연결 레이어
• 1024개 유닛
• 드롭아웃 적용
• 렐루 활성화 함수
7×7×64
1024
출력 레이어
• 10개의 유닛
• 소프트 맥스 활성화 함수
10
𝑦<𝑧
softmax
소프트맥스 통과전 : z
소프트맥스 통과후 : y_hat
학습 설정
argmax(y) = [?]
argmax(y_hat) = [?]
y = [?, 10]
z = [?, 10]
불리언을 숫자로 바꾸고
평균을 냅니다.
[True, False, True,... ] à [1.0, 0.0, 1.0, ...]
미니 배치 훈련
100개씩 데이터 샘플링
x_data: [100, 784]
y_data: [100, 10]
결과
첫번째 콘볼루션 필터 32개
Materials
• Github :
https://github.com/rickiepark/tfk-notebooks/tree/master/tensorflow_for_beginners
• Slideshare :
https://www.slideshare.net/RickyPark3/
48
감사합니다.
49

More Related Content

What's hot

What's hot (20)

3.neural networks
3.neural networks3.neural networks
3.neural networks
 
4.representing data and engineering features(epoch#2)
4.representing data and engineering features(epoch#2)4.representing data and engineering features(epoch#2)
4.representing data and engineering features(epoch#2)
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 4장. 모델 훈련
 
(Handson ml)ch.7-ensemble learning and random forest
(Handson ml)ch.7-ensemble learning and random forest(Handson ml)ch.7-ensemble learning and random forest
(Handson ml)ch.7-ensemble learning and random forest
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 1장. 한눈에 보는 머신러닝
 
3.unsupervised learing(epoch#2)
3.unsupervised learing(epoch#2)3.unsupervised learing(epoch#2)
3.unsupervised learing(epoch#2)
 
해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4해커에게 전해들은 머신러닝 #4
해커에게 전해들은 머신러닝 #4
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 6장 결정 트리
 
2.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-22.supervised learning(epoch#2)-2
2.supervised learning(epoch#2)-2
 
사이킷런 최신 변경 사항 스터디
사이킷런 최신 변경 사항 스터디사이킷런 최신 변경 사항 스터디
사이킷런 최신 변경 사항 스터디
 
해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2해커에게 전해들은 머신러닝 #2
해커에게 전해들은 머신러닝 #2
 
밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습밑바닥부터 시작하는 딥러닝_신경망학습
밑바닥부터 시작하는 딥러닝_신경망학습
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
6.algorithm chains and piplines(epoch#2)
6.algorithm chains and piplines(epoch#2)6.algorithm chains and piplines(epoch#2)
6.algorithm chains and piplines(epoch#2)
 
5.model evaluation and improvement(epoch#2) 2
5.model evaluation and improvement(epoch#2) 25.model evaluation and improvement(epoch#2) 2
5.model evaluation and improvement(epoch#2) 2
 
4.representing data and engineering features
4.representing data and engineering features4.representing data and engineering features
4.representing data and engineering features
 
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
집단지성 프로그래밍 07-고급 분류 기법-커널 기법과 svm-01
 
5.model evaluation and improvement(epoch#2) 1
5.model evaluation and improvement(epoch#2) 15.model evaluation and improvement(epoch#2) 1
5.model evaluation and improvement(epoch#2) 1
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1해커에게 전해들은 머신러닝 #1
해커에게 전해들은 머신러닝 #1
 

Similar to 4.convolutional neural networks

Convolutional neural networks
Convolutional neural networksConvolutional neural networks
Convolutional neural networks
HyunjinBae3
 

Similar to 4.convolutional neural networks (20)

Cnn 발표자료
Cnn 발표자료Cnn 발표자료
Cnn 발표자료
 
Rdatamining
Rdatamining Rdatamining
Rdatamining
 
MNIST for ML beginners
MNIST for ML beginnersMNIST for ML beginners
MNIST for ML beginners
 
R_datamining
R_dataminingR_datamining
R_datamining
 
Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명Recurrent Neural Net의 이론과 설명
Recurrent Neural Net의 이론과 설명
 
Lecture 4: Neural Networks I
Lecture 4: Neural Networks ILecture 4: Neural Networks I
Lecture 4: Neural Networks I
 
Convolutional neural networks
Convolutional neural networksConvolutional neural networks
Convolutional neural networks
 
Tda jisu kim
Tda jisu kimTda jisu kim
Tda jisu kim
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
Python Programming: Function
Python Programming: FunctionPython Programming: Function
Python Programming: Function
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine Translation
 
LeNet & GoogLeNet
LeNet & GoogLeNetLeNet & GoogLeNet
LeNet & GoogLeNet
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
R 스터디 네번째
R 스터디 네번째R 스터디 네번째
R 스터디 네번째
 
[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)
 
R 스터디 첫번째
R 스터디 첫번째R 스터디 첫번째
R 스터디 첫번째
 
Digit recognizer
Digit recognizerDigit recognizer
Digit recognizer
 
Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1Deep learningwithkeras ch3_1
Deep learningwithkeras ch3_1
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
 
Python
PythonPython
Python
 

More from Haesun Park

More from Haesun Park (9)

[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 9장 텐서플로 시작하기
 
(Handson ml)ch.8-dimensionality reduction
(Handson ml)ch.8-dimensionality reduction(Handson ml)ch.8-dimensionality reduction
(Handson ml)ch.8-dimensionality reduction
 
7.woring with text data(epoch#2)
7.woring with text data(epoch#2)7.woring with text data(epoch#2)
7.woring with text data(epoch#2)
 
2.supervised learning(epoch#2)-1
2.supervised learning(epoch#2)-12.supervised learning(epoch#2)-1
2.supervised learning(epoch#2)-1
 
1.introduction(epoch#2)
1.introduction(epoch#2)1.introduction(epoch#2)
1.introduction(epoch#2)
 
7.woring with text data
7.woring with text data7.woring with text data
7.woring with text data
 
6.algorithm chains and piplines
6.algorithm chains and piplines6.algorithm chains and piplines
6.algorithm chains and piplines
 
1.introduction
1.introduction1.introduction
1.introduction
 
기계도 학교에 가나요?
기계도 학교에 가나요?기계도 학교에 가나요?
기계도 학교에 가나요?
 

4.convolutional neural networks