ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [논문리뷰]Neural Machine Translation by Jointly Learning To Align And Translate(Attention, 2014)
    카테고리 없음 2023. 11. 4. 11:44

    # 요약

    기존 신경망 기계 번역 모델은 Encoder-Decoder로 구성되고, 입력 문장을 고정 길이의 벡터로 인코딩 함. 이 논문에서는 모델이 예측 하고자 하는 단어와 밀접하게 관련된 입력 문장의 일부를 자동으로 검색할 수 있도록 하는 방법을 제안.

     

    # 인트로

    기존 Encoder-Decoder기반 RNN 모델은 신경망이 입력 문장의 모든 정보를 고정 길이 벡터로 압축함. 이것은 입력 문장의 길이가 길어질수록 성능이 급격히 하락하는 원인이 됨.

    제안된 모델은 decoder에서 단어를 생성할 때마다 입력 문장을 순차적으로 탐색하여 가장 관련성이 높은 영역을 적용시킴. encoder에서 생성된 hidden state 중 관련성이 높은 영역과 decoder 에서 생성한 context vector를 기반으로 다음단어를 예측 함.이것은 전체 입력 문장을 하나의 고정 길이 벡터로 인코딩하지 않는다는 점에서 기존 RNN 모델과 다르며, 모델이 긴 문장에 대한 번역 성능이 크게 향상 됨. 

     

     

    # 모델

    ## 디코더

    기존의 Encoder-Decoder 접근 방식과 달리 y_i에 대한 조건부 확률이 각 대상 단어 y_i에 대한 고유한 context vector c_i에 따라 달라짐.

    RNN 수식 : 고정된 차원의 벡터 c 활용                                                           RNNsearch 수식 : 각 yi 마다 고유한 ci 벡터 적용 

     

    더보기

    y_t : decoder의 time step t에서 예측하려는 타깃 단어

    c : Context vector

    c_i : decoder의 time step i 에서의 context vector

    s_t / s_i : decoder의 time step t 또는 i 에서의 hidden state

     

    decoder에서 각 타깃단어 예측 시 타깃 단어에 대한 고유 context vector c_i가 생성되고 c_i는 encoder의 모든 입력 단어의 hidden state의 가중합으로 생성

    context vector c_i

    타깃 단어 예측시 활용되는 c_i는 encoder에서 생성된 모든 입력단어의 hidden state h_j의 가중합으로 생성되는데, 이때 사용 되는 가중치 @_ij는 encoder의 h_j 중 타깃 단어와 관련성이 높은 정도를 계산하여 구함.

    더보기

    @_ij : i번째 단어를 예측할때 입력 문장의 j번째 단어에 할당되는 가중치

    e_ij : 입력 문장의 j번째 단어와 i번째 타깃 단어와의 연관성 정도

    T_x : 입력 문장의 총 단어 수

     

    @_ij를 구하는 방법은 타깃 단어 이전 단계의 hidden state s_i-1과 encoder의 각 hidden state h_j를 내적한 값을 softmax로 정규화여 계산함. @_ij는 타깃 단어가 입력 단어 들 중 어느것과 더 연관성이 높은지를 나타냄. 

     

    RNNsearch

     

    ## 인코더

    단어의 이전의 내용과 이후의 내용을 모두 반영해야 문맥 이해에 대한 성능이 올라가므로 양방향 RNN을 적용함. Forward RNN에서 얻은 hidden state h_j(forward)와 Backward RNN에서 얻은 hidden state h_j(backward)를 concat하여 j번째 단어에 대한 encoder hidden state h_j를 생성함.

     

    # 결과

    모든 경우에서 제안된 RNNsearch가 기존 RNN보다 성능이 뛰어남.

    기존 RNN은 문장의 길이가 길어질수록 성능이 급격히 떨어지는 반면, RNNsearch는 문장의 길이가 길어도 성능 저하가 나타나지 않음. 이는 RNNsearch가 긴 문장을 고정 길이 벡터로 완벽하게 인코딩할 필요 없이 입력 문장에서 특정 단어를 둘러싸고 있는 부분만 집중하여 인코딩하면 되기 때문.

     

    # 결론

    기존의 Encoder-Decoder RNN 모델은 전체 입력 문장을 고정 길이 벡터로 인코딩함. 이는 긴 문장을 번역하는 데 문제가 됨.

    이 논문에서는 각 단어를 생성할 때 모델이 입력 단어 세트 또는 인코더가 계산한 hidden state를 소프트 검색하도록 함. 이렇게 하면 모델이 입력 문장을 고정 길이 벡터로 인코딩할 필요가 없으며, 다음 목표 단어 생성에 관련된 정보에만 집중할 수 있음.

     

     

    # 참고한 자료

    https://arxiv.org/abs/1409.0473

    https://wikidocs.net/73161

    https://blog.naver.com/mewmew16/223159788855

Designed by Tistory.