ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [cs224n] Lecture 13
    카테고리 없음 2021. 8. 16. 20:26
    • Pre-trained Word vectors

    cs224n lecture 초반에 word embedding에 다루었다.

    word embedding에 대해 리마인드 하고 넘어가자면, 단어를 특정 차원의 벡터 공간 상에 매핑함으로서

    기계가 자연어를 이해하고, 단어간의 관계를 이해할 수 있도록 표현하는 것이다.

    word embedding을 이용하는 방법은 두가지가 있는데, 

    첫번째로는 pre-trained 된 word vector를 이용하는 방법과,

    두번째로는 random word vector로부터 시작해서 학습하는 방법이다.

    대부분의 경우, pre-trained 된 word vector를 사용하는 것이 더 많은 학습 효과를 얻을 수 있으므로 추천되는 방법이다.

     

    • Unknown words(unk) in word vectors

    unk 토큰은 데이터셋에서 자주 나타나지 않는 단어, 혹은 테스트 데이터 셋에만 존재하는 단어를 의미한다.

    다른 unk 단어들끼리 구별할 방법이 없어, unk 토큰을 이용하는데 문제점이 존재한다.

    강의에서는 크게 3가지의 해결책을 제시한다.

    1. character level의 모델을 이용해서 word vector를 생성.

    2. vocab에는 없지만 pre-trained word embedding이 존재한다면, 그냥 그 벡터를 이용한다 -> 교수님이 추천한 방식

    3. random vector를 부여하고 그대로 vocab에 추가하여 학습시킨다.

     

    • Word vector's problem?

    기존의 word embedding 방식은 하나의 벡터에 하나의 단어를 매핑하는, 즉 1:1 relation 이다. 하지만 단어의 경우, 문맥에 따라 여러 의미를 갖는 동음이의어 성질을 가지고 있다. 다음 예시를 보자

    1. 오늘 가 많이 흔들린다.

    2. 가 참 맛있게 익었다.

    같은 '배'라는 단어이지만, 문맥에 따라 완전히 다른 의미를 갖게 된다.

    이러한 문제를 해결하기 위해, 단순히 벡터와의 1:1 relation 뿐 아니라, 전체 문맥을 살펴보아야 한다.

    이전 lecture의 내용을 리마인드 해보자. NLM 모델에서, 각 hidden state는 이전의 context와 현재의 단어 embedding을 활용한 layer이다. 즉, Language Model은 각 포지션에서 단어를 전체 문맥에 대해 살피게 되며, 우리가 원했던 word embedding의 방법이다.

    => hidden state = representation of a word in context!!

     

    • Tag LM

    이러한 개념을 잘 살린 모델이 바로 Tag LM이다.

    간략한 도식도는 다음과 같은데, tradition word embedding이 위의 word embedding model이며,

    이를 Language Model을 이용하여 얻은 LM embedding와 함께 사용하는게 주 개념이다.

     

    상세히 살펴보자면, word embedding은 word2vec 과 같은 traditional word embedding과 character-level embedding을 함께 적용하여 얻게된다.

    또한, Pre-trained bi-Language model을 통해 얻은 순방향/역방향의 LM embedding, 즉 LM's hidden state를 concat 하여 LM embedding을 얻게 되며, 이를 앞에서 구한 word embedding과 함께 이용하는 모델 구조를 가지고 있다.

    이를 통해서 단순히 단어 자체의 의미 뿐 아니라, 단어의 문맥 또한 살피게 됨으로서 좀 더 나은 word vector를 갖게 된다.

     

    • ELMo:Embeddings from Langauge Models

    이러한 Tag LM을 좀 더 일반화하고 발전시킨 모델이 ELMo이다. 

    ELMo의 특징은 context window를 이용하지 않고, 전체 문장을 이용해서 문맥이 반영된 word vector를 만든다는 것이다.

    오른쪽 그림은 ELMo의 상세한 특징을 정리한 내용이다.

     

    ELMo의 요약도

    위의 수식이 담고 있는 ELMo의 궁극적인 생각은 다음과 같다.

    -top-level의 layer만 전체적인 문장의 특성을 capture하는 것이 아니라, 모든 layer에서 문장의 특성을 capture하는 게 더 유용하지 않을까?

    - 따라서, 각 layer의 hidden state와 learn weight를 곱하여 weighed average of hidden layer at each position을 계산하여, 이것을 representation에 이용하면 어떨까?

    이 수식을 그림으로 표현하면 다음과 같다.

     

    위의 그림과 같이, ELMo의 representation와 기존의 word embedding 방법론을 활용한 임베딩 벡터를 concat하여 여러 NLP task에 적용할 수 있다.

    • ELMo - great for all tasks

    이러한 ELMo의 도입은 대부분의 문제에서 성능 향상을 가져왔으며, 단순히 단어에 매핑된 벡터만 보는 것이 아니라, 전체적인 문맥에서 단어를 보는 것이 효과적이라는 결과를 얻을 수 있다.

    또한, Lower layer에서는 lower-level syntax를 잘 캐치하고, Higher layer에서는 high-level sematic을 잘 캐치하는 CNN과 비슷한 특성또한 발견할 수 있다.

    • ULMfit

    왼쪽 그림은 pre-training의 개념에 대한 모식도이다.

    source labeled dataset을 이용하여 source 모델을 학습하고, 이러한 학습도를 target model에게 전이하여 pre-trained model을 생성한다.

    이렇게 pre-trained된 모델에 target labeled dataset을 학습시켜 fine-tuning을 진행하게 된다.

    ULMfit에서는 이러한 Pre-training의 개념을 적용한 모델이다.

    ULMfit에서는 오른쪽 그림과 같이 총 3개의 과정을 거치게 된다.

    1. LM pre-training : 대량의 corpus로 LM을 학습한다.

    2. LM fine-tuning: pre-trained된 LM을 이용하여, 주어진 task에 맞게 모델을 fine-tuning한다.

    3. Classifier fine-tuning: 상위 layer에 분류 classifier layer를 추가하여 학습을 진행한다.

     

    이러한 pre-trained 기법을 활용하면 train data가 부족함에도 불구하고 낮은 error rate를 얻을 수 있다.

    즉, pre-training 기법의 유용성이 밝혀졌고, 이후 많은 모델에서 pre-training 기법을 활용하여 모델을 구성하게 된다.

     

    Motivation for Transformers

     

     

     

     

    댓글

Designed by Tistory.