David의 개발 이야기!

자연어처리를 위한 1D CNN 이해하기 - 1D Convolutional Neural Networks 본문

자연어처리

자연어처리를 위한 1D CNN 이해하기 - 1D Convolutional Neural Networks

david.kim2028 2023. 8. 9. 20:20
반응형

1. 1D 합성곱(1D Convolutions)

'wait for the video and don't rent it'이라는 문장이 있을 때, 이 문장이 토큰화, 패딩, 임베딩 층(Embedding layer)을 거친다면 다음과 같은 문장 형태의 행렬로 변환된다. 아래 그림에서 k은 문장의 길이, l는 임베딩 벡터의 차원입니다.

 

그렇다면 1D 합성곱 연산의 경우, 이러한 행렬은 어떻게 처리할까?

1D 합성곱 연산에서, 커널의 너비는, 문장 행렬에서 임베딩 벡터의 차원과 동일하게 설정된다. 따라서, 1D 합성곱 연산에서는 커널의 높이만으로 해당 커널의 크기로 간주한다. 

 

즉, 아래 그림의 경우, 커널의 크기는 2이다. 

커널의 크기가 2

 

커널의 너비가 임베딩 벡터의 차원이라는 의미는 결국, 커널이 2D 합성곱 연산과는 달리(2D는 두축으로 이동) 너비 방향으로는 움직일 수 없고, 문장 행렬의 높이 방향으로만 움직일 수 있다는 의미이다. 즉, 시퀀스의 흐름에 따른 축으로만 이동한다.

 

 

커널의 크기가 달라진다는 것은, 단어의 묶음의 크기가 달라지기에, 참고하는 n-gram 이 달라진다고 볼수 있다. 커널의 크기가 2라면, 각 연산의 스텝에서 참고하는 것은, bigram 이며, 3인 경우, trigram 이다.

 

2. Max Pooling

이미지처리에서의 CNN 처럼, 1D 합성곱연산에서도 합성곱층(합성곱 연산 + 활성화함수) 다음에는, 풀링층을 추가하게 되는데, 대표적으로 max-pooling 층을 사용한다. 맥스 풀링은, 각 합성곱 연산으로부터 얻은 결과 벡터에서 가장 큰 값을 가진 스칼라 값만을 남기는 연산이다. 

 

 

반응형
Comments