๊ณผ์ ํ•ฉ(Overfitting)?

๋ชจ๋ธ์ด ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆํ•„์š”ํ• ์ •๋„๋กœ ๊ณผํ•˜๊ฒŒ ์•”๊ธฐํ•˜์—ฌ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์— ํฌํ•จ๋œ ๋…ธ์ด์ฆˆ๊นŒ์ง€ ํ•™์Šตํ•œ ์ƒํƒœ

ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •ํ™•๋„๋Š” ๋†’์•„๋„, ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ(๊ฒ€์ฆ ๋ฐ์ดํ„ฐ๋‚˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ)์— ๋Œ€ํ•ด์„œ๋Š” ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ 

 

 

1. ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๋Š˜๋ฆฌ๊ธฐ

๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๋Š˜๋ฆด ์ˆ˜๋ก ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์„ ํ•™์Šตํ•˜์—ฌ ๊ณผ์ ํ•ฉ์„ ๋ฐฉ์ง€

๋ฐ์ดํ„ฐ ์ฆ์‹ ๋˜๋Š” ์ฆ๊ฐ•(Data Augmentation) : ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ์„ ๊ฒฝ์šฐ ์˜๋„์ ์œผ๋กœ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ธˆ์”ฉ ๋ณ€ํ˜•ํ•˜๊ณ  ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ์–‘์„ ๋Š˜๋ฆผ

- ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ : ์ด๋ฏธ์ง€๋ฅผ ๋Œ๋ฆฌ๊ฑฐ๋‚˜ ๋…ธ์ด์ฆˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ผ๋ถ€๋ถ„์„ ์ˆ˜์ •

- ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ : ๋ฒˆ์—ญ ํ›„ ์žฌ๋ฒˆ์—ญ์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋ƒ… (=์—ญ๋ฒˆ์—ญ(Back Translation)) 

 

 

2. ๋ชจ๋ธ์˜ ๋ณต์žก๋„ ์ค„์ด๊ธฐ

์ธ๊ณต ์‹ ๊ฒฝ๋ง์˜ ๋ณต์žก๋„๋Š” ์€๋‹‰์ธต(hidden layer)์˜ ์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆ˜ ๋“ฑ์œผ๋กœ ๊ฒฐ์ •

* ์ˆ˜์šฉ๋ ฅ(capacity) : ๋ชจ๋ธ ๋‚ด ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์˜ ์ˆ˜

 

 

3. ๊ฐ€์ค‘์น˜ ๊ทœ์ œ(Regularization) ์ ์šฉํ•˜๊ธฐ

* ์ •๊ทœํ™”(Normalization) :  ๋ฐฐ์น˜ ์ •๊ทœํ™”, ์ธต ์ •๊ทœํ™”

 

 

4. ๋“œ๋กญ์•„์›ƒ(Dropout)

ํ•™์Šต ๊ณผ์ •์—์„œ ์‹ ๊ฒฝ๋ง์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•

์‹ ๊ฒฝ๋ง ํ•™์Šต ์‹œ์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ , ์˜ˆ์ธก ์‹œ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ 

ex) ๋“œ๋กญ์•„์›ƒ์˜ ๋น„์œจ์„ 0.5๋กœ ํ•œ๋‹ค๋ฉด ํ•™์Šต ๊ณผ์ •๋งˆ๋‹ค ๋žœ๋ค์œผ๋กœ ์ ˆ๋ฐ˜์˜ ๋‰ด๋Ÿฐ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์ ˆ๋ฐ˜์˜ ๋‰ด๋Ÿฐ๋งŒ์„ ์‚ฌ์šฉ

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dropout, Dense

max_words = 10000
num_classes = 46

model = Sequential()
model.add(Dense(256, input_shape=(max_words,), activation='relu'))
model.add(Dropout(0.5)) # ๋“œ๋กญ์•„์›ƒ ์ถ”๊ฐ€. ๋น„์œจ์€ 50%
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5)) # ๋“œ๋กญ์•„์›ƒ ์ถ”๊ฐ€. ๋น„์œจ์€ 50%
model.add(Dense(num_classes, activation='softmax'))

 

 

 

 

 

๊ธฐ์šธ๊ธฐ ์†Œ์‹ค(Gradient Vanishing), ํญ์ฃผ(Exploding)

๊ธฐ์šธ๊ธฐ ์†Œ์‹ค

์—ญ์ „ํŒŒ ๊ณผ์ •์—์„œ ์ž…๋ ฅ์ธต์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก ๊ธฐ์šธ๊ธฐ(Gradient)๊ฐ€ ์ ์ฐจ์ ์œผ๋กœ ์ž‘์•„์ง€๋Š” ํ˜„์ƒ

์ž…๋ ฅ์ธต์— ๊ฐ€๊นŒ์šด ์ธต๋“ค์—์„œ ๊ฐ€์ค‘์น˜๋“ค์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์œผ๋ฉด ๊ฒฐ๊ตญ ์ตœ์ ์˜ ๋ชจ๋ธ์„ ์ฐพ์„ ์ˆ˜ ์—†๊ฒŒ ๋จ

 

ํญ์ฃผ

