1. Abstract
- word-char CNN은 Perplexity가 낮을 뿐만 아니라, parameter의 수도 적다는 장점이 있다.
- character information은 word의 구조적 유사성을 알려주기 때문에 OOV(out-of-vocabulary)를 다룰 때에도 유리하다.
- word embedding과 char embedding을 concatenate로 합치는 방식
2. Introduction
- 기존 NN based Language Model의 단점
- 학습을 시키는데는 많은 양의 데이터가 필요하기 때문에, infrequent word에 대해서는 성능이 좋지 않다.
- 단어의 구조를 살펴볼 수 없다.
- subword information을 반영하는 것이 중요하다.
- word/char embedding을 concatenate
- subword의 구조뿐만 아니라, 순서도 같이 vector로 표현됨
- word embedding 차원을 줄이고, 그 부분을 char embedding으로 대신하여 전체적인 dimension은 유지하는 방식으로 parameter수를 줄임
3. Related Work
- RNN-LM
- NMT
- BLSTM
- charCNN
4. Character-Word LSTM language model
- one-hot encoded word과 one-hot encoded char를 각각 embedding시켜 concatenate
- =
- one-hot encoded word과 one-hot encoded char를 각각 embedding시켜 concatenate
- character도 다른 matrix로 각각 embedding시키므로 character의 순서, 위치의 중요성도 같이 학습 가능
- 모든 character를 넣어주는 것이 아니라, n개의 character만 사용
- word의 character가 n개보다 많으면 앞의 n개만 사용하고, 부족하면 zero-padding
- OOV word를 잘 대처할 수 있도록 설계
4.1 Order of the characters
- character가 추가되는 순서를 forward, backward, both로 모두 시도해봄
- 언어마다 단어에서 중요한 부분의 위치가 다르므로, 언어마다 character를 넣어주는 방향을 다르게 해야함
- English, Dutch의 경우 suffix(접미사)가 중요한 역할을 하므로, character를 backward로 넣어주는 것이 성능이 더 좋음
4.2 Weight Sharing
- CW LSTM
- =
- character마다 다른 matrix로 embedding하는 방식,
- 같은 character라도 위치에 따라서 사용되는 방식이 다를 것이므로, 각각 embedding해야함
- ex) 영어에서 ‘s’가 마지막으로 사용되면 ‘복수’의 의미를 가지게 됨
- Weight Sharing
- =
- 각 character를 같은 matrix로 embedding하는 방식, 즉, weight sharing
4.3 Number of parameters
- word LSTM
- #parameter =
- = vocabulary size, = word embedding size
- char-word LSTM
- #parameter =
- = character size, = character embedding size, = 사용되는 character의 수
- #word-vocabulary 가 #char-vocabulary 보다 훨씬 많으므로 parameter가 많이 감소함
- weight sharing char-word LSTM
- #parameter =
5. Experiments
5.1 Setup
- small model : 2-layer with 200 hidden unit
- large model : 2-layer with 650 hidden unit
- embedding layer size는 hidden layer size와 같은
- data set
- English : PTB
- Dutch : CGD
- data set의 크기를 비슷하게하여 두 언어에 대해서 성능비교
- 대/소문자 구별하는 것과 하지 않는 것에 대하여 성능비교
5.2 Baseline models
- parameter를 줄이면서도 성능을 높일 수 있는지 확인하기 위하여 2개의 비교 모델을 만들었음
- 같은 hidden unit을 가진 LSTM, parameter가 더 많게 됨(small model의 경우 200개, large model의 경우 650개의 hidden unit)
- 비슷한 수의 parameter를 가진 LSTM(small model의 경우 175개, large model의 경우 475개의 hidden unit)
5.3 English
5.3.1 Baseline model vs CW-LSTM model
- 비슷한 수의 unit을 가진 2-layer LSTM과는 성능이 비슷했다.
- 비슷한 수의 parameter를 가진 2-layer LSTM보다는 성능이 좋았다.
- character를 너무 많이 넣는 것은 word embedding의 정보를 줄이기 때문에 오히려 성능이 좋지 않음
- word embedding size가 char embedding size보다 커야함
5.3.2 Forward-order char vs Backward-order char vs Both-order char
- 처음과 끝 3자리씩 넣어주는 Both-order가 성능이 제일 좋다.
- Backward-order가 Forward-order보다 성능이 조금 더 좋다.
5.4 Dutch
- 형태소가 많으므로 character structure를 넣어주는 것이 유리
- 영어에서 보다 더 좋은 성능을 보여줌
- 중요한 정보가 어미에 많이 있으므로, Backward-order가 더 성능이 좋음
5.5 Random CW models
- 성능이 좋은 이유가 정말 character 정보를 넣어줘서인지 조사하기 위하여 character embedding 자리에 random noise를 넣어줌
- Baseline보다 성능이 안좋아짐, 즉, character 정보를 넣어주는 것이 subword structure를 반영할 수 있어서 성능이 좋음
5.6 Sharing weights
- weight sharing을 하지않은 것이 성능이 더 좋다.
- character가 위치에 따라서 가지는 의미가 다르다는 것을 학습 가능
5.7 Dealing with out-of-vocabulary words
- OOV를 실제 단어로 matching시킬 확률이 증가
6. Conclusion and Future work
- character의 정보를 반영하여 성능이 좋았졌다.
- embedding 방식을 바꾸어 parameter수를 많이 줄였다.
- character embedding size가 너무 크지않도록 조절해야한다.
- 언어에 따라 character를 넣어주는 순서를 바꿔야한다.
- character는 위치에 따라 다른 정보를 가지므로, 각각 embedding해야 한다.