9. CPU GPU
NPU
C/C++ CUDA
NVIDIA
GPU
AMD GPU ARM GPU
Intel CPU AMD CPU ARM CPU
TPU
(Google)
Mobile NPU
(Apple, Qualcomm, Samsung, HiSilicon)
CL
TensorFlow/PyTorch
H/W-type
H/W-level
Low-level
Application-level
AI
인공지능
19. Prediction
예측
Input
(입력)
Output
(출력)
0 Red
-1 Red
1 Red
2 Red
-5 Blue
-4 Blue
-3 Blue
4 Blue
5 Blue
Input
(입력)
Prediction
(예측)
3 ?
6 ?
if-else로 구현할 수도 있다.
def predict(x: float):
if x > 3:
return "Blue"
else:
if x <= -2:
return "Blue"
else:
return "Red"
Python
20. Prediction
예측
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
0 0 Red
1 1 Red
1 3 Red
0 4 Red
-1 1 Red
-1 -2 Red
-2 3 Red
-2.5 -2.5 Red
-3 -1 Red
-3 2 Red
-4 0 Red
-4 3.5 Red
-4 -3 Red
1 -1 Blue
1 -3 Blue
2 0 Blue
2 -4 Blue
3 2 Blue
4 0 Blue
4.5 2.5 Blue
5 -2 Blue
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
-1 -1 ?
3 1 ?
21. Prediction
예측
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
0 0 Red
1 1 Red
1 3 Red
0 4 Red
-1 1 Red
-1 -2 Red
-2 3 Red
-2.5 -2.5 Red
-3 -1 Red
-3 2 Red
-4 0 Red
-4 3.5 Red
-4 -3 Red
1 -1 Blue
1 -3 Blue
2 0 Blue
2 -4 Blue
3 2 Blue
4 0 Blue
4.5 2.5 Blue
5 -2 Blue
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
-1 -1 ?
3 1 ?
ex) 5개의 가까운 점 중 많은 색상으로 결정.
가까운 점들을 확인하여 색상을 결정
22. Prediction
예측
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
0 0 Red
1 1 Red
1 3 Red
0 4 Red
-1 1 Red
-1 -2 Red
-2 3 Red
-2.5 -2.5 Red
-3 -1 Red
-3 2 Red
-4 0 Red
-4 3.5 Red
-4 -3 Red
1 -1 Blue
1 -3 Blue
2 0 Blue
2 -4 Blue
3 2 Blue
4 0 Blue
4.5 2.5 Blue
5 -2 Blue
1.5𝑥# − 𝑥$ − 1.5 의 값이 음수이면 Red 인가?
𝑦 = 1.5𝑥 − 1.5 직선 위에 있다면 Red 인가?
23. Prediction
예측
Input 0
(𝑿𝟎)
Input 1
(𝑿𝟏)
Output
(출력)
0 0 Red
1 1 Red
1 3 Red
0 4 Red
-1 1 Red
-1 -2 Red
-2 3 Red
-2.5 -2.5 Red
-3 -1 Red
-3 2 Red
-4 0 Red
-4 3.5 Red
-4 -3 Red
1 -1 Blue
1 -3 Blue
2 0 Blue
2 -4 Blue
3 2 Blue
4 0 Blue
4.5 2.5 Blue
5 -2 Blue
1.5𝑥# − 𝑥$ − 1.5 의 값이 음수이면 Red 인가?
𝑦 = 1.5𝑥 − 1.5 직선 위에 있다면 Red 인가?
( 1 , 3 ) 은 Red,
1.5 / 1 − 3 − 1.5 = −3
( 5 , 2 ) 는 Blue,
1.5 / 5 − (−2) − 1.5 = 8
24. Prediction
예측
대략 적절한 것 같은데..
이 예측은 신뢰성이 있나?
알 수 없다.
점 (-4, -1)은 Red가 확실한가?
데이터가 너무 부족하기 때문이다.
왜 확신할 수 없을까
무슨 데이터인지 모르기 때문이다.
33. Dimension
차원
키
(Height)
몸무게
(Weight)
신발 크기
(Shoe size)
성별
(Gender)
160.0181 47.57438 40 Female
171.1632 75.07518 39 Female
168.4182 45.9684 39 Female
168.0309 63.64062 40 Female
191.1731 83.63134 46 Male
https://osf.io/66fvm
키
(Height)
몸무게
(Weight)
성별
(Gender)
160.0181 47.57438 Female
171.1632 75.07518 Female
168.4182 45.9684 Female
168.0309 63.64062 Female
191.1731 83.63134 Male
meter_hours category is_new manufacturer region price_usd year
0 80 0 96 38 10000 1998
461 111 0 108 71 10000 2010
0 56 0 30 33 10100 2002
277 90 0 95 39 10100 2011
905 87 0 208 35 10100 2011
입력이 2개: 2차원 데이터
입력이 3개: 3차원 데이터
입력이 6개: 6차원 데이터
시각화 할 수 없다.
34. Unstructured data
비정형 데이터
김**: ★ ★ ★ ★ ★ 너무 좋아서 또 구매 했어요~~ 감사합니다^^
이**: ★ ★ ★ ★ ★ 제 인생템 >< 꺅꺅
송**: ★ ☆ ☆ ☆ ☆ 별 하나도 아깝습니다.. 이런 걸 제품이라고 ㅡㅡ;;
황**: ★ ★ ★ ☆ ☆ 아이엠그루트
최**: ★ ★ ★ ★ ★ 아니 이런 제품을 이 가격에 팔아도 되는 건가요? 당신은 도덕책!!
텍스트, 이미지, 음성, 동영상 등
형태가 다양하며 크기, 길이 등이 모두 다른 데이터
35. Unstructured data
비정형 데이터
이미지
흑백 이미지는 2차원 배열 구조이다.
각 픽셀은 0~255 사이의 값을 가진다.
255 0 140 160 0
0 0 0 67 8
0 0 0 0 87
0 0 0 13 55
8 8 8 0 0
width : x열
height : y 행
img[0,0]
img[0,2]
img[3,4]
36. Unstructured data
비정형 데이터
이미지
색상 이미지는 3차원 배열 구조 이다.
각 픽셀은 0~255 사이의 값을 가진다.
(일반적인 영상처리 기준 0~255, 딥러닝 에서는
0~1 또는 -1~1 과 같은 방식으로 사용)
width : x열
height : y 행
channel : c 채널
255 0 140 160 0
0 0 0 67 8
0 0 0 0 87
0 0 0 13 55
8 8 8 0 0
51. 단층 퍼셉트론
𝑥!
𝑥"
1
𝑤!
𝑤"
𝑜𝑢𝑡
𝑏𝑖𝑎𝑠
; 𝑥% / 𝑤% + 𝑏𝑖𝑎𝑠
모든 입력 값을 각각의 가중치와 곱해서 더한다.
더해진 값이 양수이면 1, 음수이면 0으로 분류한다.
𝑓 𝑥 =
1, 𝑥 ≥ 0
0, 𝑥 < 0
{
Deep Learning
딥러닝
52. 단층 퍼셉트론 (순전파, forward)
𝑥!
𝑥"
1
𝑤!
𝑤"
𝑜𝑢𝑡
𝑏𝑖𝑎𝑠
; 𝑥% / 𝑤% + 𝑏𝑖𝑎𝑠 𝑓 𝑥 =
1, 𝑥 ≥ 0
0, 𝑥 < 0
{
퍼셉트론의 입력 개수는 동적으로 조절할 수 있다.
아래의 퍼셉트론은 입력이 2개(x=𝑥#, y=𝑥$)인 좌표들을 분류할 수 있다.
𝑤#𝑥#+ 𝑤$ 𝑥$ = 0
Bias가 없는 경우 Bias가 있는 경우
𝑦 =
−𝑎
𝑏
𝑥
𝑎𝑥 + 𝑏𝑦 = 0
𝑤#𝑥#+ 𝑤$ 𝑥$ + 𝑏𝑖𝑎𝑠 = 0
𝑦 =
−𝑎
𝑏
𝑥 −
−𝑏𝑖𝑎𝑠
𝑏
𝑎𝑥 + 𝑏𝑦 + 𝑏𝑖𝑎𝑠 = 0
(x , y) 의 좌표를 가지는 점들을 2개의 클래스
로 분 류 하 고 이 들 을 구 분 짓 는 결 정 선
(Decision boundary) 를 찾는 것이다.
옆의 이미지에서 빨간 점과 초록선을 나누는 결
정선의 함수 중 하나는 y=2x+3 이다.
위와 같이 Sparse 한 점들 사이에서는 무수히
많은 결정선이 존재 한다.
몸무게
키
165
152
139 177 190 203
45kg
68kg
90kg
113kg
남성
여성
Deep Learning
딥러닝
53. 단층 퍼셉트론 (역전파, backward)
𝑥!
𝑥"
1
𝒘𝟎 = 𝑤" − 𝑥"(𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙)
(𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙)
𝑥# / (𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙)
for each weights
역전파는 앞선 순전파에서 사용하는 가중치를 갱신하는 작업을 한다.
순전파는 0 또는 1의 값을 반환하므로 해당 결과 값으로 오차를 구해 가중치를 수정하면 된다.
𝑤! = 𝑤! - 𝑥!η 𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙
𝒘𝟏 = 𝑤% − 𝑥%(𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙)
𝒃𝒊𝒂𝒔 = 𝑏𝑖𝑎𝑠 − 1(𝑜𝑢𝑡 − 𝑙𝑎𝑏𝑒𝑙)
η :Learning Rate(학습률)
4가지 경우가 있다.
(0-0): 정답을 맞춘 경우(W는 갱신되지 않는다)
(1-1): 정답을 맞춘 경우(W는 갱신되지 않는다)
(1-0): 정답을 틀린 경우
(0-1): 정답을 틀린 경우
Out에 기여한 정도를 비율로 나타내기 위함
𝑥%가 크다면 out에 더 많은 값을 더했으므로
𝑊%를 더 많이 수정한다.
Error(오차)
학습률은 가중치가 너무 많이 변하
지 않게 도와준다.
왜 값을 뺄까요?
왜 비어 있을 까요?
Deep Learning
딥러닝
54. 단층 퍼셉트론 (순전파, forward)
iteration : 순전파(forward)와 역전파(backward)를 반복한 횟수.
epoch : 전체 데이터를 모두 한번씩 학습한 단위.
(데이터가 100개이고 한번에 1개의 데이터를 학습할 경우 100 iteration = 1 epoch)
1 2 3 4
순전파(forward) 역전파(backward) 가중치갱신(update)
데이터 입력(load)
Deep Learning
딥러닝
55. 몇 층 일까요
Perceptron(Neuron)
= 가중치(Weights) + 활성화 함수(Activation Function)
Neuron(s) = Neuron Layer
Not layer. Just inputs.
즉, 위의 신경망은 Two-Layer Neural Networks 임.
Deep Learning
딥러닝
56. 다층 퍼셉트론
단층 퍼셉트론은 어떤 가중치를 넣어
도 1차 식 밖에 나오지 않는다.
선형 분류의 문제
𝑤#𝑥#+ 𝑤$ 𝑥$ + 𝑏𝑖𝑎𝑠 = 0
𝑦 =
−𝑎
𝑏
𝑥 − 𝑏𝑖𝑎𝑠
𝑎𝑥 + 𝑏𝑦 + 𝑏𝑖𝑎𝑠 = 0
(입력이 2개면 2차원이다. 위의 그림에서 y=2x+3, 즉 1차식이라고 1차원이 아니다. 차수와 차원은 다른 의미이다)
2𝑥! + 𝑦 + 4𝑧" = 0
변수가 3개이므로 3차원
차수
Deep Learning
딥러닝
58. 활성화 함수
단층 퍼셉트론은 활성화 함수로 계단함수를 사용했지만 다층 퍼셉트론에서는 다양한 비선형 함수를 사용한다.
선형함수는 중첩원리가 적용된다. 즉, 선형함수를 다층으로 쌓아도 쌓지 않은 하나의 선형함수로 정의가 가능하다.
이는 다( )층의 의미가 없어진다.
ReLU : 𝑚𝑎𝑥(0, 𝑥)
Sigmoid :
"
"#$78 Tanh :
$8%$78
$8#$78
Leaky : 𝑚𝑎𝑥(0.1𝑥, 𝑥) Swish :
&
"#$78
Deep Learning
딥러닝
59. 다층 퍼셉트론(순전파)
𝜎(;
MN"
O
𝑊 · 𝑋)
𝜎 : activation function
다층 퍼셉트론의 순전파 연산은 단층 퍼셉트론의 연산과 동일하다.
𝑂P = 𝜎(;
MN"
O
𝑊 · 𝑋)
𝑝𝑟𝑒𝑑𝑖𝑐𝑡 𝑙𝑎𝑏𝑒𝑙 = 𝐴𝑟𝑔𝑚𝑎𝑥(𝑂M)
Deep Learning
딥러닝
61. 다층 퍼셉트론 역전파
∆𝑤>? = η 𝑡? − 𝑦? 𝑔´(ℎ?)𝑥>
delta
learning
rate
input
(neuron)
error gradient
Delta Rule
• Delta Rule 이란 어떤 입력 노드가 출력 노드의 오차에 기여했다면, 두 노드의 연결 가중
치는 해당 입력 노드의 출력과 출력 노드의 오차에 비례해 조절하는 것을 말한다.
• Loss 는 학습을 통해 직접적으로 줄이고자 하는 값(Scalar)이다.
• Error 는 각각의 뉴런이 얼마나 틀렸는지를 나타내는 값(Vector)이다.
• Delta 는 델타 규칙을 적용하기 위해 계산하는 값(Vector)입니다. 일반적으로 오류에 미
분 값을 곱하면 델타입니다. Delta와 Error는 동일할 수 있습니다.
• Gradient 는 가중치들을 얼마나 갱신할지 나타내는 값(Matrix)이다..
• Backpropagation Algorithm : 은닉층의 Delta 값을 계산하고 각각의 뉴런에 Delta
Rule을 적용하는 알고리즘.
Deep Learning
딥러닝
62. 손실률(loss)
𝑂" = 0.9
𝑂' = 0.6
𝑂( = 0.4
𝑝𝑟𝑒𝑑𝑖𝑐𝑡 𝑙𝑎𝑏𝑒𝑙 = 𝐴𝑟𝑔𝑚𝑎𝑥(𝑂B)
Loss(손실률) 은 네트워크가 얼마나 잘 학습되었는지를 나타내는 지표이다.
predicted label 은 0 이다.
y (정답 레이블)
1
0
0
One-hot encoding
𝑀𝑆𝐸 𝐿𝑜𝑠𝑠 =
1
2
1
𝑛
1
#$%
&
(𝜎 𝑊𝑥 − 𝑦)"
Deep Learning
딥러닝
63. 손실률(loss)
𝑀𝑆𝐸 𝐿𝑜𝑠𝑠 =
1
2
1
𝑛
1
#$%
&
(𝜎 𝑊𝑥 − 𝑦)"
MSE Loss의 수식을 각각 n이 1 또는 2일 때의 그래프를 그려보면 위와 같다.
가장 이상적인 경우는 모든 (𝜎 𝑊𝑥 − 𝑦) 가 0이 되는 경우로 함수의 극소점이다.
각 차원(x, y 또는 z) 에 대하여 극소점으로 나아가는 방향과 거리를 계산해 가중치를 갱신한다.
Deep Learning
딥러닝
64. 손실률(loss)
𝑀𝑆𝐸 𝐿𝑜𝑠𝑠 =
1
2
1
𝑛
1
#$%
&
(𝜎 𝑊𝑥 − 𝑦)"
𝑦 = 𝑥C
인 그래프에서 x=1 일 때 함수의 극소점으로 내려가는 방법은, 기
울기를 구해 기울기가 양수이면 x는 감소해야 하고 기울기가 음수이면 x는
증가해야 한다.
기울기는 미분을 함으로서 구할 수 있다!!
Deep Learning
딥러닝
70. 순전파 (행렬로 생각하기)
𝑀𝐵: 𝑚𝑖𝑛𝑖 𝑏𝑎𝑡𝑐ℎ 𝑠𝑖𝑧𝑒
𝑊: 𝑤𝑒𝑖𝑔ℎ𝑡𝑠
𝑏: 𝑏𝑖𝑎𝑠
𝑥: 𝑖𝑛𝑝𝑢𝑡 𝑛𝑒𝑢𝑟𝑜𝑛
y: 𝑜𝑢𝑡𝑝𝑢𝑡 𝑛𝑒𝑢𝑟𝑜𝑛
𝒙 R 𝑾 + 𝒃 = 𝒚
X =
𝑾𝒆𝒊𝒈𝒉𝒕𝒔
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑰𝒏𝒑𝒖𝒕
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
행렬 곱을 이용하여 Mini-Batch가 있더라도 한번의 계산으로 순전파 연산이 가능하다.
1
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
+ =
가중치에 미니배치를 적용한 입력을 곱하면 미니배치 연산이 적용된 출력이 나온다.
이때, 모든 값이 1로 초기화된 열 벡터와 곱해 미니배치를 고려한 결과에 바로 더할 수 있는 Bias matrix가 나온다.
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑾𝒐𝒓𝒌𝒔𝒑𝒂𝒄𝒆
𝑀𝐵
1
X =
𝑶𝒖𝒕𝒑𝒖𝒕(𝐖𝐱)
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑶𝒖𝒕𝒑𝒖𝒕(𝐖𝐱 + 𝐛)
𝑩𝒊𝒂𝒔
𝑩𝒊𝒂𝒔
Deep Learning
딥러닝
71. 순전파 (행렬로 생각하기)
Don’t do this
X =
𝑾𝒆𝒊𝒈𝒉𝒕𝒔
𝑜𝑢𝑡𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑀𝐵
𝑜𝑢𝑡𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑀𝐵
일반적으로 미니배치를 사용할 때 입력 값들을 연속적으로 붙여서 사용한다. 그런데 위와
같이 구현하게 되면 대부분의 프로그래밍 언어가 2차원 행렬을 Row-major로 읽기 때문
에 제대로 동작하지 않는다.
𝑊 R 𝑥 + 𝑏 = 𝑦
𝒂𝟏𝟏 𝒂𝟏𝟐 𝒂𝟏𝟑
𝒂𝟐𝟏 𝒂𝟐𝟐 𝒂𝟐𝟑
𝒂𝟑𝟏 𝒂𝟑𝟐 𝒂𝟑𝟑
Row-major
𝒂𝟏𝟏 𝒂𝟏𝟐 𝒂𝟏𝟑
𝒂𝟐𝟏 𝒂𝟐𝟐 𝒂𝟐𝟑
𝒂𝟑𝟏 𝒂𝟑𝟐 𝒂𝟑𝟑
Column-major
𝑊𝑏 R 𝑥 = 𝑦
Bias를 가중치에 합쳐서 계산하면 편리하지만 입력의 끝에 상수 1을 붙여줘야 한다. 런타
임에서 입력 뒤에 1을 붙이는 건 조금 큰 비용이 들게 된다.
𝑰𝒏𝒑𝒖𝒕
𝑶𝒖𝒕𝒑𝒖𝒕(𝐖𝐱)
X =
𝑾𝒆𝒊𝒈𝒉𝒕𝒔
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑰𝒏𝒑𝒖𝒕
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑶𝒖𝒕𝒑𝒖𝒕(𝐖𝐱)
1
Bias
Deep Learning
딥러닝
72. 역전파-오류전파 (행렬로 생각하기)
𝐸𝑟𝑟𝑜𝑟qrss R 𝑊t = 𝐸𝑟𝑟𝑜𝑟usvw
X =
𝑾𝒆𝒊𝒈𝒉𝒕𝒔𝑻
𝑜𝑢𝑡𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡 𝑠𝑖𝑧𝑒 𝑖𝑛𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
Bias에 대한 오류전파는 없다.
𝑬𝒓𝒓𝒐𝒓𝒑𝒓𝒆𝒗
𝑬𝒓𝒓𝒐𝒓𝒄𝒖𝒓𝒓
Deep Learning
딥러닝
73. 역전파-가중치갱신 (행렬로 생각하기)
𝑥t R 𝛿 = 𝐺𝑟𝑎𝑑𝑖𝑒𝑛𝑡
Bias에 대한 Gradient는 단순히 미니배치의 모든 델타의 합으로 구할 수 있다.
X =
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑀𝐵
𝑮𝒓𝒂𝒅𝒊𝒆𝒏𝒕
𝑜𝑢𝑡𝑝𝑢𝑡 𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑖𝑛𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑀𝐵
𝑜𝑢𝑡𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
𝑀𝐵
X
𝑜𝑢𝑡𝑝𝑢𝑡
𝑠𝑖𝑧𝑒
1
=
𝑰𝒏𝒑𝒖𝒕
𝑻
𝑫𝒆𝒍𝒕𝒂
𝑾𝒐𝒓𝒌𝒔𝒑𝒂𝒄𝒆
𝑀𝐵
1
𝑮𝒓𝒂𝒅𝒊𝒆𝒏𝒕
𝒃𝒊𝒂𝒔
𝑫𝒆𝒍𝒕𝒂
𝑻
Deep Learning
딥러닝
74. 1957
1986
1998
퍼셉트론의 등장
퍼셉트론(perceptron)은 인공신경망의 한 종류로서, 1957년에 코넬 항공 연
구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트 (Frank Rosenblatt)
에 의해 고안되었다. 이것은 가장 간단한 형태의 피드포워드(Feedforward)
네트워크 선형분류기로도 볼 수 있다.
다층 퍼셉트론의 등장
1986년 다층 퍼셉트론(multi-layer perceptron)의 지도 학습을 위한 역전
파 알고리즘(backpropagation algorithm)이 발견됨.
LeNet5 등장
Yann Lecun 1998년에 “Gradient-Based Learning Applied to
Document Recognition”라는 논문에서 LeNet-5라는 현대의
Convolutional Neural Networks(CNNs)의 시초가 되는 Neural
Networks 구조를 제안함.
성능 올리려고 레이어를 많이 쌓았더니 잘 안되네...
선형분류만 되네...30년간 암흑기
문제 많은 NN 쓸 바에는 SVM으로...
Deep Learning
딥러닝
75. 2012
2015
현재
AlexNet 등장
이미지넷에서 주관하는 ILSVRC (Large Scale Visual Recognition
Competition) 이라는 대회에서, 2012년 제프리 힌튼 교수팀의 AlexNet이
top 5 test error(5개의 예측 값 중에 정답이 없는 경우) 기준 15.4%를 기록
해 2위(26.2%)를 큰 폭으로 이기고 1위를 차지했다. 이 대회는 1000개의 클
래스를 가진 120만장의 이미지를 학습하고 15만장의 이미지로 테스트하여
정답률을 겨루는 대회이다. AlexNet의 등장은 딥러닝, 특히 CNN이 본격적
으로 주목 받게 되는 계기가 되었고 여기서 소개된 ReLU, Dropout 등은 지
금도 표준으로 사용되고 있다.
Batch Normalization 등장
그래디언트 소실(vanishing gradient)과 폭주(exploding) 문제를 해결하는
방법인 배치 정규화(BN, Batch Normalization)의 등장
딥러닝의 시대
조금씩 변화를 거쳐 점점 강건한 모델이 연구되고 있지만 큰 획을 긋는 연구
는 아직까지 나오지 않았다.
Deep Learning
딥러닝
77. CNN 이전
Support Vector Machine(SVM) 이란 분류기가 CNN 이전에 많은 인기를 끌었다.
이때 사람들은 원본 이미지로 학습하는 것 보다 Histogram Of Gradients 라는 Feature로
이미지를 변형한 후 학습하는 것이 더 좋은 결과내는 것을 확인하였다.
원본 이미지 HOG Feature
Deep Learning
딥러닝
78. Histogram Of Gradients
• 복잡한 문제를 기계 학습에 사용하기 위한 전 처리 작업.
• 형태를 판별하는데 색상 정보는 중요하지 않다.
• 픽셀에 대해 어두워지는 방향을 나타낸다.
• 이미지의 밝기가 달라져도 HoG의 결과는 동일하다.
• 이미지의 밝기 변화에 강인하다.
N. Dalal et al., Histograms of Oriented Gradients for Human Detection, CVPR, 2005.
우측 상단으로 갈수록 어둡다.
HoG 결과 영상
원본 영상
Deep Learning
딥러닝
79. Feature?
컴퓨터가 이미지를 분류하는데 있어 원본 이미지가 최적의 이미지는 아닐 수 있다.
HoG는 최적의 Feature 인가?
이미지를 분류하는데 최적의 Feature를 찾게 하면 어떨까?
역전파를 할 때 오차를 전파하다 보면, 입력 이미지에도 오차가 전파 될 텐데,
이 오차를 통해 최적의 Feature를 찾자.
error
error?
Deep Learning
딥러닝
80. KMeans
• 임의의 K개의 클러스터 위치를 설정한다.
• 모든 점들은 자기와 가장 가까운 클러스터에 속하게 된다.
• 클러스터는 자신을 중심으로 하는 점들의 무게중심으로 이동한다.
• 모든 클러스터가 이동하지 않으면 종료한다. 그렇지 않으면 위의 알고리즘을 반복한다.
비지도학습은 Data에 Label이 없기 때문에 비슷한 군집끼리 분류를 해야 한다.
KMeans
88. 일반적으로 5-Layer 이상의 네트워크를 Deep Neural Network 라고 함.
2-Layer 5-Layer
Deep Learning
딥러닝
89. Layer를 for문을 이용해 hidden레이어 5개 + output 레이어 1개로 구성된 네트워크를 만든다.
이 네트워크는 6-layer 이므로 DNN이라고 부를 수 있다.
정확도가 어떨까?
그냥 깊게…?
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
for i in range(5):
model.add(tf.keras.layers.Dense(100,
activation=tf.keras.activations.sigmoid))
model.add(tf.keras.layers.Dense(10,
activation=tf.keras.activations.sigmoid))
model.compile(optimizer=tf.keras.optimizers.SGD(0.1),
loss=tf.keras.losses.MeanSquaredError(),
metrics=[tf.keras.metrics.CategoricalAccuracy()])
Sigmoid :
"
"#$78
Deep Learning
딥러닝
91. Sigmoid 함수를 미분한 함수는 입력이 커질수록 0에 수렴한다.
이것은 수학적으론 문제가 없으나, 컴퓨터에서는 상황이 다르다.
Vanishing Gradient
𝑆𝑖𝑔𝑚𝑜𝑖𝑑 𝑥 =
1
1 + 𝑒cd
𝑑
𝑑𝑥
𝑆𝑖𝑔𝑚𝑜𝑖𝑑 𝑥 = 𝑆𝑖𝑔𝑚𝑜𝑖𝑑 𝑥 · (1 − 𝑆𝑖𝑔𝑚𝑜𝑖𝑑 𝑥 )
Deep Learning
딥러닝
92. Vanishing Gradient
컴퓨터에서는 실수(Real number)를 표기하기 위해 일반적으로 단정밀도(Single Precision) 부동소수점을 사용한다.
단정밀도 부동소수점은 32개의 bit로 표현되며, 32개의 bit는 대략 42억(2%&) 개의 수를 표현할 수 있다.
단정밀도 부동소수점은 아래와 같이 표현된다.
1 1 0 0 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
부호 부분 지수 부분 가수 부분
10000101' = 133 1.110110101' = 1 +
"
'
+
"
)
+
"
"+
+
"
('
+
"
"',
+
"
-"'
= 1.853512625
(−1)"= −1
−1 · (1.853512625)·2"((%"'.
= −118.625
이렇게 정의된 단정밀도 부동소수점은 최소값(1.175494351(|%$)) , 최대값(3.402823466 %$ ≈ 1.6해) 까지 표현이 가능하다.
즉, 컴퓨터에서는 작은 수끼리 계속 곱하면 계속 작아지다가 0이 되어 버린다.
Deep Learning
딥러닝
93. 다시 깊게 가보자
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
for i in range(5):
model.add(tf.keras.layers.Dense(100,
activation=tf.keras.activations.relu))
model.add(tf.keras.layers.Dense(10,
activation=tf.keras.activations.sigmoid))
model.compile(optimizer=tf.keras.optimizers.SGD(0.1),
loss=tf.keras.losses.MeanSquaredError(),
metrics=[tf.keras.metrics.CategoricalAccuracy()])
앞에서 실험한 sigmoid는 Vanishing Gradient 문제가 있어서 ReLU(Rectified Linear Units) 함수가 등장했다.
이번에는 활성화 함수를 ReLU를 사용하여 실험해 보자.
ReLU : 𝑚𝑎𝑥(0, 𝑥)
Deep Learning
딥러닝
95. 다시 좀 더 깊게 가보자
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
for i in range(20):
model.add(tf.keras.layers.Dense(100,
activation=tf.keras.activations.relu))
model.add(tf.keras.layers.Dense(10,
activation=tf.keras.activations.sigmoid))
model.compile(optimizer=tf.keras.optimizers.SGD(0.1),
loss=tf.keras.losses.MeanSquaredError(),
metrics=[tf.keras.metrics.CategoricalAccuracy()])
이번에는 정확도를 더 높이기 위해 ReLU를 사용한 레이어를 20층 정도 쌓아 보자!
ReLU : 𝑚𝑎𝑥(0, 𝑥)
Deep Learning
딥러닝
97. ReLU 함수는 미분 값이 아닌 함수 자체가 ∞까지 표현이 가능하여 많은 연산을 할 경우 float overflow가 발생한다.
Exploding Gradient
ReLU(x) = 𝑚𝑎𝑥(0, 𝑥)
𝑑
𝑑𝑥
𝑅𝑒𝐿𝑈 𝑥 = 1 𝑖𝑓 𝑥 > 0 , 0 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
Deep Learning
딥러닝
98. 해결 방법은?
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
for i in range(5):
model.add(tf.keras.layers.Dense(100,
activation=tf.keras.activations.sigmoid))
model.add(tf.keras.layers.BatchNormalization())
model.add(tf.keras.layers.Dense(10,
activation=tf.keras.activations.sigmoid))
Epoch 10/10
938/938 [==============================] - 10s 11ms/step - loss: 0.0103 -
categorical_accuracy: 0.9429 - val_loss: 0.0088 - val_categorical_accuracy:
0.9491
313/313 - 1s - loss: 0.0088 - categorical_accuracy: 0.9491
Test accuracy: 0.9491000175476074
Normalization은 여러 종류가 있지만 BatchNormalization이 대표적이다.
위 그림은 빠른 이해를 위한 예시. 실제 배치정규화는 추가 보정작업이 존재한다.
Deep Learning
딥러닝
99. Feature?
컴퓨터가 이미지를 분류하는데 있어 원본 이미지가 최적의 이미지는 아닐 수 있다.
HoG는 최적의 Feature 인가?
이미지를 분류하는데 최적의 Feature를 찾게 하면 어떨까?
역전파를 할 때 오차를 전파하다 보면, 입력 이미지에도 오차가 전파 될 텐데,
이 오차를 통해 최적의 Feature를 찾자.
error
error?
Deep Learning
딥러닝
107. Sliding Window
Loop X:
Loop Y:
Loop W:
Loop H:
NxN이미지에서 시간 복잡도
가 O(𝑛&
)여서 너무 느린 알고
리즘
객체 검출을 위한 가장 기초적인 생각.
Deep Learning
딥러닝
108. Sliding Window
앞선 Sliding window 보다 빠르게 객체의 위치를 찾아 낼 수 있다.
Selective Search 알고리즘 결과 예시
Two-Stage Network
제안된 박스마다 분류기를 돌려서 객체 여부 확인
RCNN의 경우 이미지 1장당 약 2000개의 박스를 제안함
Deep Learning
딥러닝
109. Region Proposal
앞선 Sliding window 보다 빠르게 객체의 위치를 찾아 낼 수 있다.
Selective Search 결과 예시 Edgeboxes 결과 예시
Selective Search : 영상에서 Segmentation blob 들을 나누어 확장 시켜 최종 경계상자를 예측
Edgeboxes : 에지를 이용해 에지 그룹을 만들어 에지 그룹을 통해 경계상자를 예측
Region Proposal Network : CNN 방식을 이용한 경계상자 예측
Deep Learning
딥러닝
110. 비 최대값 억제 (NMS: Non-Maximum Suppression)
Deep Learning
딥러닝
111. IOU(Intersection Over Union)
정답 박스(Ground-truth bounding box)
객체 검출기가 예측한 박스(Predicted bounding box)
중첩된 영역
실제 영역+검출한 영역
IOU =
(Intersection Of Union)
안 좋은 결과 좋은 결과 완벽한 결과
Deep Learning
딥러닝
112. RCNN (Region-based Convolutional Network)
Feature
추출을
위한
Convolution
1. 입력 이미지 2. Region Proposal
(Selective Search)
3. CNN의 입력 크기로 조절
(Resize)
4. Feature 추출
(Convolution)
5. 분류
(SVM)
폴리머 현수 애자 : 0.00
세라믹 현수 애자 : 0.90
피뢰기: 0.05
컷 아웃 스위치: 0.05
배경: 0.00
Deep Learning
딥러닝
113. Fast-RCNN
RCNN은 Region Proposal 후에 CNN 연산(Feature 추출) 수행.
약 2000번의 CNN 연산 수행.
분류기로 SVM 사용.
Fast-RCNN은 CNN 연산(Feature 추출) 후에 Region Proposal 수행.
단, 한번의 CNN 연산으로 속도 향상 .
분류기로 Fully Connected 사용.
Convolution
Selective Search
Image Resize
Convolution
SVM
ROI Pooling
Region Proposal
Fully Connected
Deep Learning
딥러닝
114. ROI Pooling (Region Of Interest Pooling)
ROI Pooling은 서로 다른 크기의 Feature를 동일하게 맞춰줄 수 있습니다.
Image Resize ROI Pooling
Deep Learning
딥러닝
115. Faster-RCNN
Region Proposal 과 같은 알고리즘 대신 CNN 기반의 알고리즘을 사용하면 GPU에서 연산을 수행할 수 있어 속도 향상에 큰 도움이 된다.
RPN에서 객체이냐 배경인가를 구분하
고 박스의 위치와 크기를 추론한다.
Deep Learning
딥러닝
117. RCNN 계열 객체 검출기 속도 비교
Faster-RCNN은 초당 이미지를 5~7장 처리할 수 있다.
현재의 GPU가속 라이브러리와 양자화 등의 최신 기술을 사용하면 속도는 더욱 빨라진다.
RCNN Fast-RCNN Faster-RCNN Faster-RCNN(현재)
이미지당 처리 속도 47초 0.32초 0.2초 0.03초
속도 향상 1x 146x 235x 기존 Faster-RCNN 대
비 4.2x
Selective Search를 포
함한 이미지당 처리 속도
50초 2초 x x
속도 향상 1x 25x x x
Deep Learning
딥러닝
123. YOLO (You Only Look Once)
마지막 텐서 블록은 2개의 박스와 모든 클래스에 대한 확률 값을 가지고 있음.
7
1x16
1x(10+num of classes)
하나의 셀(Cell) 당 2개의 박스를 검출한다.
1x5 1x5
x, y, w, h, confidence
10 + 클래스 개수
Transmission tower has 6 types of facilities.
Ceramic
insulator
probability
Polymer
insulator
probability
Lighting
Arrester
probability
Damper
weight
probability
Space
damper
probability
Balisor
probability
1x6
Deep Learning
딥러닝