ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ResNet의 잔차 아이디어
    딥러닝/CNN 모델 2022. 6. 5. 08:25

    ResNet은 2015년 처음 공개되었습니다. Residual (잔차) 란 새로운 개념을 적용하였는데 이 잔차에 대해 알아보겠습니다.

     

    서문

    영어로는 Residual Connection (shortcut) 한국어로 잔차라고 합니다. 일찍이 알파고가 처음 나왔을 시절 장병탁 교수님이 지은 저서에 잔차를 강조한 부분이 얼핏 있었던 것으로 기억납니다. 그때 저는 딥러닝이 아닌 옛날 머신러닝을 한참 공부하고 있었던 병아리로써 이해가 되지 않았던 책이지만 잔차란 단어는 지금도 기억납니다.

     

    딥러닝에서는 어떠한 목적을 가진 가중치 흐름이 여러 개가 있을 수 있습니다. 그 흐름들 중 일부 또는 전부를 모델이 진행됨에 따라 계속해서 합쳐지거나 분화됩니다. 그 중 퓨전 행위는 합치는 행위를 뜻합니다. 잔차는 일종의 퓨전 행위에 속합니다.

     

    잔차 Residual

    잔차는 두 레이어의 행렬 합을 통해 새로운 레이어를 만드는 퓨전 행위입니다. 행렬 합을 하려면 두 레이어의 차원 수가 완전히 동일해야 합니다. 행렬 합이 가능해야 하니까요. 이게 의외로 약간 까다롭습니다. 한 레이어의 차원 수는 어떻게 생각하는지에 따라 약간 다르지만 (배치 사이즈, X, Y, 채널) 또는 (배치 사이즈, 채널, X, Y)인데 이 4개 차원 수가 모두 동일한 두 레이어끼리 연산이 가능하다는 뜻이지요. 참고로 pytorch 코딩에서는 (배치 사이즈, 채널, X, Y) 차원 표기법이 맞습니다.

     

    그래서 잔차 블록을 정의할 때 이렇게 두 가지 경우로 나뉘어집니다.

    그림에서 ReLU는 생략하였습니다. 그림을 보면 입력 Depth가 256이었는데 한번 잔차 없는 Conv 1x1, Conv 3x3, Conv 1x1을 거치고 나서 Depth가 512이 됩니다. 그 후 잔차 커넥션이 동작합니다. 잔차는 Depth 차원까지 완전히 동일한 두 레이어에 대해서 연산이 되니까요. 두 번째 이터레이션부터 잔차가 기능합니다.

     

    이렇게요.

    잔차는 이후에 나오는 DenseNet의 CAT (Concatination) 과 다른 퓨전 방식입니다. CAT은 채널 차원으로 잇는 것이기에 (배치 사이즈, X, Y, 채널) 4차원 중 채널을 뺀 (배치 사이즈, X, Y) 3차원 수만 같으면 적용 가능합니다.  저는 CAT을 좀 더 선호하고 있습니다.

     

    잔차를 보통 residual, shortcut, skip connection 이라고 합니다.

    '딥러닝 > CNN 모델' 카테고리의 다른 글

    네이버 RexNet 논문  (0) 2022.06.10
    DenseNet의 아이디어  (0) 2022.06.09

    댓글

Designed by Tistory.