Convolutionary Neural Networks : Introduction
์ฌ์ธต ์ ๊ฒฝ๋ง์ ์ํ์ ๊ธฐ์ด 7๊ฐ (9์ 28์ผ) ์ ๊ธฐ๋ฐํฉ๋๋ค.
๋งค์ฐ ์ ๋ช ํ Standford CS231n ์๋ฃ ๋ ์ฐธ๊ณ ํ๋ฉด ์ข์ต๋๋ค.
Convolution
Convolution์ ์ํ์ ์ผ๋ก ๊ต์ฅํ ๋ค์ํ ๋์๋ค์ ๋ํด์ ์ ์ ์๋ ์ฐ์ฐ์ธ๋ฐ, ์ฐ๋ฆฌ๋ $n$์ฐจ์ ํ ์ (๋ฐฐ์ด) ์ ๋ํด์๋ง ์๊ฐํ๊ฒ ์ต๋๋ค.
๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด, Convolution์ Filter ๋๋ Kernel ์ด๋ผ๋ (๊ทธ๋ฆผ์ ๋ ธ๋์ ํ๋ ฌ) ์ โ๋ฐ๋ฉด์โ ๋ด์ ์ ๋ฐ๋ณตํด์ ์๋ก์ด ํ๋ ฌ์ ์ป๋ ์ฐ์ฐ์ ๋๋ค.
์ด๋ฏธ์ง ์ถ์ฒ : towardsdatascience.com
์ผ๋ฐ์ ์ผ๋ก, ์ด๋ฏธ์ง ์ฒ๋ฆฌ์์ CNN์ ๊ฐ์ฅ ๋ง์ด ์ฐ๊ธฐ ๋๋ฌธ์ CNN์ ์ ๋ ฅ์ 3์ฐจ์ ํ ์ (๋ฐฐ์ด) ๋ก ๊ฐ์ ํ๊ณ , filter๋ 3์ฐจ์ ํ ์ (๋ฐฐ์ด) ๋ก ๊ฐ์ ํฉ๋๋ค. ์ด๋ฏธ์ง๊ฐ 2์ฐจ์์์๋ 3์ฐจ์ ํ ์๋ฅผ ์ฐ๋ ์ด์ ๋ ์ด ํ ์์ ์ ์ฒด๋ฅผ ๋ณด๋ฉด ์ ์ ์์ต๋๋ค. ๋ณดํต์ ์ธ ์ฐจ์์ Channel * Width * Height ์ผ๋ก ๋ถ๋ฅด๋๋ฐ, Channel์ ์ด๊ธฐ ์ ๋ ฅ ๋จ๊ณ์์๋ R G B ์ ์ ์ ๋ณด๋ฅผ ๋ํ๋ ๋๋ค.
๊ทธ๋์, 3์ฐจ์ ํ ์์ง๋ง ์ค์ฌ๋ก๋ ์ฌ๋ฌ ์ฑ๋์ด ์๋ W * H ํฌ๊ธฐ์ ํ๋ ฌ์ ๋ฌถ์์ผ๋ก ์๊ฐํ๋ฉด ๋ฉ๋๋ค. $C * W * H$ ์ ๋ ฅ ์ด๋ฏธ์ง์ ๋ํด $C * 3 * 3$ ํํฐ๋ฅผ ์ฐ๊ฒ ๋๋ฉด ์ค์ ๋ก ๊ณต๊ฐ์ ์ผ๋ก ํํฐ๋ฅผ ๋ฐ์ด ๋ณผ ์ ์๋ ๋ฐฉํฅ์ (๊ฐ๋ก, ์ธ๋ก) ๋ฐฉํฅ์ผ๋ก๋ง ๋ฐ๋ฉด ๋๋ฏ๋ก, $(W - 2) * (H - 2)$ ํฌ๊ธฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ๋์์ ์ธ์ฝ๋ฉํด์ ๊ฐ์ ธ๊ฐ๊ณ ์ถ๊ธฐ ๋๋ฌธ์, ์ค์ ๋ก๋ ๋์์ $D$๊ฐ์ $C * 3 * 3$ ํํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๋ ๊ฒ ํด์ ์ป์ด์ง ๊ฐ ํ๋ ฌ๋ค์ ๋ชจ๋ ์ฐ๊ฒฐํ๋ฉด, $D * (W - 2) * (H - 2)$ ํฌ๊ธฐ์ output์ ์ป์ต๋๋ค.
Padding : ์ฐ๋ฆฌ๊ฐ $W * H$ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ด ์ด๋ฏธ์ง์ $3 * 3$ filter๋ฅผ convolutionํ๋ฉด, $(W - 2) * (H - 2)$ ํฌ๊ธฐ๊ฐ ๋๋ค๋ ๊ฒ์ ์ฝ๊ฒ ์ ์ ์์ต๋๋ค. ์ด๋ ๋งจ ์ธ๊ณฝ ์นธ๊น์ง ๋ฐ๊ฒ ๋๋ฉด ํํฐ๊ฐ ์ด๋ฏธ์ง ๋ฐ๊นฅ์ผ๋ก ์ผ๋ถ๊ฐ ๋๊ฐ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด๋ฅผ ๋ณด์ ํ๊ธฐ ์ํด ์ด๋ฏธ์ง์ ๋งจ ์ธ๊ณฝ์ ์ 0์ผ๋ก ์ญ ํ์นธ ๋ ๋ง๋ค์ด ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๋ฅผ Padding์ด๋ผ๊ณ ํฉ๋๋ค.
Stride : Filter๋ฅผ ํ๋ฉด์์์ โ๋ฏผ๋คโ ๊ณ ํํํ๋๋ฐ, ์ ์ค๋ช ์ ๋งค๋ฒ โํ ์นธ ์ฉโ ๋ฏธ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๊ณ ์์ต๋๋ค. ๊ผญ ๊ทธ๋ด ํ์๋ ์๊ณ , $s$์นธ์ฉ ํ๋ฒ์ ๋ฐ ์๋ ์์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ๋น์ฐํ ์ถ๋ ฅ์ ํฌ๊ธฐ๋ ๋ ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค. ์ด $s$๋ฅผ Stride๋ผ ํฉ๋๋ค.
Bias : Convolutionํ ๊ฒฐ๊ณผ๋ฌผ ์ ์ฒด์ ์ด๋ค ํน์ ํ ์์๊ฐ์ ๋ํด์ค ์๋ ์๊ณ , ์ด๋ฅผ bias๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์ฌ๊ธฐ๊น์ง ๋ด์ฉ์ ์์ฝ์ด ๋ค์ image์ ์ ๋๋ฌ๋ ์์ต๋๋ค. ์ด๋ฏธ์ง ์ถ์ฒ์ธ Standford CS231n ์๋ฃ ์์๋ ์ ํํฐ๊ฐ ์ง์ง ์์ง์ด๋๊ฑธ ๋ณผ ์ ์์ผ๋ ํ๋ฒ์ฏค ๋ณด๋ฉด ์ดํดํ๊ธฐ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆผ์๋ 3๊ฐ ์ฑ๋์ 5 by 5 ์ด๋ฏธ์ง์, padding 1์ ์ฃผ์๊ณ , 3์ฑ๋ by 3 by 3 ํฌ๊ธฐ์ ํํฐ๋ฅผ ์ฐ๋ฉฐ, stride = 2 ์ธ ์ผ์ด์ค๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์ต๋๋ค. ์๋์๋ bias๋ ํฌํจ๋์ด ์์ต๋๋ค.
์ ๋ ฅ์ด $C_i * W_i * H_i$ ์ด๊ณ , padding์ด $p$, stride๊ฐ $s$์ด๋ฉฐ, ํฌ๊ธฐ๊ฐ $C_i * F * F$ ์ธ ํํฐ $K$๊ฐ๋ฅผ ์ด๋ค๊ณ ํ๋ฉด, convolution์ ํ๋ฒ ํ๊ณ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋๋ $C_o * W_o * H_o$ ์ถ๋ ฅ์ ์ป์ต๋๋ค. \(C_o = K \quad \quad W_o = \floor{\frac{W_i - F + 2P}{S} + 1} \quad \quad H_o = \floor{\frac{H_i - F + 2P}{S} + 1}\)
Pooling
CNN์ ๋ณดํต ํฐ ์ด๋ฏธ์ง ๋ฐ์ดํฐ๋ฅผ ๋์์ผ๋ก ํ๋ฉฐ, ์ต์ด์๋ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฅํ๋ ๋ชฉ์ ์ผ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. ๊ทธ๋ ๋ค ๋ณด๋, ์ด๋ฏธ์ง ์ ์ฒด์ ์๋ง ํฝ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ๋ณด๊ธฐ๋ณด๋ค๋ ๊ทธ ํน์ง์ ์ก์๋ด๋ ๊ฒ์ด ํ์ํฉ๋๋ค. ๋ํ ๋ง์ฝ ์ ๊ฒฝ๋ง์์ ์ก์๋ผ ์ ์๋ ํน์ง์ ํฌ๊ฒ ํผ์ํ์ง ์์ผ๋ฉด์ ๋์๋ค๋๋ ๋ฐ์ดํฐ์ ์์ ์ค์ผ ์ ์๋ค๋ฉด, training ๋ฐ inference ์๊ฐ์ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ์ํด pooling์ด๋ผ๋ ์ฐ์ฐ์ ์ํํฉ๋๋ค. pooling์ ๋จ์ํ ์ง๊ธ ๋ณด๊ณ ์๋ ๋ถ๋ถ์ max๋ avg๋ฅผ ํํ๋ ์ฐ์ฐ์ธ๋ฐ, ๋ค์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
[์ด๋ฏธ์ง ์ถ์ฒ : Stanford CS231n]
์ ๊ทธ๋ฆผ์์ ๋ณผ ์ ์๋ฏ, pooling๋ convolution์ฒ๋ผ filter๋ผ๋ ํํ์ ์์ฃผ ์ฐ๋ฉฐ, stride์ padding์ ์ค ์ ์์ต๋๋ค. ๋ค๋ง convolution์ฒ๋ผ ๋ญ๊ฐ๋ฅผ trainํ ํ์๋ ์๊ณ , ๊ทธ๋ฅ ๊ทธ ์ฐ์ฐ์ ์ํํ๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ์ pooling์ 2 by 2 ํํฐ์ stride 2๋ก ์ฐ์ฐํ๋ ๊ฒ์ผ๋ก, 2 * 2 ์ ์ฌ๊ฐํ์์ max ๋๋ avg ํ๋์ฉ์ ๋จ๊น์ผ๋ก์ ๋ฐ์ดํฐ์ ์์ 1/4๋ก ์ค์ ๋๋ค.
Pooling์ ๊ฐ ์ฑ๋๋ณ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์คํํ ์ ์์ผ๋ฏ๋ก, 2D ์์๋ง ์๊ฐํด๋ ์ถฉ๋ถํฉ๋๋ค. 3D pooling๋ ๋๊ฐ์ด ์ ์ํ๋ฉด ์๊ฐํ ์๋ ์๊ฒ ์ง๋ง์.
Convolutionary Neural Network
Multi Layer Perceptron ์์๋, Linear Layer - Activation - Linear Layer - Activation - โฆ ์ ํํ๋ก ๊น๊ฒ ์ด์ด์ง ์ ๊ฒฝ๋ง์ ๊ตฌ์ถํ๊ณ ์ด๋ฅผ Multi-Layer Perceptron์ด๋ผ๊ณ ๋ถ๋ ์ต๋๋ค.
Convolutinary Neural Network, CNN๋ ํฐ ํ์์๋ ๋น์ทํฉ๋๋ค. ๋ค๋ง, ์ข๋ ๋ณต์กํ ์์ด๋์ด๋ค์ด ๋ค์ด๊ฐ ์์ต๋๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ CNN์ ํฌ๊ฒ Convolution, Pooling, Activation์ ์ธ๊ฐ์ง Layer๋ฅผ ์ ๋ฐ๋ณตํด์ ๊ตฌ์ฑ๋ฉ๋๋ค.
Convolution์ ์์ ์ค๋ช ํ convolution ์ฐ์ฐ์ ์ ๋นํ ํํฐ์ ๋ํด์ ์ํํ๋ ๊ฒ์ผ๋ก, MLP์์ weight ํ๋ ฌ์ด train์ ๋์์ธ ๊ฒ์ฒ๋ผ ์ฌ๊ธฐ์๋ ํํฐ ์ ์ฒด๊ฐ training์ ๋์์ ๋๋ค.
Activation์ MLP์์์ฒ๋ผ ๋ชจ๋ ํญ์ ์ ๋นํ activation function์ ์์์ ์ ๊ฒฝ๋ง์ non-linearity๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ์ญ์ MLP์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ReLU, sigmoid, tanh ๊ฐ์ ํจ์๋ค์ ์ธ ์ ์์ต๋๋ค.
Pooling์ ์์ ์ค๋ช ํ pooling์ ์ํํ๋ layer์ ๋๋ค.
Why CNN?
CNN์ ํจ์ฉ์ ๋ํด ์๊ธฐํ๋ ค๋ฉด ๊ธฐ์กด์ MLP์ ํน์ง์ ๋จผ์ ์ด์ผ๊ธฐํ ํ์๊ฐ ์์ต๋๋ค.
- ์ฅ์ : ๊ฐ๋จํ๊ณ , ์ด๋ก ์ ์ผ๋ก ๊ต์ฅํ generalํฉ๋๋ค. ๋ชจ๋ ์ฐ์ํจ์๋ฅผ ์ด๋ค ์ ํด์ง ๊ตฌ๊ฐ์์๋ ์ถฉ๋ถํ ํฐ MLP๋ก approximate ๊ฐ๋ฅํ๋ค๋ ๊ต์ฅํ ์ ๋ฆฌ๊ฐ ์๋๋ฐ (Universal Approximation Theorem) ์ ๊ฐ ์ฐพ์๋ณธ ์ฆ๋ช ์ ์คํด์ํ ์์ค์ ํด์ํ ์ง์์ (Hahn-Banach, Riesz Repr thm) ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฃฐ ์๊ฐ ์์ต๋๋ค.
- ๋จ์ : Parameter๊ฐ ๋งค์ฐ ๋ง์์, overfitting์ ๋ฌธ์ ์ training speed ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
- ๋จ์ : Computer vision์ ์ฐ๊ธฐ์๋ shift invariance ๊ฐ์ ๊ฒ์ ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ค๋ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํนํ image classification ๊ฐ์ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง์ ์ผ๋ถ๋ฅผ shiftํด๋ ๊ทธ๋๋ก ๊ฐ์ ์ด๋ฏธ์ง์ธ๋ฐ MLP๋ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ต์ต๋๋ค.
Convolution์ ๊ทธ ์์ฒด๋ก shift invaraince๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์, ๋จ์ 2๋ฒ์ ์ ํด๊ฒฐํฉ๋๋ค. ๋ํ, ๋จ์ 1๋ฒ์ ๊ฒฝ์ฐ, Convolution์ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฝค ๋ง์ ๋ณด์ด์ง๋ง $W * H$ ์ด๋ฏธ์ง๋ฅผ ๋์ ธ์ฃผ๊ณ $W * H$ ์ถ๋ ฅ์ ๋ง๋ค๊ธฐ ์ํด์ Linear layer๋ ํ๋ผ๋ฏธํฐ $W^2H^2$ ๊ฐ๊ฐ ํ์ํฉ๋๋ค. ์ ์ถ๋ ฅ์ด 200 by 200์ด๋ฉด ์ด ๊ฐ์ด 16์ต์ธ๋ฐ, convolution์ ํ๋ผ๋ฏธํฐ๊ฐ ํจ์ฌ ์ ์ต๋๋ค.
์์ฐ์ค๋ฌ์ด ์ง๋ฌธ์, ํ๋ผ๋ฏธํฐ๊ฐ ๊ทธ๋ ๊ฒ ์ ์ผ๋ฉด ์ถฉ๋ถํ generalํ๊ฒ ํ์ตํ์ง ๋ชปํ๋๊ฒ ์๋๋๋ ์๋ฌธ์ด ๋ค ์ ์์ต๋๋ค. 2018๋ ๋ ผ๋ฌธ ์ ๋ฐ๋ฅด๋ฉด ์ํ์ ์ผ๋ก๋ CNN๋ universal approximation theorem์ด ์๋ค๊ณ ํ๋๋ฐ, ๊ตณ์ด ์ด๋ฐ ๋๋ผ์ด ์ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ด๋ฐ์ง ์๋๋ผ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ์์ CNN์ด ๊ทธ๋์ ๋ณด์ฌ์ค ๋๋ผ์ด ์ฑ๊ณผ๋ฅผ ๋ณด๋ฉด ์ด์ ๋ ํ๋ผ๋ฏธํฐ๋ก๋ Convolution ์์ฒด๊ฐ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ โ๋๋ต์ ์ผ๋กโ ๋ณด๋ ๋๋์ด ๊ต์ฅํ ์ง๊ด์ ์ผ๋ก ์ข์์, ์ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
๋ํ, CNN์ MLP๋ณด๋ค ๊ฐ์ ํฌ๊ธฐ์์ ํจ์ฌ ๊น์ ๋คํธ์ํฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค (๋ ์ด์ด๋น ํ๋ผ๋ฏธํฐ๊ฐ ์ ์ผ๋ฏ๋ก) ์ด ์ ๋ ์ฅ์ ์ด ๋ ์ ์๊ฒ ์ต๋๋ค.
Next posts
CNN์ ์ฌ๋ฌ Model๋ค์ ๋ํด ์ดํด๋ณผ ๊ณํ์ ๋๋ค.
- LeNet
- AlexNet
- VGGNet
- GoogLeNet
-
Semantic Segmentation ์์ ๋ค๋ฃฐ ๋ชจ๋ธ๋ค.
- U-Net
- FCN
- DeepLab