[딥러닝]/[NLP]

[NLP] - TextCNN

딥러닝 도전기 2021. 11. 10. 02:09

[NLP] - TextCNN

이번 포스팅에서는 TextCNN에 대해 다루어 보도록 하겠습니다.

 

TextCNN에서는 Filter가 문장을 스캔하며 문맥적 의미를 파악합니다.
TextCNN의 진행 과정은 다음과 같습니다.

1. Word embedding vector를 input으로 받음
2. Filter와 Word embedding vector의 convolution 연산을 통해 feature map 생성
3. activation function을 통해 feature map을 activation map으로 사상
4. 각 activation map을 max pooling하여 concatenation
5. concat한 벡터를 fully-connected layer의 input으로 넣은 후 classification
  • TextCNN의 장점

문장의 문맥적 의미를 파악하는 과정에서 정보를 집약 → 연산속도 향상

분류 문제에서 RNN보다 좋은 성능을 보임

 

  • TextCNN architecture

 

[Y. Kim] Convolutional Neural Networks for Sentence Classification (2014)

위의 그림은 TextCNN을 발표한 김윤 박사님의 논문 「Convolutional Neural Networks for Sentence Classification」 입니다.

 

input은 $n$개의 단어를 $k$차원으로 embedding 한 word embedding 입니다.

TextCNN에서는 embedding dimension과 filter의 가로size가 동일해야 합니다.

 

  • 아래는 filter size가 2일때 input과 filter의 convolution 연산을 통해 feature map이 형성되는 과정입니다. 

$c_1$ 생성
$c_2$ 생성
$c_3$ 생성
~$c_8$ 생성, activation function $F$를 통해 activation map으로 변환

 

  • 아래는 filter size가 3일때 input과 filter의 convolution 연산을 통해 feature map이 형성되는 과정입니다. 

$c_1$ 생성
$c_2$ 생성
~$c_8$ 생성, activation function $F$를 통하여 activation map으로 변환

 

위에서 살펴본 과정을 통하여 feature map과 activation map이 형성됩니다.

 

본 논문에서는 filter size를 2, 3, 4의 세 가지를 사용하여 실험을 진행하였습니다.

 

  • 다음으로는 activation map에서 max pooling을 진행하는 과정을 살펴보겠습니다.

activation map -> max pooling

위의 그림처럼 max pooling 과정에서는 각 activation map 별로 max값을 채택하여 뽑아줍니다. 

그림에는 filter가 1개로 표현이 되었지만, filter를 여러 개를 사용하면 여러 개의 activation map이 만들어 집니다.

 

예를 들면, size가 2인 filter 10개(10채널), size가 3인 filter 10개(10채널), size가 4인 filter 10개(10채널)을 사용하여 convolution 연산을 진행하면 size별로 10개씩 즉, 총 30개의 feature map과 activation map이 만들어 집니다.

 

30개의 activation map이 만들어 졌다고 생각하고 여기에서 max pooling을 진행하면 30개의 max 값을 얻을 수 있습니다.

 

여기서 얻은 30개의 max 값을 fully-connected layer의 input으로 넣어준 후 classification을 진행합니다.  

 

 

 

 

위의 과정을 모두 정리해보면 다음과 같습니다.

 

1. $n\times k$ word embedding input

2. filter와 convolution 연산

3. feature map

4. activation(feature map) → activation map

5. max pooling

6. fully-connected layer

7. classification

반응형

'[딥러닝] > [NLP]' 카테고리의 다른 글

[NLP] Word Embedding  (0) 2022.09.27
[NLP] 트랜스포머 (Transformer)  (0) 2022.02.06