본문 바로가기

Paper review/NLP

[논문 리뷰] Character Aware Neural Language Models

반응형

1. Abstract

  • CNN, highway network, LSTM, RNN-LM을 사용했다.
  • 60%적은 파라미터를 사용해도 높은 성능을 낸다
  • 형태소가 많은 언어에서 유리하다 (아랍어, 체코어, 프랑스어..)
  • character inputs는 언어모델링에 충분하다

2. Conclusion

  • character level의 인풋만을 넣는 모델을 소개했다
  • 매개변수가 적음에도 불구하고 이 모델은 인풋 레이어에서 단어/형태소 임베딩을 이용하는 기존 모델보다 우수
  • 모델에 단어 임베딩이 꼭 필요한지에 대한 의문을 제기했다

3. Introduction

  • 배경지식
    • 언어 모델은 확률 분포로 공식화된다 : n번째 markov연산, n-gram 확률 추정이 있다.
    • count-based 모델은 훈련시키기 쉽지만 n-gram 확률은 data sparsity로 인해 추정하기 힘들 수가 있다.
    • 워드 임베딩으로 통해 비슷한 의미를 가진 단어는 가까이에 임베딩된다
    • NLM은 형태소와 같은 subword에 약하다. 희귀한 단어들은 잘못 추정될 수도 있다. -> 혼란 야기
    • 형태소가 많아 길게 연관되어 있는 단어에서 문제가 일어날 수 있다.
  • 논문에선
    • subword를 아우르는 character level CNN을 제안. 이 output은 RNN-LM의 인풋으로 사용
    • 이 모델에서는 전처리에서 형태소 태깅을 필요로 하지 않는다. 인풋 레이어에서 워드 임베딩을 사용하지 않음
    • 즉, 이 모델에서는 이전의 NLM보다 훨씬 적은 파라미터를 필요로 한다
    • 결과적으로 60%적은 파라미터임에도 불구하고 SOTA수준 결과 얻음. 형태소 풍부한 언어에서 효과적

4. Method

  • 모델
    • tokenize한 후, 임베딩 된 하나의 단어를 가지고 matrix를 만든다
    • 다중필터 적용. 여기서 h={2,3,4}. 총 3+4+5개의 필터
    • highway network를 얻기 위해 max pooling
    • output을 multi layer LSTM의 input으로 넣는다.
    • softmax를 적용하여 다음 단어에 대한 분포를 얻는다
    • loss func으로 cross entropy를 사용하여 다음 단어에 대한 분포 예측과 실제 결과를 최소화

(a) RNN

  • hidden state ht와 함께 모든 것을 기록할 수 있다
  • vanilla RNN으로 긴 기간을 학습하는건 vanishing/exploding gradients때문에 어렵다

(b) LSTM

  • 위의 문제는 LSTM의 memory cells에서 많이 완화
  • LSTM에서는 multiple layers로 확장이 쉽다

(c) RNN-LM

  • NLL(negative log-likelihood)를 최소화

(d) Character-level conv neural network

  • input
    • character-level cnn의 output이 이 모델의 input
    • word k = [c1, c2, .. , cl]
  • conv
    • 단어 k의 i번째 char를 nonlinear f에 통과
    • 필터는 보통 100~1000개
    • 필터는 n-gram역할
    • activation func : tanh
  • pooling
    • 주어진 필터에서 가장 중요한 특징을 캐치

(e) highway network

  • word embedding xk를 RNN-LM을 통해 yk로 대체. 멀티레이어 perceptron으로 모델에 넣어봤지만 안좋은 결과를 얻음
  • 그것을 highway network에서 해결
  • highway layer는 일부 input을 output에 직접 전달(carry)함으로써 deep network트레이닝을 한다 (단점보완)

3. Experiment

  • perplexity로 모델 성능 측정
  • 데이터
    • 다양한 언어와 사이즈를 데이터로 사용
      • PTB(Penn Treebank English data)로 선택적 하이퍼파라미터 튜닝
      • 이것을 형태학적인 언어에 적용 (체코, 독일어..)
      • 아랍어가 아닌 것들은 ACL workshop번역기에서 사용
      • small data : 1m개의 토큰
      • large data : PTB의 단어수보다 많은 영어 데이터
    • 1개만 나온 단어는 로 대체. 그래서 모든 단어 활용~ 하는게 좋지만 여기선 안쓴다. 비교위해!
  • optimization
    • SGD : stochastic gradient descent 사용
    • SGD쓰면서 35단계의 backpropagation. learning rate 1.0로 하다가 perplexity가 1.0아래로 줄지 않으면 rate 절반으로 줄인다.
    • batch size: data-s(20), data-l(100)
    • epoch: non-arabic(25), arabic(30)하고 validation set에서 가장 성능 높은 것을 선택
    • 모델의 파라미터는 -0.05~0.05 안에서 조정
    • 정규화
      • dropout 0.5
        • LSTM의 input - hidden 사이
        • (highway - LSTM 사이에는 X)
        • LSTM의 hidden - output (softmax layer)
      • norm 경사 < 5
        • 만약 5보다 초과한다면 L2 norm = 5를 갖도록 재정규화한다
    • softmax
      • data-l
        • 계층적 softmax
        • 잘 트레이닝 하기 위해 데이터 V를 클러스터c개로 분할. 모두 같은 사이즈
      • data-s
        • 계층적 softmax 없어도 된다

4. Results

  • 훈련모델
    • LSTM-char-small, LSTM-char-large
    • lstm-word-small, lstm-word-large
  • 60% 적은 파라미터를 써도 SOTA
  • 표3보면 UNK씀에도 불구하고(패널티 있어도) 다른 것들에 비해 좋은 성능!
  • word보단 morph모델, 그것보단 char모델이 더 성능 높았다 (파라미터 더 많다)
  • 모든 실험에 동일한 아키텍쳐 사용 & 하이퍼파라미터 튜닝 하지 않음

5. related works

NLM, FNLM..

6. Discussion

  • char-CNN의 필터가 다른 형태소를 식별하고 다른 식별된 형태소로부터 의미있는 단어 만드는 것을 기대
    • 하지않음
  • char-CNN에 n-gram의 문자를 넣고 그 결과를 문자 n-gram에 대응시켰다
    • 접두사, 접미사, 기타, 하이픈 모두를 구분

(a) Highway layers

  • CNN에 highway layer가 잘 어울림
  • 1-2개의 highway layer가 좋은 성능. 근데 많을수록 좋았다. (데이터 사이즈 역시 영향 끼칠 것)
  • max pooling 전 conv레이어 많은건 도움 되지 않음
  • input으로 word embedding만을 사용하는 모델은 개선하지 않음

(b) further observations

  • 여기서는 word embeddings + charCNN 이 성능 더 안좋았다
    • 일단 여기선 굳이 word embedding이 아니더라도, character inputs만으로도 충분
  • 이 모델은 문자에 대한 추가적인 conv 연산이 필요해서, word-level 모델보다 더 느리지만 이 정도는 GPU최적화로 극복 가능
  • 평가 때, 이 모델은 pure word-level model과 같은 러닝타임을 가질 수 있다(charCNN output미리 계산 가능하기 때문)
    • 그러나 모델 사이즈가 커지면 비용 발생

Reference

반응형

'Paper review > NLP' 카테고리의 다른 글

[논문 리뷰] Multi channel CNN for Korean Sentiment Analysis  (0) 2020.06.14
토큰화 : Tokenize  (0) 2020.04.12
한국어 문법 짚고 넘어가기  (0) 2020.04.12