RNN : Recurrent neural network based language model (2010)

J.·2025년 5월 16일

Text & Speech Papers

목록 보기
1/12

Introduction

  • Sequential Data Prediction (순서나 시간에 따라 변화하는 데이터) 는 머신러닝/인공지능 분야에서 매우 중요한 문제였으며, 이전 통계 베이스 언어모델 목표는 결국 문맥을 고려하여 다음 단어를 예측하는 것이다.

  • 대표적으로 N-gram 모델(연속된 N개의 단어(또는 문자)로 이루어진 시퀀스를 분석하여 다음 단어(또는 문자)를 예측하는 모델) 이 있음 (문맥 고려하여 다음 단어 예측하는 통계 베이스 모델)

  • 더 성능을 높이기 위해 다양한 방법들이 고안되었지만 cache models 와 class-based models 과 성능 차이가 별로 없었음

    • Cache Model : 이전에 등장한 단어나 문장을 캐시에 저장하여, 이후 예측할 때 동일한 문맥이 나타나면 이전에 등장했던 단어를 다시 사용할 확률을 높이는 모델 (최근에 등장한 단어가 다시 등장할 확률이 높다는 가정을 기반으로 함)
    • Class-Based-Model: 단어를 군집화해서 특정 단어가 어떠한 군집에 속할 확률을 이용해서 단어 예측 (예를 들어 Dog, Cat, Mouse 등은 모두 동물이니까 동물에 관한 내용일때 동물 단어 군집에 속한 단어가 나올 확률이 높겠다 라는 내용을 통해 단어 예측)
  • 그 성능 높인 방법들은 이전의 모델들보다 조금 개선되었을 뿐이고, 실생활에서 사용된 사례는 별로 없었다.

Model Description

  • 그래서, 연속적 데이터를 다루기 위한 효과적인 방법으로 RNN 이라는 방법을 고려하게 되었다.
  • Bengio 라는 사람이 처음 고안해냈는데, 문제가 있었음 → 고정된 길이의 문맥들만 사용 가능하다는 것. (고정된 5-10개의 단어만 보고 다음 단어를 예측함)
  • 그런데 순환 신경망을 사용하면 제한된 문맥만을 고려하지 않고 임의의 긴 시간동안 순환해서 학습 가능.
  • 본 논문에서는 Simple Recurrent Neural Network (Elman Network)를 사용함. 순환신경망 중 가장 간단한 형태이며 실행과 학습이 가장 쉬운 상태

input layer : x

hidden layer: s

output layer: y (위 식과는 상관 없음 아래에 나옴)

vector w : 현재 시점 t 의 단어 (즉, 시간 t 일때 입력된 새 단어)

s(t-1) : t 시점 직전까지의 은닉층(hidden state) 까지 학습된 문맥 정보

즉, x(t) → 현재 시점 t 때 입력하는 새 벡터는 현재 시점 t 때 입력한 새 단어와 이전 상태까지 은닉층에 학습된 문맥 정보인 s(t-1) 을 합친 것.

은닉 상태 업데이트

(모든 입력뉴런 i 에 대한 합)

출력벡터 계산

  • 많은 데이터를 학습할수록, 많은 은닉층 필요함

  • 가중치는 아주 작은 값부터 시작하며, 학습률은 처음에 0.1 로 설정했음.

  • SDG(Stochastic Gradient Descent) 사용해서 매 epoch 마다 검증 데이터로 비교해보면서 학습을 계속하고, 학습 결과가 이전과 차이 없으면 학습률을 반으로 줄이며 학습률 줄여가며 학습을 마침. 실혐 결과 10-20 epoch 에서 학습을 완료하였다.

  • 논문의 실험에서 많은 양의 hidden layer 을 사용하였는데 과도한 학습이 이루어지지는 않았으며정규화 과정은 학습에 큰 영향을 끼치지는 않았다.

  • 각 학습단계의 오차는 cross entropy (교차 엔트로피) 에 따라 계산되며 가중치는 역전파 알고리즘에 의해 업데이트가 된다.

Optimization (최적화)

모델의 성능을 더 높이기 위해 training set 에서 특정 단어 빈도수가 일정 수준 넘지 못하는 단어들 (즉, 잘 등장 안하는 단어들) 을 따로 빼서 “rare token” 으로 분리함.

이때 현재 주어진 단어 w(t) 와 바로 이전 단계에서의 은닉층의 정보 s(t-1) 이 주어졌을 때 다음 시점의 단어 w(t+1) 이 나올 확률은 다음과 같다.

  • t+1 시점의 단어가 가끔 등장하는 단어가 아닐때는 앞에 설명한 y(t) (출력벡터 확률) 대로 내보내고 rare token 인 경우에는 Crare (희귀 단어 집합 크기) 만큼을 yrare(t) 희귀 단어에 카테고리에 대한 softmax 확률값을 나눈다.

  • rare token 에 대해 이렇게 처리하는 이유는 희귀 단어가 너무 많으면 학습에 방해되기 때문에 희귀단어 그룹을 만들어 잘 나오지 않는 단어 뭉탱이 자체가 나올 확률을 곱하는 것 (1/Crare)

  • 이렇게 나눠 계산하니까 성능이 더 올라감

실험 결과 (Experiments)

  • 성능의 우수함 확인을 위해 음성인식 태스크들을 선택함

  • 성능 향상을 위해 여러 아카텍처를 가진 RNN 모델의 출력을 선형 보간(Linear Interpolation) 함

    즉, 서로 다른 RNN 언어 모델 출력을 가중치를 곱하여 결합시킴. 또한, 다양성 증가시키기 위해 가중치 초기화를 무작위로 해서 모델 출력값을 다양하게 만들었다.

    → 결과는 단어 수가 많아질수록 모델 성능이 좋아짐

    → 그래프에서 WER 지표(단어 오류율)가 낮아지는게 중요한데, KN5-baseline 모델에 비해 RNN 모델은 단어 오류율이 확실히 낮다.

  • WSJ 실험 결과의 baseline 모델은 SOTA 달성 모델과 비교한게 아니기 때문에 SOTA 에서 의미 있는 개선을 얻을 수 있다는 걸 입증하기 위해 NIST RT05 평가 데이터 집합을 사용함(음성 인식(ASR) 시스템의 성능을 평가하는 국제적인 벤치마크라고 함)

  • 역시 WER 가 다른 모델보다 낮았음

Conclusion

  • 실험 결과에서 나왔듯, RNN 은 모든 실험에서 기존 SOTA 모델이었던 backoff model 을 능가함.

  • 단순히 특정 단어 뭉치 통해서 다음 단어 예측하는 것과 다르며, 데이터만 추가시킨다고 단어 예측력이 좋아지는게 아니라는 걸 알 수 있음.

  • RNN 학습시 역전파 알고리즘에 대해 더 조사를 해봐야 할것으로 보임. (성능 향상에 도움될 것이다)

  • Online 학습이 매우 중요함

  • 그러나 RNN 은 아주 긴 문맥 정보는 잡지 못한다.

profile
AI & Languages galore.

0개의 댓글