-
Convolution기초_개념/Deep Learning 2021. 1. 18. 00:01
Standard 1D Convolution
- "Convolutional Neural Networks for Sentence Classification"에서 CNN을 Word Vector들에 적용하는 방법이 처음 등장하였습니다.
- Standard 1D Convolution은 입력벡터의 채널 ($d_{in}$), 출력 벡터의 채널 ($d_{out}$), 커널의 너비 ($k$)일 때, 총 $d_{in}\times d_{out}\times k$ 개의 파라미터가 필요합니다.
- 입력 시퀀스 $X \in \mathbb{R}^{n\times d_{in}}$와 커널의 가중치 $W \in \mathbb{R}^{d_{in} \times d_{out} \times k}$가 주어졌을 때 연산 결과 $Y \in \mathbb{R}^{n\times d_{in}}$ 다음과 같은 계산 과정을 통해 얻을 수 있습니다.
$Y_{r,c} = \sum_{i=1}^{d_{in}}\sum_{j=1}^{k}W_{i,c,j} \cdot X_{r+j-\left \lceil \frac{k+1}{2} \right \rceil, c} + b$
Standard 1D Convolution Depthwise Convolution
- Standard Convolution은 모든 채널에 영향을 받게 되지만, Depthwise Convolution은 연산량을 줄이기 위해 독립적인 단일 채널에 대해서만 수행되는 필터들을 사용합니다.
- Convolution이 같은 채널 내에서만 계산되어야 하므로 입력 시퀀스의 채널 수와 출력 시퀀수의 채널 수는 d로 일치하게 됩니다.
- 모든 커널의 가중치를 $W \in \mathbb{R}^{d \times k}$라고 할 때, Depthwise Convolution의 결과 $O \in \mathbb{R}^{n \times d}$을 얻습니다.
- 각 커널들은 하나의 채널에 대해서만 파라미터를 가지므로 각 채널 고유의 Spatial 정보만을 사용하여 필터를 학습할 수 있습니다.
- Depthwise Separable Convolution
- 채널의 출력 값이 하나로 합쳐지는 특징을 갖고 있습니다.
- 이는 Spartial Feature와 Channel-wise Feature를 모두 고려하여 네트워크를 경량화하는 방법입니다.
- 기존 Depthwise Convolution한 결과물에 각 채널을 1개의 채널로 압축할 수 있는 추가적인 Convolution을 진행하여 출력이 굉장히 간략하게 나오도록 하였습니다.
Lightweight Convolution
- Lightweight Convolution은 depthwise Convlution과 비슷한 구조를 갖지만 두 가지 특징이 추가된 Convolution 입니다.
- 연속된 $d/H$ 개의 채널마다 커널의 가중치를 공유한다. --> 커널의 수를 $dk$개에서 $dH$로 줄일 수 있습니다.
- 가중치를 타임 스탭방향으로 Softmax을 이용하여 Normalization 합니다.
- 아래 그램에서는 d=6, H=3이라고 하였을 때, (1,2),(3,4),(5,6) 채널에서 커널을 공유하게 됩니다.
Dynamic Convolution
- Dynamic Convolution은 Lightweight Convolution에서 커널을 타임 스탭에 의존하게 만드는 Convolution입니다.
- Lightweight Convolution에서 커널 중앙에 위치한 워드 벡터를 Linear Projection을 통해 커널의 가중치를 형성합니다.
- 그림에서 커널 중앙에 위치한 'love'를 Linear Projeciton하여 가중치를 생성한 뒤, lightweight convlution과 같은 연산을 수행합니다.
[1] eehoeskrap.tistory.com/431
[2] www.secmem.org/blog/2020/01/12/Pay-Less-Attention-with-Lightweight-and-Dynamic-Convolutions-review/'기초_개념 > Deep Learning' 카테고리의 다른 글
수치 미분과 기울기 (0) 2021.01.13 Normalization (0) 2021.01.12 Optimization (0) 2021.01.11 정규화 (0) 2021.01.05 Recurrent Neural Network (0) 2020.12.31 - "Convolutional Neural Networks for Sentence Classification"에서 CNN을 Word Vector들에 적용하는 방법이 처음 등장하였습니다.