Squeeze-Excitation Network

김당찬·2022년 8월 16일
0
post-thumbnail

Multivariate LSTM-FCN

이번 글에서는 저번에 살펴본 단변량 시계열 분류모형인 LSTM-FCN을 다변량으로 확장한 Multivariate LSTM-FCN을 살펴보도록 할 것이다. 모형의 근본적인 구조는 LSTM-FCN과 동일하지만 convolutional layer들에서 Squeeze and Excite 라는 새로운 블록이 추가된다. Squeeze and Excite 블록은 본래 합성곱 신경망을 발전시키는 과정에서 고안된 네트워크인데 여기서는 LSTM-FCN의 합성곱 부분에 이를 응용한 것이다. 먼저, 네트워크의 전체 구조는 다음과 같다.

Squeeze-Excitation Block

Squeeze-Excitation block(SE block, Hu et al.)은 텐서의 변환 연산 Ftr:XU,  XRW×H×C,URW×H×C\mathbf F_{tr} : \mathbf X\to \mathbf U,\;\mathbf X\in\mathbb R^{W’\times H’\times C’},\mathbf U\in \mathbb R^{W\times H\times C} 에 대응하는 계산 블록(computational block)을 의미한다.
즉, 여기서 다루고자 하는 Convolutional network에 대해선 변환 연산 Ftr\mathbf F_{tr}은 합성곱 연산에 해당하며, SE block은 각 합성곱 블록에 대응하는 구조로 사용된다. Transformation Ftr\mathbf F_{tr}의 계산 결과는 U=[u1,u2,,uC]U = [\mathbf{u_1,u_2,\ldots,u}_C] 의 형태로 주어지는데, 각 성분벡터는

uc=vcX=s=1Cvcsxs\mathbf u_c = \mathbf v_c\ast\mathbf X = \sum_{s=1}^{C’}\mathbf v_c^s \ast \mathbf x^s

으로 주어진다. 이때 연산 \ast는 합성곱 연산(convolution)을 의미하며, input data는 X=[x1,,xC]\mathbf X = [\mathbf{x^1,\ldots,x^{\rm C’}}]로 나타냄을 의미한다. 또한, 전체 합성곱 연산(convolutional operator)은

V=[v1,,vC]\bf V = [\mathbf v_1,\ldots,\mathbf v_C]

로 주어지는데, 각 vc\mathbf v_c 는 c번째 합성곱 필터를 의미하며, 필터의 각 채널(single channel)을 2차원 커널 vcs\mathbf v_c^s로 나타난다.
위와 같이 정의되는 합성곱 블록에 대해, SE block은 Squeeze와 Excitation의 두 단계에 걸쳐 연산을 수행한다.

Squeeze

Squeeze block은 말 뜻 그대로 입력 벡터의 정보를 추출하며 차원을 축소시키는 계산인데, 이 과정은 전역 평균 풀링(global average pooling)을 이용한다. 이때 차원의 축소는 각 채널을 기준으로 이루어지는데, 앞서 언급한 feature map U\mathbf UU\mathbf U의 두 차원(H×WH\times W)으로 축소시켜 각 채널에 대한 통계량 z={z1,,zC}RC\mathbf z=\{z_1,\ldots,z_C\}\in \mathbb R^C 를 얻는다. 즉,

zc=Fsq(uc)=1H×Wi=1Hj=1Wuc(i,j)z_c = \mathbf F_{sq}(\mathbf u_c) = {1\over H\times W}\sum_{i=1}^H\sum_{j=1}^W u_c(i,j)

와 같이 얻어진다. 이렇게 얻어진 임베딩 벡터(embedding)은 아래 설명할 excitation 블록에 대입되어 다시 차원이 증강된다.

Excitation

앞서 Squeeze block을 통해 얻은 정보(임베딩) z\mathbf z를 바탕으로, Excitation block에서는 채널간의 종속성(dependency)를 알아내는 것을 목표로 한다. 따라서 임베딩 zRC\mathbf z\in\mathbb R^C 성분(채널)간의 관계를 모수화하는 parameter WRC×C\mathbf W\in \mathbb R^{C\times C}가 사용되어야 한다. 다만, 여기서 하나의 모수 행렬만 사용하게 되면 세 개 이상의 채널간의 상호작용(non-mutually-exclusive한 항)을 고려할 수 없으므로, 다음과 같이 두 개의 게이트(gate)로 구성하게 된다.

s=Fex(z,W)=σ(W2ReLU(W1z))\mathbf s = \mathbf F_{ex}(\mathbf{z, W}) = \sigma(\mathbf W_2\cdot\rm{ReLU}(\mathbf{W_1z}))

이때 행렬 WRC×C\mathbf W\in\mathbb R^{C\times C}는 두 행렬 W1RCr×C\mathbf W_1\in\mathbb R^{{C\over r}\times C}W2RC×Cr\mathbf W_2 \in \mathbb R^{C\times{C\over r}} 로 나뉘어진다. 이러한 방식으로 bottleneck 구조를 만드는 것은 모델의 복잡성을 제어하고 일반화를 돕기도 한다(bottleneck 정도는 reduction ratio rr에 의해 결정된다).

다만, 위 식의 출력(activation)은 합성곱 블록의 출력형태와 일치하지 않으므로, rescaling 과정이 필요하다. 최종 출력 데이터가 X~=[x1~,,x~C]\tilde{\mathbf X} = [\tilde{\mathbf x_1},\ldots,\tilde{\mathbf x}_C] 로 표현될 때, 각 성분은 다음과 같이 얻어진다,

x~c=Fscale(uc,sc)=scuc\tilde {\mathbf x}_c = \mathbf F_{scale}(\mathbf u_c,s_c) = s_c\mathbf u_c

여기서 ucRH×W\mathbf u_c\in\mathbb R^{H\times W} 는 앞서 다룬 feature map(convolutional transformation)을 의미한다.

앞에서 살펴본 Squeeze-Excitation Block의 전체적인 흐름을 요약하면 다음 그림과 같다.

References

  • Squeeze and Excitation Networks, Hu et al.
  • Multivariate LSTM-FCNs for Time Series Classification, F.Karim et al. 2018.
profile
블로그 이사했습니다 https://ddangchani.github.io

0개의 댓글