여러 자료를 봤는데... skip connection에 대해 설명이 어려워서
이해하기 쉽도록 수정해보았다.
Degradation Problem
이전에는 layer를 쌓아도 error rate가 증가하는 문제
: layer가 깊어졌을 때 model이 수렴했음에도 레이어가 적을 때보다 모델의 error (training, test)가 더 커지는 현상이 발생, 이것은 overfitting 문제가 아니라, layer가 깊어짐에 따라 optimize가 잘 안되기에 발생하는 문제
Skip connection
resnet에서 deep한 layer를 쌓기 위해 위의 문제를 해결하기 위한 skip connection 제안
input(x)에 대해 만들고 싶은 것을 H(x)라고 가정
이것을 기존에는 F(x)로 만들었다. Redisual Learning은 F(x)+x로 만들자!
H(x)가 x 근사라고 가정했을 때, (deep layer니까 layer마다 조금씩만 변화주자.)
기존 skip-connection이 없었을 때는,
F(x)가 x가 되기위해서는 weight는 identity matrix가 곱해져야 H(x)=x가 된다.
그런데, skip-connection이 있을 때는,
F(x)가 0이 되면 되니까, weight는 zero matrixh가 곱해지면 H(x)=0+x가 된다.
: 그렇다면, zero matrix vs identity matrix 누가 더 만들기 쉬운가? 당연히 zero-matrix
이제, H(x)가 x 근사라고 가정했다라면 skip-connection이 유리하다. 는 증명됐다.
그럼, layer를 많음에 따라 조금씩 변화주는 것은 어떤 말이냐.
: layer가 deep하다면 input으로 부터 값을 조금 씩 바꿔나가며 target에 접근하는게 이상적
즉, skip-connection이 있을 때, x랑 근사한 H(x)를 만들기 쉬우니까
layer 하나에서 모든걸 다하려고 하지않고 조금식 바꿔 나가라. (layer를 많이 쌓아라.)
추가적으로, F(x) 자체를 학습하는게 아닌, H(x)-x (사실상 H(x)는 x에 근사지만 완전 같지 않으므로 F(x)는 완전 zero-matrix는 아니다.) 를 학습, 즉, output과 input의 차이를 학습한다.
'Study > computer vision' 카테고리의 다른 글
DETR : Inference code review (0) | 2024.12.10 |
---|---|
DETR : End-to-End Object Detection with Transformers (0) | 2024.12.10 |
pose estimation occlusion problem related works (1) | 2024.11.29 |
[VGGNet] Very Deep Convolutional Networks for Large-Scale Image Recognition (0) | 2024.08.12 |
[AlexNet] ImageNet Classification with Deep ConvolutionalNeural Networks (0) | 2024.08.09 |