๊ธฐ์šธ๊ธฐ ์†Œ์‹ค์˜ ๋ฐ˜๋Œ€

๊ธฐ์šธ๊ธฐ๊ฐ€ ์ ์ฐจ ์ปค์ง€๋‹ค๊ฐ€ ๊ฐ€์ค‘์น˜๋“ค์ด ๋น„์ •์ƒ์ ์œผ๋กœ ํฐ ๊ฐ’์ด ๋˜๋ฉด์„œ ๊ฒฐ๊ตญ ๋ฐœ์‚ฐํ•˜๋Š” ํ˜„์ƒ

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1. ReLU์™€ ReLU์˜ ๋ณ€ํ˜•๋“ค

์€๋‹‰์ธต์˜ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‹œ๊ทธ๋ชจ์ด๋“œ๋‚˜ ํ•˜์ดํผ๋ณผ๋ฆญํƒ„์  ํŠธ ๋Œ€์‹ , ReLU๋‚˜ ReLU์˜ ๋ณ€ํ˜• ํ•จ์ˆ˜์™€ ๊ฐ™์€ Leaky ReLU๋ฅผ ์‚ฌ์šฉ

  • ์€๋‹‰์ธต์—์„œ๋Š” ์‹œ๊ทธ๋ชจ์ด๋“œ ํ•จ์ˆ˜ ์‚ฌ์šฉX
  • Leaky ReLU๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด์„œ ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์— ์ˆ˜๋ ดํ•˜์ง€ ์•Š์•„ ์ฃฝ์€ ReLU ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ
  • ์€๋‹‰์ธต์—์„œ๋Š” ReLU๋‚˜ Leaky ReLU์™€ ๊ฐ™์€ ReLU ํ•จ์ˆ˜์˜ ๋ณ€ํ˜•๋“ค์„ ์‚ฌ์šฉ

 

 

2. ๊ทธ๋ž˜๋””์–ธํŠธ ํด๋ฆฌํ•‘(Gradient Clipping)

๊ธฐ์šธ๊ธฐ ๊ฐ’์„ ์ž๋ฅด๋Š” ๊ฒƒ (=์ž„๊ณ„์น˜๋งŒํผ ํฌ๊ธฐ๋ฅผ ๊ฐ์†Œ)

RNN์—์„œ ์œ ์šฉ (RNN์€ ์—ญ์ „ํŒŒ ๊ณผ์ •์—์„œ ์‹œ์ ์„ ์—ญํ–‰ํ•˜๋ฉด์„œ ๊ธฐ์šธ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ, ์ด๋•Œ ๊ธฐ์šธ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ)

from tensorflow.keras import optimizers
Adam = optimizers.Adam(lr=0.0001, clipnorm=1.)

 

 

3. ๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”(Weight initialization)

๊ฐ€์ค‘์น˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ธฐ์šธ๊ธฐ ์†Œ์‹ค ๋ฌธ์ œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์™„ํ™”

 

1) ์„ธ์ด๋น„์–ด ์ดˆ๊ธฐํ™”(Xavier Initialization)

ReLU์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ์—๋Š” ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์Œ

 

2) He ์ดˆ๊ธฐํ™”(He initialization)

ReLU ํ•จ์ˆ˜ ๋˜๋Š” ReLU์˜ ๋ณ€ํ˜• ํ•จ์ˆ˜๋“ค์„ ํ™œ์„ฑํ™” ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•

ReLU + He ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์ด ์ข€ ๋” ๋ณดํŽธ์ 

 

 

4. ๋ฐฐ์น˜ ์ •๊ทœํ™”(Batch Normalization)

์ธ๊ณต ์‹ ๊ฒฝ๋ง์˜ ๊ฐ ์ธต์— ๋“ค์–ด๊ฐ€๋Š” ์ž…๋ ฅ์„ ํ‰๊ท ๊ณผ ๋ถ„์‚ฐ์œผ๋กœ ์ •๊ทœํ™”

 

1) ๋‚ด๋ถ€ ๊ณต๋ณ€๋Ÿ‰ ๋ณ€ํ™”(Internal Covariate Shift)

ํ•™์Šต ๊ณผ์ •์—์„œ ์ธต ๋ณ„๋กœ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ํ˜„์ƒ

 

2) ๋ฐฐ์น˜ ์ •๊ทœํ™”(Batch Normalization)

ํ•œ ๋ฒˆ์— ๋“ค์–ด์˜ค๋Š” ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ์ •๊ทœํ™”

 

3) ๋ฐฐ์น˜ ์ •๊ทœํ™”์˜ ํ•œ๊ณ„

- ๋ฏธ๋‹ˆ ๋ฐฐ์น˜ ํฌ๊ธฐ์— ์˜์กด์ 

- RNN์— ์ ์šฉํ•˜๊ธฐ ์–ด๋ ค์›€

 

 

5. ์ธต ์ •๊ทœํ™”(Layer Normalization)

๋ฐฐ์น˜ ํฌ๊ธฐ์—๋„ ์˜์กด์ ์ด์ง€ ์•Š์œผ๋ฉฐ, RNN์—๋„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ˆ˜์›”

 

 

 

 

 

 

์ฐธ๊ณ  https://wikidocs.net/61374

+ Recent posts