2. 누구나 TensorFlow!
J. Kang Ph.D.
GIST EEC Ph.D. (2015)
연구팀 리더 (~2018 5)
모두의 연구소 MoT 연구실 리더
좋아하는 것:
통계적 신호처리 / 무선통신 신호처리
C++ Native 라이브러리 구현
Mobile Machine learning
수영 덕력 6년
현재 겁도 없이 백수 중…
2
Jaewook Kang (강재욱)
소 개
5. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
Why on-device ML?
– Cloud ML의 제약
• UX 측면
– 서비스 반응 속도=
» 입력 데이터 업로드시간
» +클라우드 Inference 시간
» +결과 다운로드 시간
5
6. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
Why on-device ML?
– Cloud ML의 제약
• UX 측면
– 서비스 반응 속도
– 오프라인 상황
6
7. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
Why on-device ML?
– Cloud ML의 제약
• 데이터 소모 측면
– Inference할때마다
» server call 필요
» 입력데이터 업로드 필요
– 큰 데이터 소비 APP 순삭 ㅠ
7
8. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
Why on-device ML?
– Cloud ML의 제약
• 프라이버시 측면
– 개인화 프라이버시
– 개인화 서비스는 받고 싶은데 내데이터를 주는 건 싫다?
• 데이터 퓨젼의 어려움
– 한 클라우드 서비스에서 다양한 개인정보를 수집하기
어려움
» 모바일: 위치정보 / 사진 / 영상 /오디오
8
9. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
해결해줘야 하는 부분
– UX + 비용 측면 On-device inference
• 반응 속도 (Fast Response)
• 배터리 (Efficient Computation)
• 모델 사이즈
• 메모리 제한?
– 프라이버시 측면 On-device training
• 다른 사람 말고 내 얼굴을 잘 인식해라 이놈아
• Transfer learning?
• Personal Data fusion
9
10. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
해결해줘야 하는 부분
– UX + 비용 측면 On-device inference
• 반응 속도 (Fast Response)
• 배터리 (Efficient Computation)
• 모델 사이즈
• 메모리 제한?
– 프라이버시 측면 On-device training
• 다른 사람 말고 내 얼굴을 잘 인식해라 이놈아
• Transfer learning?
• Personal Data fusion
10
15. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
계산량이 가장 많고 프라이버시에 민감하며
동시에 정보량이 가장 큰 데이터?
15 이미지출처: http://cs231n.stanford.edu
16. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
계산량이 가장 많고 프라이버시에 민감하며
동시에 정보량이 가장 큰 데이터?
16 이미지출처: http://cs231n.stanford.edu
17. 누구나 TensorFlow!
J. Kang Ph.D.
Convolutional Neural Networks (CNN)
Convolutional neural network (CNN) 는 아주
중요하게 되었습니다.
– 시각인식
– 신호처리
– 분석 도구
17 이미지출처: http://cs231n.stanford.edu
18. 누구나 TensorFlow!
J. Kang Ph.D.
CNN is Biologically Inspired!
Emerged from the study of the brain’s visual cortex
– Visual system의 뉴런은 전체를 보지 않는다!
18
이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
19. 누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
19
20. 누구나 TensorFlow!
J. Kang Ph.D.
CNN - Why Convolution?
https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
20
21. 누구나 TensorFlow!
J. Kang Ph.D.
CNN is Biologically Inspired!
Emerged from the study of the brain’s visual cortex
– 상위 layer의 뉴런은 에서는 Retina 뉴런에서 인식한 ”Low-level
features”를 복합적으로 결합하여 “High-level features”를 구성한다.
– High-level feature들은 단계적으로 결합되어 “Entire objects
pattern”를 구성하고 뇌에서 인지 한다.
21
이미지출처: https://www.slideshare.net/GauravMittal68/convolutional-neural-networks-cnn
Area V1 Area V2 Area V3 Area V4Retina
Edges Object parts Entire objects
22. 누구나 TensorFlow!
J. Kang Ph.D.
CNN을 한마디로 요약하면?
Convolutional Neural Networks (CNN)
22
1) 이미지의 지역적 특징 (1D/2D~nD)을 구분해서 추출하고
2) 추출한 특징을 계층적으로 조립하여
3) 전체 이미지를 인식 한 후 판단/추론 하는 모델
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
23. 누구나 TensorFlow!
J. Kang Ph.D.
CNN을 한마디로 요약하면?
Convolutional Neural Networks (CNN)
23
1) Fully- connected
2) Convolutionally -connected
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
y = f (W ×x + b)
y = f (W ⊙x + b)
24. 누구나 TensorFlow!
J. Kang Ph.D.
CNN을 한마디로 요약하면?
Convolutional Neural Networks (CNN)
24
1) Convolutionally –connected
- 모델의 parameter 개수가 줄어든다
- 모델 연산이 줄어든다.
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
25. 누구나 TensorFlow!
J. Kang Ph.D.
CNN을 한마디로 요약하면?
Convolutional Neural Networks (CNN)
25
1) Convolutional –connected
- 모델의 parameter 개수가 줄어든다 Weight sharing
- 모델 연산이 줄어든다. Sparse connectivity
이미지출처: https://www.safaribooksonline.com/library/view/learning-tensorflow/9781491978504/ch04.html
Logit: Z
Input: X
26. 누구나 TensorFlow!
J. Kang Ph.D.
CNN을 구성하는 layers
– Convolutional layer
• Generation of feature map (layer output)
• Local feature reception and combination
– Pooling layer
• Spatial / temporal sub-sampling of features
26
27. 누구나 TensorFlow!
J. Kang Ph.D.
CNN Basic Architectures
Stacking of (Conv layer + pooling layer)
– 기본적으로 Conv layer + pool layer를 쌓는 방식
– Output layer 바로 전 몇 단은 FNN을 쌓는다
– Application에 따라서 다양한 configuration이 존재
27
28. 누구나 TensorFlow!
J. Kang Ph.D.
모바일 머신러닝
계산량이 가장 많고 프라이버시에 민감하며
동시에 정보량이 가장 큰 데이터?
28 이미지출처: http://cs231n.stanford.edu
29. 누구나 TensorFlow!
J. Kang Ph.D. 29 이미지출처: http://cs231n.stanford.edu
ImageNet Top-5 error rate
30. 누구나 TensorFlow!
J. Kang Ph.D.
CNN Benchmark Map (~2015)
목적: 모바일에도 올릴 수 있는 효율적인 모델을 만들고 싶다!
30
https://www.topbots.com/a-brief-history-of-
neural-network-architectures/
Good Region
Bad Region
31. 누구나 TensorFlow!
J. Kang Ph.D.
Comparison to Mobile App Size
대한민국 상위 앱 (안드로이드 기준, 2018 Jan)
• 카카오톡: 83.98 MB 네이버: 128 MB
• Facebook: 67.97 MB Chrome: 178 MB
31
35. 누구나 TensorFlow!
J. Kang Ph.D.
Model Compression
목표: 어떻게 하면 성능을 유지 하면서 네트워크 용량을
줄이고 inference속도를 개선할 수 있을까?
– 네트워크 구현에 의존적 기법
• Network pruning
– With weight regularization
• Low rank approximation
– 네트워크 구현에 독립적? 기법
• Weight sharing
– With weight quantization
• Weight quantization
35
Model Compression
Model Compression
36. 누구나 TensorFlow!
J. Kang Ph.D.
Network Pruning
네트워크 구현에 의존적 기법
– Network pruning
• Step1) training entire weights
• Step2) weight thresholding
• Step3) fine-training the net
with remaining weights
– 장점:
• 압축된 모델의 성능이 보장됨
– 단점:
• “Training tuning testing”
의 파이프라인이 길다. (오래걸린다)
• 다소 노가다 성 튜닝 ㅠ
• Sparse matrix ops의 별도
의 구현이 필요하고 성능이
크게 의존한다.
• 최신 mobile CNN 모델에 적용되어
성능이 확인되지 않음
36
Image source:
https://arxiv.org/pdf/1506.02626.pdf
37. 누구나 TensorFlow!
J. Kang Ph.D.
Network Pruning
네트워크 구현에 의존적 기법
– Network pruning
– weight값이 작은 뉴런 연결을 잘라냄
• Step1) training entire weights
• Step2) weight thresholding
• Step3) fine-training the net
with remaining weights
37
Train entire weight in
net
Weight thresholding
Making net sparse!
Fine-training on the
remaining weights
Satisfied
performance ?
Released!
Tuning
threshold
38. 누구나 TensorFlow!
J. Kang Ph.D.
Network Pruning
네트워크 구현에 의존적 기법
– Network pruning
– weight값이 작은 뉴런 연결을 잘라냄
• Step1) training entire weights
• Step2) weight thresholding
• Step3) fine-training the net
with remaining weights
• Step4) Iterative pruning
– Weight l1-regularizer의
가중치를 조절하여 acc loss
를 확인하면서
단계적으로 punning하는 것
38
Train entire weight in
net
Weight thresholding
Making net sparse!
Fine-training on the
remaining weights
Satisfied
performance ?
Released!
Tuning
threshold
Iterative
Pruning
39. 누구나 TensorFlow!
J. Kang Ph.D.
Network Pruning
네트워크 구현에 의존적 기법
– 장점:
• 압축된 모델의 성능이 보장됨
– 단점:
• “Training tuning testing”
의 파이프라인이 길다. (오래 걸린다)
• 다소 노가다 성 튜닝 ㅠ
• Sparse matrix ops의 별도
의 구현이 필요하고 성능이
크게 의존한다.
• AlexNet / VGG과 같은
over-parameterized된 모델에서 성능
이 잘나오는 것을 보이는 논문이 대다수
39
Train entire weight in
net
Weight thresholding
Making net sparse!
Fine-training on the
remaining weights
Satisfied
performance ?
Released!
Tuning
threshold
40. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Sharing
네트워크 구현에 독립적 기법
– Weight Sharing
• Step1) 레이어 안에서 한번 training 된 filter weights를 k-mean clustering하여
k개의 값으로만 표현
• Step2) weights를 k-mean으로 mapping하고 table를 공유
– k-mean에 quantization 적용가능
• Step3) Fine-training!
– 장점:
• Filter weight를 획기적으로
줄일 수 있음
– 단점
• 적절한 k에 대한 튜닝 필요
• Weight Mapping table을
이용하는 별도의 구현 필요
40
Image source: Deep
Compression
https://arxiv.org/pdf/15
10.00149.pdf
Clustered
weight
Weight Mapping
table
Original weights
41. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for
Efficient Integer-Arithmetic-Only Inference”, CVPR 2018
• 기존 quantization기법들은 네트워크 사이즈 경량화에만 고려함
• Float32 unit8
• 레이어 별 내부 weight값에만 quantization적용
• 레이어 간 값 전달, 즉 activation값은 float32 값 사용
– computational bottleneck
• 본 기법은 사이즈 + 연산 속도 동시 개선
• Weight, bias, activation 모든 파이프라인을 integer modeling
• Integer-arithmetic-only matrix mul을 정의
• Qualcomm Hexagon과같은 mobile DSP에서 효율적 연산 가능!
• 일반 모바일 환경에서 속도 개선 가능성!
41
Image source:
https://arxiv.org/pdf/1712.05877.pdf
42. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for Efficient
Integer-Arithmetic-Only Inference”, CVPR 2018
기존 quantization 기법들
42
Image source:
https://arxiv.org/pdf/1712.05877.pdf
float32
float32
float32
Quantize
Dequantize
uint8
Input
float32
• Weight 만 quantization!
ReLu
uint8
43. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
43
Image source:
https://arxiv.org/pdf/1712.05877.pdf
Scale down:
- logit+ activation은
uint8 표현
Cast down:
- Conv + biases연산결과는
- uint32 표현
• All quantization!
• ReLu6!
Integer-only arithmetic을
통해서 연산효율을 대폭
개선!
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for Efficient
Integer-Arithmetic-Only Inference”, CVPR 2018
제안 quantization 기법
44. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for Efficient
Integer-Arithmetic-Only Inference”, CVPR 2018
44
Image source:
https://arxiv.org/pdf/1712.05877.pdf
Scale down:
- logit+ activation은
uint8 표현
Cast down:
- Conv + biases연산결과는
uint32 표현
제안 quantization 기법
• All quantization!
• ReLu6!
Integer-only arithmetic을
통해서 연산효율을 대폭
개선!
6
45. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for Efficient
Integer-Arithmetic-Only Inference”, CVPR 2018
ImageNet Latency-vs-accuracy tradeoff (over channel nums)
45
Google pixel 2
Snapdragon 835 LITTLE
Mobilenet v1, Tflite
Google pixel 1
Snapdragon 821 LITTLE
Mobilebet v1, Tflite
46. 누구나 TensorFlow!
J. Kang Ph.D.
Weight Quantization
네트워크 구현에 독립적 기법
B. Jacob etal, “Quantization and Training of Neural Networks for Efficient
Integer-Arithmetic-Only Inference”, CVPR 2018
ImageNet Latency-vs-accuracy tradeoff (over channel nums)
46
Google pixel 2
Snapdragon 835 LITTLE
Mobilenet v1, Tflite
Google pixel 1
Snapdragon 821 LITTLE
Mobilebet v1, Tflite
결국 integer-only arithmetic 속도가 날려면
하드웨어가 받쳐줘야 한다.
47. 누구나 TensorFlow!
J. Kang Ph.D.
Model Compression Remark
47
❖ 네트워크 구현과 모델 압축이 최대한 분리 해야함
• 대부분의 기법이 simulation 기반 이기 때문에 파이프라인을 자동화하고
단축하는게 중요
• Network pruning은 simulation iteration 마다 구현이 변화 E2E 자동화의
어려움
• Network pruning의 성능은 external sparse matrix lib에 매우 의존함
Weight sharing
• Network pruning보다 파이프라인 측면에서 유리
• 마찬가지로 weight mapping 구현에 의존적
• 적절한 Cluster 개수 ”k”를 찾는 것은 노가다
현실적으로 weight quantization이 가장 유망함
• 네크워크 구현과의 독립성
• 속도 개선을 위해서는 integer-arithmetic only operation이 필수
• 하드웨어 의존성이 높음
모든 기법 적용 이후에 fine-training하는 것은 매우 중요!
48. 누구나 TensorFlow!
J. Kang Ph.D.
3. CNN 모델 경량화 2
- Efficient Convolution Layer
Convolution 연산량과 파라미터 수
좀 줄여보자!
48
49. 누구나 TensorFlow!
J. Kang Ph.D.
작고 강한 convolutional layer!
목표: 계산 복잡도/사이즈를 줄이면서 conv layer의
표현력을 유지 할 수 있는가?
– 아직까지 많은 CNN모델들은 over-parameterized 되어 있음
• AlexNet & VGG
– Model compression방식은 근본적인 한계가 있음
• 데이터 셋에 따라서 다른 성능을 보일 수 있음
• 기존 논문 결과들이 AlexNet & VGG와 같은 모델을 ref로 많이 했었기 때문에
신뢰도가 떨어짐
• Model compression 방식은 말그대로 쥐어 짜는 것이지 근본적인 해결이 아님
– 근본적으로 convolution 연산의 계산 효율을 높일 필요가 있음!
49
50. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
핵심질문: 더 압축적으로 spatial local correlation을 뽑아낼 수 있는
filter를 설계할 수 는 없는가?
– MLP is a very good universal function approximator!
Ref: Min Lin et al. “Network in Network” (2014)
– 1) Nonlinear filtering: multiplayer perceptron을 filter로 사용하자!
– 2) Cross channel pooling: input feature map간에 filter weight를 다르게 줘서
결합 (sum-up)
50
51. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP is a very good universal function approximator!
– Conv operation은 기본적으로 local patch와 filter weight사이의
spatial local correlation을 뽑아내는 것이다.
51
Fig from standford n231 material
Output map
28 X 28 X 1
+
X
W
Y
52. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP is a very good universal function approximator!
– Linear conv layer에서는 filtering tile(위에서 5x5) 안에 들어오는 input
feature에 대해서 weighted-sum해서 output map의 한 pixel을 생성
• 2d filtering인 경우 모든 input feature image (위에서 3개)에 대해서 동일한
weight사용
• 3d filtering인 경우 각 input feature image (위에서 3개) 에 대해서 다른 weights를 사용
52
Fig from standford n231 material
Output map
28 X 28 X 1
+
X
W
Y
53. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP is a very good universal function approximator!
53
Fig from standford n231 material
Output map
28 X 28 X 1
+
Y[i, j,k] = X ÄW[i, j,k]
= X[i + m, j + n,k + l]W[m,n,l]
l
å
n
å
m
å
X
W
Y
54. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP conv filter (=1x1 conv)는 어떻케 동작하는가?
– X : input (L=3개채널), Z: logit with M=2, 1x1xL conv filters,
– Y: activation,
54
X: 3x3xL
Input features
X1 X2 X3
W: 1x1xL Filter
Single 1x1xL conv
filters (L=3,M=1)
Num of input ch
55. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP conv filter (=1x1 conv)는 어떻케 동작하는가?
– X : input (L=3개채널), Z: logit with M=2, 1x1xL conv filters,
– Y: activation,
55
Z1
X: 3x3xL
Input features
+
w11 w12 w13
X1 X2 X3
W: 1x1xL Filter
Single 1x1xL conv
filters (L=3,M=1)
Num of input ch
56. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP conv filter (=1x1 conv)는 어떻케 동작하는가?
– X : input (L=3개채널), Z: logit with M=2, 1x1xL conv filters,
– Y: activation,
56
Z1
Z1
X: 3x3xL
Input features
Z: 3x3xM
Logit features
+
W: 1x1xL Filter
Single 1x1xL conv
filters (L=3,M=1)
w11 w12 w13
X1 X2 X3
Num of input ch
57. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP conv filter (=1x1 conv)는 어떻케 동작하는가?
– X : input (L=3개채널), Z: logit with M=2, 1x1xL conv filters,
– Y: activation,
57
Z1
Z1
Z2
X: 3x3xL
Input features
Z: 3x3xM
Logit features
+
+
W: 1x1xL Filter
Two 1x1xL conv
filters (L=3,M=2)
w11
Z2
w12 w13
w21 w22 w23
X1 X2 X3
58. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
MLP conv filter (=1x1 conv)는 어떻케 동작하는가?
– X : input (L=3개채널), Z: logit with M=2, 1x1xL conv filters,
– Y: activation,
58
Z1
Z1
Z2
X: 3x3xL
Input features
Y1
Z: 3x3xM
Logit features
Y: 3x3xM
Output features
+
+
W: 1x1xL Filter
Two 1x1xL conv
filters (L=3,M=2)
w11
Z2
Y2
w12 w13
w21 w22 w23
X1 X2 X3
Relu
nonlinearity
Relu activation
59. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
Cross channel Pooling
– mlpconv reduces dimension of output channels!
– Filter수가 입력 채널 수 보다 작은 경우 (L<M)
– mlpconv filter는 a 1x1 patch에 걸쳐서 모든 input channels을
weighted sum한다.
• Cross Channel pooling이라고 하는 이유!
– Local receptive field를 인식할 때 모든 Input feature의 특성을
동시에 고려
59
Z1X: 3x3xL
Input features
+
w11 w12 w13
X1 X2 X3
W: 1x1xL Filter
Single 1x1xL conv
filters (L=3,M=1)
Num of input ch
60. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling
Cross channel Pooling
– 1x1 conv filter의 개수 만큼 output channel 출력
– Filter 개수 < input channel 수 인 경우 channel pooling
60
Fig from standford n231 material
61. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of Parallel Conv Paths
Room: Lower layers와 higher layers에서 spatial local
correlation 통계 특성이 다름
– At Lower layers:
• Role: Parts abstraction of features
• Filtering결과 high local correlation이 smaller local patches에서 나타남
– At higher layers:
• Role: Object parts abstraction by made of the lower layer outputs
• Filtering결과 high local correlation이 larger local patches에서 나타남
61Area V1 Area V2Area V3 Area V4Retina
Edges Object parts Entire objects
62. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of Parallel Conv Paths
핵심질문: 모든 layer level에서 spatial local correlation을
범용적으로 잘 뽑아내기 위한 저복잡도 layer설계는?
Ref: Szegedy etal, Going deeper with convolutions, 2014
Inception module!
62
63. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of Parallel Conv Paths
핵심질문: 모든 layer level에서 spatial local correlation을
범용적으로 잘 뽑아내기 위한 저복잡도 layer설계는?
Ref: Szegedy etal, Going deeper with convolutions, 2014
Inception module!
– 1) Combination of parallel conv paths:
• Layer input을 1x1, 3x3, 5x5 conv path로 병렬적으로 처리 한 후
concatenation해서 출력
– 2) Dimensionality reduction by 1x1 conv:
• 1x1 conv를 통해서 cross channel pooling을 수행하여 3x3, 5x5
conv에서의 연산량을 줄임
63
64. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of parallel conv paths
64
이미지 출처:
https://www.slides
hare.net/aurot/goo
glenet-insights
Role of each conv path
– 1x1 conv : Capture correlation from very local clusters
– 3x3 conv: Capture correlation from spread-out local clusters
– 5x5 conv: Capture correlation from more spread-out clusters
65. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of parallel conv paths
65
이미지 출처:
https://www.slides
hare.net/aurot/goo
glenet-insights
Then, concatenate them all into a single vector!
– Which is a naïve version of the inception module
66. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of parallel conv paths
66
The Naïve inception module의 문제점
– 1) 5x5 conv의 계산량이 부담
– 2) 계속적으로 늘어나는 output feature map의 개수
• Pooling path의 output feature map 수는 input feature map수와 같음
• 다른 conv path들의 output feature map를 아무리 줄여도 concatenate 과정에서
output feature maps의 개수는 피할 수 없이 증가함
67. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of parallel conv paths
67
이미지 출처:
https://www.slides
hare.net/aurot/goo
glenet-insights
1x1 conv (NIN) 를 dimensionality reduction용으로 사용
– Cross channel pooling!
– 문제1 해결: conv layer 입력 feature map의 개수를 줄임
– 문제2 해결: pooling layer 출력 feature map의 개수를 줄임
68. 누구나 TensorFlow!
J. Kang Ph.D.
Combination of parallel conv paths
68
Dimensionality
reduction
Capturing correlation
From local clusters
Inception module v1
이미지 출처: Szegedy etal, Going
deeper with convolutions, 2014
Dimensionality
reduction
69. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
목적: 네트워크 모델을 계층을 더 깊게 하고 싶다!
Does depth matter for deep learning ?
– 계층을 더 깊게 쌓을 수록 모델의 expressiveness는 좋아지겠지만 학습
시키기 더 어려워진다!
69
70. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
목적: 네트워크 모델을 계층을 더 깊게 하고 싶다!
ResNet Microsoft팀의 실험 결과
– 깊은 모델이 오히려 Test error 가 높음!
70
이미지출처:
https://arxiv.org/
abs/1512.03385
71. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
목적: 네트워크 모델을 계층을 더 깊게 하고 싶다!
Does depth matter for deep learning ?
– 계층을 더 깊게 쌓을 수록 모델의 expressiveness는 좋아지겠지만 학습
시키기 더 어려워진다!
– 두가지 문제!
• Vanishing/Exploding Gradient 문제:
– 모델 학습에서 Backpropagation 통해서 출력 계층으로 부터 전달되는
gradient값이 계층이 깊을 수록 지수적으로 작아지는 문제
– 모델의 기형적 학습의 원인
– Batch normalization / dropout / Relu activation과 같은 기법으로 역부족
• 파라미터 개수 증가 Degradation문제:
– 층을 쌓을 수록 학습시켜야 하는 파라미터 개수가 늘어나는 문제
– 기존 훈련방식으로는 깊은 층을 가지는 모델은 오히려 성능 저하를
야기함
71
72. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Degradation problem 정의
– 모델의 계층 수를 단순하게 증가시켰을때 발생하는 성능 저하문제
– Overfitting 문제와는 달리 training error와 validation/test error가
동시에 열화됨
72
이미지출처:
https://arxiv.org/
abs/1512.03385
73. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Degradation problem 정의
– 모델의 계층 수를 단순하게 증가시켰을때 발생하는 성능 저하문제
– Overfitting 인경우 계층 수를 증가시켜도
• Validation/test error 는 증가
• Training error는 감소 또는 유지
계층 수
증가
Overfitting problem
Validation-Training err
gap 증가!
74. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Degradation problem 정의
– 모델의 계층 수를 단순하게 증가시켰을때 발생하는 성능 저하문제
• ReLu / Dropout / Batch norm은 degradation문제를 해결 하지 않음!
– 다른 방법이 필요!
74
75. 누구나 TensorFlow!
J. Kang Ph.D.
출발지
Residual Learning
Analogy: 도로교통 문제
75
이미지 출처:
http://www.cs.toronto.edu/~fidler/teaching/2
015/slides/CSC2523/renjie_highwayNNs.pdf
목적지
출발지A:
B:
- 출발지에서 목적지로 가는 길이 있다.
- A는 가능길에 빵사고 세탁물도 맡겨야 한다.
- B는 그냥 빨리가서 자고 싶다.
- 목적이 다른 두차가 같은 길을 달린다
76. 누구나 TensorFlow!
J. Kang Ph.D.
출발지
Residual Learning
Analogy: 도로교통 문제
76
이미지 출처:
http://www.cs.toronto.edu/~fidler/teaching/2
015/slides/CSC2523/renjie_highwayNNs.pdf
목적지
출발지A:
B:
- 출발지에서 목적지로 가는 길이 있다.
- A는 가능길에 빵사고 세탁물도 맡겨야 한다.
- B는 그냥 빨리가서 자고 싶다.
- 목적이 다른 두차가 같은 길을 달린다
결론: 차가막힌다.
77. 누구나 TensorFlow!
J. Kang Ph.D.
출발지
Residual Learning
Analogy: 도로교통 문제
77
이미지 출처:
http://www.cs.toronto.edu/~fidler/teaching/2
015/slides/CSC2523/renjie_highwayNNs.pdf
목적지
출발지
결론: 아니죠!
고속도로를 만들어야죠!
- 출발지에서 목적지로 가는 길이 있다.
- A는 가능길에 빵사고 세탁물도 맡겨야 한다.
- B는 그냥 빨리가서 자고 싶다.
- 목적이 다른 두차가 같은 길을 달린다
78. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Analogy를 본 Bob 아저씨의 질문
– Conv계층의 목적은 입력채널에 대한 feature extraction!
– 근데 이미 입력 자체가 feature-like한 채널도 있지 않은가?
– 그럼 모든 입력 채널에 대해서 weight를 학습시켜야 하는가?
– 이미 feature-like한 채널이 다른 채널의 feature extraction에
악 영향을 주지 않을까?
78
79. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
핵심가설:
It is easier to optimize to residual mapping than do the original.
Residual networks: (Residual learning) :
– K. He etal. “Deep Residual Learning for Image Recognition,”
CVPR 2016.
– 레이어 입출력의 변화 (Residual) 에 대해서만 학습
79
80. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Residual Networks (2016)
– 핵심질문1:
• 비선형 계층을 쌓아서 어떤 복잡한 함수 “Y= H(X)”를 학습 할 수
있다면…,
• 입출력 차이 “F(X)=H(X) – X” 도 학습 할 수 있지 않을까?
– 핵심질문2:
• 입력 채널 자체가 이미 feature인 경우 (혹은 거의 근접하게
feature인경우),…
• 다시말해서 identity mapping이 optimal이거나 근접한 경우,..
• 기존 “Y=H(X)” 보다 “F(X)=H(X) – X”로 학습하는게 쉽지 않을까?
80
81. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Residual Networks (2016)
– 입출력 함수 “Y=H(X)”을 학습하는 것이 아니고
– Residual “F(X)= H(X) – X”을 학습!
81
Residual
path Shortcut
path
82. 누구나 TensorFlow!
J. Kang Ph.D.
Residual Learning
Bob 아저씨 질문에 대한 대답
– 이미 입력 자체가 이미 feature-like한 채널도 있지 않은가?
• 있죠. 그런 채널들을 Residual network에서 shortcut path를 타고 가도록
학습이 되죠.
– 그럼 모든 입력 채널에 대해서 weight를 학습시켜야 하는가?
• Residual network에서는 자연스럽게 필요한 채널에 대해서만 weight
연산하도록 학습이 됩니다.
– 이미 feature-like 한 채널이 다른 채널의 feature extraction에
악영향을 주지 않을까?
• 기존 plain network에서는 그럴 가능성이 있습니다.
• 그것이 degradation 문제의 원인이라고 생각합니다.
82
83. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
목적: 모바일에도 올릴 수 있는 효율적인 모델을 만들고 싶다!
– Layer width와 network depth를 무작정 늘리는 것은 가야 할 방향이
아니다!
핵심가설: The mapping of “cross-channels correlation” and
“spatial correlation” can be entirely decoupled!
무슨 말인가?
83
Recent advances are not necessarily making network
more efficient with respect to size and speed!!!
84. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Cross-channel correlation:
– conv layer에 입력되는 채널 간의 비슷한 정도
84
High cross-channel correlation!
85. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Cross-channel correlation:
– conv layer에 입력되는 채널 간의 비슷한 정도
85
Very? Low cross-channel correlation!
86. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Cross-channel correlation: conv layer의 입력 채널 간의
비슷한 정도
– High cross-channel correlation:
• 입력 채널 간의 상관도 높다.
• 입력 채널간 비슷한 특징을 가진다.
– Low cross-channel correlation:
• 입력 채널 간의 상관도 낮다.
• 입력 채널간 구별되는 특징을 가진다.
86
87. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Spatial correlation:
– conv filter와 입력 채널 사이의 상관도
87
Conv filter 이미지출처: http://user-
image.logdown.io/user/136
73/blog/12890/post/30264
1/V21DnAAeTKiOirZRFKhT_
dl2.png
Low correlation
High correlation
88. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Spatial correlation:
– conv filter와 입력 채널 사이의 상관도
– High spatial correlation: 특정 conv filter로 feature
extraction이 잘된다.
– Low spatial correlation: 특정 conv filter로 feature
extraction이 잘 안된다.
88Conv filter
89. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Depthwise separable conv의 핵심가설:
– The mapping of “cross-channels correlation” and “spatial
correlation” can be entirely decoupled!
– 그러니깐 “cross-channels correlation”과 “spatial correlation”
분리해서 다루겠다는 것!
89
90. 누구나 TensorFlow!
J. Kang Ph.D.
Depthwise Separable Conv
Depthwise separable conv
– 1) Depthwise Convolution:
• Extract spatial correlation from
a NxNx1 2D input channel
• 2D convolution with a single
K x K x 1 x(M) 2D filter
– 2) Pointwise Convolution:
• Compress NxNxL input channel to
from NxNxM output channel (M < L)
• Weighted linear mixing using
2D convolution with 1x1xLx(M)
1D conv filters
90
91. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Cross Channel Pooling Revisit!
– Is 1x1 conv filtering equivalent to matrix multiplication ?
– We can look the convolution at a 1x1 pixel point (i=i*,j=j*).
– Given (M=2, L=3 case)
• Lx1x1 local patch vector, [X1,X2,X3]^T from X (3x3xL, L=3)
• two 1x1 conv filters (1x1xLxM, M=2,L=3)
• we have two different logits scalars: Z1, Z2
91
Z1
X: 3x3xL
Input features
+
w11 w12 w13
X1 X2 X3
W: 1x1xL Filter
Single 1x1xL conv
filters (L=3,M=1)
Num of input ch
92. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Cross Channel Pooling Revisit!
– Is 1x1 conv filtering equivalent to matrix multiplication ?
– We can look the convolution at a 1x1 pixel point (i=i*,j=j*).
– Given (M=2, L=3 case)
• Lx1x1 local patch vector, [X1,X2,X3]^T from X (3x3xL, L=3)
• two 1x1 conv filters (1x1xLxM, M=2,L=3)
• we have two different logits scalars: Z1, Z2
92
Z1
[i*
, j*
,k] = X[i*
, j*
,k + l]W1
[l]l=0
M-1
å
Z2
[i*
, j*
,k] = X[i*
, j*
,k + l]W2
[l]l=0
M-1
å
93. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Cross Channel Pooling Revisit!
– Is 1x1 conv filtering equivalent to matrix multiplication ?
– We can look the convolution at a 1x1 pixel point (i=i*,j=j*).
– Given (M=2, L=3 case)
• Lx1x1 local patch vector, [X1,X2,X3]^T from X (3x3xL, L=3)
• two 1x1 conv filters (1x1xLxM, M=2,L=3)
• we have two different logits scalars: Z1, Z2
– These conv operations recast into a matrix-vector form:
93
Z1
Z2
é
ë
ê
ù
û
ú =
W11 W12 W13
W21 W22 W23
é
ë
ê
ê
ù
û
ú
ú
X1
X2
X3
é
ë
ê
ê
ê
ù
û
ú
ú
ú
Lx1x1 local
patch vector
Two different
logits scalars
94. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Cross Channel Pooling Revisit!
– Is 1x1 conv filtering equivalent to matrix multiplication ?
– We can look the convolution at a 1x1 pixel point (i=i*,j=j*).
– Given (M=2, L=3 case)
• Lx1x1 local patch vector, [X1,X2,X3]^T from X (3x3xL, L=3)
• two 1x1 conv filters (1x1xLxM, M=2,L=3)
• we have two different logits scalars: Z1, Z2
– These conv operations recast into a matrix-vector form:
94
Z1
Z2
é
ë
ê
ù
û
ú =
W11 W12 W13
W21 W22 W23
é
ë
ê
ê
ù
û
ú
ú
X1
X2
X3
é
ë
ê
ê
ê
ù
û
ú
ú
ú
Lx1x1 local
patch vector
Two different
logits scalars
1x1xL conv1
1x1xL conv2
95. 누구나 TensorFlow!
J. Kang Ph.D.
Cross Channel Pooling Revisit!
– Is 1x1 conv filtering equivalent to matrix multiplication ?
– Consider a M=2 case
Linear Bottleneck
95
1x1xL conv1
1x1xL conv2
.
Input channels
1x1xNxK conv filters
Output logit
Before activation
Lx1x1 vector X
1x1xLxM
filter matrix, W
MX1 output logit Z
Z1
Z2
=
Z = W X
X1
X2
...
...
...
XL-1
XL
output
채널방향
input
채널방향
96. 누구나 TensorFlow!
J. Kang Ph.D.
Room1: 과도한 cross-channel pooling
– Given 1x1xL(xM) conv filters
– 1x1xL conv filter 개수, M linear transform W의 row 개수
• “cross-channel pooling”이 되려면 M < L
• 과도한 cross-channel pooling 경우 M << L
– M<<L 경우 linear transform W이 충분한 개수의 independent
basis을 가질 수 없음
• W가 span하는 feature space의 dimensionality가 X의 정보를 보존하기에
충분하지 않음
Linear Bottleneck
96
97. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Room1: 과도한 cross-channel pooling
97
Where “dim”
indicates the
dimension of
activation space
span by W.
이미지출처:
https://arxiv.org/a
bs/1801.04381
Note: Activation
space-
(선형변환 후
feature space)
W +
Y
98. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
98
Room2: ReLu non-linearity에 의한 정보손실
– ReLu는 0보다 작은 값을 출력하는 1x1 conv filtering 결과를
중요하지 않은 정보라고 판단하고 zero-mapping한다.
– An 1x1 conv example:
1x1xL conv1
1x1xL conv2
1x1xL conv3
1x1xL conv4
= .
Features
After Dwise convSet of 1x1xL conv filters
Output logit
Before activation
1X1XLXM
filter matrix, W
M X 1 output logit Z
(M=4)
Z1
> 0
Z2
< 0
Z3
< 0
Z4
> 0
X1
X2
...
...
...
XL-1
XL
99. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
99
Room2: ReLu non-linearity에 의한 정보손실
– ReLu는 0보다 작은 값을 출력하는 1x1 conv filtering 결과를
중요하지 않은 정보라고 판단하고 zero-mapping한다.
– An 1x1 conv example:
1x1xL conv1
1x1xL conv2
1x1xL conv3
1x1xL conv4
= .
Features
After Dwise convSet of 1x1xL conv filters
Output logit
Before activation
1X1XLXM
filter matrix, W
M X 1 output logit Z
(M=4)
Z1
> 0
Z2
< 0
Z3
< 0
Z4
> 0
X1
X2
...
...
...
XL-1
XL
ReLu !!!!
100. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
100
Room2: ReLu non-linearity에 의한 정보손실
– ReLu는 0보다 작은 값을 출력하는 1x1 conv filtering 결과를
중요하지 않은 정보라고 판단하고 zero-mapping한다.
– An 1x1 conv example:
1x1xL conv1
1x1xL conv2
1x1xL conv3
1x1xL conv4
= .
Features
After Dwise convSet of 1x1xL conv filters
Output
After activation
1X1XLXM
filter matrix, W
M X 1 output Y
(M=4)
X1
X2
...
...
...
XL-1
XL
f ( )
Y1
> 0
0
0
Y4
> 0
101. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
101
Room2: ReLu non-linearity에 의한 정보손실
– ReLu는 0보다 작은 값을 출력하는 1x1 conv filtering 결과를
중요하지 않은 정보라고 판단하고 zero-mapping한다.
• Activation space의 차원수 (dimensionality) 를 제한할 수 있음
• ReLu에 의해서 다음이 일어난때 정보손실이 발생
X manifold 차원수 <= activation space (WX) 차원수
102. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
102
Room2: ReLu non-linearity에 의한 정보손실
– ReLu는 0보다 작은 값을 출력하는 1x1 conv filtering 결과를
중요하지 않은 정보라고 판단하고 zero-mapping한다.
• Activation space의 차원수 (dimensionality) 를 제한할 수 있음
• ReLu에 의해서 다음이 일어난때 정보손실이 발생
X manifold 차원수 <= activation space (WX) 차원수
103. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
Mobilenet v2!
핵심질문: X의 정보를 효과적으로 보존하기 위해서는 conv
layer의 구조를 어떻게 구성해야 하는가?
- Mark Sandler et al. “MobileNetV2: Inverted Residuals and Linear Bottlenecks”, CoRR, 2017.
103
104. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
핵심질문: Linear bottleneck의 삽입은 어떻케 ReLu non-
linearity에 의한 정보손실을 해결하는가?
기존 Depthwise-separable conv (Mobilenet v1):
– Q1) 마지막 Relu를 수행 전에 channel pooling을 수행해서 activation
space를 먼저 제한할 필요 없지 않은가?
104
Dwise Conv
3x3x1/s
Pwise Conv
1x1xLxM
(M < L)
BN ReLu6 BN ReLu6
Ch in
X
NxNxL
Ch out
Y
NxNxM
Feature maps
NxNxL
Feature map
NxNxM
Spatial
Feature extraction
Channel
Pooling
105. 누구나 TensorFlow!
J. Kang Ph.D.
Linear Bottleneck
핵심질문: Linear bottleneck의 삽입은 어떻케 ReLu non-
linearity에 의한 정보손실을 해결하는가?
Depthwise-separable conv (Mobilenet v2):
– Linear Bottleneck: Channel pooling을 Depthwise separable conv 밖으로 !
• Depthwise-separable conv 내부 Pwise conv에서 channel pooling 수행X
• ReLu non-linearity를 linear bottleneck에서 보완할 수 있도록 학습됨 (soft pooling)
105
Dwise
Conv
3x3x1/s
Linear
Bottleneck
1x1xLxM
(L>M)
Ch in
X
NxNxL
Ch out
Y
NxNxM
Feature maps
NxNxL
Feature map
NxNxL
Spatial
Feature extraction
Channel
Pooling
BN
ReLu6
Pwise
Conv
1x1xLxL
B
N
BN
ReLu6
106. 누구나 TensorFlow!
J. Kang Ph.D.
Efficient Convolution Remarks
106
❖ CNN 모델은 2016을 기점으로 사이즈를 늘려서 성능을 개선시키는
방향보다, 효율적인 작은 모델을 연구 하는 방향으로 가는 추세
• 초창기에 제안된 AlexNet & VGG와 같은 모델은 과도하게 많은 파라미터를
포함하는 모델로 인식되어 앞으로 사용되지 않을 것임
❖ 모델들이 서로의 장점을 적극적으로 도입하여 성능을 개선
• 결국 모든 모델 안의 conv layer 구조가 서로 닮아가는 추세
• 결국 함께 conv layer라는 것을 알아가는게 아닐까..
• Cross channel pooling
• Depthwise separable conv
• Residual learning
• Linear bottleneck
• Groupwise convolution
• Network search
추가적으로 모델의 전체 accuracy-size+comp의 trade off를 조절할 수
있는 meta parameter를 설정하는 것은 매우 중요
– 채널 수
– Feature resolution
107. 누구나 TensorFlow!
J. Kang Ph.D.
Android 개발자 MoT로 가즈아ㅏㅏㅏ!
더 궁금하시면?
– MoT로 오세요! 같이 공부해요!
– 머신러닝에 관심있는 열정많은 안드로이드 개발자 모집중!
107
MoT로
가으자!!!!
우르르…
108. 누구나 TensorFlow!
J. Kang Ph.D.
모두연 MoT랩 소개
자신의 모델을 모바일에 올려보고 싶은 분들 같이
해봐요!
후원, 참여 환영합니다!
https://motlabs.github.io/
https://www.facebook.com/lab4all/posts/761099760749661
jwkang10@gmail.com 로 메일
Keywords:
– CNN / RNN module
– Model Compression
– Tensorflow Lite
– CoreML
– MLkit
– Android / iOS
108
110. 누구나 TensorFlow!
J. Kang Ph.D. 110
The End
Mobile Vision Learning 2018
- All right reserved @ Jaewook Kang 2018
Notes de l'éditeur
왜 on-device에서 ML을 해야되나
대조적 개념으로 cloud ML을 들수 있습니다.
현재 빅스비와 같은 음성인식 모듈은 모두 cloud ML기반입니다.
몇가지 측면을 나누어서 한번 생각을 해보겠습니다.
먼저 UX측면입니다.
클라우드 모듈은 기본적으로 ~~ 구조를 가지고 있는데
이 구조가 서비스 반응 속도를 느리게 할 수 있습니다.
음성인식기 같은 경우 1차원 데이터이고 downsapling을 적절히 조절해서 업앤다운로드를 반응속도가 느리다는 것을 크게 느낄 수 없는데요
컴퓨터 비전 머신 같은 경우 3차원 데이터 이기 떄문에 문제가 될수 있다고 생각합니다.
먼저 UX측면입니다.
클라우드 모듈은 기본적으로 ~~ 구조를 가지고 있는데
이 구조가 서비스 반응 속도를 느리게 할 수 있습니다.
페북의 로딩하는 시간 즉 반응 속도를 나타낸 것입니다.
음성인식기 같은 경우 1차원 데이터이고 downsapling을 적절히 조절해서 반응속도가 느리다는 것을 크게 느낄 수 없는데요
컴퓨터 비전 머신 같은 경우 3차원 데이터 이기 떄문에 문제가 될수 있다고 생각합니다.
두번째 UX측면인데요 오프라인 상황에서 머신러닝을 사용해야하는 경우를 들수 있습니다.
명확하게 이경우 클라우드ML은 동작이 안되고요
특히 안전관련된 어플리케이션에서 머신러닝을 사용해야 한다면 문제가 될 수 있습니다.
통신 비용 측면
모바일 사용자가 가장 민감한거
배터리 소모
데이터 소모
클라우드ML은 입력 올려야 출력을 받아야 되기 떄문에 서버콜 이 필요하고
데이터를 소모합니다.
업로드 할 데이터 사이즈가 크면 데이터를 소모하겠죠
어플리케이션 관리자에 보면 앱별 데이터 소모량을 랭킹 해주는 기능이 있죠
상위권에 랭크되는 앱은 특별한 이유가 없다면 순삭됩니다.
또 중요하게 생각되어 측면이 프라이버시 입니다.
지금 서비스 되고 있는 대부분의 머신러닝 서비스는 클라우드 서비스죠
클라우드에서 머신러닝을 통한 개인화 서비스를 받기 위해서는 프라이버시는 포기해야합니다.
다시말해서 클라우드 ML에서는 개인화 의 개념과 프라이버시의 개념은 상충되는 개념입니다.
또 클라우드 ML에서는 데이터 퓨젼이 굉장이 어려운데요. 그 이유는 하나의 클라우드 서비스에서 다양한 개인정보를 수집하기 어렵기 때문에죠
모바일에는 여러가지 개인 데이터가 있어서 권한만 얻으면 가능하지만, 네이버 / 카카오 / 구글 정도 되서 다양한 서비스를 가지고 있어야 데이터 퓨젼을 하는 머신러닝 서비스가 가능합니다.
그런 어려움 들이 on-device ML하면 위에서 얘기 했던 부분이 어떻케 해결되는지 한번 보죠
UX + 데이터 소모 측면은 on-deivce inference가 가능해 지면 해결됩니다. 아래 것들이 기술적으로 극봅되어야 겠죠
프라이버시 측면은 on-device training이 가능해지면 해결됩니다. 이부분은 아직 연구 수준에 있는 거 같습니다.
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
팔방미인이 되라는 거죠
모바일 머신러닝 뿐만 아니라 실제로 임베디드 시스템이나 모바일 신호처리 쪽에서 원하는게 다 이렇습니다.
그래서 매력있는 분야고 재미있는거죠
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
그래서 텐서플로 라이트가 지금 해결해 줄수 있는 부분은
먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다
강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요
사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다
혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요?
아니면 씨언어?
잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.