๐ ์ ๋ช ํ fashionMNIST Classifier์ Convolution๊ณผ Pooling์ ์ ์ฉํ ํ ์ฑ๋ฅ ์ฆ๊ฐ๋ฅผ ์ง์ ๊ฒฝํํด๋ณด์๋ค. ์ด์ ๋ค์ํ model tuning๊ณผ epochs๋ฅผ ์กฐ์ ํ๋ฉด์ ์ํญ์ ์ฑ๋ฅ ์ฆ๊ฐ์ ๊ธฐ์ฌํ ์ ์๋ ์ง ์์๋ณด๋๋ก ํด๋ณด์!
๐ ๋ชจ๋ ์ฝ๋๋ GitHub ํด๋ฆญ!
๐ default fashionMNIST Classifier ๋ชจ๋ธ: <Convolution((3,3) x 32) + MaxPooling(2,2)> 2๊ฐ ์ฐ์ฐ → Flatten() → Dense(128, relu) → Dense(10, softmax)

โ Adjusting the Number of Epochs
๐ epochs๋ ์ฃผ์ด์ง batch_size์ ๋ง๋ ์ฌ๋ฌ batch๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค๊ณ ๋ ํ, ๋์ผ batch training์ ๋ฐ๋ณต์ ์ผ๋ก ๋ช ๋ฒ ์ํํ๋ ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด 5 epochs๋ผ๋ฉด ๋์ผ batches๋ฅผ 5๋ฒ ์ํํ๊ณ , 10 epochs๋ผ๋ฉด ๋์ผ batches๋ฅผ 10๋ฒ training ์ํํ๋ค. ์ฆ ๋์ผ dataset์ ๋ช ๋ฒ ํ์ตํ๋ ์ง, epochs์ ์๋ก ์กฐ์ ํ ์ ์๋ค. epochs ์๋ฅผ ๋๋ฆฌ๋ฉด์ learning weight์ ์ธ๋ถ์ ์ผ๋ก ์กฐ์ ํด๊ฐ๋ฉฐ ํ์ต ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค(batch๋ ๊ณ ์ ์ด๋ค. ์๋ฅผ ๋ค์ด 4๊ฐ์ ๋ฐ์ดํฐ 1, 2, 3, 4๊ฐ ์ด๊ณ 2๊ฐ์ batches๊ฐ ์๋ค๋ฉด ๊ฐ๊ฐ์ batch์ 1, 3 ๊ทธ๋ฆฌ๊ณ 2, 4 ์ด๋ ๊ฒ ์๋ค๋ฉด epochs๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ batches๋ ๊ณ ์ ). ํ์ง๋ง ํด๋น training set์ ๊ณผ์ ํฉ๋์ด ํ์ตํ ์ ์์ผ๋ฏ๋ก ๊ณผ๋ํ ํ์ต์ ํผํด์ผ ํ๋ค. ์๋ ์ฑ๋ฅ์ ๊ฒฐ๊ณผ๋ก ์ด๋ฅผ ์ ์ถํ ์ ์๋ค.
๐ Convolution๊ณผ Pooling์ ์ ์ฉํ fashionMNIST Classifier์ epochs๋ฅผ ์กฐ์ ํ๋ฉด์ accuracy in evaluation, loss in evaluation ๊ทธ๋ฆฌ๊ณ average training time per epoch์ ์ด๋ค ๋ณํ๊ฐ ์๊ธฐ๋ ์ง ๊ทธ๋ํ๋ก ์๊ฐํ ํด๋ณด์. epochs๋ฅผ 5๋ถํฐ 50๊น์ง 5๋จ์๋ก ์ฆ๊ฐํ๋ฉด์ 3๊ฐ metrics์ ๋ณํ๋ฅผ ์ดํด๋ณด์๋ค.


