CNN for NLP 번역 및 정리

2020. 2. 6. 21:34nlp

반응형

http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/

 

Understanding Convolutional Neural Networks for NLP

When we hear about Convolutional Neural Network (CNNs), we typically think of Computer Vision. CNNs were responsible for major breakthroughs in Image Classification and are the core of most Compute…

www.wildml.com

 

NLP에서 사용되는 CNN

- 입력 데이터는 word embedding, 각 행은 한 단어를 의미함 

- 일반적으로 필터의 폭은 입력 데이터의 폭과 동일함 (dimension of embedding)

- 일반적으로 sliding window는 2-5 정도 (한 번에 잡히는 단어의 개수)

 

 

- CNN의 한계 : 가까이 붙어있다고 두 단어가 비슷한 의미인 것은 아님

- 그래서 주로 RNN 이용

- 하지만 CNN도 그럭저럭 쓸 만함! 빠르니까!

 

Padding

- zero-padding 사용하면 wide convolutin

- zero-padding 사용 안 하면 narrow convolution 

- 왼쪽 그림이 패딩 사용 안 한 narrow conv, 오른쪽 그림이 패딩 사용한 wide conv

- 패딩 사용하면 출력 데이터 크기가 커짐

 

filter size=5, input size=7, padding size=4

 

 

Stride

- 왼쪽 그림은 stride size=1, 오른쪽 그림은 stride size=2

- stride size 클수록 RNN이랑 약간 비슷해질 수 있음

 

 

Pooling

- 출력 데이터의 크기를 줄이고 중요한 정보도 유지할 수 있음

- (ex) 부정 표현(not)을 찾는 필터 : not이 있는 부분에선 큰 값, 없는 부분에선 작은 값 출력

 

 

Channels

- 같은 문장이라도 여러 개의 word embedding 구했다면, 각 embedding을 각 채널로 설정 가능

- (ex) 같은 문장을 word2vec을 이용해 임베딩 구한 것과 GloVe를 이용해 임베딩 구한 것을 2개의 채널로 만들 수 있음

 

CNN의 NLP 활용

- 분류 문제에 강함 (ex) Sentiment Analysis, Spam Detection, Topic Categorization

- convolution, pooling 레이어 때문에 단어 순서를 알 수 없게 되어 POS 태깅, Entitiy Extraction 등은 더 어려움

 

반응형