DevelopHyun

Data Science & Algorith with Computer Science

sliceNet[1] Depthwise Separable Convolutions for Neural Machine Translation(2017) - Review

03 Apr 2018 » deeplearning, slicenet, paperreview

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

ConvolutionFilter SizeNumber 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

slicenet

  • 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하는 효과를 보일 수 있다.

  • Xception
  • byteNet
  • waveNet
  • mobileNet

6. Experiments

result

  • 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으로 대체되길 기대한다.

8. Reference