자연어처리를 위한 CNN


1. Conv2D

CNN(Convolution Neural Network)은 이미지의 특징을 추출할 때 사용됩니다.

conv2d-01.png

(이미지 출처: docs.gimp.org)

위 그림처럼 필터를 변경하여 이미지에서 다양한 특징을 추출할 수 있습니다.

1.1. Convolution Layer

Convolution_schematic.gif

(이미지 출처: deeplearning.stanford.edu)

위 그림과 같이 (5x5) 이미지에서 (3x3) 필터를 우측 상단부터 우측과 아래로 차례로 이동하면서 필터와 element-wise product를 실행한 결과를 특징으로 사용합니다.

이때 필터의 값은 Neural Network의 weights로 학습을 통해 변화되는 값입니다.

conv2d-05.png

위 그림과 같이 다양한 이미지의 특징을 추출하기 위해서 여러 개의 필터를 사용합니다.

1.2. Pooling

풀링은 CNN에서 추출된 특징의 크기를 줄이면서 특징을 강조하는 역할을 수행합니다.

conv2d-06.png

위 그림과 같이 각 역영별로 최댓값을 특징으로 사용하는 것을 Max Pooling이라고 합니다.


2. Conv1D

이미지에서 사용하는 CNN을 자연어에서도 언어의 특징 추출할 때 사용할 수 있습니다. 이미지에서는 Conv2D를 사용하고 자연어에서 사용하는 Conv1D를 사용합니다.

2.1. Convolution Layer

conv1d-01.gif

위 그림과 같이 (7x4) 단어 벡터들로 구성된 문장에서 (3x4) 필터를 상단부터 아래로 차례로 이동하면서 필터와 element-wise product를 실행한 결과를 특징으로 사용합니다.
(3x4) 필터의 행에 해당하는 3은 변경이 가능하고 열에 해당하는 4는 단어벡터의 크기와 같은 값을 지정해야 합니다.

이때 필터의 값은 Neural Network의 weights로 학습을 통해 변화되는 값입니다.

conv1d-02.png

위 그림과 같이 다양한 문장의 특징을 추출하기 위해서 여러 개의 필터를 사용합니다.

2.2. Pooling

자연어에서도 풀링은 이미지와 같이 추출된 특징의 크기를 줄이면서 특징을 강조하는 역할을 수행합니다.
단어들의 특징에서 문장 전체의 특징을 추출할 때 주로 사용됩니다.

conv1d-03.png

위 그림과 같이 위치별로 최댓값을 특징으로 사용하는 것을 Max Pooling이라고 합니다.

conv1d-04.png

위 그림과 같이 위치별로 평균값을 특징으로 사용하는 것을 Avg Pooling이라고 합니다.
보통의 경우는 Max Pooling이 Avg Pooling보다 성능이 좋다고 알려져 있습니다.

2.3. Padding

CNN은 Convolution Layer를 통과하면서 필터의 연산에 의해서 길이가 줄어듭니다.
줄어드는 현상을 방지하기 위해서 가상의 영역을 추가하는 것을 padding이라고 합니다.

(3x?) 필터를 이용해 길이가 9인 문장을 Convolution Layer로 특징을 추출하는 과정을 통해 확인해 보겠습니다.

valid

Padding을 추가하지 않은 상태에서의 Convolution Layer 연산을 의미합니다.

conv1d-padding-01.png

이때 문장의 특징벡터의 길이가 줄어들게 됩니다.

causal

앞쪽에만 padding을 추가한 상태에서의 Convolution Layer 연산을 의미합니다.

conv1d-padding-02.png

이때 문장의 특징벡터의 길이가 줄어들지 않습니다.
또한 각 특징벡터들은 자기 자신과 이전 단어의 벡터들만 참조하게 되어 언어의 중요한 특징 중에 하나인 방향성을 유지할 수 있습니다.

same

앞과 뒤쪽에 같은 수의 padding을 추가한 상태에서의 Convolution Layer 연산을 의미합니다.
만일 추가할 padding의 숫자가 홀수일 경우는 앞쪽에 1개를 더 추가합니다.

conv1d-padding-03.png

이때 문장의 특징벡터의 길이가 줄어들지 않습니다.
또한 각 특징벡터들은 자기 자신과 양쪽 단어의 벡터들을 참조하게 되어 양쪽 방향의 정보를 참조할 수 있습니다.