μ±λ₯ μ΅μ ν
λ°μ΄ν°λ₯Ό μ¬μ©ν μ±λ₯ μ΅μ ν
- μΌλ°μ μΌλ‘ ML/DL μκ³ λ¦¬μ¦μ λ°μ΄ν°μμ΄ λ§μμλ‘ μ±λ₯μ΄ μ’κΈ° λλ¬Έμ κ°λ₯ν λ§μ λ°μ΄ν°λ₯Ό μμ§
- λ§μ λ°μ΄ν°λ₯Ό μμ§ν μ μλ€λ©΄ μ§μ λ°μ΄ν°λ₯Ό λ§λ€μ΄ μ¬μ©
- νμ±ν ν¨μλ‘ μκ·Έλͺ¨μ΄λ(0~1μ κ°), νμ΄νΌλ³Όλ¦ νμ νΈ(-1~1μ κ°) λ±μ μ¬μ©νμ¬ λ°μ΄ν°μ λ²μλ₯Ό μ‘°μ
- μ κ·ν, κ·μ ν, νμ€ν λ±λ μ±λ₯ ν₯μμ λμ
μκ³ λ¦¬μ¦μ μ¬μ©ν μ±λ₯ μ΅μ ν
ML/DLμ μν λ€μν μκ³ λ¦¬μ¦ μ€ μ μ¬ν μ©λμ μκ³ λ¦¬μ¦λ€μ μ ννμ¬ λͺ¨λΈμ νλ ¨μμΌ λ³΄κ³ μ΅μ μ μ±λ₯μ 보μ΄λ μκ³ λ¦¬μ¦μ μ νν΄μΌ νλ€.
μκ³ λ¦¬μ¦ νλμ μν μ±λ₯ μ΅μ ν
λͺ¨λΈμ νλ μ ννμ¬ νλ ¨μν€λ €λ©΄ λ€μν νμ΄νΌνλΌλ―Έν°λ₯Ό λ³κ²½νλ©΄μ νλ ¨μν€κ³ μ΅μ μ μ±λ₯μ λμΆν΄μΌ νλ€.
- μ§λ¨ : μ±λ₯ ν₯μμ΄ μ΄λ μκ° λ©μ·μ λ, λͺ¨λΈμ λν νκ°λ₯Ό λ°νμΌλ‘ λͺ¨λΈμ΄ `κ³Όμ ν©(overfitting)`μΈμ§ νΉμ λ€λ₯Έ μμΈμ΄ μλμ§μ λν μΈμ¬μ΄νΈλ₯Ό μ»μ μ μλ€.
- νλ ¨ μ±λ₯μ΄ κ²μ¦λ³΄λ€ λμ λκ² μ’λ€λ©΄ κ³Όμ ν©μ μμ¬ν μ μμΌλ©°, μ΄λ₯Ό μν΄ κ·μ νλ₯Ό μ§ν
- νλ ¨κ³Ό κ²μ¦ κ²°κ³Όκ° λͺ¨λ μ’μ§ μμΌλ©΄ `κ³Όμμ ν©(underfitting)`μ μμ¬ν μ μμΌλ―λ‘ λ€νΈμν¬ κ΅¬μ‘°λ₯Ό λ³κ²½νκ±°λ νλ ¨μ λ리기 μν΄ μν¬ν¬ μλ₯Ό μ‘°μ
- νλ ¨ μ±λ₯μ΄ κ²μ¦μ λμ΄μλ λ³κ³‘μ μ΄ μλ€λ©΄ μ‘°κΈ° μ’ λ£λ₯Ό κ³ λ €
- κ°μ€μΉ : κ°μ€μΉμ λν μ΄κΉκ°μ μμ λμλ₯Ό μ¬μ©
- μμ λμλΌλ μ«μκ° μ 맀νλ©΄ μ€ν μΈμ½λ κ°μ λΉμ§λ νμ΅μ μ΄μ©ν΄ κ°μ€μΉ μ 보λ₯Ό μ»κΈ° μν μ¬μ νλ ¨μ μ§νν ν μ§λ νμ΅μ μ§ν
- νμ΅λ₯ : νμ΅λ₯ μ λͺ¨λΈμ λ€νΈμν¬ κ΅¬μ±μ λ°λΌ λ€λ₯΄λ―λ‘ μ΄κΈ°μ λ§€μ° ν¬κ±°λ μμ μμμ λμλ₯Ό μ ννμ¬ νμ΅ κ²°κ³Όλ₯Ό λ³΄κ³ μ‘°κΈμ© λ³κ²½
- λ€νΈμν¬μ κ³μΈ΅μ΄ λ§λ€λ©΄ νμ΅λ₯ μ λμμΌ νλ©°, λ€νΈμν¬μ κ³μΈ΅μ΄ λͺ κ° λμ§ μλλ€λ©΄ νμ΅λ₯ μ μκ² μ€μ
- νμ±ν ν¨μ : νμ±ν ν¨μμ λ³κ²½μ μμ€ ν¨μλ ν¨κ» λ³κ²½ν΄μΌ νλ κ²½μ°κ° λ§κΈ° λλ¬Έμ μ μ€νκ² κ²°μ
- μΌλ°μ μΌλ‘ νμ±ν ν¨μλ‘ μκ·Έλͺ¨μ΄λλ νμ΄νΌλ³Όλ¦ νμ νΈλ₯Ό μ΄μ©νλ€λ©΄ μΆλ ₯μΈ΅μ μννΈλ§₯μ€ νΉμ μκ·Έλͺ¨μ΄λ ν¨μ
- λ°°μΉμ μν¬ν¬ : μΌλ°μ μΌλ‘ ν° μν¬ν¬μ μμ λ°°μΉλ₯Ό μ¬μ©νλ κ²μ΄ μ΅κ·Ό λ₯λ¬λμ νΈλ λ
- μ΅ν°λ§μ΄μ λ° μμ€ ν¨μ : μΌλ°μ μΌλ‘ κ²½μ¬ νκ°λ²μ μ¬μ©νμ§λ§ λ€νΈμν¬ κ΅¬μ±μ λ°λΌ `μλ΄(Adam)`μ΄λ `RMSProp` μ¬μ©
νμ΄νΌνλΌλ―Έν°λ₯Ό μ΄μ©ν μ±λ₯ μ΅μ ν
λ°°μΉ μ κ·νλ₯Ό μ΄μ©ν μ±λ₯ μ΅μ ν
`μ κ·ν(normalization)`λ λ°μ΄ν° λ²μλ₯Ό μ¬μ©μκ° μνλ λ²μλ‘ μ ννλ κ²μ λ§νλ€. μ΄λ κ° νΉμ± λ²μ(scale)λ₯Ό μ‘°μ νλ€λ μλ―Έλ‘ `νΉμ± μ€μΌμΌλ§(feature scaling)`μ΄λΌκ³ λ νλ€. `κ·μ ν(regularization)`λ λͺ¨λΈ 볡μ‘λλ₯Ό μ€μ΄κΈ° μν΄ μ μ½μ λλ λ°©λ²μ΄λ€. μ¬κΈ°μμ μ μ½μ λ°μ΄ν°κ° λ€νΈμν¬μ λ€μ΄κ°κΈ° μ μ νν°λ₯Ό μ μ©νλ κ²μ΄λ€. κ·μ νμ κ΄λ ¨ν΄μλ `λλ‘μμ(Dropout)`, `μ‘°κΈ° μ’ λ£(early stopping)` λ±μ΄ μλ€. `νμ€ν(standardization)`λ κΈ°μ‘΄ λ°μ΄ν°λ₯Ό νκ· μ 0, νμ€νΈμ°¨λ 1μΈ ννμ λ°μ΄ν°λ‘ λ§λλ λ°©λ²μ΄λ€. νμ€νλ νκ· μ κΈ°μ€μΌλ‘ μΌλ§λ λ¨μ΄μ Έ μλμ§ μ΄ν΄λ³Ό λ μ¬μ©νλ€.
`λ°°μΉ μ κ·ν(batch normalization)`λ `κΈ°μΈκΈ° μλ©Έ(gradient vanishing)`μ΄λ `κΈ°μΈκΈ° νλ°(gradient exploding)` κ°μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°©λ²μΌλ‘, λ°μ΄ν° λΆν¬κ° μμ λμ΄ νμ΅ μλλ₯Ό λμΌ μ μλ€. μΌλ°μ μΌλ‘ κΈ°μΈκΈ° μλ©Έμ΄λ κΈ°μΈκΈ° νλ° λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μμ€ ν¨μλ‘ `ReLU`λ₯Ό μ¬μ©νκ±°λ μ΄κΈ°κ° νλ, `νμ΅λ₯ (learning rate)` λ±μ μ‘°μ νλ€.
- κΈ°μΈκΈ° μλ©Έ : μ€μ°¨ μ 보λ₯Ό μμ νμν€λ κ³Όμ μμ κΈ°μΈκΈ°κ° κΈκ²©ν 0μ κ°κΉμμ Έ νμ΅μ΄ λμ§ μλ νμ
- κΈ°μΈκΈ° νλ° : νμ΅ κ³Όμ μμ κΈ°μΈκΈ°κ° κΈκ²©ν 컀μ§λ νμ
κΈ°μΈκΈ° μλ©Έκ³Ό κΈ°μΈκΈ° νλ°μ μμΈμ `λ΄λΆ 곡λ³λ λ³ν(internal covariance shift)` λλ¬ΈμΈλ°, μ΄λ λ€νΈμν¬μ κ° μΈ΅λ§λ€ νμ±ν ν¨μκ° μ μ©λλ©΄μ μ λ ₯ κ°λ€μ λΆν¬κ° κ³μ λ°λλ νμμ λ§νλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λΆμ°λ λΆν¬λ₯Ό μ κ·λΆν¬λ‘ λ§λ€κΈ° μν΄ νμ€νμ μ μ¬ν λ°©μμ `λ―Έλ λ°°μΉ(mini-batch)`μ μ μ©νμ¬ νκ· μ 0μΌλ‘, νμ€νΈμ°¨λ 1λ‘ μ μ§νλλ‘ νλ€.
λ°°μΉ μ κ·νμ μμμ μμμ λ€μκ³Ό κ°λ€. μ΄λ₯Ό ν΅ν΄ 맀 λ¨κ³λ§λ€ νμ±ν ν¨μλ₯Ό κ±°μΉλ©΄μ λ°μ΄ν°μ λΆν¬κ° μΌμ ν΄μ§κΈ° λλ¬Έμ μλλ₯Ό ν₯μμν¬ μ μμ§λ§ μ΄μ λ°λ₯Έ λ¨μ λ μ‘΄μ¬νλ€. λ¨Όμ , λ°°μΉ ν¬κΈ°κ° μμ κ²½μ°μλ μ κ·νν κ°μ΄ κΈ°μ‘΄ κ°κ³Ό λ€λ₯Έ λ°©ν₯μΌλ‘ νλ ¨λ μ μλ€. λν `RNN`μ λ€νΈμν¬ κ³μΈ΅λ³λ‘ λ―Έλ μ κ·νλ₯Ό μ μ©ν΄μΌνκΈ° λλ¬Έμ λͺ¨λΈμ΄ λ 볡μ‘ν΄μ Έ λΉν¨μ¨μ μΌ μ μλ€. λ°λΌμ κ°μ€μΉ μμ λ€νΈμν¬ κ΅¬μ± λ³κ²½ λ±μ μννμ§λ§ λ°°μΉ μ κ·νλ₯Ό μ μ©νμ λ μ±λ₯μ΄ μ’μμ Έ λ§μ΄ μ¬μ©λλ€. μ΄λ¬ν λ°°μΉ μ κ·νλ₯Ό μ μ©ν κ°λ¨ν μ κ²½λ§ λͺ¨λΈμ λ€μκ³Ό κ°μ΄ ꡬνν μ μλ€.
# λ°°μΉ μ κ·νκ° μ μ©λ λ€νΈμν¬
class BNNet(nn.Module):
def __init__(self):
super(BNNet, self).__init__()
self.classifier = nn.Sequential(
nn.Linear(784, 48),
nn.BatchNorm1d(48),
nn.ReLU(),
nn.Linear(48,24),
nn.BatchNorm1d(24),
nn.ReLU(),
nn.Linear(24, 10)
)
def forward(self, x):
x = x.view(x.size(0), -1)
x = self.classifier(x)
return x
λ°°μΉ μ κ·νλ₯Ό μ¬μ©νλ μ΄μ λ μλμΈ΅μμ νμ΅μ΄ μ§νλ λλ§λ€ μ λ ₯ λΆν¬κ° λ³νλ©΄μ κ°μ€μΉκ° μλ±ν λ°©ν₯μΌλ‘ κ°±μ λλ λ¬Έμ κ° μ’ μ’ λ°μνκΈ° λλ¬Έμ΄λ€. μ¦, μ κ²½λ§μ μΈ΅μ΄ κΉμ΄μ§μλ‘ νμ΅ν λ κ°μ νλ μ λ ₯ λΆν¬κ° λ³ννμ¬ μλ±ν νμ΅μ΄ μ§νλ μ μλλ° λ°°μΉ μ κ·νλ₯Ό μ μ©ν΄μ μ λ ₯ λΆν¬λ₯Ό κ³ λ₯΄κ² λ§μΆμ΄ μ€ μ μλ€. λν λ°°μΉ μ κ·νμ μμΉλ λ€μκ³Ό κ°λ€.
λλ‘μμμ μ΄μ©ν μ±λ₯ μ΅μ ν
`λλ‘μμ(Dropout)`μ νλ ¨ν λ μΌμ λΉμ¨μ λ΄λ°λ§ μ¬μ©νκ³ , λλ¨Έμ§ λ΄λ°μ ν΄λΉνλ κ°μ€μΉλ μ λ°μ΄νΈνμ§ μλ λ°©λ²μ΄λ€. λ¬Όλ‘ λ§€ λ¨κ³λ§λ€ μ¬μ©νμ§ μλ λ΄λ°μ 무μμλ‘ μ μ νμ¬ λ§€λ² λ°κΎΈμ΄ κ°λ©° νλ ¨νλ€. μ΄λ₯Ό ν΅ν΄ μ§λμΉ νμ΅μ λ°©μ§νμ¬ κ³Όμ ν©μ μλ°©ν μ μλ€. λν ν μ€νΈ λ°μ΄ν°λ‘ νκ° μμλ λ Έλλ₯Ό λͺ¨λ μ¬μ©νμ¬ μΆλ ₯νλ λ Έλ μμ λΉμ¨(λλ‘μμ λΉμ¨)μ κ³±νμ¬ μ±λ₯μ νκ°νλ€.
μ‘°κΈ° μ’ λ£λ₯Ό μ΄μ©ν μ±λ₯ μ΅μ ν
`μ‘°κΈ° μ’ λ£(early stopping)`λ λ΄λ΄ λ€νΈμν¬κ° κ³Όμ ν©μ ννΌνλ κ·μ κΈ°λ²μ΄λ€. νλ ¨ λ°μ΄ν°μ λ³λλ‘ κ²μ¦ λ°μ΄ν°λ₯Ό μ€λΉνκ³ , 맀 μν¬ν¬λ§λ€ κ²μ¦ λ°μ΄ν°μ λν `μ€μ°¨(validation loss)`λ₯Ό μΈ‘μ νμ¬ λͺ¨λΈμ μ’ λ£ μμ μ μ μ΄νλ€. κ³Όμ ν©μ΄ λ°μνκΈ° μ κΉμ§ νμ΅μ λν μ€μ°¨μ κ²μ¦μ λν μ€μ°¨ λͺ¨λ κ°μνμ§λ§, κ³Όμ ν©μ΄ λ°μνλ©΄ νλ ¨ λ°μ΄ν°μ μ λν μ€μ°¨λ κ°μνλ λ°λ©΄ κ²μ¦ λ°μ΄ν°μ μ λν μ€μ°¨λ μ¦κ°νλλ° μ΄λ μ€μ°¨μ λν κ²μ¦μ΄ μ¦κ°νλ μμ μμ νμ΅μ λ§μΆλλ‘ μ‘°μ νλ€. κ·Έλ¬λ μ‘°κΈ° μ’ λ£λ νμ΅μ μΈμ μ’ λ£μν¬μ§ κ²°μ ν λΏμ΄μ§ μ΅κ³ μ μ±λ₯μ κ°λ λͺ¨λΈμ 보μ₯νμ§λ μλλ€.
μ΄ ν¬μ€ν μ "λ₯λ¬λ νμ΄ν μΉ κ΅κ³Όμ"λ₯Ό 곡λΆνκ³ μμ±ν κΈμ λλ€.
(μ΄λ―Έμ§ μΆμ² - λλΆ)