ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Group Conv 그룹 컨볼루션
    딥러닝/기본 연산들 2022. 6. 3. 19:28

    그룹 컨볼루션의 정확한 정의를 알아보도록 하겠습니다. 각 그룹별 컨볼루션 커널은 공유되는 것일까요? 아닐까요? 정답은 아닙니다. 그럼 자세히 알아보도록 하겠습니다.

     

    정의에 따르면 일반적인 컨볼루션 커널의 차원수는 (배치 , X, Y, Depth) 인데 이 중 Depth 값이 현재 레이어의 Depth 전체입니다. 이렇게 무심코 컨볼루션을 써 왔다면 한 번쯤은 Depth의 값이 너무 길다는 사실에 의문을 가질 법 했습니다.

     

     

    그래서 컨볼루션 커널의 Depth 값을 줄여보고 싶었습니다. 그래서 탄생한 것이 Group Conv입니다. 

     

    그림에서 보듯이 Group Conv는 Depth를 3분할하여 각각에 대해 서로 가중치 값이 다르면서 Depth 길이가 1/3로 줄어든 1/3 컨볼루션을 차용하고 있습니다. 각 분할마다 적용되는 컨볼루션은 Depth가 기존 Depth의 1/3 수준이고 각 분할마다 전혀 별개의 독립적인 컨볼루션 커널을 사용합니다. 따라서 기존 컨볼루션에 비해 커널의 수가 늘어날 것으로 예상할 수 있습니다.

     

    그룹이란 단어를 분할 하나의 영역으로 정의하겠습니다. Group Conv에서는 각 그룹의 커널 수를 1/3로 제한할 수 있습니다. 그러면 어떻게 될까요?

     

    3분할 하였으므로 커널 수가 3배 늘어날 것으로 예상되었으나 각 분할 마다의 커널 수가 1/3로 줄어들었으므로 전체 커널 수는 일반적으로 우리가 알고 있는 Plain Conv 커널의 수와 동일해집니다.

     

    그런데 이러한 과정에서 (그룹 수, 각 그룹별 커널 수) 를 파라미터화 하여 자유자재로 커널의 개수를 늘렸다 줄였다 할 수 있습니다.

     

    따라서 Group Conv은 커널 수를 거의 자유자재로 변경할 수 있습니다. 다만 지금까지 예시로 든 3분할 그룹에서는 3의 배수로 늘어날 수 있겠습니다.

    댓글

Designed by Tistory.