본문 바로가기
Google Machine Learning Bootcamp 2022/Convolutional Neural Networks

2. Deep Convolutional Models: Case Studies #1

by 사향낭 2022. 8. 1.

Case Studies

 

 

Classic Networks

 

LeNet - 5, AlexNet, VGG - 16 -> VGG - 19, ...

 

 

ResNets

 

Residual block: make shorcut from shallow layer to deeper layer (skip connection)

 

\( a^{[l + 2]} = g( z^{[l + 2]} + a^{[l]} ) \)

 

이론적으로는 plain network의 layer가 깊어질수록 training error가 낮아져야 하는데 practical 하게는 낮아지다가 높아진다.

 

하지만 ResNet을 사용했을 때에는 training error가 layer 수가 많아질수록 낮아진다.

 

 

Why ResNets Work?

 

Activation function이 ReLU라면,

 

$$ a^{[l + 2]} = g( z^{[l + 2]} + a^{[l]} ) $$

$$ = g( w^{[l + 2]} a^{[l + 1]} + b^{[l + 2]} + a^{[l]} ) $$

$$ = g( a^{[l]} ) $$

$$ = a^{[l]} $$

 

만약 regularization 때문에 weight와 bias가 0으로 간다면 \( a^{[l]} \)만 남을 것이다.

 

결국 layer 개수가 l인 network와 다를게 없어지는데 residual block을 추가함으로써 deep network의 성능을 손상시키지 않을 수 있다. 

 

당연하지만 layer l과 layer l + 2의 shape이 같아야 한다.

 

 

Networks in Networks and 1x1 Convolutions

 

1x1 convolution으로 채널 수를 조절할 수 있다.

 

 

Inception Network Motivation

 

window size가 큰 convolution layer를 사용하면 computational cost가 너무 크다.

 

그렇다고 filter 개수를 줄인다면 해당 layer가 작아지고, 이 layer는 bottleneck layer로 작용할 수 있다.

 

따라서 1x1 convolution과 같은 작은 window size의 convolution을 concatenating 해서 inception module을 만든다면 적은 computational cost로 해당 layer의 사이즈를 유지할 수 있다.

 

 

Inception Network

 

이러한 inception module을 쓴 network가 inception network다.

 

 

MobileNet

 

Normal convolution: 위에서 계속해서 썼던 일반적인 convolution

 

 

Depthwise convolution: channel마다 다른 filter로 filtering (3d의 경우 2d filter가 channel num만큼 따로 있음)

 

Pointwise convolution: 동일한 1x1 filter를 channel 전역에 사용하는데 filter 개수만큼 (1x1 normal convolution랑 같은 것 같음)

 

=> Depthwise seperable convolution

 

computation cost를 normal convolution을 사용하는 것보다 획기적으로 줄임

 

 

MobileNet Architecture

 

MobileNet v1 => depthwise seperable convolution (depthwise + pointwise)

 

MobileNet v2 => residual connection, expansion -> depthwise -> projection (pointwise) (bottleneck block)

 

Expansion: pointwise convolution으로 크기를 키움

 

 

EfficientNet

 

network의 input resolution, depth, width 중 어떤 것을 늘리는 것이 performance에 좋을까

 

EfficientNet은 더욱 구조화된 방법으로 CNNs를 키우기 위해 간단하고 효과적인 compound coefficients를 사용하는 새로운 model scaling method다.

 

 

댓글