๐ ๊ฐ์ ์ ๋ฆฌ
* Coursera ๊ฐ์ ์ค Andrew Ng ๊ต์๋์ Structuring Machine Learning Projects ๊ฐ์๋ฅผ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
* ์ด๋ฏธ์ง ์ถ์ฒ : Deeplearning.AI
Error Anaylsis
1. Carrying out Error Anaylsis
๊ณ ์์ด ๋ถ๋ฅ ๋ฐ์ดํฐ์ ์ ๊ฐ์์ง ์ฌ์ง, great cat(์นํ, ํ๋ฒ, ํธ๋์ด ๋ฑ) ์ฌ์ง, ํ๋ฆฟํ ์ฌ์ง๋ฑ์ด ์์ฌ์๋ค๊ณ ํ๋ฉด ํ์ต ์ฑ๋ฅ์ ๋์ด์ฌ๋ฆฌ๋๋ฐ ๋ฐฉํด๊ฐ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๊ณ ๋ชจ๋ ๋ฐ์ดํฐ์ ์๋ฌ๋ฅผ ์์ ํ๋ ๊ฑด ์ฝ์ง ์๋ค. ๋ฐ๋ผ์ 100๊ฐ ์ ๋์ ๋ฐ์ดํฐ์ ์ ๋ฝ๊ณ ์๋์ ๊ฐ์ ํ์ ์ ๋ฆฌ๋ฅผ ํด์ ๋ช ํผ์ผํธ๊ฐ ์ค๋ฅ๊ฐ ์๋ ๋ฐ์ดํฐ์ ์ธ์ง ํ์ธํ๋ค.
2. Cleaning up Incorrectly Labeled Data
๊ทธ๋ ๋ค๋ฉด ์๋ชป ๋ผ๋ฒจ๋ง๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ ์ด๋ป๊ฒ ํด์ผ๋ ๊น?
๋ง์ฝ ์๋ชป ๋ผ๋ฒจ๋ง๋ ๊ฒ์ด training set์ ์ํ๊ณ , ๊ทธ ๋น์จ์ด ํฌ์ง ์๋ค๋ฉด ๊ทธ๋ฅ ๋ฌ๋ ๋๋ค(๋ฌผ๋ก ์์ ํ๋ฉด ์ข์ง๋ง). ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ Random error์ robustํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ systematic error์๋ ์ฝํ๋ฏ๋ก ์ฃผ์ํด์ผํ๋ค. ์๋ฅผ ๋ค์ด ํฐ ๊ฐ์์ง์ ๋ํด ๊ณ์ 1๋ก ๋ผ๋ฒจ๋งํ๋ค๋ฉด ํฐ ๊ฐ์์ง๋ฅผ ๊ณ ์์ด๋ก ๋ถ๋ฅํ๊ฒ ๋๋ค.
1์์ ์๊ธฐํ๋ ๊ฒ์ฒ๋ผ Analysis ํ๋ฅผ ๊ทธ๋ ค๋ณด๊ณ ์ด๋ค ์ค๋ฅ๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋ฌ๋ฅผ ์ค์ผ ์ ์๋์ง ๋ถ์ํ๋ ๊ณผ์ ์ด ํ์ํ๋ค
์์ ์์๋ฅผ ๋ณด๋ฉด ์๋ฌ๊ฐ 10% ์ผ ๋๋ ๋ผ๋ฒจ๋ง ์๋ชป๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๊ฒ๋ณด๋ค ๊ทธ ์ธ์ ๊ฒ์ ์์ ํ๋ ๊ฒ์ด ๋ ์ข์๋ณด์ธ๋ค. ๊ทธ๋ฌ๋ ์๋ฌ๊ฐ 2%๊ฐ ๋ผ์์ ๋๋ 0.6%๋ ํฐ ์์น์ด๋ฏ๋ก ์๋ชป ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋ฏธ ์์ด์ง๋ค.
โ Guideline to correct incorrect dev/test set examples
- ์ด๋ค ๋ฐฉ์์ ํ๋ก์ธ์ค๋ฅผ ์ ์ฉํ๋ dev/test set์ ๋์ผํ๊ฒ ์ ์ฉํ ๊ฒ
- ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ง์ถ ๊ฒ๋ค์ ํฌํจํด์ ํ๋ฆฐ examples์ ๋ํด ์ดํด๋ณผ ๊ฒ. ํ๋ฆฐ example์ ๋ณด๊ณ ๊ณ ์น๋ ๊ฒ์ ์ฝ๋ค. ์๊ณ ๋ฆฌ์ฆ์์ ํ๋ฆฐ ๊ฒ๋ง ๊ณ ์น๊ฒ ๋๋ฉด bias estimate์ ์ค๋ฅ๊ฐ ๋จ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋จ์ํ ์ด์ผ๋ก ๋ง์ถ ๊ฒ๋ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ๊ฒ๋ ๋ด์ผํ๋ค.
- Train dataset ๊ณผ Dev/Test dataset์ ๋ถํฌ๋ ๋ค๋ฅผ ์ ์๋ค.
3. Build your First System quickly, then Iterate
์๋ก์ด ๋จธ์ ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค๋๋ ์ฒซ๋ฒ์งธ ์์คํ ์ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ณ ๋ฐ๋ณต ํ ์คํธ๋ฅผ ์งํํ๋ผ!
Mismatched Training and Dev/Test set
1. Training and Testing on Different Distributions
Training set์๋ ์ฐ๋ฆฌ๊ฐ ๋ชฉํ๋ก ํ๋ ๋ฐ์ดํฐ์ ๋ง๊ณ ๋ ๋ค์ํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ์ ์๋ค. ์ฌ์ฉ์๋ก๋ถํฐ ๋์ค๋ ์ด๋ฏธ์ง๋ ์์ฑ ๊ฐ์ ๊ฒ์ Dev/Test set์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ ๋ง์ถ๊ณ ์ถ์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค. Dev/Test์ ๋ฃ์ด์ฃผ๊ณ ๋จ์ ๊ฒ์ Train set์ ํฌํจํ๋ค.
2. Bias and Variance with Mismatched Data Distributions
์์์ Train set ๊ณผ Dev/Test set์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ์ ๋ํด์ ๋ดค๋ค. Train set๊ณผ Dev/Test set์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ฉด Bias์ Variance๋ฅผ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ด ๋ฌ๋ผ์ง๋ค.
Train๊ณผ Dev/Test set์ distribution์ด ๋ค๋ฅธ ๊ฒฝ์ฐ Training-dev set์ ํ์ฉํ ์ ์๋ค. Training-dev set์ training set์์ shuffleํ์ฌ ๋๋คํ๊ฒ ๋ฝ์ ๊ฐ์ dev์ฉ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด Training error์ Dev error์ ์ฐจ์ด(variance)๊ฐ ๋ถํฌ์ ์ฐจ์ด์์ ์ค๋ ์๋ฌ์ธ์ง(dev๊ฐ ๋ ํ๋ฆฌ๊ณ ์ ํ์ง์ธ ์ฌ์ฉ์๊ฐ ๋ฃ์ด์ค ์ฌ์ง์ด๋ผ๊ณ ๊ฐ์ ) Overfitting์ผ๋ก ์ธํด ๋ฐ์ํ ์๋ฌ์ธ์ง ํ์ธํ ์ ์๋ค.
โ ์์
- case 1. Train error : 1%, Train-dev error : 9%, Dev error : 10% → Variance problem(overfitting)
- case 2. Train error : 1%, Train-dev error : 1.5%, Dev error : 10% → Data mismatch problem
์ผ๋ฐํํ์ฌ ๋์ํํ๋ฉด ์๋์ ๊ฐ์ด ํํํ ์ ์๋ค.
3. Addressing Data mismatch
bias์ variance์ ๋ํ ์ค๋ฅ๋ถ์ ๋ฐ ํด๊ฒฐ์ฑ ์ ๋ํด์๋ ์ง๋ ์ ๋ฆฌ ๋ ํ์๋ค. Data mismatch ๋ํ ๋ฌธ์ ํด๊ฒฐ์ฑ ์ ๋ฌด์์ด ์์๊น? → ์ค๋ฅ๋ถ์
Dev set์ ๋ํ ๋ฌธ์ ๋ฅผ ๋ถ์ํ๊ณ Train set๊ณผ ๋ค๋ฅธ ํน์ฑ ํ์ ํ๊ณ Train set์ Dev set๊ณผ ์ ์ฌํ๊ฒ ๋ณํํ๊ธฐ. ๋๋ Dev set๊ณผ ๋น์ทํ ๋ฐ์ดํฐ์ ์์งํ๊ธฐ. ๋๋ ์ธ๊ณต ๋ฐ์ดํฐ ํฉ์ฑ(Artificial Data synthesis)
Learning from Multiple Tasks
1. Transfer Learning
๋ฅ๋ฌ๋์ ๊ฐ์ ์ค ํ๋๋ ํ ํ์คํฌ์์ ํ์ตํ ๊ฒ์ ๋ค๋ฅธ ํ์คํฌ์ ์ ์ฉํ ์ ์๋ค๋ ์ ์ด๋ค. ์ด๊ฒ์ด Transfer learning(์ ์ดํ์ต)์ด๋ค.
- pre_training : ๋ฐ์ดํฐ ๊ฐ์๊ฐ ๋ง์ ๊ฒฝ์ฐ weight initialize๋ฅผ pre_tranied ๋ ๊ฐ์ผ๋ก ์ค์ ํ๊ณ , ์ ์ฒด layer์ ๋ํ ํ์ต์ ์งํํ๋ค.
- fine-tunning : ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ์ ์ ๊ฒฝ์ฐ ๋ง์ง๋ง classification layer์ weight๋ง ํ์ต์ ์งํํ๊ณ , ์ ๋ถ๋ถ์ feature extraction layer๋ ํ์ต์ ํ์ง ์๋๋ค.
Transfer learning์ด ํจ๊ณผ์ ์ธ ์ด์ ๋ ๋์ฉ๋์ ์ด๋ฏธ์ง์์ feature๋ฅผ ํ์ตํ ๊ฐ์ค์น๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋์ฉ๋์ ์ด๋ฏธ์ง์์ ์ ๋ถ, ์ ๋ฑ์ feature๋ฅผ ํ์ตํ ๊ฑธ ์ ์ฉํ๋ ๊ฒ์ด๋ค.
Transfer learning์ ํ๊ธฐ์ํ ์กฐ๊ฑด์ pre_trained์ ์ฌ์ฉํ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ transfer learning์ ํ๋ ค๊ณ ํ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ณด๋ค ์ปค์ผํ๋ค. image์ ๊ฒฝ์ฐ์๋ class์ ๊ฐ์์ด๊ณ , ์์ฑ์ ๊ฒฝ์ฐ์๋ ์๊ฐ์ด๋ค.
2. Multi-task Learning
transfer learning์ ํ์คํฌ ๊ฐ์ sequantialํ ์์๊ฐ ์๋ ๋ฐ๋ฉด์, Multi-task learning์ ๋์์ ์์ํ๋ค.
Computer vision object detection์ ์ ์ธํ๊ณ ๋ transfer learning์ด multi-task learning๋ณด๋ค ํจ์ฌ ๋ง์ด ์ฌ์ฉ๋๋ค.
End-to-end Deep Learning
1. What is end-to-end Deep Learning?
์์ฑ ์ธ์๊ณผ ๊ฐ์ ์์์์ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ ์์ ๋ฐฉ์๋๋ก feature๋ฅผ ๋ฝ์๋ด๊ณ ์์ํ๋ฅผ ์งํํ์ฌ ๋จ์ด๋ฅผ ์์ฑํ๊ณ ์ต์ข ๋ฒ์ญ์ ํ๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ์ธํ๊ณผ ์์ํ๋ง ์์ ๋ฟ์ด๋ค. ๋ค๋ง ๋ง์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค. ์ง๊ธ๋ ์ ์ ๋ฐ์ดํฐ์ ๋ํด์๋ ์ ํต์ ์ธ ๋ฐฉ์์ด ๋ ์ ์๋ํ๋ค.
๋๊ธ