๐จโ๐ซ ๋ณธ ๋ฆฌ๋ทฐ๋ cs231n-2017 ๊ฐ์๋ฅผ ๋ฐํ์ผ๋ก ์งํํ์ต๋๋ค.
๐ ๊ฐ์ ์๋ถ๋ถ์๋ Convolution Neural Networks์ ๋ํด ์ธ๊ธํ๊ณ ์์ต๋๋ค. ์์ ์ฌ์ง์ฒ๋ผ Neural Networks์ image classification์ ์ฌ์ฉํ๋ฉด์ ์ฑ๊ณต์ ์ป๊ณ , ๊ทธ ์ดํ๋ถํฐ๋ ๋๋ถ๋ถ์ ์ด๋ฏธ์ง์ฒ๋ฆฌ์์๋ CNN์ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค.
๐ ์์ AlexNet์ด ์ฒ์์ผ๋ก ๋ณด์ฌ์ง CNN ๋คํธ์ํฌ๋ผ๊ณ ์๊ณ ์์ต๋๋ค. AlexNet์ ์์์ผ๋ก ํ์ฌ๋ ๋ค์ํ ์ด๋ฏธ์ง๋ถ์ผ์์ Neural Networks์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Detection, Segmentation, Keypoint, Image Captioning ๋ฑ๋ฑ ๊ฐ์์์๋ ConvNets are everywhere๋ผ๊ณ ํํํ๊ณ ์์ต๋๋ค.
๐ ๊ธฐ์กด์ Fully Connected Layer๊ฐ ์๋ ์์ Convoultion Layer๋ฅผ Filter(Kernel)์ ์ฌ์ฉํด ํ์ตํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 32x32๋ฅผ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ x3์ ๊ฒฝ์ฐ์๋ RGB์ ๊ฐ๊ฐ์ ์ฑ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค.
๐ ์์ ์ฌ์ง๊ณผ ๊ฐ์ด 5x5x3 filter์ input image์ ์์์ ๋ถํฐ ์ฌ๋ผ์ด๋ฉ ํ๋ฉด์ ์ฐ์ฐํฉ๋๋ค. ๊ฐ๊ฐ์ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ก ์ค๋ฅธ์ชฝ์ activation map์ด ์ถ์ถ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก input image์ channel๊ณผ filter channel์ ๊ฐ์์ผํฉ๋๋ค. filter size๋ 1x1, 3x3, 5x5.. ๋ค์ํ๊ฒ ์์ต๋๋ค.
๐ ์์ ๊ณผ์ ์ ๊ฐ filter์ ์๋งํผ ์งํํฉ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก 28x28x6์ activation map์ ์ถ์ถ๋ฉ๋๋ค. ์ฌ๊ธฐ์ input 32 -> 28๋ก ์ค์ด๋ค๊ฒ ๋์๋๋ฐ, ์ด๋ ์กฐ๊ธ ๋ค์ ๋ค์ ๋ค๋ฃจ๊ฒ๋ฉ๋๋ค.
๐ ์์ ๊ฐ์ด ๊ฐ๊ฐ์ Conv layer๋ค์ activation function, pooling layer๋ฑ๋ฑ๊ณผ ํจ๊ป ๊ตฌ์ฑ๋ฉ๋๋ค.
๐ ์์์ Low-level features์ ํ์ธํ๋ฉด ๋งค์ฐ ์์ ๋ถ๋ถ์ ํ์ตํ๊ณ ์๊ณ , High-level feature๋ก ๊ฐ๋ฉด ๊ฐ์๋ก ๋์ฑ ๊ตฌ์ฒด์ ์ด๊ณ ๋ฌผ์ฒด์ ๊ฐ๊น์ด ๊ฒ๋ค์ ํ์ตํฉ๋๋ค. ์์ ๋ณด์ด๋ ๊ฐ๊ฐ์ ๋ด๋ฐ ์ด๋ฏธ์ง๋ค์ ์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ์๊ฒจ์ผ ํด๋น ๋ด๋ฐ์ ํ์ฑ์ ์ต๋ํ ์ํฌ ์ ์์์ง ๋ํ๋ด๋ ๊ฒ์ธ๋ฐ, ์ฆ ๋น์ค์คํ ์ด๋ฏธ์ง๊ฐ ๋ค์ด์ค๋ฉด ํฐ ์ถ๋ ฅ๊ฐ์ ์ถ๋ ฅํ ๊ฒ์ ๋๋ค.
๐ ์๋ ์ ๋ฐ์ ์ธ CNN์ ์์์ ๋๋ค. ๊ฐ๊ฐ์ Conv - ReLU - Pooling์ ์์๋ก ๋คํธ์ํฌ๊ฐ ํ๋ฌ๊ฐ๊ณ ๋ง์ง๋ง์๋ classification์ ์ํด Fully Connected layer์ ์ฌ์ฉํฉ๋๋ค.
๐ filter๋ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ์ชฝ ์์์๋ถํฐ Stride(=1)๋งํผ ์์ง์ ๋๋ค. ์์ ์์์ ๊ฐ์ด 7x7 input์ 3x3 filter stride=1์ผ๋ก ํ์ตํ๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก 5x5 ์ฌ์ด์ฆ์ ouput์ด ๋์ต๋๋ค.
๐ ์ฌ๊ธฐ์ stride=2๋ก ํ๋ค๋ฉด ์ด๋ค output ์ฌ์ด์ฆ๊ฐ ๋์ค๊ฒ ๋ ๊น์? ๋ณด์๋ค ์ถ์ด 3x3 ์ฌ์ด์ฆ์ output์ด ๋์ค๊ฒ๋ฉ๋๋ค. ์ฆ, stride๋ก output ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
๐ ์์ ๊ณผ์ ์ ๊ณต์ํ ํ๋ฉด ์์ ๊ฐ์ด (N-F)/Stride + 1 ์ด๋ผ๋ ๊ณต์์ด ๋์ค๊ฒ๋ฉ๋๋ค. ํ์ง๋ง ์ด๋ฐ ๋ฐฉ์์ผ๋ก ๊ณ์ํด์ ํ์ตํ๋ฉด ๋ง์ง๋ง layer์ activation map ์ฌ์ด์ฆ๋ ๋๋ฌด๋๋ ์์์ง ๊ฒ์ ๋๋ค. ๋ํ ์์ ๋ฐฉ์์ผ ๊ฒฝ์ฐ ๊ฐ์ฅ์๋ฆฌ์ ํ์ตํ ์ ์์ต๋๋ค. ์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด zero padding์ ์ฌ์ฉํฉ๋๋ค.
๐ ์์ ๊ฐ์ด zero padding์ ์ฌ์ฉํ๋ฉด 7x7 -> 7x7์ Output์ผ๋ก ๋ฐํํ ์ ์์ต๋๋ค. ๋ํ ๊ฐ์ฅ์๋ฆฌ ๋ถ๋ถ๋ ์ฐ์ฐ์ ์งํํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก filter ์ฌ์ด์ฆ๊ฐ 3์ด๋ฉด zero pad = 1, 5์ด๋ฉด zero pad = 2, 7์ด๋ฉด zero pad = 3์ ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค.
๐ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์ ์์ผ๋ก output ์ฌ์ด์ฆ๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
๐ Input: 32x32x3, 10 filters 5x5 size with stride = 1, pad = 2๋ผ๊ณ ํ ๋ ํด๋น layer์ filter ์๋ ์ด๋ป๊ฒ ๋ ๊น์? ์ ๋ต์ (5x5x3 + 1(bias)) * 10 = 760๊ฐ์ ํ๋ผ๋ฏธํฐ ์๋ฅผ ๊ฐ์ง๋๋ค.
๐ ์์ ์ฌ์ง์์ ๊ณต์์ ๋ณผ ์ ์์ต๋๋ค.
๐ ์์ ์ฌ์ง์์ ์ธ๊ธ๋์ด ์์ง ์์ต๋๋ค๋ง, ์ผ๋ฐ์ ์ผ๋ก 5x5 filter -> 5x5 receptive field๋ผ๊ณ ๋ถ๋ฅธ๋ค๊ณ ํฉ๋๋ค. ์์ 28x28x5 activation map์ ๋ณด์๋ฉด ๊ฐ๊ฐ์ ๊ฐ์ ๊ณต๊ฐ์์ 5๊ฐ์ ๋ค๋ฅธ ํน์ง์ ๊ฐ๋๋ ๊ฐ๋ค์ด ์กด์ฌํฉ๋๋ค.
๐ CNN์๋ Pooling layer๊ฐ ์กด์ฌํฉ๋๋ค. ํ ๋ง๋๋ก ์ด์ผ๊ธฐํ๋ฉด downsampling์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๋ค. Pooling layer๋ ๋จ์ํ activatatiom map์ ์ฌ์ด์ฆ๋ฅผ ์ค์ฌ์ค๋๋ค.
๐ ๋ํ์ ์ผ๋ก Max pooling ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ์์ ๊ฐ์ด 2x2 filters and stride 2๋ก max poolingํ๋ฉด 4x4 -> 2x2 ์ฌ์ด์ฆ๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค. max pooling์ ๋งค์ฐ ์ฌํํ๊ฒ filter ์์ ๊ฐ๋ค ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ํํฉ๋๋ค.
๐ ์ผ๋ฐ์ ์ผ๋ก F=2, 3๊ณผ Stride = 2๋ก ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค.
๐ ๊ฐ๊ฐ์ layer๋ค์ด ์ด๋ค ์ญํ์ ํ๋์ง ์์๋ดค์ต๋๋ค. ์์ ๊ณผ์ ์ด ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ CNN ๋คํธ์ํฌ์ ๊ตฌ์กฐ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค.