CV - 4. ResNet

최창우·2022년 11월 15일
0
post-thumbnail

📌목차

1. ResNet 개요
2. Residual Connection
3. ResNet 구조

✔️ 기억할용어

Residual Connection (Skip Connection)
BottleNeck

📕 ResNet 개요

논문명 :마이크로소프트에서 개발한 "Deep Residual Learning for Image Recognition"

층수에 있어서 ResNet은 급속도로 깊어진다. 2014년의 GoogLeNet이 22개 층으로 구성된 것에 비해, ResNet은 152개 층을 갖는다. 신경망이 훨~씬 깊어진 대신 성능이 증가했음

  • Top-5 Error 3.57 달성

하지만 생각해볼것은 신경망을 깊게쌓으면 성능이 무조건 좋아지는가?

  • ResNet 저자들이 비교한 20층/56층 신경망 테스트 결과를 보자
  • 56층이 20층보다 성능이 낮은것을 확인할 수 있음.
  • 즉, 신경망을 깊게쌓는다고해서 성능이 좋아지는게 아니다.

저자들이 신경망을 152층까지 쌓으면서 성능을 끌어올릴 수 있었던 이유는
Residual Connection (Skip Connection) 을 사용했기 때문.

📕 Residual Connection

아래 그림에서 오른쪽이 Residual Block을 나타낸다. 기존의 망과 차이가 있다면 입력값을 출력값에 더해줄 수 있도록 지름길(shortcut)을 만들어 주었음

📖 기존 신경망

기존의 신경망은 입력값 x를 가상의함수 H를 통과한 결과값 H(x)가 우리가 원하는 타겟값 y와 같아지기를 원함.
> 의미 : y=H(x)가 되는 H(x)를 찾자!

📖 ResNet 관점

입력값 x를 가상의 함수 F를 통과한 결과값 F(x)와 원래 입력값 x를 더한값이 우리가 원하는 타겟값 y와 같아지기를 원함
> 의미 : y=F(x)+x 가 되는 F(x)를 찾자
> 의미 : H(x)=F(x)+x 이므로, y=H(x) 가 되는 H(x)를 찾자
> 솔직히 크게와닿지않는다...생으로 코딩해봐야 알거같다...

  • F(x)=H(x)-x이므로 F(x)를 최소로 해준다는 것은 H(x)-x를 최소로 해주는 것
  • 여기서 H(x)-x를 잔차(residual)라고 함
  • 즉, 잔차를 최소로 해주는 것이므로 ResNet이란 이름이 붙게 되었음.
  • 결과값인 H(x) 를 미분해주어도 x항이 항상 1값을 가지기 때문에 Gradient Vanishing 문제가 해결

📖직관적 이해

  • 이전에 학습된 결과물이 x, 이제 배울 내용이 F(x)
  • 이전에 학습한 x는 넘어오기때문에 F(x)만 학습하면된다.
    - 즉, 이전에 학습한걸 다시더해주기 때문에 시험범위가 1~6장일때, 1~5장은 오픈북인셈

수식적으로 이해하기 위한 사이트 : 참고

📕 ResNet 구조

레이어 구조가 총 5개 제시되어있음

  • 18-Layer / 34-Layer : 3 x 3 Conv layer로 구성
  • 50-Layer / 101-Layer / 152-Layer : 3 x 3 과 1 x 1 Conv layer 로 구성
  • 3 x 3 Conv layer 만 쓰는 형태에서 1 x 1 Conv layer를 추가한 형태로 변경한 이유는
    이전 방법론들에서도 나왔지만, 당연하게도 학습파라미터를 줄이기 위함이다.
  • 3 x 3 과 1 x 1 Conv layer 로 구성된 형태를 Bottleneck이라 하는데, 그 이유는
    1 x 1 를 지나면서 채널수를 줄였다가, 3 x 3 통과할때 채널수 유지, 다시 1 x 1 지나면서 채널수를 늘리기 때문

📚 Reference

https://bskyvision.com/entry/CNN-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EB%93%A4-ResNet%EC%9D%98-%EA%B5%AC%EC%A1%B0
https://gaussian37.github.io/dl-concept-densenet/

profile
유능한 개발자가 되고 싶은 헬린이

0개의 댓글