๐จโ๐ซ ๋ณธ ๋ฆฌ๋ทฐ๋ cs231n-2017 ๊ฐ์๋ฅผ ๋ฐํ์ผ๋ก ์งํํ์ต๋๋ค.
๐คทโโ๏ธ ๋ฆฌ๋ทฐ ์ , 8๊ฐ์ ๋ํ ๋ฆฌ๋ทฐ๋ ๋ฐ๋ก ํ์ง ์์ต๋๋ค. 8๊ฐ ๋ด์ฉ์ "Deep Learning Software"์ผ๋ก ๋ฅ๋ฌ๋์ ๊ด๋ จ๋ ์ํํธ์จ์ด์ ๋ํด ์๊ฐํ๊ณ ์์ต๋๋ค. "Tensorflow", "PyTorch", "CPU/GPU" ๋ฑ๋ฑ์ ๋ํ ๋ด์ฉ์ ์๊ฐํฉ๋๋ค.
๐ AlexNet์ Image Classification task์์ ์ต์ด๋ก ์ฌ์ฉํ CNN network๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก 5๊ฐ์ Conv layer์ 3๊ฐ์ FC layer๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค. ๋ํ 2๊ฐ์ GPU๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๐ Input: 227x227x3 images
๐ Filter(First layer): 96 11x11 filters with stride 4
๐ output: 55x55x96 ((227-11)/4 + 1 = 55)
๐ Paramters: 11*11*3*96 = 35k
๐ ์ฒซ๋ฒ์งธ ๋ ์ด์ด์ ๋ํ ์ฐ์ฐ ๊ณผ์ ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ๋ฐฐ์ ๋ feature size ๊ณ์ฐ๊ณผ parameter ์ ๊ณ์ฐ์ ํตํด ์ฝ๊ฒ ์ฐ์ฐํ ์ ์์ต๋๋ค.
๐ ๋๋ฒ์งธ ๋ ์ด์ด์ธ Pooling layer์์๋ Depth๋ ๋์ผํ๋ฉฐ feature size์ ๋ํ ์ฐ์ฐ๋ง ์์ ๋ฟ์ ๋๋ค. ๋ํ Pooling layer์ weight ์ฐ์ฐ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๐ ์ ๋ฐ์ ์ธ network ๊ตฌ์กฐ๋ฅผ ์์์ ํ์ธํ ์ ์์ต๋๋ค. ์์ ์ฐ์ฐ๊ณผ ๋์ผํ๊ฒ ์ํํ๋ฉด ์ด๋ ต์ง ์๊ฒ ๊ณ์ฐํ ์ ์์ต๋๋ค.
๐ ๊ณ๋ต์ ์ผ๋ก ์์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค. ๋๋ถ๋ถ์ ํํ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ๋ค์ด๋ฉฐ, LRN ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด์ ๋ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํฉ๋๋ค.
๐ AlexNet์ 2๊ฐ์ GPU๋ฅผ ์ฌ์ฉํ์ผ๋ฉฐ ConV1, 2, 4, 5์์๋ ๊ฐ์ GPU๋ผ๋ฆฌ ์ฐ์ฐ์ ํ๋ค๊ณ ํฉ๋๋ค. ์ฆ, ์ผ๋ถ์ feature map๋ง ๋ดค๋ค๊ณ ์ด์ผํ ์ ์์ต๋๋ค.
๐ ์ด ์ธ์ ๋ ์ด์ด์์๋ GPU๊ฐ์ ํต์ ์ ํตํด ์ ์ฒด ๋ ์ด์ด๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
๐ ๊ฒฐ๊ณผ์ ์ผ๋ก ILSVRC'12 ๋ํ์์ 1๋ฑ์ด๋ผ๋ ์ข์ ์ฑ๊ณผ๋ฅผ ๋ณด์ฌ์คฌ์ต๋๋ค.
๐ ZFNet์ ๊ธฐ์กด์ AlexNet์ ๊ตฌ์กฐ๋ ๋์ผํ์ง๋ง feature map size ๋ฐ channel ์๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ๊ธฐ์กด์ AlexNet๋ณด๋ค ์ข์ ์ฑ๋ฅ์ ๋ณด์๋ค๊ณ ํฉ๋๋ค.
๐ ๋ง์ง๋ง์ผ๋ก AlexNet์ ๊ตฌ์ฒด์ ์ธ ์ ๋ณด๋ ๋ ผ๋ฌธ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๐ ๋ค์์ผ๋ก๋ ILSVRC'14 ๋ํ์์ 2๋ฑ์ ํ VGGNet์ ๋ํด ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค. VGGNet์ ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋๋ network๋ฉฐ classification ์ธ์๋ ๋ค๋ฅธ task์์ backbone network๋ก ๋งค์ฐ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๐ VGG๋ ์์ ํํฐ(3x3 filter)์ ๊น์ ๋คํธ์ํฌ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ธฐ์กด์ 8 layers(AlexNet)์ ์ 16-19 layers ๊น์ง ์ฆ๊ฐ์์ผฐ๊ณ , ์ค์ง 3x3 filter๋ง ์ฌ์ฉํ์ต๋๋ค. ์์์ ๋ณผ ์ ์๋ฏ์ด ์ด์ ์ ZFNet๋ณด๋ค ์ข์ ์ฑ๋ฅ์ ์ป์ ์ ์์์ต๋๋ค.
๐ VGGNet์์๋ ์ 3x3 filter๋ง ์ฌ์ฉํ์๊น์? 3x3 filter 3๊ฐ๊ฐ 7x7 filter์ ๊ฐ์ receptive field๋ฅผ ๊ตฌ์ฑํ์ง๋ง, ์คํ๋ ค ๋ ์ ์ ํ๋ผ๋งํฐ ์๊ฐ ์๊ตฌ๋ฉ๋๋ค.
๐ ์์๋ VGG16 ๋คํธ์ํฌ์์์ ํ์ํ memory์ parameters ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๊ฐ ์ด๋ฏธ์ง๋น forward pass ๊ธฐ์ค์ผ๋ก 96MB๊ฐ ํ์ํ๋ฉฐ, 138M ํ๋ผ๋ฏธํฐ๊ฐ ํ์ํฉ๋๋ค. ์์์ ํ์ธํ ์ ์๋ ํน์ง์ ์ด๊ธฐ Conv layer ์์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ฉฐ, ๋ง์ง๋ง FC layer์์ ๋ง์ ํ๋ผ๋ฏธํฐ๊ฐ ํ์ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ ๋ค์์ผ๋ก๋ ILSVRC'14 ๋ํ์์ 1๋ฑ์ ํ GoogLeNet์ ๋ํด ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค. GoogLeNet์ Inception module์ ์ฌ์ฉํ Network๋ผ๊ณ ์ด์ผ๊ธฐํ ์ ์์ต๋๋ค.
๐ GoogLeNet์ ๋ ๊น์ด์ง ๋คํธ์ํฌ์, ์ถ๊ฐ์ ์ธ computationmal efficiency๋ฅผ ์๊ฐํ network๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
๐ GooLeNet์ ํต์ฌ ๋คํธ์ํฌ๋ "Inception module"์ด๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์์์ ํ์ธํ ์ ์๋ฏ์ด "design a good local network topology"๋ผ๊ณ ๋งํ๊ณ ์์ต๋๋ค. ๋ํ "Inception module"์ stack์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ ๋คํธ์ํฌ ์ ๋๋ค.
๐ ์์๋ Naiveํ Inception module์ ํ์ธํ ์ ์์ต๋๋ค. ๋ณ๋ ฌ์ ์ผ๋ก filter์ ๊ฐ๊ฐ ๋ค๋ฅธ filter size๋ฅผ ์ฐ์ฐํ ํ์ concatenate(depth-wise) ์ฐ์ฐ์ ์ํํฉ๋๋ค.
๐ ์์ Naiveํ Inception module์์์ ๋ฌธ์ ๋ ๋งค์ฐ ๋น์ผ ์ปดํจํ ์ฐ์ฐ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ์์ ํ๋ผ๋ฏธํฐ ์ ๋ฐ ์ฐ์ฐ ์๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ง์ ์ฐ์ฐ์ด ํ์ํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ 1x1 conv layer๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ feature์ depth๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค.
๐ ์์์ ํ์ธํ ์ ์๋ฏ์ด 1x1 filter์ ์ฌ์ฉํด depth๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค.
๐ ์์ ๊ฐ์ด 1x1 conv layer๋ฅผ ์ถ๊ฐํ ์๋ก์ด Inception module๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. 1x1 conv layer์ ํตํด ํ๋ผ๋ฏธํฐ์ ์ฐ์ฐ ์๋ฅผ ์ค์ผ ์ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ GoogLeNet์ ์ด๊ธฐ์๋ Stem Network๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ ์ผ๋ฐ์ ์ธ Conv layer์ ๊ตฌ์ฑํฉ๋๋ค.
๐ ์ดํ์๋ Inceptino Modules์ Stack์ผ๋ก ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ต๋๋ค.
๐ ๋ํ ์ค๊ฐ์ Auxiliary classification๋ผ๋ ๋ณด์กฐ ๋ถ๋ฅ๊ธฐ๋ฅผ ์ฌ์ฉํด gradient vanishing์ ์ ์ดํ๋๋ฐ ๋์์ ์ค๋๋ค. ๋คํธ์ํฌ๊ฐ deepํ๊ฒ ๋๋ฉด gradient๊ฐ ์ฌ๋ผ์ง๋๋ฐ ์ด๋ฅผ ๋ณด์กฐ ๋ถ๋ฅ๊ธฐ์์ ๋์์ ์ค๋๋ค.
๐ GoogLeNet์ ์์ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๐ ๋ค์์ผ๋ก๋ ILSVRC'15๋ ๋ 1๋ฑ์ ํ ResNet์ ๋ํด ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
๐ ๋จผ์ ์ ์๋ ๋ง์ฝ "plain"ํ CNN์์ ๋งค์ฐ ๊น์ ๋คํธ์ํฌ๋ฅผ ํ์ตํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? ๋ผ๋ ์๋ฌธ์ ์ ๊ธฐํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํด๋ณธ๋ค๋ฉด Overfitting์ด ๋๊ฒ ๋ค ๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์ ๊ทธ๋ํ์์ ํ์ธํ ์ ์๋ฏ์ด ์คํ๋ ค ๋์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ "degration"์ด๋ผ๊ณ ๋ ผ๋ฌธ์์ ์ธ๊ธํฉ๋๋ค.
๐ ์๊ฐํ ์ ์๋ ๊ฐ์ค๋ก๋ ์ต์ ํ ๋ฌธ์ ๋ฅผ ์๊ฐํ ์ ์์ต๋๋ค. ๋ชจ๋ธ์ด ๊น์ด์ง ์๋ก ์ต์ ํ ํ๊ธฐ์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋๋ค.
๐ ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ์์ block ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. ์ ๋ก ๊ณ์ฐํฉ๋๋ค. ๋ผ๊ณ ๋งํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ 'residual'๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ์ input์ผ๋ก ๋ค์ด์จ ๋ฅผ(identity mapping)์ ๋ํฉ๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก resnet์ ๋ชฉํ๋ residual์ 0์ ๊ฐ๊น๊ฒ ๋ง๋๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค. ์ฆ, ๊ธฐ์กด์ ๋ฅผ ๊ทผ์ฌํ๋ ๊ฒ์ด ์๋ residual์ธ ๋ฅผ ๊ทผ์ฌํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
๐ ์์ ๋ฐฉ๋ฒ์ Overfitting๊ณผ gradient vanishing์ ๋์์ด ๋๋ค๊ณ ํฉ๋๋ค.
๐ ์ ์ฒด์ ์ธ ResNet์ ์ํคํ ์ฒ๋ ์์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ residual block์ผ๋ก ์ด๋ค์ ธ ์์ต๋๋ค.
๐ ResNet์ ์ต๋ 150 layer ์ ๋๊น์ง ์์ ์ ์์ผ๋ฉฐ, ์ฃผ๊ธฐ์ ์ผ๋ก ํํฐ๋ฅผ ๋๋ฐฐ ์ฉ ๋๋ฆฌ๊ณ stride 2๋ฅผ ์ด์ฉํด downsampling์ ์ํํฉ๋๋ค. ๋คํธ์ํฌ ์ด๋ฐ์๋ Conv layer๊ฐ ์ถ๊ฐ์ ์ผ๋ก ๋ถ์ผ๋ฉฐ FC layer์ ์์ต๋๋ค. ๋์ GAP๋ฅผ ์ฌ์ฉํด 1000๊ฐ์ class๋ฅผ ๋ถ๋ฅํฉ๋๋ค.
๐ ResNet์ 34, 50, 101, 152 depth๋ฅผ ๊ฐ์ง ๋ฒ์ ๋ค์ด ์์ผ๋ฉฐ, 50+์ด๋ฉด ํจ์จ์ฑ์ ์ํด bottleneck layer๋ฅผ ์ถ๊ฐํฉ๋๋ค. 1x1 conv lyaer๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ๋ ์ ์ ํ๋ผ๋ฏธํฐ๋ก ํ์ตํ ์ ์์ต๋๋ค.
๐ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ค์ํ CNN ๋คํธ์ํฌ๋ค์ ๋น๊ต ๊ทธ๋ํ์ ๋๋ค. ๋น์ฐํ๊ฒ๋ ๊ฐ์ฅ ์ต๊ทผ์ ๋์จ ResNet์ด ๋ค๋ฐฉ๋ฉด์์ ์ฐ์ํ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ ์ด ์ธ์๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ก ๋ค์ด ์กด์ฌํ๋๋ฐ, ๊ฐ์ฅ ๋จผ์ ์๊ฐํด๋๋ฆฌ๋ ๊ฒ์ NiN ๋ชจ๋ธ์ ๋๋ค. ์ด ๋ชจ๋ธ์ Conv layer ์ฌ์ด์ micronetwork๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ด๋ฅผ MLP๋ก ๊ตฌ์ฑํ๋ค๊ณ ํฉ๋๋ค.
๐ ResNet์ ๊ฒฝ์ฐ์๋ ๊ณ์ํด์ ์ฐ๊ตฌ๊ฐ ์ด๋ค์ง๋๋ฐ ์ด ์ค์ ๊ฐ์ฅ ๋ ผ๋ฌธ์์ ๋ง์ด ๋ณด์ด๋ RexNeXt์ ๋ํด ์๊ฐํ๊ฒ ์ต๋๋ค. ์์ ๊ทธ๋ํ์์ ๋ณผ ์ ์๋ฏ์ด residual block์ ๋์ด ๋ณ๋ ฌ์ ์ธ pathways๋ก ์ฆ๊ฐ์ํต๋๋ค. ์ด๋ inception module๊ณผ ๋น์ทํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ ์ด ์ธ์๋ ResNet์ residual๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ช ๊ฐ์ง ๋ชจ๋ธ์ ๊ฐ๋จํ๊ฒ ์๊ฐํ๊ฒ ์ต๋๋ค.
๐ ์์ FractalNet, DenseNet, SqeeuzeNet์ ๊ฐ๊ฐ์ ๊ธ์ ์ฝ์ด๋ณด์๋ฉด ๋์์ด ๋ ๋ฏํฉ๋๋ค. ๋ํ ์ผํ ๋ถ๋ถ์ด ๊ถ๊ธํ๋ค๋ฉด ๋ ผ๋ฌธ์ ์ฝ์ผ์๋ฉด ๋ฉ๋๋ค.
๐ ์ค๋์ ๋ค์ํ CNN network๋ค์ ์์๋ดค์ต๋๋ค. ์์์ ์๊ฐํ VGG, GoogLeNet, ResNet์ ๋งค์ฐ ๋ค๋ฐฉ๋ฉด์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๊ผญ ์์์ผํ๋ backbone ๋คํธ์ํฌ๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค.