공부/AIFFEL

풀잎스쿨 - DeepML(CS231N) Lec. 09

dong_dong_2 2021. 2. 22. 20:16

오늘은 저번에 못 본 9강을 전부 봤다.

저번에는 AlexNet을 배웠고, 오늘은 VGG, GoogLeNet, ResNet을 배웠다.

1. VGG

    - 매우 심플하고 딥한 모델이다.

    - 16 혹은 19층을 쌓았다.

    - 3x3 CONV stride 1, pad 1 and 2x2 MAX POOL stride 2를 사용했다.

    - 3x3을 쓰면서 7x7 필터를 쓰는 효과를 얻으면서 더 적은 파라미터를 만들어 계산비용을 줄였다.

2. GoogLeNet

    - 22개의 층을 가진다.

    - 인셉션 모듈을 가지고 있다.

    - 단지 5만개 파라미터만 가진다. (AlexNet에 비해 12배 적다)

    - 인셉션 모듈은 Multiple receptive field sizes for convolution (1x1, 3x3, 5x5), Pooling operation (3x3)을 가진다. 이 모든 필터를 병렬처리해서 output으로 가진다.

    - 딥해질수록 계산해야 할 파라미터가 많아져서 1x1 conv, 64 filter를 bottlenecks으로 가진다.

    - 처음은 다른 모델과 큰 차이가 없으나, 중간에 인셉션 모델을 가지고 계층을 쌓고, 중간 분류기도 설치하여 중간 Weight를 뽑아낼 수 있다. 마지막 레이어에는 평균값을 가지고 값을 낸다.

    - 연산량을 줄이기 위해 FC 계층을 거의 안쓴다.

3. ResNet

    - 일반적인 모델을 깊게 쌓으면 어떨까? 라는 생각에서 출발한다.

    - 해보니 train은 과적합, test는 엉망일 줄 알았는데 둘 다 엉망이였다.

    - 이 때 세운 가설이 계층이 깊어질 수록 optimization의 문제가 있을 거라는 가설을 세운다.

    - H(x) = F(x) + x의 식에서 기존에는 적합한 H(x)를 찾았는데 이 모델은 적절한 F(x)를 찾는것이 목적이다. 그럼 F(x) = H(x) - x가 되고, 이전 레이어의 x값을 더해주면서 적절한 F(x)를 찾는 것이다. 이 F(x)를 Reresidual라고 하는 듯하다.

    - 모든 residual block은 두 개의 3x3 conv 레이어를 가진다.

    - GoogLeNet에서 사용한 bottlenecks처럼 50층마다 1x1 conv + 3x3 conv + 1x1 conv의 식으로 1x1 conv를 했다.

    - 이 모델은 그 해 다른 여러 대회에서도 2등과 큰 격차로 1등을 차이했다.

4. 나머지 알아두면 좋은 모델들을 몇 가지 설명한 듯 하나 이 강의의 중점이 아닌듯 하다.