2020. 2. 6. 21:34ㆍnlp
http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/
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
- 패딩 사용하면 출력 데이터 크기가 커짐
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 등은 더 어려움
'nlp' 카테고리의 다른 글
그림으로 보는 RNN/LSTM과 GRU 번역 및 정리 (0) | 2020.02.07 |
---|---|
[DL Wizard] Convolutional Neural Network with PyTorch 번역 및 정리 (0) | 2020.02.06 |
CNN : Convolutional Neural Network 정리 (0) | 2020.02.06 |
[DL Wizard] Weight Initializations & Activation Functions 번역 및 정리 (0) | 2020.02.05 |
[DL Wizard] Optimization Algorithms 번역 및 정리 (0) | 2020.02.05 |