-
Notifications
You must be signed in to change notification settings - Fork 23
Character Aware Neural Language Model(2016)
hwkim94 edited this page Feb 27, 2018
·
18 revisions
- CNN, RNN,LSTM, Highway Network 모델 사용
- 형태소가 많은 언어에 유리(아랍어, 체코어, 프랑스어, 독일어, 스페인어, 러시아어 등)
- character단위의 모델링은 semantic, orthographic information(철자법)을 동시에 알아낼 수 있음
-
이전까지는 Markov n-gram based Model이 많이 사용되었지만, sparsity data문제가 발생
-
Neural Language Model(NLM)에서는 word embedding을 사용하여 sparsity data문제를 해결
- word embedding을 통해 비슷한 단어는 비슷한 공간에 위치하게 됨
-
하지만, word embedding으로는 subword information를 파악할 수 없음
- infrequent word에 대해서 perplexity가 높아지게 됨(성능이 좋지 않음)
- 이러한 점은 형태소가 많은 언어에서 문제가 됨
-
이 논문에서는 charCNN을 통해 subword information를 잘 학습할 수 있도록하는 것이 목적
- 전처리 작업에서 morphological-tagging 작업이 필요하지 않음
-
결론적으로, 형태소가 많은 언어에서 이 모델이 더 적은 parameter로도 다른 LSTM 기반 모델보다 성능이 좋았다.
- charCNN, highway Network, LSTM 사용
-
$$h_{t}$$ =$$f(Wx_{t} + Uh_{t-1} + b)$$
-
$$i_{t}$$ =$$\sigma (W^{i} x_{t} + U^{i} h_{t-1} + b^{i})$$ -
$$f_{t}$$ =$$\sigma (W^{f} x_{t} + U^{f} h_{t-1} + b^{f})$$ -
$$o_{t}$$ =$$\sigma (W^{o} x_{t} + U^{o} h_{t-1} + b^{o})$$ -
$$g_{t}$$ =$$tanh(W^{g} x_{t} + U^{g} h_{t-1} + b^{g})$$ -
$$c_{t}$$ =$$f_{t} \odot c_{t-1} + i_{t} \odot g_{t}$$ -
$$h_{t}$$ =$$o_{t} \odot tanh(c_{t})$$
- Language Model에서의 scoring
- negative log-likelihood(NLL)을 최소화하는 방향으로 학습
-
$$NLL$$ =$$- \sum_{t=1}^{T} log (p(w_{t} \mid w_{1:t-1}))$$ -
$$p(w_{t} \mid w_{1:t-1})$$ =$$frac{exp(P^{j} h_{t} + q^{j})}{\sum_{j'=1}^{V} exp(P^{j'} h_{t} + q^{j'})}$$ -
$$V$$ = 단어의 수,$$j$$ = j-th column
-
- 전체적인 model과 함께 학습됨
- input
- embedding한 characters를 이어붙인 matrix,
$$Q \in R^{d \times C}$$ -
$$d$$ = character의 embedding dimension,$$C$$ = word를 구성하는 character의 개수
- embedding한 characters를 이어붙인 matrix,
- convolution
- n-gram의 역할, prefix, suffix 등을 구별하는 역할을 하게 됨
- 100~1000개의 filter로 convolution
- activation function으로
$$tanh$$ 사용
- pooling
- convolution의 결과에 pooling을 사용하여 정보를 압축
- pooling의 결과가 word embedding이 됨
- residual network의 general한 형태
-
$$z$$ =$$t \odot g(W_{H}y + b_{H} + (1-t) \odot y)$$ - transform gate
$$t$$ =$$\sigma (W_{T}y + b_{T})$$ - transform gate도 전체적인 model과 함께 학습됨
- transform gate
-
PPL(perplexity)
-
$$PPL$$ =$$exp(frac{NLL}{T})$$ -
$$T$$ = word of sequence
-
-
English Penn Treebank(PTB) dataset을 사용하여 parameter를 조정한 후, 이것을 다른 언어에 적용
-
singleton word만 로 바꿈
- stochastic gradient descent(SGD) 사용
- dropout 사용
- gradient norm
$$norm$$ >$$5$$ 일 경우,$$norm$$ =$$5$$
- highway layer가 있는 것이 word embedding 학습을 더 잘했음
- OOV word도 학습을 잘함
- charCNN을 사용한 경우 각 단어의 n-gram에서 prefix, suffix, hypenated를 각각 구별
- prefix = 접두사, suffix = 접미사, hyphenated = 하이픈으로 연결된 단어
- MLP의 성능은 좋지 않음
- 1개의 highway layer만 가진 것이 제일 성능이 좋다.
- max-pooling 이전에 convolution layer를 더 쌓아도 성능이 좋아지지 않는다.
- CNN 없이 highway network만 사용하면 소용없다.
- corpus의 크기가 커지면 perplexity가 줄어든다. 즉, 성능이 좋아진다.
- 위 실험에서는 word embedding과 charCNN을 같이 사용한 모델이 더 성능이 안좋았다.
- 다른 모델보다 시간은 오래걸리지만, charCNN-layer를 공유하기 때문에 GPU사용 효율성이 증가한다.
- NLM
- FNLM
- char NLM
- DCNN
- CRF
- BDLSTM
단어의 subword information을 파악하는 것이 중요하다.
- https://arxiv.org/abs/1508.06615
- Ybigta deepNLP-study