โ epochs๊ฐ ์ฆ๊ฐํ ์๋ก accuracy ์ ํ๋์ ํ์ฐํ ์ฆ๊ฐ๋ ์์์ ์ ์ ์๋ค. epochs = 5์์ epochs = 30์ผ๋ก ์งํํ๋ฉด์ accuracy๊ฐ ๋์ฒด์ ์ผ๋ก ์ฆ๊ฐ ์ถ์ธ๋ฅผ ๋ณด์ด๋ค๊ฐ epochs = 30 ์ผ๋ ์ต๋๊ฐ 0.9113์ ์ฐ์๋ค. epochs=35 ์ผ๋ accuracy ์ต์๊ฐ 0.8988
โก ๊ฐ์ฅ ๋ฎ์ accuracy๋ฅผ ๋ณด์ด๋ epochs=35์ธ ๊ฒฝ์ฐ์ ์ต๋๊ฐ accuracy๋ฅผ ๋ณด์ด๋ epochs=30์ธ ๊ฒฝ์ฐ์ ๊ฐ๊ฐ์ accuracy๋ 0.9113๊ณผ 0.8988๋ก |max accuracy - min_accuracy|๋ 0.0125. ๋ฐ๋ผ์ ์ต๋๊ฐ accuracy ๋๋น ์ ์ฒด accuracy์ ํธ์ฐจ๋ ์ฝ 1.372%์ ๋ณ๋์ฑ์ ๊ทธ์น๋ค.
โข model loss์ ๊ฒฝ์ฐ epochs๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ loss๊ฐ๋ ํ์ฐํ ๋น๋ก๋ฐฉํฅ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. model loss์ ํ์ฐํ ์ฆ๊ฐ์ ์์ธ์ ์๊ฐํด๋ณผ ํ์๊ฐ ์๋ค.
์ถ์ ์์ธ) โข-1 overfitting์ ๊ฐ๋ฅ์ฑ
: ํ์ตํ์ epochs๋ฅผ ๊ณ์ ๋๋ฆฌ๋ค๋ณด๋ฉด training dataset์ ์ต์ ํ๋์ด์ evaluation ๊ณผ์ ์์ ์คํ๋ ค ์ญํจ๊ณผ๋ฅผ ๋ผ ์ ์๋ค. ํนํ ํด๋น ๋ฐ์ดํฐ์ ์๋ 60000๊ฐ์ ๋ฐ์ดํฐ๋ง ์กด์ฌํ๋ฏ๋ก accuracy ๊ฐ์๋ ํฐ ์ฐจ์ด๊ฐ ์์ง๋ง, loss ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ prediction๊ฐ๊ณผ ์ค์ ๊ฐ ์ฐจ์ด๋ฅผ ๊ทน๋ช ํ ๋ณด์ฌ์ฃผ๋ ์์น์ด๊ธฐ์, overfitting์ผ๋ก ์ธํด loss๊ฐ ๊ทน๋ช ํ๊ฒ ์ฆ๊ฐํ๋ ๋ถ๋ถ์ ๊ทธ๋ํ๋ฅผ ํตํด์ ์ ์ ์๋ค.
์ถ์ ์์ธ) โข-2 high initial accuracy
: ์ฒ์์ ์ด๋์ ๋ ์ข์ accuracy ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์๋ค๋ฉด, ์ดํ epochs๋ฅผ ์ฆ๊ฐ์ํจ๋ค ํ๋๋ผ๋ ์คํ๋ ค training set์ ์ต์ ํ๋์ด test set๊ณผ์ loss๊ฐ์ ๊ทน๋ช ํ๊ฒ ์ฆ๊ฐํ ํ๋ฅ ์ด ๋๋ค.
์ถ์ ์์ธ) โข-3 imbalanced dataset(ํ์ง๋ง ํด๋น case์์ ์์ธ์ ์๋)
: classification task์์ (์ task๋ fashionMINST classifier๋ก classification task์ด๋ค) ์ ์ด์ imbalancedํ dataset์ ๋๊ณ ์งํํ๋ค๋ฉด accuracy์ ๋ค๋ฅด๊ฒ loss๋ ์ฆ๊ฐํ๋ ๊ฒฝํฅ์ ๋ณด์ด๊ณค ํ๋ค. ํ์ง๋ง ์ด๋ ํด๋น task์์๋ ๋ง์ง ์๋ค. ์๋ ์ฝ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณธ๋ค๋ฉด, ๊ฐ class๋ณ ๋ถํฌ๊ฐ ๋์ผํ๊ฒ ๋์ด ์๋ค.
for num in set(training_labels):
print(list(training_labels).count(num)) #6000 each
โฃ epochs๋ณ dataset training time์ ํฐ ๋ณํ๊ฐ ์๋ค. epoch๊ฐ ์งํ๋ ๋๋ง๋ค epoch๋ณ ๋ชจ๋ธ์ด ํ์ตํ๋ ์๋๋, epoch ์์ ์๊ด์ด ์์์ ์ ์ถํ ์ ์๋ค.
๐ epochs ์คํ ๊ฒฐ๊ณผ: epochs 10์์ best performance. loss๊ฐ์ ๊ณ์ ์ฆ๊ฐํ๋ ์ํ์์ 15์ผ ๋ epochs๊ฐ ์ ์ ์ ์ฐ์๋ค๊ฐ 20๋ถํฐ ์ฝ๊ฐ ๊ฐ์ํ๋ค. ํ์ง๋ง epochs 15์์์ loss๊ฐ์ 0.3426์ผ๋ก epoch 10์์์ loss๊ฐ 0.2872๋ณด๋ค ํฐ ํญ์ผ๋ก ์ฆ๊ฐ. ๋ฐ๋ฉด์ accuracy๋ 0.9046๊ณผ 0.9077๋ก loss ๋ณํํญ์ ๋นํด ํฐ ์ฐจ์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ epochs 10์ best performance epochs๋ก ์ค์ . ์ดํ model tuning ์คํ์์ epochs๋ฅผ ๋ชจ๋ 10์ผ๋ก ์ค์ ํ๊ณ ์งํ.

coursera <intro to Tensorflow for AI, ML and DL>
'Deep Learning > Experiments' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๐Improving fashionMNIST Classifier using Convolutions (1) | 2024.06.02 |
|---|---|
| ๐ fashionMNIST Classifier (0) | 2024.01.15 |
๋๊ธ