Convolutional Neural Networks
๊ธฐ์กด์ FC layer์์๋ 32 x32 x 3์ ์ด๋ฏธ์ง๋ฅผ ํ๋์ ๋ฒกํฐ๋ก ํผ์น๋ค์์ ๊ฐ์ค์น๋ฅผ ๊ณฑํ์๋ค.
ํ์ง๋ง CNN์์๋ ๊ธฐ์กด์ ์ด๋ฏธ์ง ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ์ ์งํ ์ ์๋ค.
CNN์์๋ ์์ ํํฐ๊ฐ ๊ฐ์ค์น๊ฐ ๋๋๋ฐ,
์์ ์์์์๋ 5x5x3์ shape๋ฅผ ๊ฐ์ง๋ ํํฐ๊ฐ ์ฐ๋ฆฌ์ ๊ฐ์ค์น์ธ ๊ฒ์ด๋ค.
์ด ํํฐ๋ฅผ ๊ฐ์ง๊ณ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ผ์ด๋ฉํ๋ฉด์ ๊ฐ์ค์น์ ์ ๋ ฅ์ ๊ณฑ(๋ด์ )ํ๋ ๊ฒ์ด๋ค.
์ด๋ฏธ์ง๋ channel ์ ๊ฐ์ง๋๋ฐ, ํํฐ๋ ์ด๋ฏธ์ง์ ๋์ผํ ๊น์ด์ channel์ ๊ฐ์ง๋ค.
๊ฐ๋ น 32 x 32 x 3 ์ ์ด๋ฏธ์ง์ 5x5x3์ ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง์ ๊ฐ๋ก ์ธ๋ก์ ๊ด์ ์์๋ ์ผ๋ถ๋ฅผ ๋ณด์ง๋ง ๊น์ด๋ ์ ์ฒด๋ฅผ ๋ณด๋ ๊ฒ์ด๋ค.
ํํฐ๋ ์ด๋ฏธ์ง๋ฅผ sliding ํ๋ฉด์ ํํฐ์ ๊ฐ w์ ํํฐ์ ํฌ๊ธฐ์ ํด๋นํ๋ ์ด๋ฏธ์ง ๊ตฌ์ญ์ ํฝ์ ๊ฐ์ ๊ณฑํ๊ฒ ๋๋ค.
*bias term ๋ ๊ฐ์ด ๊ณ์ฐ
* T : Transpose => ๋ด์ ์ ์ํ์ ์ผ๋ก ํํํ๊ธฐ ์ํด ๋ํ๋ธ ๊ฒ
W๋ฅผ ์ด๋ป๊ฒ ํํํ๋์ ์ฐจ์ด์ผ ๋ฟ. ํ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ค๊ณ Transposeํ๋ ๊ฒ์.
Convolution์ ์ด๋ฏธ์ง์ ์ข์๋จ๋ถํฐ ์์ํด์ ๋ด์ ์ ์ํํ๊ณ ์ด๋ก์จ ํ๋์ ๊ฐ์ ์ป๊ฒ ๋๋ค.
์ดํ ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ํ์ผ๋ฉฐ ๋ด์ ์ ํ๋ค.
Conv ์ฐ์ฐ์ ์ํํ๋ ๊ฐ๋ค์ ๋ค์ Output activation map์ ํด๋นํ๋ ์์น์ ์ ์ฅํ๋ค.
๋ณดํต Conv layer์์๋ ํํฐ๋ง๋ค ๋ค๋ฅธ ํน์ง์ ์ถ์ถํ๊ธฐ ์ํด ์ฌ๋ฌ๊ฐ์ ํํฐ๋ฅผ ์ฌ์ฉํ๋ค,
์์์๋ ํ๋์, ์ด๋ก์ ๋๊ฐ์ ํํฐ๋ฅผ ๊ฐ์ง๊ณ ๋ด์ ์ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ก ๊ฐ์ ํฌ๊ธฐ์ map์ด ๋๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๋ ํ๋์ layer์์ ์ํ๋ ๊ฐ์์ ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์์์๋ 5x5 ํํฐ 6๊ฐ๋ฅผ ๊ฐ์ง๊ณ 6๊ฐ์ activation map์ ๋ง๋ ๊ฒ์ด๋ค.
Conv layer๋ ํ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์๋๋ผ ์ฌ๋ฌ๊ฐ๋ฅผ ์๋ ํํ๋ก ์ฌ์ฉํ๋ค.
๊ฐ layer ์ฌ์ด์ activation function์ ๋ฃ๊ธฐ๊ณ ํ๊ณ pooling layer๋ฅผ ๋ฃ๊ธฐ๋ ํ๋ค.
Q. ํํฐ์ depth๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ด ๋ฌด์์ ์๋ฏธํ ๊น?
A. 3๊ฐ ๋๋ 6๊ฐ ๋ฑ์ ํํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ ์ค์ ๋ก ์ด๋ค ๊ฒ์ด ๋ ์ข์์ง๋ ์ง์ ์ฐพ์๋ด์ผ ํ๋ค.
Q. ์ด๋ฏธ์ง์ ๊ฐ์ฅ์๋ฆฌ๋ ํํฐ๊ฐ ๋ ์ ์ฉ๋๋ ๊ฒ์ด ์๋๊ฐ?
A. ๊ทธ๋ ๋ค. ํฅํ zero-padding์์ ์์ธํ ๋ฐฐ์ธ ์์
๊ฐ layer๋ง๋ค ํํฐ๋ค์ด ์๊ธฐ์ ํํฐ๋ค์ ๊ณ์ธต์ ์ผ๋ก ํ์ต์ด ๋๋ค.
์์ชฝ ํํฐ๋ค์ edge์ ๊ฐ์ด low-level features๋ค์ ํ์ตํ๊ฒ ๋๊ณ
mid-level์์๋ ์ฝ๋๋ blobs ๊ฐ์ด ์ข ๋ ๋ณต์กํ ํน์ง์ ํ์ตํ๋ค.
high-level์์๋ ๊ฐ์ฒด์ ๋ฎ์ ๋ชจ์ต๋ค์ด ์ถ๋ ฅ๋๋ค.
=> layer์ ๊ณ์ธต์ ๋ฐ๋ผ ๋จ์ํ๊ฑฐ๋ ๋ณต์กํ ํน์ง์ ํ์ตํ๊ฒ ๋๋ค.
๊ฐ ํน์ง์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ดํดํ๊ธฐ
Activation map์ ๊ฐ ํํฐ๊ฐ ์ด๋ฏธ์ง์ ๋ด์ ๋์ด์ ๋ง๋ค์ด์ง ์ถ๋ ฅ๊ฐ์ด๋ค.
์์ ์ด๋ฏธ์ง๋ 5 x 5 ํํฐ๋ค์ ์๊ฐํํ ๊ฒฐ๊ณผ์ด๋ค.
์ฌ๊ธฐ์๋ ์๋์ฐจ์ ํ ๋ถ๋ถ์ด ์ ๋ ฅ์ผ๋ก ๋ค์ด์๋ค.
๋นจ๊ฐ ๋ค๋ชจ๋ฐ์ค๋ฅผ ์น ํํฐ๋ฅผ ๋ณด๋ฉด ํด๋น ํํฐ๊ฐ edge๋ฅผ ์ฐพ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
CNN์ฌ๋ฌ Conv, ReLU + Pooling layer(optional) ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ
์ต์ข layer์๋ FC-layer๊ฐ ์์ด์ ์ต์ข ์ค์ฝ์ด๊ฐ ๊ณ์ฐ๋๋ค.
*pooling layer : activation maps์ ์ฌ์ด์ฆ๋ฅผ ์ค์ด๋ ์ญํ
Spatial dimension
์ด๋ฏธ์ง์ ํํฐ๊ฐ ์ด๋ป๊ฒ activation map์ ์์ฑํ๋์ง ์์๋ณด์!
7x7 ์ด๋ฏธ์ง์ 3x3 ํํฐ๊ฐ ์๋ค๊ณ ํด๋ณด์.
ํํฐ๋ ์ข์ธก ์๋จ์์ ์์ํด์ ๋ด์ ์ ์ํํ๋ค.
๊ฐ์ฅ ์ข์ธก ์๋จ์ ๋ํ ๋ด์ ๊ฐ์ map์์๋ ๊ฐ์ฅ ์ข์ธก ์๋จ ๊ฐ์ด ๋๋ ๊ฒ์ด๋ค.
์ด์ ์ฐ์ธก๊ณผ ํ๋จ ๋ฐฉํฅ์ผ๋ก ๋ชจ๋ ํ์ผ๋ฉด 5x5์ activation map์ด ๋ง๋ค์ด์ง๋ค.
Activation map์ ๋ง๋ค ๋๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๋ค.
Stride : ์์ง์ด๋ ์นธ์ ๊ฐ์
์์ ์์ ์์ ์ฐ๋ฆฌ๋ ํ์นธ์ฉ ์์ผ๋ก ๊ฐ์ง๋ง ํด๋น ๊ทธ๋ฆผ์ฒ๋ผ ๋์นธ์ฉ ์ด๋ํ ์ ๋ ์๋ค. => stride = 2
์ด๋๋ 3x3์ activation map์ด ๋ง๋ค์ด์ง๋ค.
stride๊ฐ 3์ผ ๋๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ์ปค๋ฒํ ์ ์๊ธฐ์ ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด stride๋ ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
- stride๋ฅผ ํฌ๊ฒ ๊ฐ์ ธ๊ฐ์๋ก ์ถ๋ ฅ์ ์ ์ ์์์ง๋ค.
- Pooling ์ฒ๋ผ ๋ค์ด ์ํ๋งํ๋ ๋์ผํ ํจ๊ณผ๋ฅผ ์ป์ผ๋ฉด์๋ ๋ ์ข์ ์ฑ๋ฅ์ ๋ผ ์๋ ์๋ค.
- activation map์ ์ฌ์ด์ฆ๋ฅผ ์ค์์ผ๋ก์จ ํ๋ผ๋ฏธํฐ ์๋ฅผ ์ค์ผ ์ ์๋ค.
์ ๋ ฅ์ ์ฐจ์ N, ํํฐ ์ฌ์ด์ฆ F, Stride S๊ฐ ์ฃผ์ด์ง ๋ ์ถ๋ ฅ์ ํฌ๊ธฐ๋
(N-F) / Stride + 1 ์ด๋ค.
์ด๋ฅผ ์ด์ฉํด์ ์ด๋ค ํํฐ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง, ์ด๋ค stride์ ์จ์ผ ์ด๋ฏธ์ง์ ๋ฑ ๋ง๋์ง ๋ฑ์ ์ ์ ์๋ค.
(N - F) / stride + 1
CNN์์๋ ์ฝ๋(๊ฐ์ฅ ์๋ฆฌ)๋ ์ฐธ์กฐ๊ฐ ๋ ๋๊ธฐ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์ด๋ฏธ์ง์ ๊ฐ์ฅ ์๋ฆฌ์ 0์ ์ฑ์์ฃผ๋ zero-pad (ํจ๋ฉ)์ ์ฌ์ฉํ๋ค.
zero-padding์ ์ฌ์ฉํ๋ ๋ ๋ค๋ฅธ ์ด์ ๋ ์ ๋ ฅ ์ฌ์ด์ฆ์ ์ถ๋ ฅ ์ฌ์ด์ฆ๋ฅผ ๊ฐ๋๋ก ํ๊ธฐ ์ํด์์ด๋ค.
zero-padding์ ํ ๋ ์๋์ ๊ฐ์ ์์์ ์ฌ์ฉํ๋ค.
$$output = \frac{N-F+2P}{Stride}+1$$
N=9, F=3, Stride = 1์ ์ถ๋ ฅ ์ฌ์ด์ฆ
=> 7 x 7 x ํํฐ์ ๊ฐ์
*ํํฐ๊ฐ ์ ๋ ฅ์ ๋ชจ๋ depth์ ๋ด์ ์ ์ํํ๋ค
๋ง์ฝ ์ด๋ฏธ์ง๊ฐ ์ ์ฌ๊ฐ ํ๋ ฌ์ด ์๋๋ผ๋ ๋ณดํต์ ๊ฐ์ stride๋ฅผ ์ ์ฉํ๋ค.
์ผ๋ฐ์ ์ผ๋ก filter๋ 3 x 3, 5 x 5, 7 x 7 ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ ๊ฐ๊ฐ์ ๊ฒฝ์ฐ stride๋ฅผ 1, 2, 3์ ์ค๋ค.
๋ณดํต ๋ ์ด์ด๋ฅผ ์ฌ๋ฌ๊ฐ ์๊ธฐ์ zero-padding์ ํ์ง ์๋๋ค๋ฉด ์ถ๋ ฅ ํฌ๊ธฐ๊ฐ ๊ธ๊ฒฉํ๊ฒ ์ค์ด๋ค์ด ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
=> ์์ฒญ deepํ ๋คํธ์ํฌ์์ activation map์ด ์ ์ ์์์ง๊ฒ ๋๊ณ ์ผ๋ถ ์ ๋ณด๋ฅผ ์์ผ๋ฉฐ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ํํํ๊ธฐ ํ๋ค์ด์ง๋ค.
์ ๋ ฅ ์ฌ์ด์ฆ๊ฐ 32 x 32 x 3,
5 x 5 ์ฌ์ด์ฆ์ ํํฐ 10๊ฐ,
stride๊ฐ 1,
padding์ด 2 ์ผ ๋
output์ size๋
$$output = \frac{32-5+2*2}{1}+1 = 32$$
๋ฐ๋ผ์ 32 x 32 x 10(ํํฐ์ ๊ฐ์)
๋์ผ input size ์กฐ๊ฑด์์ layer์ ์๋ ํ๋ผ๋ฏธํฐ์ ๊ฐ์๋?
ํํฐ์ ํธํฅ์ ํ์ตํ๋ ๊ฒ์ด๊ธฐ์
ํ๋์ ํํฐ๋น ํ๋ผ๋ฏธํฐ ๊ฐ์๋ ํํฐ์ ์ฌ์ด์ฆ 5 x 5 x 3(depth) + 1(bias) = 76 params
์ ์ฒด 10๊ฐ์ ํํฐ์ ๋ํ ํ๋ผ๋ฏธํฐ์ ๊ฐ์๋ 76 * 10 = 760
ํํฐ ์ฌ์ด์ฆ๋ 3x3, 5x5,
Stride๋ ๋ณดํต 1์ด๋ 2๊ฐ ๊ฐ์ฅ ํํ๋ฉฐ
ํํฐ์ ๊ฐ์๋ 2์ ์ ๊ณฑ์๋ก ์ค์ ํ๋ ๊ฒ์ด ํํ๋ค.
1 x 1 convolution์ ๊ณต๊ฐ์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ง๋ ์์ง๋ง ๋ค๋ฅธ convolution๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก depth๋งํผ ์ฐ์ฐ์ ์ํํ๋ค
=> ์ ๋ ฅ์ ์ ์ฒด Depth์ ๋ํ ๋ด์ ์ ์ํํ๋ ๊ฒ๊ณผ ๋์ผ
Conv Layer์์๋, ์ ์ฒด ์ด๋ฏธ์ง์ ํน์ ์์น์์ ํํฐ์์ ๋ด์ ์ ์ํํ์ฌ ํ๋์ ๊ฐ์ ์ป๋๋ค.
์ด๋ ์ฐ์ธก ์๋จ์ ์ด๋ฏธ์ง ๋์๊ณผ ์ ์ฌํ๋ฐ, ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด W(ํํฐ)์ ๊ณฑํ๊ณ ํ๋์ ๊ฐ์ ์ถ๋ ฅํ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ์ ๋ด๋ จ์ ํํฐ๋ฅผ ์ฌ๋ผ์ด๋ฉ ํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ๋ถ๋ถ์๋ง ์ฐ๊ฒฐ์ด ์กด์ฌํ๋ค.
=> ํ๋์ ๋ด๋ฐ์ ํ ๋ถ๋ถ๋ง ์ฒ๋ฆฌํ๊ณ ์ด ๋ด๋ฐ๋ค์ด ๋ชจ์ฌ์ ์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ ๊ฒ
5 x 5 ํํฐ => ํ ๋ด๋ฐ์ "Receptive field" ๊ฐ 5 x 5
*Receptive field : ํ ๋ด๋ฐ์ด ํ ๋ฒ์ ์์ฉํ ์ ์๋ ์์ญ
convolution ์ฐ์ฐ ๊ฒฐ๊ณผ์ ์ํ ์ถ๋ ฅ์ 28 x 28 x 5 ๋ก 3์ฐจ์์ ๊ฐ์ง๋ค.
์ถ๋ ฅ ์ฐจ์์์ ์ด๋ค ํ ์ ์ ์ฐ์ด์ depth๋ฐฉํฅ์ผ๋ก ๋ฐ๋ผ๋ณด๋ฉด ์ด 5๊ฐ์ ์ ์ ์ ํํ๊ฒ ๊ฐ์ ์ง์ญ์์ ์ถ์ถ๋ ํน์ง์์ ๋ปํ๋ค.
ํ์ง๋ง ๊ฐ ํํฐ๋ ์๋ก ๋ค๋ฅธ ํน์ง์ ์ถ์ถํ๋ฏ๋ก ์ด๋ฏธ์ง์์ ๊ฐ์ ์ง์ญ์ ์๋ฏธํ๋๋ผ๋ ์๋ก ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
fc layer์์๋ 32 x 32 x 3์ ํ๋์ ๋ฒกํฐ๋ก ํธ๋ค์ ์ ์ฒด๋ฅผ ์ฐ๊ฒฐํด์ ๊ณ์ฐํ๋ค.
CNN์๋ Conv Layer์ Pooling Layer, ๋น์ ํ ์ฐ์ฐ(Activation fucntion)์ด ์๋ค.
Pooling์ feature representation๋ค์ ๋ ์๊ณ ๊ด๋ฆฌํ๊ฒ ์ฝ๊ฒ ๋ง๋ ๋ค.
Representation์ ์๊ฒ ๋ง๋๋ ์ด์ ๋ ํ๋ผ๋ฏธํฐ์ ์๊ฐ ์ค์ด๋ค๋ฉฐ ์ผ์ข
์ ๊ณต๊ฐ์ ์ธ ๋ถ๋ณ์ฑ(invaiance)
์ ์ป์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Pooling layer๋ Downsample์ ์ญํ ๋ก ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ์ญํ ์ ํ๋ค.
ex) 224 x 224 x 64 -> 112 x 112 x 64
*Depth๋ ๋ณํ์ง ์๋๋ค
Pooling์๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์๋๋ฐ ์ผ๋ฐ์ ์ผ๋ก Max Pooling์ ์ฌ์ฉํ๋ค.
Pooling ์์๋ ํํฐ ํฌ๊ธฐ๋ฅผ ์ ํ ์ ์๋๋ฐ, ์ผ๋ง๋งํผ์ ์์ญ์ ํ ๋ฒ์ ๋ฌถ์์ง๋ฅผ ์ ํ๋ ๊ฒ์ด๋ค.
ex) 2 x 2 ํํฐ, stride = 2 => conv ์ฐ์ฐ์ฒ๋ผ ์ฌ๋ผ์ด๋ฉํ๋๋ฐ, ๋ด์ ๋์ ํํฐ ๋ด ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ณ ๋ฅธ๋ค.
*Pooling ํ ๋๋ ๊ฒน์น์ง ์๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
*Max pooling์ด average pooling๋ณด๋ค ๋ ์ข์ ์ด์ : ์ฐ๋ฆฌ๊ฐ ๋ค๋ฃจ๋ ๊ฐ๋ค์, ์ผ๋ง๋ ์ด ๋ด๋ฐ์ด ํ์ฑ๋์๋ ์ง๋ฅผ ๋ํ๋ด๋ ๊ฐ์ผ๋ก ์ด ํํฐ๊ฐ ๊ฐ ์์น์์ ์ผ๋ง๋ ํ์ฑ๋์๋์ง๋ฅผ ์๋ฏธ. Max pooling์ ๊ทธ ์ง์ญ์ด ์ด๋๋ , ์ด๋ค ์ ํธ์ ๋ํด "์ผ๋ง๋" ๊ทธ ํํฐ๊ฐ ํ์ฑํ ๋์๋์ง๋ฅผ ์๋ ค์ค๋ค๊ณ ํ ์ ์๋ค. ๊ทธ ๊ฐ์ด ์ด๋์ ์์๋ค๋ ๊ฒ ๋ณด๋ค๋
๊ทธ ๊ฐ์ด ์ผ๋ง๋ ํฐ์ง๊ฐ ์ค์ํ ๊ฒ
*Pooling = Conv Layer์ Stride?? = ์ต๊ทผ์๋ Downsampleํ ๋ pooling์ ํ๊ธฐ๋ณด๋จ stride๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ ์ถ์ธ์ด๋ฉฐ stride๊ฐ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์.
*pooling์ ์ผ๋ง๋ ํด์ผํ ๊น? => ์ง์ ์๋ํด ๋ด์ผ ํ๋ค. Pool์ ๋๋ฌด ๋ง์ดํ๋ฉด ๊ฐ์ด ๋๋ฌด ์์์ง ๊ฒ์ด๊ณ
์ ์ฒด ์ด๋ฏธ์ง๋ฅผ ์ ํํํ์ง ๋ชปํ๋ค. ๋ค์ํ pooling ์ฌ์ด์ฆ, ํํฐ ํฌ๊ธฐ, ๋ ์ด์ด ์ ๋ฑ์ ์๋ํด ๋ณด๋
๋ฑ์ Crossvalidation์ ํด์ผ
W(width), H(Height), D(Depth)๋ก Filter Size๋ฅผ ์ ํ๊ฒ ๋๋๋ฐ,
Stride๊น์ง ์ ํด์ฃผ๋ฉด, ์์ Conv Layer์์ ์ฌ์ฉํ๋ outputํฌ๊ธฐ๋ฅผ ๊ตฌํ๋ ์์์ด ๋์ผํ๊ฒ ์ ์ฉ๋๋ค.
pooling layer์์๋ ๋ณดํต padding์ ํ์ง ์๋๋ค.
why? => downsampling์ด ๋ชฉ์ ์ด๋ฉฐ Conv ๋์ฒ๋ผ ์ฝ๋์ ๊ฐ์ ๊ณ์ฐํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ ๋๋ฌธ
์ผ๋ฐ์ ์ผ๋ก ํํฐ์ฌ์ด์ฆ๋ 2 x 2, 3 x 3 ์ ์ฌ์ฉํ๊ณ ๋ณดํต stride๋ 2๋ก ์ค์ ํ๋ค.
๋ง์ง๋ง FC Layer๋ฅผ ์ดํด๋ณด์.
๋ง์ง๋ง Conv Layer์ ์ถ๋ ฅ์ 3์ฐจ์์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค.
์ด ๊ฐ๋ค์ ์ ๋ถ ํด์(stretch) 1์ฐจ์ ๋ฒกํฐ๋ก ๋ง๋ค์ด์ FC Layer์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
=> Conv Net์ ๋ชจ๋ ์ถ๋ ฅ์ ์๋ก ์ฐ๊ฒฐ
๋ง์ง๋ง Layer๋ถํฐ๋ ๊ณต๊ฐ์ ๊ตฌ์กฐ(spatial structure)๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค.
*์์ ๊ทธ๋ฆผ์์ ๊ฐ layer = ์ถ๋ ฅ Activation map
[ConvNetJS demo: training on CIFAR-10]
https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html
CNN๋ ์ผ๋ฐ์ ์ผ๋ก Conv ์ Pool ๋ฅผ ์์ ์ฌ๋ฆฌ๋ค๊ฐ ๋ง์ง๋ง์ FC Layer๋ก ๋๋๋ค.
๋คํธ์ํฌ์ ํํฐ๋ ์ ์ ๋ ์์์ง๊ณ , ์ํคํ ์ณ๋ ์ ์ ๊น์ด์ง๋ค.
Pooling ์ด๋ FC Layer๋ ์ ์ ๋ ์์ ๊ณ Conv layer๋ง ๊น๊ฒ ์๋ ๊ฒ์ด ์ถ์ธ
์ ํ์ ์ธ CNN ์ํคํ ์ณ๋ Conv์ ReLU๋ฅผ ๋ช ๋ฒ(n๋ฒ) ๋ฐ๋ณต + FC Layer + softmax๋ก Class score๋ฅผ ๊ตฌํจ
'์ธ๊ณต์ง๋ฅ ๐ > CS231n' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CS231n 4๊ฐ Introduction to Neural Networks (0) | 2024.03.20 |
---|---|
CS231n 3๊ฐ Loss Functions and Optimization (1) | 2024.03.07 |
CS231n 2๊ฐ Image Classification Pipeline (0) | 2024.03.07 |