๐ ๊ฐ์ ์ ๋ฆฌ
* Coursera ๊ฐ์ ์ค Andrew Ng ๊ต์๋์ Structuring Machine Learning Projects ๊ฐ์๋ฅผ ๊ณต๋ถํ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
* ์ด๋ฏธ์ง ์ถ์ฒ : Deeplearning.AI
Introduction to ML Strategy
There are some strategy for improving your system(model). These strategy can make your system work effectively and quickly.
๋จธ์ ๋ฌ๋์ ํจ์จ์ ์ผ๋ก ํ๋ ์ฌ๋๋ค์ ์ด๋ค ํจ๊ณผ๋ฅผ ์ํด ์ด๋ค ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ํด์ผํ๋์ง ๋๋ ทํ ์๋ชฉ์ ๊ฐ์ง๊ณ ์๋ค. ์ด๋ฐ ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ํ๋ ๊ณผ์ ์ Orthogonalization(์ง๊ตํ)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ ์ฒด์ ์ธ ์์คํ ์ ๊ณผ์ ์ training set ํ์ต → dev set์ผ๋ก ํ์ธ → test set ์ผ๋ก ํ ์คํธ → ์ค์ ์ฑ์ ์ ์ฉ ์ด๋ค.
โ ๊ฐ ๊ณผ์ ์์ ์ฑ๋ฅ์ด ์ ์๋์จ๋ค๋ฉด ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์
- Fit training set well on cost function : bigger network, better optimization algorithm(like Adam)
- Fit dev set well on cost function : Regularization, Bigger training set
- Fit test set well on cost function : Bigger dev set
- Performs well in real world : change dev set or cost function
Andrew ๊ต์๋์ early stopping ๊ธฐ์ ์ ์ ์์ด๋ค๊ณ ํ๋ค. Orthogonalization์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ ์ฃผ๊ฑฐ๋ ๋ถ์์ฉ์ด ์๊ธฐ์ง ์๋๋ก ํด์ผํ๋๋ฐ, early stopping์ train set์ fittingํ๋ ๊ณผ์ ๊ณผ dev set์ fittingํ๋ ๊ณผ์ ๋ชจ๋์ ์ํฅ์ ๋ผ์น๊ฒ ๋๋ค.
Setting Up Your Goal
1. Single Number Evaluation Metric
ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ํ๊ฑฐ๋ ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ ๋ฐฉ๋ฒ์ ๋์ ํ ๋, ์ค์ํ๊ฐ์งํ๊ฐ ์์ผ๋ฉด ํจ์จ์ด ๋ ์ข์์ง๋ค.
๋ณดํต ํ ๋จ์๋ก ๋จธ์ ๋ฌ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ Single Number Evaluation Metric(์ค์ ํ๊ฐ ์งํ)์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
Idea → Code → Experiment์ ๋ฐ๋ณตํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ์ ๊ฐ์ ํ๋ค. ๊ทธ ๊ณผ์ ์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ์ ๋๋ฅผ ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ด single number evalutation metric์ด๋ค.
์ข์ ๋ฐฉ๋ฒ ์ค ํ๋๋ Precision(์ ๋ฐ๋)์ Recall(์ฌํ์จ)์ ํ์ธํ๋ ๊ฒ์ด๋ค.
๊ณ ์์ด๋ฅผ ๋ถ๋ฅํ๋ ๋ชจ๋ธ์ด ์๋ค๊ณ ํ ๋, ์ ๋ฐ๋๋ ๋ชจ๋ธ์ด ๊ณ ์์ด๊ฐ ๋ง๋ค๊ณ ์ฌ๋ฐ๋ฅด๊ฒ ํ๋จํ๋ ํผ์ผํธ๋ฅผ ์๋ฏธํ๊ณ ์ฌํ์จ์ dev set์์ ์ค์ ๊ณ ์์ด์ธ ๊ฐ ์ค์ ๊ณ ์์ด๋ผ๊ณ ํ๋จํ ํผ์ผํธ๋ฅผ ์๋ฏธํ๋ค.
There is a trade-off between Precision and Recall.์์ ํผ๊ท์ด์์ ์ค๋ฅธ์ชฝ ํ๋ฅผ ๋ณด๋ฉด Classifier A๊ฐ Recall ๊ฐ์ ๋ ๋๊ณ , CLassifier B๊ฐ Precision ๊ฐ์ ๋ ๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ๊ฐ์ Classifier๋ฅผ test ํด๋ณด๊ณ ๊ฐ์ฅ ์ข์ classifier๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๊ต์๋์ ์ถ์ฒ์ precision๊ณผ recall์ ๊ฐ๊ฐ ๋ณด์ง๋ง๊ณ ์ด ๋์ ์กฐํํ๊ท ์ธ F1-score์ ์ธก์ ์งํ๋ฅผ ์ฌ์ฉํ๋ผ!
2. Satisficing and Optimizing Metric
Accuracy๊ฐ optimizing Metric์ด๊ณ , Running time ๋ฑ์ ์์๊ฐ Satisficing Metric์ด ๋๋ค.
๊ณ ๋ คํ๋ ์์๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ์๋ค๋ฉด, ๊ฐ์ฅ ์ค์ํ ์์๋ฅผ optimizing metric์ผ๋ก ์ธก์ ์ ํ๊ณ , ๋๋จธ์ง์ ๋ํด์๋ satisficing metric์ผ๋ก ํ๊ณ์น๋ฅผ ์ ํ๋ค. ์์ ์ด๋ฏธ์ง์ ์์์ ๊ฒฝ์ฐ Running time์ด satisficing metric์ด๋ฏ๋ก running time์ด 100ms ์ดํ์ธ ๊ฒ์ผ๋ก satisficing metric์ ์ค์ ํ ์ ์๋ค.
3. Train/dev/test distributions
dev set๊ณผ test set์ ๋ถํฌ ํํ๋ ๊ฐ์์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฏธ์ง ๋ถ๋ฅ๋ฅผ ์ํด ๋ฏธ๊ตญ, ์ ๋ฝ, ํ๊ตญ, ๋ธ๋ผ์ง, ์ค๊ตญ ๋ฑ์ ๋๋ผ๊ฐ ์๋๋ฐ dev set์ ๋ฏธ๊ตญ, ์ ๋ฝ, ํ๊ตญ์ ์ฌ์ฉํ๊ณ test set์๋ ๋ธ๋ผ์ง, ์ค๊ตญ์ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง๋ค. ๋ฐ๋ผ์ ์ ์ ํ๊ฒ ์์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ ์ฌ์ฉํด์ผ ํ๋ค.
4. Size of the Development and Test set
๋ฐ์ดํฐ์ ๊ฐ์๊ฐ 100, 1,000, 10,000๊ฐ ์ ๋๋ก ์์๋ ๊ณผ๊ฑฐ์๋ train๊ณผ test ๋น์จ์ด 70:30์ด๊ฑฐ๋ train, valid, test์ ๋น์จ์ด 60:20:20 ์ด ๋ณดํธ์ ์ด์๋ค
ํ์ฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ง์์ 1,000,000๊ฐ ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ํ์ต์ํค๋ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก 1ํผ์ผํธ๋ง ํด๋ 10,000๊ฐ์ ๋ฐ์ดํฐ์ฌ์ train, valid, test์ ๋น์จ์ด 98:1:1๋ก train set์ ๋น์จ์ด ์๋์ ์ด๋ค.
5. When to change Dev/Test sets and Metrics?
weight๋ฅผ ์ฃผ์ด์ metric์ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ์ด ์๋ค. A ๋ถ๋ฅ๊ธฐ๊ฐ B ๋ถ๋ฅ๊ธฐ๋ณด๋ค cat classifier๋ก์์ ์ฑ๋ฅ์ด ๋ ์ข์ง๋ง A๋ ํฌ๋ฅด๋ ธ๋ฅผ ๊ตฌ๋ถํ๋ ๋ฅ๋ ฅ์ด B๋ณด๋ค ์๋ค๊ณ ํ๋ฉด, ์ฌ์ฉ์๋ B ๋ถ๋ฅ๊ธฐ๋ฅผ ์ ํํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ metric์์ ํฌ๋ฅด๋ ธ ์ฌ์ง์ ๋ํด์๋ 10์ ๊ณฑํ๊ณ ํฌ๋ฅด๋ ธ๊ฐ ์๋ ์ฌ์ง ์ฌ์ง์ ๋ํด์๋ weight๋ฅผ 1์ ๊ณฑํด์ ํฌ๋ฅด๋ ธ ์ฌ์ง์ ๋ํ cost function value๋ฅผ ํฌ๊ฒ ๋ง๋ค์ด์ค ์ ์๋ค.
๋ง์ฝ dev set์ ์ฌ์ง์ ๊ณ ํ์ง์ ์ ์ฒด ์ฌ์ง์ผ ์ ์์ง๋ง ์ค์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ์ฌ์ง์ ํ๋ฆฌ๊ณ , ๋ถ๋ถ์ ์ธ ์ฌ์ง์ผ ์ ์๋ค. ๋ฐ๋ผ์ ์ด ๋๋ B classifier์ ์ฑ๋ฅ์ด ๋ ์ข๊ฒ ๋์ฌ ์ ์๊ณ , dev set์ dataset์ ๋ฐ๊ฟ์ค์ผ ํ๋ค.
Compare to Human-Level Performance
1. Why Human-level Performance?
๋จธ์ ๋ฌ๋๊ณผ ์ธ๊ฐ์ง๋ฅ์ ๋น๊ตํ๋ ์ด์ : 1. ๋ฅ๋ฌ๋์ ๋ฐ์ ์ผ๋ก ๋จธ์ ๋ฌ๋์ ์ฑ๋ฅ ํฅ์ 2. ๋จธ์ ๋ฌ๋ ๋์์ธ ๊ณผ์ ์ด ํจ์จ์ ์ผ๋ก ๋ฐ์
Bayes Error๋ ๋ชจ๋ธ์ด ์ต์ ํ๋์์ ๋์ ์ต๊ณ ์ฑ๋ฅ์ผ ๋์ ์๋ฌ๋ฅผ ์๋ฏธํ๋ค. human level performanc ์ต๋์น์ ๊ทผ์ฌ ๋๋ 0%๋ก ๋ณผ ์ ์๋ค(๋ ธ์ด์ฆ ์ฌํ ๋ฐ์ดํฐ ์ ์ธ)
์์ ์๋ฅผ ๋ณด๋ฉด ๋ค๋ฅธ ์กฐ๊ฑด(training error, dev error)์ ๋ชจ๋ ๊ฐ๊ณ human error (โฉณBayes Error)๊ฐ๋ง ๋ค๋ฅด๋ค. ๊ทธ๋ ์ง๋ง human error๊ฐ 1%์ธ ๊ฒฝ์ฐ classifier๊ฐ bias์ ์ง์คํ๊ฒ ๋๊ณ , human error๊ฐ 7.5%์ธ ๊ฒฝ์ฐ์๋ variance์ ์ง์คํ๊ฒ ๋๋ค๋ ์ฐจ์ด๊ฐ ์๊ธด๋ค.
Bayes error์ Training Error ์ฌ์ด์ ์ฐจ์ด๋ฅผ Avoidable Bias๋ผ๊ณ ํ๊ณ , Training error์ Dev error์ ์ฐจ์ด๋ฅผ Variance๋ผ๊ณ ํ๋ค. Avoidable bias ๊ฐ์ด ๋ ํฐ ๊ฒฝ์ฐ์๋ bias์ ์ง์ค์ ํ๊ณ , Variance๊ฐ ๋ ํฐ ๊ฒฝ์ฐ์๋ variance์ ์ง์คํ๋ฉด ๋๋ค.
2. Improving your model performance
์ถ๊ฐ์ ์ผ๋ก test set๊ณผ dev set๊ณผ์ ์ฐจ์ด๊ฐ ๋ง์ด๋๋ฉด, dev set์ overfit ๋ ์ํ์ด๋ฏ๋ก dev set์ ํฌ๊ธฐ๋ฅผ ๋๋ ค์ผํ๋ค.
๋๊ธ