새소식

딥러닝

무엇에 주목할 것인가 ? Channel attention

  • -

Transformer 는 Attention 기반의 아키텍쳐입니다. 그렇다면 Attention 이란 무엇일까요 ?

 

기계 학습을 위해 다양한 학습 방법이 강구되어오고 있지만, 사람이 어떤 식으로 학습하는지를 관찰하고 이를 모방하는 것으로 많은 연구들이 진행되어오고 있습니다. 이때, 사람은 어떤 것에 "주목" 하는 것을 자연스럽게 하고, 이것이 학습에 매우 중요합니다.  

 

우리는 정보를 모두 동일한 중요도로 처리하지 않고, 강조해야 할 특정 부분에 주목함으로써 한정된 brain resource 의 효율성을 높입니다. 따라서 딥러닝에서도 어텐션을 통해 특정 information 에 가중치를 둠으로써 정해진 리소스를 효율적으로 사용하고, 추가적으로 noise 를 저감하는 효과가 있습니다. 

 

Attention

그렇다면 다음과 같은 질문을 할 수 있습니다. 

 

1. 무엇에 주목할 것인가 ? 

2. 어디에 주목할 것인가 ? 

3. 언제 주목할 것인가 ? 

 

질문들에 대한 대답은 다음 task 로 정의됩니다. 

 

1. Channel Attention

2. Spatial Attention

3. Temporal Attention

 

Attention 은 다음과 같은 식으로 크게 나타낼 수 있습니다. 

 

어떤 정보 x 가 있을 때, g(x) 는 x 에 대한 가중치를 계산하고, 이렇게 계산된 가중치 (중요도) 와 나 자신을 함께 고려하여 (f(x)) 최종 결과를 낸다는 것입니다. 

 

Channel Attention

 

Generate attention mask across the channel domain and use it to select important channels

 

  • Channel attention adaptively recalibrates the weight of each channel
  • Channels are closely related to feature extraction (Filters)

 

Convolution 을 하게 되면 convolution 필터의 갯수만큼 채널이 생성되게 됩니다. 이 중 어떤 채널이 중요한 채널이고, 어떤 채널이 중요하지 않은 채널일까요 ?

 

채널은 "어떤 특징에 대한 결과" 라고 할 수 있습니다. Convolution 에서는 Filter 에 대한 operation 이 한 번 수행될 때마다 채널이 하나 생성됩니다. 

따라서 채널이 8개라면, 우리는 8개의 서로 다른 n by n 커널을 사용하여 필터를 적용한 결과라고 할 수 있습니다. 

필터를 적용하면 해당 필터에 맞는 특징들만이 결과 (응답값) 로 나오게 됩니다. 

 

따라서 특정 채널에 Weight 을 준다는 것은, 이미지에 따라서 중요한 특징을 선별한다는 것과 같습니다. 

 

예를 들어 "자동차" 를 학습을 시키면 타이어 , 창문, 헤드라이트... 등 자동차의 눈에 띄는 특징을 찾아내는 필터에 더 중요한 가중치를 부여하면 모델이 자동차를 더 잘 찾아낼 수 있다는 것입니다. 

 

SENet (Squeeze -and-Excitation Networks)

 

SENet 은 Channel Attention 의 원조라고 할 수 있습니다. 

 

CNN의 경우, 채널은 다음과 같은 특징들이 있습니다. 

  • Implicit : 채널 간의 의존성은 필터가 포착하는 공간적인 패턴과 밀접하게 관련이 있다. 
  • Local : Convolution 이 결국 Receptive Field 안에서의 상호 작용이다. 

SENet 은 채널간의 관계를 이용합니다. 

implicit 한 채널간의 관계를 explicit 하게 이용하기 위해서, NN 에 채널 간의 관계를 입력해 주고, local 한 채널 간의 관계를 global 하게 만들어줍니다. 

 

  • Representational power of a network can be enhanced by channel relationships
  • Design a new architectural unit
    • Explicitly model interdependencies between the channels of convolutional features
    • Feature recalibration
      • Selectively emphasis informative features and inhibit less useful ones
      • Use global information

\(F_{tr} \) 은 X 라는 input 을 U 라는 Feature map 에 매핑하는 함수입니다. 이 프로세스는 2D convolution 과 동일합니다. 

v 라고 하는 c 개의 커널들을 이용해서, 커널들 하나마다 결과물이 2D 로 나오므로, 커널 수 만큼 U (채널) 이 정의됩니다. 

 

Squeeze 와 Excitation 은 Module 의 형태이기 때문에, 어디에도 붙을 수 있습니다. 

 

예를 들어, Inception 의 결과에 SE 블록을 붙여서 원래 나온 채널에 가중치를 줄 수도 있고, ResNet 같은 경우 Residual 로 나온 결과에 SE 블록을 붙여서 채널별로 가중치를 부여해 이 결과에 다시 곱할 수도 있습니다. 

 

이때 Scale 은 원래 값에 가중치를 곱하는 과정을 뜻합니다. 

 

SE 블록의 연산 단계

 

1. Squeeze 

채널별로 avarage pooling 을 하는 과정입니다. 이 연산은 공간 차원을 제거하고 채널별 정보만을 남깁니다. 

채널별로 평균값을 내서, 1-dimension 으로 만듭니다. 이 average 값들의 weight 는 학습을 통해서 구하게 됩니다. 

하지만 이 C 를 바로 Fully-connected layer 로 학습하게 되면, 파라미터가 너무 많아지게 됩니다. 따라서 이 C 를 줄인 다음에 다시 늘려서 사용하게 됩니다. 이를 Bottleneck 이라고 합니다.  

 

Squeeze 의 역할은, Global Information Embedding 이라고 할 수 있습니다. 전체적인 정보를 줄여서 요약하는 것과 같습니다. 

 

2. Excitation

 

반면에 Excitation 의 역할은, Adaptive Recalibration 입니다. Recalibration 은 가중치를 새로 구하는 것입니다. 

 

두 개의 Fully connected layer 을 사용해서 채널별 정보를 재조정하게 되는데, 첫 번째 FC 레이어는 압축된 채널 정보를 줄이는 역할을 하며, 두 번째 FC 레이어는 원래의 채널 수로 복원합니다.

 

이 과정은 Sigmoid 함수를 통해서 이루어집니다. Sigmoid 함수를 통과하게 되면, 0~1 사이에 값을 가지게 됩니다. 

여기서 는 시그모이드 활성화 함수, 는 ReLU 활성화 함수, 는 FC 레이어의 가중치입니다.

 

3. Rescale

가중치를 해당 채널에 Channel-wise 로 곱해줍니다. 

 

SENet의 핵심 아이디어는 채널 간의 상호 의존성을 학습하여 중요한 채널에 더 많은 가중치를 부여하고, 덜 중요한 채널의 정보를 억제하는 것입니다. 이로 인해 네트워크의 표현력이 향상되며, 여러 벤치마크 데이터셋에서 높은 성능을 달성하게 됩니다.

 

Source Code

 

다음은 SE 모듈을 구현하는 코드입니다.

class SELayer(nn.Module):
	def __init__(self, channel, reduction=16):
    	super(SELayer, self).__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
        	nn.Lindar(channel, channel // reduction, bias = False),
            nn.ReLU(inplace=True)
            nn.Linear(channel // reduction, channel, bias = False),
            nn.Sigmoid()
        )

 


위 내용은 경희대학교 소프트웨어융합학과 황효석 교수님의 2023년 <심층신경망을 이용한 로봇 인지> 수업 내용을 요약한 것입니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.