Neuron(Perceptron)
zjl=k∑ωjklakl−1+bjl
ajl=σ(zjl)
Loss function
L2 loss function
Loss≡21∥y−aL∥2=21i∑(yi−aiL)2
Loss≥0(y 는 주어진 답)
Neural Network Training
Neural Network Training
을 통해 찾아야 할 것은 Loss의 결과를 최소화하기 위한 weights
와 biases
입니다. w 가 weights와 biases를 나타내는 벡터일 때,
Lossnext=Loss+ΔLoss≈Loss+∇Loss⋅Δw
Loss는 감소해야하기 때문에, 반드시 ∇Loss⋅Δw<0 조건을 만족해야합니다. 따라서 Δw는 아래와 같이 결정 될 수 있습니다.
Δw=−η∇Loss=−ϵ∥∇Loss∥∇Loss(ϵ>0)
η는 learning rate
이고, ϵ은 step
입니다. 만약 step이 너무 크다면, Loss는 발산하고, 너무 작으면, 수렴속도가 느려집니다. 따라서 적절한 값을 설정하는 것이 중요합니다.
Δw 이 결정되면, wnext은 아래와 같이 결정됩니다.
wnext=w+Δw
Stochastic Gradient Descent(SGD)
∇Loss=n1x∑∇Lossx
훈련을 위한 데이터셋이 큰 경우, 시간이 많이 걸릴 수 있습니다. 전체 데이터셋에서 랜덤으로 데이터를 선택해 만든 데이터셋 X1,X2,...,Xm 을 mini-batch라고 하는데, 이 mini-batch가 전체 데이터 셋의 분포와 유사하다고 가정하면 아래와 같은 식이 성립합니다.
∇Loss=n1x∑∇Lossx≈m1i=1∑m∇LossXi
- batch 크기가 줄어 한 step을 계산하는데 걸리는 시간이 줄어듭니다.
- 수렴하는 데 필요한 step 수가 증가합니다.
- mini-batch의 크기가 작을 수록 batch의 분포가 전체 데이터 셋의 분포와 달라질 확률이 높기 때문에 학습이 불안정해집니다.
(계산 시간/step) * (수렴에 필요한 step)
을 학습 시간이라고 하면, 학습 시간이 최소가 되는 batch 크기가 존재합니다.
Forward-propagation
Forward-propagation
(or forward pass)는 입력부터 출력으로 이어지는 네트워크를 순서대로 계산하고 그 결과를 저장하는 과정을 말합니다.
Back-propagation
zjl=k∑ωjklakl−1+bjl
ajl=σ(zjl)
Loss를 직접 미분하기 어렵기 때문에, Back-propagation
을 사용하여 ∇Loss를 계산합니다.
l 레이어의 j 뉴런의 에러 δjl 는 아래와 같이 정의됩니다.
δjl≡∂zjl∂Loss
zjl는 forward propagation을 통해 계산된 값이므로, δl+1를 안다면, δjl를 아래와 같이 구할 수 있습니다.
δjl=∂zjl∂Loss=i∑∂zil+1∂Loss∂zjl∂zil+1(∂zjl∂zil+1=ωijl+1σ′(zjl))=i∑∂zil+1∂Lossωijl+1σ′(zjl)=i∑δil+1ωijl+1σ′(zjl)
L2 loss
를 사용한다면, ajL는 forward propagation을 통해 구할 수 있고 δjL=(ajL−yj)σ′(zjL) 이므로, 아래와 같이 에러를 구할 수 있습니다.
δjL=(ajL−yj)σ′(zjL)
δjL−1=i∑δiLωijLσ′(zjL−1)⋮
결과적으로 ∇Loss는 위 식들을 통해 아래와 같이 구할 수 있습니다.
∂bjl∂Loss=∂zjl∂Loss∂bjl∂zjl=δjl
∂ωjkl∂Loss=∂zjl∂Loss∂ωjkl∂zjl=δjlakl−1
Training
초기 weights and biases를 랜덤하게 설정하고, Forward-propagation
-> Back-propagation
-> weights and biases update
를 반복하는 것을 Training
이라고 합니다. Loss가 더이상 작아질 수 없다고 판단될 때, weights and biases 값이 최종 결과물이 됩니다.
Initialization
입력의 분산보다 출력의 분산이 커지면 활성화 함수에 따라 수렴하는 부분이 생길 수 있고, 이것은 Vanishing gradient 문제를 야기할 수 있습니다.
변수를 적절히 초기화 해주는 것은 Vanishing gradient
, Exploding gradient
등의 문제 해결에 도움이 되고, 훈련속도를 높일 수 있습니다.
Reference