Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deep Residual Learning for Image Recognition #23

Open
chullhwan-song opened this issue Jul 20, 2018 · 1 comment
Open

Deep Residual Learning for Image Recognition #23

chullhwan-song opened this issue Jul 20, 2018 · 1 comment
Labels

Comments

@chullhwan-song
Copy link
Owner

https://arxiv.org/abs/1512.03385%5C

@chullhwan-song
Copy link
Owner Author

  • 특징
    • 고민은 googlenet과 비슷해보임. 깊어질수록 gradient vanishing/expoding등의 문제로 학습이 안된다.
      image
      • 위의 이미지에서, 단순히 깊어질수록 오차가 더 증가함.
    • resnet은 이러한 문제를 해결하여 기존의 net보다 뛰어난 성능을 발휘
    • 152 layer가 기본
      • paper에서는, 50, 101등의 layer가 있음
      • 이후, 1k layer도 등장.
    • identity mapping 핵심.
      image
      • 첫번째는 단순이 알고있는 net
        • input x -> 2개의 weight layer -> H(x) : 2개의 stack 구조
        • 이때, net에서의 목표가 H(x)아니라, H(x)-x 라면,
          • 입력과 아웃풋의 차의 개념을 학습한다는 의미.
          • 다시말해서, 2개의 weight layer 는 H(x)-x 를 얻도록 학습한다는 의미
          • F(x) = H(x)-x 이고 H(x) = F(x)+x 가 된다. 이러한 형태를 얻기 위해서는 아래의 identity mapping 이라는 shortcut 연결이 필요하다.
      • 두번째가 identity mapping 이를, residual net이라고 부른다.
        • skip 매카니즘이라 부름.
        • residual란 의미는 "어떤 과정이 끝나서 나온 잔여" 의미한다.
        • (위의 설명과 residual의 의미를 되짚어 보면서) identity mapping은 그냥 x 값이 추가는 단순한 구조이다.
        • 이는 다음과 같은 장점을 지님
          • 만약 최적의 경우라면, F(x) = 0이고, 학습의 방향을 미리 설정할수 있음.
          • 입력의 작은 움직임도 쉽게 감지. -> 이런 의미에서, F(x)가 작은 변화를 학습한다는 의미 있며, 이를 residual learning이라고 부름.
          • identity mapping은 그냥 x 값이 추가되는 구조이므로, parameter수는 크게 증가하지 않음.
          • 연산량 측면에서는 덧셈만 증가할 뿐임.
          • layer를 몇단계 건너뛰는 효과도 있어서, for/backward가 단순해지는 효과도 존재.
        • 설계의 철학
          • VGG 3x3 kernel
          • max pooling 1번만
          • fc, dropout를 사용하지 않음.
          • output feature map의 크기가 같은 경우, 관련 layer는 모두 동일한 수의 filter
          • feature map이 절반으로 줄어들면, 연산량 균형을 맞추기 위해 filter = x2
          • filter의 수를 줄 일경우, pooling이 아닌, stride =2를 적용.
            image
        • bottlenet에 의한 구조 변경
          • 1x1 kernel 적용
            image
            • 첫번째는 dimension를 줄이기 위해
            • 두번재는 dimension을 확대하기 위해
            • 결과적으로, 3x3 kernel를 두번 사용하는 것보다, 연산량을 줄임.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant