Table of Contents
1 - Introduction to ML Strategy
2 - Setting up your goal
3 - Comparing to human level performance
4 - Error Analysis
5 - Mismatched Training and Dev/Test Set
6 - Learning from Multiple Tasks
7 - End-to-end Deep Learning
Objective
- Apply satisfying and optimizing metrics to set up your goal for ML projects
- Choose a correct train/dev/test split of your dataset
- Understand how to define human-level performance
- Use human-level perform to define your key priorities in ML projects
- Take the correct ML Strategic decision based on observations of performances and dataset
- Understand what multi-task learning and transfer learning are
- Recognize bias, variance and data-mismatch by looking at the performances of your algorithm on train/dev/test sets
딥러닝 모델 성능을 향상시키기 위해 다양한 전략이 있다.
...
다양한 아이디어들이 존재하지만, 좋은 아이디어를 빠르고 효율적으로 선택할 수 있으면 좋지 않을까? 머신러닝 문제 분석 전략 ways of analyzing a machine learning problem that will point you in the direction of the most promising things to try
과 머신러닝 제품을 만들면서 얻은 러닝을 살펴본다.
머신러닝 전략에서 직교화 : 원하는 효과를 위해 변수를 조정하는 과정
(직교는 서로 90도를 이룬다는 뜻이다. 이 개념을 시스템에 적용해서 이해해보자. 하나의 버튼이 회전각에 영향을 주고 다른 하나의 버튼이 속도에 영향을 준다. 이 경우(직교)에는 쉽게 버튼을 조작해서 원하는 속도나 회전각대로 시스템이 작동하도록 만들 수 있다. 만약 두 가지가 동시에 조절될 경우(직교가 아닌 경우)에는 원하는 대로 조작하기 어려울 수도 있다.)
Chain of assumptions in ML
지도학습이 잘 이루어지기 위해서는 다음 4가지 가정을 만족해야한다. 4가지 가정에 기반해서 문제가 생긴 원인을 파악하고 해당 부분을 조정(관련된 하나의 버튼을 조작)하는 것이다.
- Fit
training set
well on cost function
최소한 학습 데이터에서는 잘 작동해야한다. (어플리케이션에 따라서 human-level performance만큼 나와야할 수도 있다.)
- 신경망 네트워크 조정, 학습 알고리즘 변경
- Fit
dev set
well on cost function
개발 세트에 대해서 좋은 성능을 보여야한다.
- 정규화, 더 큰 training set
- Fit
test set
well on cost function
테스트 세트에 대해서 좋은 성능을 보여야한다.
- 더 큰 dev set
- Performs well in real world
실제 세상에서도 좋은 성과로 이어져야한다.
- dev set 변경(개발 세트의 분포 설정 문제), 비용함수 변경
분류기의 성능을 평가하는 합리적인 방법 중 하나는 정밀도, 재현율 보는 것이다.
정밀도와 재현율사이에는 트레이드 오프 관계가 있다.
Classifier | 정밀도(Precision) | 재현률(Recall) | F-1 score |
---|---|---|---|
A | 95% | 90% | 92.4% |
B | 98% | 85% | 91.0% |
단일 숫자 평가 지표가 아닌 두 개의 숫자 평가 기준 정밀도와 재현률로는 A와 B 둘 중 어느 분류기가 좋은 모델인지 선택하기 어렵다. 어느 모델이 좋은 성능인지 빠르게 고르기 어려우므로, 둘을 결합한 새로운 단일 평가 기준을 정의하고 그 기준을로 어느 분류기가 더 잘 작동하는 지 결정할 수 있다.
dev set
개발세트와Single (real) number evaluation metric
하나의 정량적 평가기준을 사용하면 빠르고, 효율적으로 모델 선택, 알고리즘 개선을 할 수 있다.
위에서 살펴본 것처럼 하나의 정량적 평가기준을 설정하는 것은 어려움이 있다.
모델 평가 기준에 정확도와 실행시간을 결합한다고 가정해보자.
분류기 | 정확도(Accuracy) | 실행 시간(Running Time) |
---|---|---|
A | 90% | 80ms |
B | 92% | 95ms |
C | 95% | 1500ms |
두가지 기준을 결합해서 비용을 Cost = Accuracy - 0.5*RunningTime
정의하는 것은 부자연스럽다.
대신, 정확도 Accuracy가 최대인 분류기를 선택하되, 이미지를 분류하는 데 소요되는 실행 시간 Running Time이 100ms보다 작은 것 중에 고른다.
Trigger Word Detection System 의 예를 살펴보자.
두 개의 평가 척도 | 평가 척도 결합 |
---|---|
Trigger word를 말한 경우에 장치가 반응하는 빈도 (True Positive rate) | Optimizing Metric |
Trigger word를 말하지 않은 경우에 반응하는 빈도 (False positive rate) | Satisficing Metric |
시스템 성능에 대한 두 개의 평가 척도를 결합하는 합리적인 방법은
N 개의 Metric 기준이 있을 때, 1개의 Optimizing Metric 최적화 지표를 설정하고, N-1개의 Satisficing Metric 조건 지표로 설정해 모델을 평가할 수 있다.
학습 개발 테스트 세트를 설정하는 방법에 대해서 살펴보자.
Dev set 개발 세트
분류기를 개발해 다양한 지역에서 작동시킨다고 가정해보자.
Regions | Set |
---|---|
US, UK, Other Europe, South America | dev |
India, China, Other Asia, Austrailia | Test |
위의 분류는 개발 세트와 시험 세트가 다른 분포에서 만들어지므로 나쁜 예에 해당한다.
향후 현실에서 얻을 수 있고, 좋은 성과를 낼 것이라고 예상하는 데이터를 무작위로 섞은 뒤 (동일한 분포에서) 개발 세트와 시험 세트를 설정한다.
Rule of Thumb
데이터가 부족했을 때(100-10000)는 훈련:시험 = 7:3 or 훈련:개발:시험 = 6:2:2 로 나누는 경향이 있었다.
Size of the dev and test sets를 결정함에 있어 다음 가이드라인을 따른다.
Set your test set to be big enough to give high confidence in the overall performance of your system.
전체 시스템 성능을 대변할 수 있도록 시험세트를 충분히 크게 설정해야한다
최근 머신러닝에서는 훨씬 큰 데이터 세트를 다루기 때문에 훈련:개발:시험=98:1:1 로 나누는 것이 합리적이다. 예를 들어, 1000000 개의 샘플이 있는 경우, 1% 만 해도 10,000 개의 예시로 충분하기 때문이다.
또한 test set의 목적은 최종 모델을 평가하는 것이고, 실제 머신러닝 프로젝트에서는 train/dev set만으로 모델 학습/검증 하기도 한다. (사람들이 dev set을 test로 칭함)
앞서 살펴본바, dev set
개발세트와 Single (real) number evaluation metric
하나의 정량적 평가기준 을 정하는 것이 중요하지만, 프로젝트 진행 중 잘못 설정된 것을 알게된 경우에는 어떻게 해야할까?
고양이 분류기 예를 통해 살펴보자. 평가 Metric 기준에 의하면 A가 나아보이지만, 모종의 이유로 알고리즘 A가 야한 사진을 분류했다고 가정해보자.
평가 Metric : Classification Error
평가 척도가 올바른 방향을 제시하지 않는다
Dev + Metric ⇒ A vs Users ⇒ B
평가 척도 수정
원하지 않는 결과에 가중치를 크게 부여해 손실값을 나쁘게 만든다.
구분 | Metric 평가 척도 수정 |
---|---|
기존 | |
야한 사진, 야하지 않은 사진도 동등하게 본다는 문제점이 있다. 야한 사진의 경우 label이 제대로 붙여지도록 가중항 = {0 or 야한 사진:1} 을 추가해, 야한 사진을 분류했을 때 오차가 훨씬 커지게 만든다. 오차가 0과 1사이 값을 가지도록 정규화항을 로 수정한다. 실제 이 가중치 항을 구현하기 위해서는 dev/test set안의 야한사진(1)을 확인해야한다. | |
수정 후 |
* 는 indicator로 {}안의 식이 참이 되는 예시의 계수를 센다.
고양이 분류기 예를 통해 살펴보자. 평가 Metric 기준에 의하면 A가 나아보이지만, 모종의 이유로 알고리즘 B가 상품에 적용시켰을 때 더 좋은 성능을 보일 수 있다.
평가 척도와 dev/test set가 올바른 방향을 제시하지 않는다
Dev + Metric ⇒ A vs Users ⇒ B
알고리즘이 좋은 성능을 내야하는 데이터를 포함하도록 dev/test set을 변경한다.
If doing well on your metric + dev/test set does not correspond to doing well on your application, change your metric and/or dev/test set.
dev set
개발세트와Single (real) number evaluation metric
하나의 정량적 평가기준을 정의하고, Metric을 기준으로 좋은 성능의 모델을 구현한다.그러나, 실제 어플리케이션에서 좋은 결과를 얻지 못하는 경우 신속하게 변경해야한다.
- Metric이 모델에 있어 가장 중요한 것을 측정하지 못하는 경우, Metric 변경
- 실제 대상 데이터 분포가 dev/test set 분포와 다른 경우, dev/test set을 실제에서 사용되는 데이터로 변경
최근 몇 년 동안 머신러닝 연구자들이 머신러닝의 성능을 Human-level Performance와 비교해왔다. 이는 더 좋은 성능의 알고리즘이 개발되어 다양한 분야에 적용될 수 있고, 특히 사람이 할 수 있는 것에 대해서 머신러닝 시스템을 구축하는 것이 더 효율적이기 때문이다. 따라서 사람 수준의 성능과 비교하고 그에 도전하는 것이 자연스러워졌다.
When your model is worse than humans, you can
- Get labeled data from human
사람이 라벨링한 데이터를 더 수집- Gain insight from manual error analysis
수동 오차 분석 - 알고리즘이 틀린 예시를 사람들이 보는 것- Better analysis of Bias/Variance
고양이 분류기 예시를 통해 살펴보자.
구분 | (1) | (2) |
---|---|---|
Human Error | 1% | 7.5% |
Training Error | 8% | 8% |
Dev Error | 10% | 10% |
(1) 사람은 거의 정확하게 판별한다고 가정
train set performance 8% 와 human-level performance 1%의 큰 차이는 알고리즘이 train set에 충분히 들어맞지 않았음을 의미한다.
분산과 편향 문제에서 편향을 줄이는 데 집중할 것이다. Focus on Reducing Bias
더 큰 신경망을 학습시키거나, 경사하강법을 더 오래 실행해서 train set에서 더 좋은 성능을 만들고자할 것.
(2) 사진이 흐려 사람조차도 정확히 구분할 수 없다 가정
train set performance 8% 는 human-level performance 7.5%에 약간 못 미치니까 train set에서 좋은 성능을 보인다.
분산과 편향 문제에서 분산을 줄이는 데 집중할 것이다. Focus on Reducing Variance
정규화를 통해 train error 와 dev error 차이를 줄이고자 할 것.
Human-level error as a proxy for Bayes Optimal error
사람 수준의 오차와 베이지안 최적오차는 차이가 많이 나지 않는 것으로 가정하고, 사람 수준의 오차를 베이지안 최적오차로 추정한다.Avoidable bias 회피가능편향
- 베이지안 최적오차(Human level error)와 훈련오차의 차이
- 더 이상 낮아 질 수 없는 편향 또는 최소 오차가 있다는 뜻이다.
- 회피가능편향 값이 클 수록 아직 모델이 충분히 훈련이 안된 것이다. 더 큰 신경망이나 경사하강법을 더 오래 실행해서 회피 가능 편향을 줄이도록 한다.
Variance
- 훈련오차와 개발오차의 차이
- 개발 세트로 모델을 얼만큼 일반화 할 수 있는 지를 의미하고, 차이가 적을 수록 새로운 데이터를 잘 예측한다.
앞서 현재, 미래에 어떤 함수가 달성할 수 있는 최적의 오차값을 의미하는 베이지안 오차의 추정치로 사람 수준의 오차를 사용했다. Human level performance 라는 용어는 논문에서 큰 뜻 없이 사용되기도 하는데, 사람 수준의 성능의 정의를 이용해 머신러닝 프로젝트를 발전시켜보자.
Medical image classification 예시를 살펴보자.
구분 | Error |
---|---|
Typical Human | 3% |
Typical doctor | 1% |
Experience doctor | 0.7% |
Team of experience doctors | 0.5% |
Human-level error 사람 수준의 오차는 어떻게 정의할까?
0.5%를 베이지안 최적오차로 추정하게 된다면, 일반적인 진료 시스템에 사용하기 위해, 일반 의사의 오차 1%를 사람 수준의 오차(Estimate of Bayes Optimal Error, 베이지안 오차의 추정치)로 볼 수 있다. 또한 사람 수준의 오차가 훈련 오차보다 더 높지 않도록 설정하는 것을 주의해야한다.
이처럼 사람 수준의 오차의 추정치를 토대로 베이지안 최적오차를 추정할 수 있고, 사람 수준의 오차를 정의함으로써 머신러닝이 학습하게될 목적을 명확히 할 수 있게 된다.
구분 | (1) | (2) | (3) |
---|---|---|---|
Human (proxy for Bayes Error) | 1% / 0.7% / 0.5% | 1% / 0.7% / 0.5% | 0.5% |
Training Error | 5% | 1% | 0.7% |
Dev Error | 6% | 5% | 0.8% |
(1) Focus on Avoidable bias
(2) Focus on Variance
(3) Avoidable bias = 0.2%, Variance= 0.1% : 사람수준의 오차에 가까워질수록 편향과 분산 중 무엇에 중점을 둘 지 결정하기 어렵다.
베이지안 오차를 갖고 있는 문제(베이지안 오차가 0이 아닌 경우), Avoidable Bias(Diff on Human vs Train) 회피가능 편향 이나, Variance (Diff on Train vs Dev) 분산의 추정치를 통해 알고리즘의 편향을 줄일지, 분산을 줄일지 결정할 수 있다.
머신러닝이 사람 수준의 성능을 뛰어넘는 문제들
이러한 문제들의 특징
즉, 컴퓨터가 사람보다 더 많은 구조화된 정보를 가지고 통계적 패턴을 쉽게 찾는다는 것이다.
앞서 학습한 내용을 바탕으로 가이드라인을 정리해보면 다음과 같다.
2 fundamental assumptions of supervised learning
지도학습 알고리즘이 잘 작동할 수 있도록
- Fit the training set pretty well ⇒ Low Avoidable Bias
- Train bigger model
더 큰 모델로 훈련- Train longer/better optimization algorithms
더 오랫동안 모멘텀, RMSprop, Adam과 같은 더 나은 최적화 알고리즘을 사용- NN architecture/hyperparameters search
더 나은 신경망 구조나 하이퍼파라미터 값을 찾는다. 활성함수를 변경, 은닉층 수 변경, RNN/CNN
- Traing set performance generalize pretty well to the dev/test set ⇒ Low Variance
- More data
더 많은 데이터 사용- Regularization
L2정규화, 드롭아웃, Data Augumentation,- NN architecture/hyperparameters search
- Error Analysis 오차 분석
- 오차를 줄이는 것에 대한 비용을 알아보고 기존보다 얼마나 성능을 높일 수 있는 지 그 상한
ceiling
을 파악할 수 있다.- dev 세트에서 잘못된 결과가 나온 것들 중 가장 비중을 많이 차지하는 부분(원인)을 찾아, 해당 오류를 고치는 것이 가장 효율적인 방법이다.
오차분석에서 하나의 아이디어 평가
<고양이 분류기 예시 A - misclassified images>
dev set accuracy 가 90%로, dev set error가 10%였다고 가정해보자. 알고리즘이 범하고 있는 실수를 직접 파악해보니, 몇 종류의 개를 고양이로 잘못 분류한 것을 확인했다. 이 경우 개 사진에 더 좋은 성능을 내도록, 더 많은 개 사진을 모아 개 사진에만 특정된 특징을 필터링 되도록 만들 수 있다. 하지만 개 그림에 대한 실수를 줄이기 위한 문제에 초점을 두고 추가 프로젝트를 진행하는 것이 가치있는 일일까?
오차 분석에서 동시에 여러 아이디어 평가
<고양이 분류기 예시 B - misclassified images>
개를 고양이로 잘못 분류, great cats(사자,표범 등 고양이와 비슷하게 생긴 동물) 고양이로 잘못 분류, Blurry image에 대해 잘못 분류
Image | Dog | Great Cat | Blurry | Comments |
---|---|---|---|---|
1 | v | Unusual pitbull color | ||
2 | v | |||
3 | v | v | Lion; picture taken at zoo on rainy day | |
4 | v | Panther behind tree | ||
…. | … | … | … | … |
% of total | 8% | 43% | 61% |
각각의 원인들이 전체 오분류에서 해당하는 비율을 통해서 알고리즘 개선을 위해 시도할만한 선택지를 파악할 수 있다.
지도학습 데이터는 입력값 와 출력 label 로 이루어진다.
일부 데이터에서 잘못 라벨링된 사례를 발견했다고 가정해보자. 이들을 옳게 고치는 것이 가치있는 일일까? 잘못 라벨링 된 데이터의 처리를 훈련, 개발, 시험 세트의 경우로 나눠 알아보자.
- Training set 훈련 세트
DL Algorithms are quite robust to
random errors
in the training set.
- 훈련세트는 무작위 오차에 대해 다소 둔감하다. 잘못 라벨링 된 데이터의 학습 결과 오차가 무작위 오차와 크게 차이 나지 않을 경우 수정하지 않아도 된다.
- 그러나 무작위 오차가 아닌
Systemmetic Error
시스템적인 오류(같은 라벨에 대해서 계속 오분류 하는 것)는 덜 둔감하기 때문에 문제가 될 수 있다.
- Dev/Test set 개발 및 시험 세트
- 개발 및 시험 세트는 Error Analysis 오차 분석시 잘못 라벨링으로 인한 오차의 비율을 구하고, 전체 오차에서 얼만큼 차지하는지 살펴본 뒤 결정한다.
- 개발 과 시험 세트의 분포는 같아야하기 때문에 동시에 살펴본다.
Error Analysis on Dev/Test set
이전에 살펴본 misclassified images 예에 Incorrectly labeled를 추가해 살펴보자.
Error | A | B |
---|---|---|
Overall Dev set error | 10% | 2% |
Errors due to incorrect labels | 6% | 0.6% |
Errors due to other causes | 9.4% | 1.4% |
dev set에서 잘못된 결과가 나온 것들을 살펴보고, B와 같이 알고리즘을 평가하는데 큰 영향을 미치는 경우 잘못 라벨링된 데이터를 수정한다.
새로운 머신러닝 어플리케이션을 만들때는 우선 시스템을 빨리 만든 뒤에 다시 검토한다
Train과 Dev/Test Set의 불일치 문제를 핸들링할 수 있는 방법에 대해 살펴본다.
딥러닝은 학습 데이터가 많이 필요하기 때문에 데이터 수집과 동시에 훈련세트에 집어넣다보니, 학습 세트와 개발 및 시험 세트의 분포가 달라지는 경우가 생길 수 있다. 이렇게 분포가 서로 다른 데이터가 추가 되었을 때, 적용할 수 있는 2가지 방법을 살펴본다.
분포가 서로 다른 데이터가 추가 되었을 때, 적용할 수 있는 2가지 방법
- 새로 얻은 데이터를 기존의 데이터와 합쳐서 무작위로 섞어서 다시 train, dev, test set 을 만드는 방법
- 같은 분포에서 얻어졌기 때문에 다루기가 쉽다.
- 새로 얻어진 데이터에서 좋은 결과를 원한다면, 새로운 데이터의 비중이 월등히 적기 때문에, 원하는 성능을 얻기가 어렵다.
- 새로 얻어진 데이터의 일부를 train set에 섞은 다음, dev/test set은 모두 새로운 데이터로 만드는 방법
- 새로운 데이터에서 원하는 성능을 얻을 수 있다. train과 dev/test의 분포가 달라진다는 단점이 있지만, 장기적으로 더 나은 성능을 얻을 수 있다.
- 새로 얻은 데이터를 전부 dev/test set에 포함할 때보다 Train set의 크기가 훨씬 커진다.
Speech Recognition Example
Speech Activated rearview mirror 말로 백미러를 활성화시키는 시스템을 구축하는 예를 살펴보자.
구 분 | Data | size | Resize |
---|---|---|---|
Training | 다른 음성인식 문제에서 사용했던 데이터 Purchased Data (X,y), Smart Speaker Control, Voice Keyboard | 500,000 | 510,000 |
Test/Dev | 실제 상품이 좋은 성능을 보여야하는 데이터 Speech Activated rearview mirror | 20,000 | 10,000 |
Train vs Dev/Test set 데이터의 분포가 다른 경우, 위와 같이 새로운 데이터 일부(10,000)를 Train set에 포함시키고 나머지 데이터 (10,000)를 1:1로 나눠 Dev/Test set을 구성하는 것이다.
Bias and Variance 편향-분산 문제를 분석하는 방법에서 둘을 구별하는 데 어려움이 있다.
(1) 일반화의 부족으로 인한 오차인지
(2) Train set의 분포와 Dev set의 분포 차이로 인한 오차인지
Human level error가 0%에 가깝다고 가정하,
알고리즘 테스트 결과가Train error 1%, Dev error 10%
Dev set이 Train set과 동일한 분포인 경우, 분산에 문제(Diff on Train and Dev error)가 있다고 할 수 있다.
Dev set이 Train set과 다른 분포인 경우, 위와 같은 결론을 내릴 수 없다. Dev set에는 문제가 없을 것이다. (예를 들어, Train은 고해상도의 이미지와 같이 쉬운 케이스이고, Dev가 더 어려운 케이스에 해당한다. )
9%의 오차 증가가 어느 원인에 기인한 것인지 구별이 어렵다.
위와 같이 구별이 어려운 상황때문에 새로운 데이터를 정의한다.
Training-development set 훈련-개발 세트
Train과 동일한 분포를 가지지만 Training 학습에는 사용하지 않는 데이터
Train의 일부를 떼어내Bias and Variance 편향-분산 문제를 알아보기 위해 사용한다.
Train-dev set error VS Train error
- Training-development set훈련-개발 세트의 오차가 Train set의 오차와 크게 차이가 없다면,
(1) 일반화의 부족으로 인한 오차 Variance 분산
문제로 볼 수 있다.- Training-development set훈련-개발 세트의 오차가 Train set의 오차와 차이가 크다면,
(2) Train set의 분포와 Dev set의 분포 차이
문제입니다.
Train set과 Dev/Test set간의 데이터 분포가 다른 경우, 체계적인 해결법은 없지만 아래의 방법들을 시도해볼 수 있다.
Artificial data synthesis 인공적 데이터 합성 방법으로 (2) Making training data more similar to dev/test sets
dev set과 비슷한 train data를 더 빠르게 만들 수 있다. 두 가지 예시를 통해 살펴보자.
Trigger word Recognition System
bunch of low noise voice recordings | car noise (or other audio effects) | Synthesized in-car audio |
---|---|---|
10,000hrs | 1hr | Overfit to 1hr noise Original의 1만 시간에 추가하기 위해 Noise를 1만번 반복하게 된다. 이런 경우, 학습 알고리즘이 일부의 합성된 Noise에 과대적합 될 수 있는 위험이 있다. |
10,000hrs | 10,000hrs | 학습 알고리즘이 더 나은 성능을 가지도록 할 것이다. |
Car Recognition System
graphic car images | Synthesized car images |
---|---|
20 kinds of cars | Overfit to synthesized graphic images 실제 가능한 경우보다 굉장히 적은 경우 train에 포함된 small subset 의 합성 자동차 이미지에만 과적합될 위험이 있다. |
인공적 데이터 합성으로 dev set과 유사한 train data를 더 빠르게 만들 수 있지만, 모델이 작은 부분에 대해서만 과적합될 위험이 있으므로 주의해야한다.
딥러닝에서 가장 강력한 아이디어 중 하나는 전이학습 : 신경망이 하나의 작업에 대해 학습을 이미 한 경우, 그 지식을 다른 종류의 작업에 이용할 수 있다는 것이다.
TRANSFER TASK A ⇒ B
전이학습은 작업 A로부터 학습하고, 작업 B로 전이하여 순차적인 과정을 거친다. 기존에 학습된 지식A을 데이터가 적은 문제B에 적용시킬수 있다는 장점이 있다. 지도학습의 경우, 전이학습의 방법은 기존 학습된 모델에서 마지막 층을 제거한 후, 분류 하고자 하는 새로운 문제에 적합한 층을 연결시켜주고 학습한다.
그렇다면 어떤 경우에 Transfer Learning전이학습을 자주 활용할까?
전이학습과는 반대로 Multi-task learning 다중 작업 학습은 한 신경망이 여러 작업을 동시에 할 수 있도록 학습한다.
Multi-Class Classification - Simplified autonomous driving example
자율주행자동차를 만드는 상황, 보행자, 자동차, 정지표시판, 신호등을 판별해야한다.
이 경우, One image can have multiple labels
하나의 이미지가 여러 개의 레이블을 가진다.
train set 레이블을 horizontally 가로로 쌓아 올리면 다음과 같이 표현할 수 있다.
의 = 4개의 물체를 포함한 이미지를 인식하는 하나의 신경망을 나타내면 다음과 같다. (출력층의 4개의 node 다중 분류 문제)
4가지 작업에 대해 하나의 신경망을 학습 vs 독립적인 4개의 신경망을 개별 학습
그렇다면 어떤 경우에 Multi-task learning 다중 작업 학습을 자주 사용할까?
Transfer Learning VS Multi-task Learning
평균적으로 다중 작업 학습보다는 전이학습이 더 많이 쓰인다.
- 전이학습 : 적은 데이터를 가지는 문제가 있을 때, 많은 데이터를 가지고 있는 문제와 연관시켜 이미 학습한 것들을 새로운 문제에 전이시켜 학습한다.
- 다중작업학습 : 사용하고자 하는 거대한 작업 세트가 있을 때, 이 모든 작업들을 동시에 훈련하고자 할 때 사용한다.(ex Computer Vision)
최근 딥러닝 분야에 있었던 가장 큰 발전
End-to-End Deep Learning
자료처리 시스템, 학습시스템에서 여러 단계의 필요한 처리과정을 재배치하고 단 하나의 신경망을 이용해 한번에 처리한다. 즉, 데이터만 입력하고 원하는 목적을 학습시키는 것이다.
End-to-end 딥러닝을 사용하기 전에
Do you have sufficient data to learn a function of the complexity need to map x to y?
- 항상 어떤 작업을 하려고 하는지, 특히 지도학습에서 x, y 를 어떻게 연관지을 것인지를 생각해야한다.
- 학습하기 위한 데이터가 충분한지도 고려해야한다.