[논문소개] Convolutional Neural Network with Layer Reuse

4503 단어 PyTorch파이썬CNN
CNN의 컨벌루션 레이어를 재사용함으로써 파라미터 수와 메모리 사용량을 대폭 줄일 수 있는 논문을 읽었으므로 요점을 정리합니다.

논문 링크



먼저 링크를 붙여 둡니다.
PDF
htps : // 아 rぃ v. rg / pdf / 1901. 09615. pdf
github
htps : // 기주 b. 코 m / 오간코 p / C 음 - r r 우세 / t 어 /

논문 개요



1. Introduction



AlexNet의 첫 번째 레이어의 가중치를 시각화하면 색이 바뀐 것처럼 매우 비슷한 가중치가 있습니다 (그림 2).


그러므로 많은 Convolution 레이어를 준비해도 쓸모가 없습니까?
아래 그림과 같이 Convolution 레이어를 재사용하면 매개 변수 수와 메모리 사용량을 줄일 수 있습니까? (그림 1)
이것을 이후 Layer Reuse Network (LruNet)라고 부릅니다.


2. Approach



2.1 Layer Reuse (LRU)



레이어 재사용은 다음과 같이 수행됩니다 (그림 3).
DwConv와 PwConv를 순서대로 작동시켜 입력을 concat시켜 채널을 셔플한다.
  • PwConv의 group=8는 실험적으로 얻은 값입니다
  • Channel ShufflesuffleNet을 참고로했지만 원래 구현에서는 처음과 마지막 채널이 셔플되지 않았기 때문에 단순히 채널의 전반과 후반을 바꿔서 셔플했다

  • (주) DwConv와 PxConv에 대해서 참고
    DwConv (depth wise convolution)
    htps //w w. 로보 ch-테. 코m/엔트리/2017/12/27/084952
    PxConv (pixel wise convolution)
    htps //w w. 허벅지 ch에서. 코m/엔트리/2017/12/24/191936


    2.2 NetworkArchitecture



    LruNet의 아키텍처는 다음과 같습니다 (Table 1)
  • N은 LRU Block을 몇 번 반복하는지를 나타냅니다.
  • 이 테이블에는 기재되어 있지 않지만, $\alpha$(width multiplier)라고 하는 변수가 있어, 이것은 최초의 Conv층의 출력을 몇배에 concat해 넓히는지의 값이다. (github에 width_mult라는 변수 이름으로 쓰여 있으므로 그쪽을 참조하면 알기 쉽다)

  • 이것들을 정리하여 N-LruNet-αx라는 이름으로 부르기로 한다.



    3. Experiments



    표 2는 각 종류의 LruNet의 CIFAR10에서의 정밀도를 보여준다.
    14-LruNet-1x가 가장 정밀도가 좋고, 그 이상으로 N을 크게 해도 정밀도의 향상은 보이지 않았다.
    Convolution층의 파라미터수는 모두 동일하게 125k이지만, N의 값이 커짐에 따라 파라미터수가 증가하고 있는 것은 Bach Normalization층이 늘어나기 때문이다.


    표 3은 channel shuffling을 더한 경우를 더하지 않은 경우의 정밀도를 보여준다.
    channel shuffling을 행하는 편이 정밀도가 좋아지는 것을 알 수 있다.


    표 4: 파라미터 수를 상당히 줄여 동등한 정밀도를 얻을 수 있음


    표 5: CIFER-100에서 수행한 결과
    width multiplier를 2로 하고 dropout을 0.7로 올려 실행하고 있다


    표 6: 패션 MNIST의 결과


    표 7 : 각 데이터 세트의 실행 결과 요약
    LruNet은 파라미터 수는 작지만 다른 모델과 거의 동등한 성능을 가지고 있습니다.

    좋은 웹페이지 즐겨찾기