Neural Network
Neuron(Perceptron)
Neuron(Perceptron)
z j l = ∑ k ω j k l a k l − 1 + b j l z^l_j = \sum_k{\omega^l_{jk}a^{l-1}_k} + b^l_j z j l = k ∑ ω jk l a k l − 1 + b j l
a j l = σ ( z j l ) a^l_j = \sigma\left(z^l_j\right) a j l = σ ( z j l )
Loss function
L2 loss function
L o s s ≡ 1 2 ∥ y − a L ∥ 2 = 1 2 ∑ i ( y i − a i L ) 2 Loss \equiv \frac{1}{2} \lVert \mathbf{y} - \mathbf{a}^L \rVert^2 = \frac{1}{2} \sum_i{\left(y_i - a^L_i\right)^2} L oss ≡ 2 1 ∥ y − a L ∥ 2 = 2 1 i ∑ ( y i − a i L ) 2
L o s s ≥ 0 ( y 는 주어진 답 ) Loss \geq 0 \quad \left(\mathbf{y}\text{ 는 주어진 답}\right) L oss ≥ 0 ( y 는 주어진 답 )
Neural Network Training
Neural Network Training
을 통해 찾아야 할 것은 L o s s Loss L oss 의 결과를 최소화하기 위한 weights
와 biases
입니다. w \mathbf{w} w 가 weights와 biases를 나타내는 벡터일 때,
L o s s n e x t = L o s s + Δ L o s s ≈ L o s s + ∇ L o s s ⋅ Δ w Loss_{next} = Loss + \Delta Loss \approx Loss + \nabla Loss \cdot \Delta \mathbf{w} L os s n e x t = L oss + Δ L oss ≈ L oss + ∇ L oss ⋅ Δ w
L o s s Loss L oss 는 감소해야하기 때문에, 반드시 ∇ L o s s ⋅ Δ w < 0 \nabla Loss \cdot \Delta \mathbf{w} < 0 ∇ L oss ⋅ Δ w < 0 조건을 만족해야합니다. 따라서 Δ w \Delta \mathbf{w} Δ w 는 아래와 같이 결정 될 수 있습니다.
Δ w = − η ∇ L o s s = − ϵ ∇ L o s s ∥ ∇ L o s s ∥ ( ϵ > 0 ) \Delta \mathbf{w} = - \eta \nabla Loss = - \epsilon \frac{\nabla Loss}{\lVert \nabla Loss \rVert} \quad ( \epsilon > 0) Δ w = − η ∇ L oss = − ϵ ∥ ∇ L oss ∥ ∇ L oss ( ϵ > 0 )
η \eta η 는 learning rate
이고, ϵ \epsilon ϵ 은 step
입니다. 만약 step이 너무 크다면, L o s s Loss L oss 는 발산하고, 너무 작으면, 수렴속도가 느려집니다. 따라서 적절한 값을 설정하는 것이 중요합니다.
Δ w \Delta \mathbf{w} Δ w 이 결정되면, w n e x t \mathbf{w}_{next} w n e x t 은 아래와 같이 결정됩니다.
w n e x t = w + Δ w \mathbf{w}_{next} = \mathbf{w} + \Delta \mathbf{w} w n e x t = w + Δ w
Stochastic Gradient Descent(SGD)
∇ L o s s = 1 n ∑ x ∇ L o s s x \nabla Loss = \frac{1}{n}\sum_x{\nabla Loss_x} ∇ L oss = n 1 x ∑ ∇ L os s x
훈련을 위한 데이터셋이 큰 경우, 시간이 많이 걸릴 수 있습니다. 전체 데이터셋에서 랜덤으로 데이터를 선택해 만든 데이터셋 X 1 , X 2 , . . . , X m X_1, X_2, ..., X_m X 1 , X 2 , ... , X m 을 mini-batch라고 하는데, 이 mini-batch가 전체 데이터 셋의 분포와 유사하다고 가정하면 아래와 같은 식이 성립합니다.
∇ L o s s = 1 n ∑ x ∇ L o s s x ≈ 1 m ∑ i = 1 m ∇ L o s s X i \nabla Loss = \frac{1}{n}\sum_x{\nabla Loss_x} \approx \frac{1}{m}\sum^m_{i=1}{\nabla Loss_{X_i}} ∇ L oss = n 1 x ∑ ∇ L os s x ≈ m 1 i = 1 ∑ m ∇ L os s X i
batch 크기가 줄어 한 step을 계산하는데 걸리는 시간이 줄어듭니다.
수렴하는 데 필요한 step 수가 증가합니다.
mini-batch의 크기가 작을 수록 batch의 분포가 전체 데이터 셋의 분포와 달라질 확률이 높기 때문에 학습이 불안정해집니다.
(계산 시간/step) * (수렴에 필요한 step)
을 학습 시간이라고 하면, 학습 시간이 최소가 되는 batch 크기가 존재합니다.
Forward-propagation
Forward-propagation
(or forward pass)는 입력부터 출력으로 이어지는 네트워크를 순서대로 계산하고 그 결과를 저장하는 과정을 말합니다.
Back-propagation