1. Abstract
- Depthwise separable convolution 사용
- Xception으로 부터 영향을 받음
- parameter와 연산의 수를 줄이지만, 설명력은 높여줌
- convolution의 window를 증가시키고, byteNet의 dilation을 모델에서 삭제
2. Introduction
- auto-regressive convolution model
- 여태까지 예측한 것을 사용하여 다음에 나올 것을 예측하는 모델. 따라서, RNN처럼 여러 번 모델이 반복되는 구조를 가지게 된다.
- 단, Encoder 부분은 반복될 필요가 없이 convolution으로 한 번에 처리가 되므로 decoder 부분에서만 output의 길이만큼만 반복되면 된다.
- RNN과 같이 순차적으로 처리하지 않아도, 한 번에넓은 범위의 time을 고려할 수가 있음
- 하지만, convolution을 위한 parameter증가와 연산량의 증가가 문제가 됨
- 이를 해결하기 위하여 Depthwise separable convolution 사용
3. Contribution
- Depthwise separable convolution with residual connection
- parameter를 효과적으로 줄임
- channel과 space를 따로 연산
- Super-separable convolution
- Sub-separable convolution(grouped convolution)의 변형
- dilation기법 삭제
- convolution의 window를 크게 만들어서 대체
3.1 Separable convolutions and grouped convolutions
- regular convolution
- =
- pointwise convolution
- =
- 1x1 convolution
- ~ 의 정보를 합침, 즉, 모든 channel의 정보만 연산
- depthwise convolution
- =
- channel과는 독립적인 spatial한 convolution
- d-th channel의 ~ 의 정보를 합침, 즉, 한 channel내의 spatial한 정보만 연산
- depthwise separable convolution
- =
- depthwise convolution을 한 후, pointwise convolution
- spatial feature combination step과 channel combination step의 분리
- 같은 channel내의 feature끼리는 highly correlated 되어 있지만, 각 channel끼리는 다른 filter를 적용했으므로 독립적이다. 따라서, 각 channel의 feature를 연산한 후 각 channel간의 정보를 나중에 합쳐야한다. 하지만 기존의 convolution은 이 두 개를 한 번에 처리해야 했으므로 inefficient하며 feature의 특성을 제대로 반영할 수 없다.
- sub-separable convolution(grouped convolution)
- =
- input tensor의 channel을 g등분한 후, 각각에 대하여 regular convolution을 하고, 다시 concatenation
- regular convolution과 depthwise separable convolution의 중간에 위치
3.2 Super-separable convolutions
- super-separable convolution
- =
- input tensor의 channel을 g등분한 후, 각각에 대하여 depthwise separable convolution을 하고, 다시 concatenation
3.3 Parameter count comparison across convolution types
Convolution | Filter Size | Number of Parameters |
---|---|---|
regular | $$W \times H \times D$$ | $$(n^{2} \times c) \times c$$ |
depthwise separable | $$W \times H + D$$ | $$(n^{2} + c) \times c$$ |
g-sub-separable | $$\frac{W \times H \times D}{g}$$ | $$(n^{2} \times \frac{c}{g}) \times c$$ |
g-super-separable | $$W \times H + \frac{D}{g}$$ | $$(n^{2} + \frac{c}{g}) \times c$$ |
- = filter width&height
- = input&output channel
- = number of group
3.4 Filter dilation and convolution window size
- dilation
- convolution의 receptive field를 parameter의 증가 없이 넓혀주기 위하여 사용
- 주로 auto-regressive convolution model에서 사용
- dilation의 단점
- dilation을 하게되면, checkboard artifacts와 같이 특정 부분만 여러번 연산되는 문제가 발생한다.
- 따라서, 적게 포함 되는 부분은 상대적으로 중요하지 않게 여겨져 dead zone이 되어버린다.
- 해결책 by increasing window size
- 애초에 dilation은 receptive field를 넓히기 위해 고안 된 것
- 따라서, convolution의 window를 넓혀주면 unequal convolutional coverage 문제가 사라짐
- 그동안은 parameter 수의 증가가 문제가 되었지만, depthwise separable convolution을 통해 parameter가 많이 감소했으므로, window 크기를 증가시켜도 parameter의 수가 크게 문제되지 않음
4. SliceNet Architecture
- input과 output을 다른 NN에서 embedding 한 후, decoding 하기 전에 concatenate하는 방식으로 auto-regressive한 모델을 만듦
4.1 Convolutional modules
- Convolution step
- =
- ReLU -> Depthwise separable convolution -> Layer Norm의 순서로 구성
- Convolution module
- =
- =
- =
- =
- =
- = k-stacked
- Convolution step과 resNet으로 구성
4.2 Attention modules
- Attention
- =
- shape = [input_length, hidden_size]
- shape = [output_length, hidden_size]
- inner product attention
- source과 target를 내적한 후 Softmax를 취해주므로, input과 target이 비슷한 것이 1에 가까워진다.
- 이 값을 다시 source와 pointwise product하므로 target과 비슷한 source의 element만 남게된다.
- timing
- =
- =
- 위의 sin function, cos function을 concatenate하여 timing vector를 만듦
- shape = [k, hidden_size]
- positional information을 부여(cos과 sin이 있으면 정확한 위치를 알 수 있다.)
- Attention modules
- =
- =
- target에 timing이 더해지므로, source의 각 vector가 어느 곳으로 주로 가는지를 파악할 수 있음
4.3 Auto-regressive structure
- Long term dependency
- Long term dependency를 가지는 경우 NMT에서 좋은 성능을 보여줌
- auto-regressive model은 바로 전에 생성된 output뿐만 아니라 이전의 모든 output에 의존하므로 long term dependency가 높은 편
- sliceNet은 window를 넓혀 recpetive field의 크기를 증가시켜 long term dependency를 높임
4.3.1 Architecture component
- InputEncoder
- =
- convolution을 통해 source vector를 encoded vector로 만듦
- convolution을 하게되면 위치정보가 고려되지 않으므로 timing을 추가하여 encoding
- IOMixer
- =
- encoding된 source vector와 여태까지 생성된 output의 attention을 구하여 encoded vector에 pointwise product해주므로, 각 time step마다 encoding 된 vector의 중요한 부분이 강조된다.
- attended&encoded vector와 여태까지의 output이 concat되어 다음 output을 생성할 feature가 만들어진다.
- AttnConvModule
- =
- 현재의 정보와 관련 있는 source를 attention을 통하여 강조하여 이것을 현재 정보에 더해주는 방식으로 중요한 부분 강조
- 현재의 정보란, 를 의미하는 것으로, Decoder에서 의 결과를 의미한다.
- Decoder
- =
- 기본적인 Seq2Seq 모델처럼 encoded vector를 처음 한번만 사용하는 것이 아니라, 각 time step마다 계속 사용
- source와 여태까지의 output의 정보를 종합하여 새로운 output을 만들어 줌
4.3.2 Model Architecture
- =
- =
- 위의 과정이 지정된 output의 길이만큼만 반복된다.
4.3.3 효과
- Source Encoding 단계
- source를 encoding할 때 RNN처럼 source length만큼 반복할 필요 없이 한 번만 convolution을 통해 encoding하면 된다. 즉, convolution을 사용하기 때문에 정보를 빠르게 encoding할 수 있다.
- convolution을 통하여 한 번에 넓은 범위의 time을 고려할 수 있어서 long term dependency도 넓다.
- convolution을 통하여 더 많은 parameter를 사용하므로 source의 정보를 효율적으로 표현할 수 있다.
- convolution을 할 때 위치정보 timing를 추가하기 때문에 sequential한 data를 한 번에 처리 가능하다.
- 원하는 만큼 Module을 쌓아서 layer를 stacking하는 효과를 보일 수 있다.
- Output Embedding 단계
- convolution을 사용하므로 RNN처럼 바로 직전의 output만 사용하는 것이 아니라, 더 넓은 범위의 output을 사용할 수 있다.
- Attention 단계
- encoding된 source로 attention을 구할 수 있으며, attention을 사용하여 다음 output에 더 도움되는 부분을 강조할 수 있다.
- Decoding 단계
- 를 통해 나온 vector를 separable convolution을 통해 더 빠르고 효율적으로 decoding할 수 있다.
- 원하는 만큼 Module을 쌓아서 layer를 stacking하는 효과를 보일 수 있다.
5. Related Work
- Xception
- byteNet
- waveNet
- mobileNet
6. Experiments
- depthwise separable convolution의 성능이 paramter의 수가 regular convolution보다 적지만, 성능은 훨씬 좋다.
- sub-separable convolution은 depthwise separable convolution보다 살짝 성능이 안좋다.
- group의 크기가 작아질수록 성능이 좋아지는데, 이것은 depthwise separable convolution에 가까워지기 때문이다.
- dilation의 필요성이 사라졌다.
- dilation을 없애고, window의 크기를 키우면 성능이 더 좋아지거나, 최소한 유지된다.
- super-separable convolution의 성능이 depthwise separable convolution보다 좋다.
7. Conclusion
- dilation은 굳이 필요하지 않은 기법이다.
- depthwise separable convolution을 통해서 더 넓은 window를 가진 convolution을 사용하면 된다.
- 모든 regular convolution이 depthwise separable convolution으로 대체되길 기대한다.