๐ ๊ต๋ด '์ธ๊ณต์ง๋ฅ' ์์ ์ ํตํด ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
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 > ๐ Deep learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธ๊ณต์ง๋ฅ] 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 |
๋๊ธ