π κ΅λ΄ 'μΈκ³΅μ§λ₯' μμ μ ν΅ν΄ 곡λΆν λ΄μ©μ μ 리ν κ²μ λλ€.
1οΈβ£ 볡μ΅
β FC backpropagation
π dy(L) μμ dz(L+1) μ΄ μ½μ λλ λΆλΆ μ΄ν΄ν κ²!
π¨ dy(L) = (0-0t) * f'(zk) * W = dz(L+1) * W
π¨ dz(L+1) = (0-0t) * f'(zk) = dy(L+1) * f'(zk)
π¨ μ΅μ’ λλ¨ layer dy(L+1) = dC/dy(L+1) = d {1/2*(0-0t)^2} / dy(L+1) = d {1/2*(0-0t)^2} / d0t = (0-0t)
π» by chain rule
- activation gradient : dL / dy(L) = local gradient * weight
- local graidnet : dL / dz(L)
- weight gradient : dL / dW(L) = local gradient * input
β activation gradient κ° λ€ λ μ΄μ΄μμλΆν° μ λ μ΄μ΄λ‘ μ λ¬λκ³ κ·Έλ₯Ό ν΅ν΄ κ³μ°λ local gradient λ₯Ό μ΄μ©ν΄ weight gradient λ₯Ό ꡬνλ κ³Όμ μ΄ν΄νκΈ°
β Transpose λ‘ μ°¨μ λ§μΆ°μ£Όλκ±° μμ§ μκΈ°
β‘ CONV forward in Python
π» CONV μ°μ° κΈ°λ³Έ (in 3D conv)
- input channel = filter channel
- filter μ κ°μ = output channel
- Output feature map μ ν¬κΈ° ꡬνλ 곡μ
- W2 = (W1 - F + 2P) / S +1
- H2 = (H1 - F + 2P) / S +1
- Maxpooling μ°μ° κ²°κ³Ό
- (W1 - Ps) / S + 1
- Ps λ pooling size
π» Alexnet
- Convolution (feature extraction) : filter μ μμνλ νΌμ²λ₯Ό μ΄λ―Έμ§μμ λ½μλ΄λ κ³Όμ
- Dense layer (classification) : μΆμΆλ νΌμ² λ°μ΄ν° λΆν¬μμ linear classification μ μν
π» python μΌλ‘ CNN forward μ°μ° ꡬν
- O : output , W : weight (=filter μ μμκ°) , I : input , S : stride , B : bias , K : filter (νν° νλλ₯Ό κ°λ¦¬ν΄)
- Total Cost : W2 * H2 * K * C * F * F
2οΈβ£ CNN backpropagation
β CNN backpropagation
(1) forward ex with C=1, K=1, S=1, P=0
π¨ μ°μ° μμ : O(00) ꡬνλ κ³Όμ
- x=0, y=0 μ΄κ³ (p,q) → (0,0), (1,0), (0,1), (1,1) μ λν΄ μ°μ°μ μννλ©΄ i00*k00 + i10*k10 + i01*k01 + i11*k11 μ κ²°κ³Όκ° μ»μ΄μ§λ€.
(2) backward
- FC layer μ μμ ν κ³Όμ κ³Ό μ μ¬νλ€. (by chain rule)
π¨ dO/dI μ dO/dk λ₯Ό ꡬνλ κ²μ΄ κ΄κ±΄!
(2)-a. Find dO/dk
π loss μ λν kernel (weight) gradient κ²°κ³Όλ
input κ³Ό activation gradient dL/dO μ ν©μ±κ³± μ°μ°κ³Ό κ°λ€.
(2)-b. Find dO/dI
π loss μ λν input gradient κ²°κ³Όλ
μμ κ°μ΄ 180 λ λ°©ν₯μΌλ‘ μμΉν weight μ
activation gradient dL/dO μ ν©μ±κ³± μ°μ°κ³Ό κ°λ€.
(2)-c. summary
β‘ Maxpooling backpropagation
(1) Aμ Bμ λν max μ°μ°μ μμ ν ꡬν΄λ³΄κΈ°
- dA : Aκ° B λ³΄λ€ ν΄ λ O=A κ° λκ³ , Aμ λν΄ λ―ΈλΆνλ©΄ 1 (dO) κ° λλ€.
- dB : Bκ° A λ³΄λ€ ν΄ λ O=B κ° λκ³ , Bμ λν΄ λ―ΈλΆνλ©΄ 1 (dO) κ° λλ€.
- μ¦, max μ ν΄λΉνλ κ°μλ§ output gradient κ° μ λ¬λλ€.
(2) maxpooling μ λν μμ ν
- (1) μμ λμΆλ μμ΄λμ΄λ₯Ό λ°νμΌλ‘ λμΌνκ² μ μ©
- forward μμ μ΅λκ°μ ν΄λΉλλ μμμ μμΉλ₯Ό κΈ°μ΅ν΄λμλ€κ° backward μμ κΈ°μ΅ν΄λ μμΉμλ§ output gradient λ₯Ό μ λ¬νλ€.
β’ batch gradient descent in CNN
1. λ§€μ° μμ μ«μλ‘ weight μ bias μ μ΄κΈ°κ°μ μ€μ νλ€.
2. For the β entire training samples :
a. Forward propagation : calculate the batch of output values
b. Compute Loss L
c. Backpropagate errors through network
d. Update weights and biases
3. network κ° μ νλ ¨λ λκΉμ§ 2λ² κ³Όμ μ λ°λ³΅νλ€.
κ·Έλ¬λ μ 체 λ°μ΄ν°μ μ λν΄ νλ ¨μ μ§ννλ©΄
νλ² weight update μ μ 체 λ°μ΄ν° κ°μλ§νΌ forward λ₯Ό ν΄μΌνλ―λ‘
μκ°μ΄ μ€λκ±Έλ¦°λ€. (π μ€μ λ‘ μ΄λ κ²λ μν¨)
β£ Stochastic gradient descent in CNN
(1) SGD
1. λ§€μ° μμ μ«μλ‘ weight μ bias μ μ΄κΈ°κ°μ μ€μ νλ€.
2. For β a mini-batch of randomly chosen training samples :
a. Forward propagation : calculate the mini-batch of output values
b. Compute Loss L
c. Backpropagate errors through network
d. Update weights and biases
3. 1 epoch, μ¦ μ 체 νλ ¨μ μ λͺ¨λ κ±°μΉ λκΉμ§ 2λ² κ³Όμ μ λ°λ³΅νλ€.
4. network κ° μ νλ ¨λ λκΉμ§ 2λ²κ³Ό 3λ² κ³Όμ μ λ°λ³΅νλ€.
- λλ€νκ² mini - batch νλ ¨ λ°μ΄ν°μ μ μΆμΆνλ€. μ΄λ μ΄μ λ¨κ³μ μ¬μ©ν λ°μ΄ν°λ μ μΈνλ€.
- λ―Έλλ°°μΉ ν¬κΈ° λ§νΌμ νλ ¨ λ°μ΄ν°λ₯Ό κ°μ Έμ κ·Έλ§νΌμ κ°μ€μΉ μ λ°μ΄νΈλ₯Ό μ§ννλ€.
- ν μν¬ν¬ λΉ λ―Έλλ°°μΉ κ°μλ§νΌμ κ°μ€μΉ μ λ°μ΄νΈκ° λ°μνλ€.
(2) SGD vs gradient descent
π SGDκ° GD 보λ¨...
- νλ ¨ μλκ° λΉ λ₯΄λ€.
- randomness μ μν΄μ local min μΌλ‘λΆν° λΉ μ Έλμ¬ κ°λ₯μ±μ΄ λμ global min μ λλ¬ν μ μμ΄ μ΅μ’ μ±λ₯μ΄ μ’κ² λμ€λ κ²½ν₯μ΄ μλ€.
'1οΈβ£ AIβ’DS > π λ₯λ¬λ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μΈκ³΅μ§λ₯] Regularization (0) | 2022.04.26 |
---|---|
[μΈκ³΅μ§λ₯] λ€μν CNN λͺ¨λΈ (0) | 2022.04.26 |
[μΈκ³΅μ§λ₯] CNN (0) | 2022.04.23 |
[μΈκ³΅μ§λ₯] DNN (0) | 2022.04.23 |
[μΈκ³΅μ§λ₯] MLP (0) | 2022.04.21 |
λκΈ