research notes

NLP를 위한 합성곱 신경망(Convolution Neural Network) 본문

자연어/Basic

NLP를 위한 합성곱 신경망(Convolution Neural Network)

forest62590 2022. 4. 12. 12:50
728x90

*** 딥 러닝을 이용한 자연어 처리 입문 (위키북스) 내용 요약 ***

 

합성곱 신경망은 주로 비전 분야에서 사용되는 알고리즘이지만 이를 응용해서 자연어 처리에 사용하기 위한 방법들이 연구되고 있다.

 

각 문장은 임베딩 층(embedding layer)을 지나서 각 단어가 임베딩 벡터가 된 상태로 LSTM의 입력이 되며, 1D 합성곱 연산도 마찬가지로 1D 합성곱 연산의 입력이 되는 것은 각 단어가 벡터로 변환된 문장 행렬이다. (n: 문장의 길이, k: 임베딩 벡터 차원)

1D 합성곱 연산에서 커널의 너비는 문장 행렬에서의 임베딩 벡터의 차원과 동일하게 설정된다. 그렇기 때문에 1D 합성곱 연산에서는 커널의 높이만으로 해당 커널의 크기라고 간주한다. 가령, 커널의 크기가 2인 경우에는 아래의 그림과 같이 높이가 2, 너비가 임베딩 벡터의 차원인 커널이 사용된다. 커널의 크기를 조정할 수 있으며 크기가 달리진다는 것은 

이미지 처리에서의 CNN에서 그랬듯이, 일반적으로 1D 합성곱 연산을 사용하는 1D CNN에서도 합성곱 층(합성곱 연산 + 활성화 함수) 다음에는 풀링 층을 추가할 수 있으며 대표적으로 맥스 풀링(Max-pooling)이 사용된다.

1D 합성곱(1D Convolutions)

  • 커널은 크기가 4인 커널 2개, 3인 커널 2개, 2인 커널 2개를 사용
  • 문장의 길이가 9인 경우, 합성곱 연산을 한 후에는 각각 6차원 벡터 2개, 7차원 벡터 2개, 8차원 벡터 2개를 얻으며, 벡터가 6개므로 맥스 풀링을 한 후에는 6개의 스칼라 값을 얻는데, 일반적으로 이렇게 얻은 스칼라값들은 전부 연결(concatenate)하여 하나의 벡터로 만들어준다.
  • 이렇게 얻은 벡터는 1D CNN을 통해서 문장으로부터 얻은 벡터이며, 이를 뉴런이 2개인 출력층에 완전 연결시키므로서(Dense layer를 사용) 텍스트 분류를 수행

[1] 딥러닝을 이용한 자연어 처리 입문, https://wikidocs.net/80437, 위키북스

728x90

'자연어 > Basic' 카테고리의 다른 글

케라스 임베딩 층(Keras embedding layer)  (0) 2022.04.13
순환 신경망 (RNN)  (0) 2022.02.14
Comments