Resnet(Residual Network)
일반 컨볼루젼 신경망에서 FC레이어는 스킵/바로가기 연결이 없어,
신경망이 더 깊을 때 소실되거나 폭발하는 그래디언트 문제(problem of vanishing/exploding gradients)가 발생한다.
이를 해결하기 위해 만들어진 모델이다.
Problem of Vanishing / Exploding Gradients
역전파(backpropagation) 동안, 트레이닝의 각 반복에서 현재 가중치에 대해 오차 함수(error function)의 편미분을 할 때, 이것은 n-레이어 네트워크에서 이들 작은/큰 숫자 n을 곱하여 “프론트” 레이어의 그레디언트를 계산하는 효과를 갖는다.
네트워크가 깊을 때, 이 작은 수 n을 곱하면 0이 된다. (Vanishing, 소실).
네트워크가 깊을 때, 이 큰 수 n을 곱하면 너무 커진다. (Exploded, 폭발).
설명
Resnet은 깊은 신경망을 유지하면서도 이 문제를 해결하기 위한 알고리즘을 사용했다.
일반적인 망은 input x를 weighted lay, 활성함수를 거쳐 출력 H(x)를 만든다.
일반적인 망의 목표는 출력 H(x)를 얻기 위해 학습한다.
Resnet은 F(x)에 x를 그대로 더한 후 활성함수를 적용한다.(개선 이후에는 F(x)안에서 활성함수를 적용한다.)
즉, H(x) = F(x) + x가 된다.
Resnet은 이를 최소화하는 것을 목표로 학습하게 된다. 여기서 x는 변하지 않는 값이므로,
F(x)가 0이 되는 방향으로 학습을 한다.
F(x) = H(x) - x이기 때문에 F(x)를 학습한다는 건 나머지(Residual)을 학습한다는 것과 같다.
이 잔차를 최소로 하기 위한 Network라 Residual Network라고 한다.
Resnet의 특징.
1. 컨볼루젼 레이어에서 3x3 필터(커널)를 사용.
2. max-pooling, hidden fc, dropout 사용 안함.
3. 출력 특징 맵의 크기가 같은 경우 , 모든 레이어는 동일한 수의 필터로 설정.
4. 출력 특징 맵의 크기가 절반인 경우, 레이어의 연산량 보존을 위해 필터 수를 2배로 늘림.
5. 출력 특징 맵의 크기를 줄일 때, 풀링 대신 컨볼루젼 레이어의 스트라이드를 2로 설정.
6. 2개의 컨볼루젼 레이어마다 skip connection 연결.