[딥러닝을이용한 자연어 처리 입문] 1202 자연어 처리를 위한 1D CNN(1D Convolution Neural Network)

2. 1D 합성곱(1D Convolution)


- 자연어 처리에 사용되는 1D CNN도 입력이 되는 것은 각 단어가 벡터로 변환된 문장 행렬로 LSTM과 입력을 받는 형태는 동일


1D CNN에서 커널의 너비는 문장 행렬에서의 임베딩 벡터의 차원과 동일하게 설정됨. 그렇기 때문에 1D CNN에서는 높이 사이즈만을 명명하여 해당 커널의 사이즈라고 간주함. 가령, 커널의 사이즈가 2인 경우에는 아래의 그림과 같이 높이가 2, 너비가 임베딩 벡터의 차원인 커널이 사용됨(커널 사이즈는 마음대로 변경할 수 있음)



1D CNN에서는 커널이 문장 행렬의 높이 방향(아래쪽으로만)으로만 움직이게 되어있음


1D CNN과 자연어 처리 관점에서는 커널의 사이즈에 따라서 참고하는 단어의 묶음의 크기가 달라짐. 이는 참고하는 n-gram이 달라진다고 볼 수 있음. 가령, 커널의 사이즈가 2라면 각 연산의 스텝에서 참고하는 것은 bigram. 커널의 사이즈가 3이라면 각 연산의 스텝에서 참고하는 것은 trigram 됨


3. 맥스 풀링(Max-pooling)


1D CNN에서도 합성곱 층(합성곱 연산 + 활성화 함수) 다음에는 풀링 층을 추가하게됨

맥스 풀링은 각 합성곱 연산으로부터 얻은 결과 벡터에서 가장 큰 값을 가진 스칼라 값을 빼내는 연산임


4. 신경망 설계하기


[ 이미지 출처 : NLP를 위한 CNNs ]


- 출처 : [딥러닝을이용한 자연어 처리 입문] 1202 자연어 처리를 위한 1D CNN(1D Convolution Neural Network)

댓글

이 블로그의 인기 게시물

[빵형의 개발도상국] 얼굴 인식 알고리즘 성능 비교 - Python, Deep Learning

[이수안컴퓨터연구소] 파이썬 레이싱 자동차 게임 만들기 Creating a Python Racing Car Game with pygame (한글자막)