[BoostCamp] DAY17 NLP#2

3 분 소요

[BoostCamp] DAY17 NLP#2


1. RNN and Language Model

Types of RNN

- One-to-one

입출력이 하나인 경우를 말한다.

sequential, timestamp로 이루어진 데이터가 아닌 단일한 데이터로 input, output을 사용한다.

- one-to-many

sequential, timestamp로 이루어 지지 않은 단일한 input data로 sequential한 output을 가지고 오는 경우를 말한다.

  • ex) Image Captioning

sequential한 데이터를 input으로 입력해야하는 경우, 나머지 input은 0으로 입력해주면 된다.

- many-to-one

sequential한 data를 input으로 받은 후에 최종 결과를 마지막 step에 return 해주는 경우를 말한다.

  • ex) Sentiment Classification

- many-to-many

  • first case

input을 다 읽은 후 output을 return 해준다.

  • ex) machine translation

  • second case

input이 주어질 때마다 output을 return 하는 형태도 존재한다. (실시간 성이 필요한 경우)

  • ex) video classification on frame level

Character level Language Model

언어 모델?
주어진 문자열, 단어 순서를 기반으로 다음 단어를 예측하는 것을 Task

How to training?

  1. character level의 사전을 구축한다.
    • 각각의 chatacter를 one-hot vector로 표현이 가능하다.
  2. 단어가 주어지면, 주어진 단어를 character 단위로 쪼개어 입력할때, 다음에 나올 charater를 예즉하는 output이 나올 수 있도록한다.
    • image
    • 그림과 같이 hello라는 단어를 character단위로 쪼개어 본다면 h, e, l, l을 순서로 input이 입력되게 된다.
    • 그러면, 우리는 h가 입력됐을 때 e가 반환되고
    • e가 입력됐을 때 l이 반환되는 model을 기대한다.
  3. input들은 RNN의 hidden layer를 통해 training을 한다.
    • image
    • image
    • h(t-1)즉, 이전에 학습한 결과 값 + 현재 input을 기반으로 학습을 하여 다음에 나올 character를 예측하도록 한다.
  4. 이제 hidden layer를 통해 학습되어 나온 output값을 통해 다음에 나올 character를 찾아낸다.
    • image
    • 각 timestamp 마다 다음에 나올 character를 예측한다.
    • outputlayer를 통해 값을 예측한다.
    • image
    • output vector는 기존에 정의된 사전의 크기와 동일하다.
    • 결과 값에서 제일 높은 확률을 가진 character를 가져오기 위해 softmax를 통해 그 값을 가져온다.
    • 이제 원하는 결과 값을 가지기 위해 계속해서 training을 해준다.

처음 넣은 데이터값의 return 값을 그 다음 timestamp의 input값으로 활용한다면 무한정으로 학습이 가능하다.
주식 값 예측…? 셰익스피어 글쓰기 참고할 블로그

Backpropagation through time (BPTT)

  • 매 timestep마다 주어진 character에서 발생된 hidden state vaetor-> output layer를 통한 예측값과 label값을 비교하여 loss값을 구한다.
    • Wxh : input layer에서 hidden layer로 값을 넘겨줄 때 가중치
    • Whh : 이전 input들에 대한 연산값을 현재 input값과 연산될 때, 이전 값에 가해지는 가중치
    • Why : hidden state에 결과 값을 output layer에 넘겨줄 때 가중치
  • BPTT는 이러한 Wxh, Whh, Why을 알맞게 튜닝하기 위해 연산한다.
  • input이 너무 길면 자원이 부족해질 수 있는 문제가 생긴다.
  • sequence를 나누어서 학습하자.
    • image

RNN에는 좋기만 할까??

  • 문제점이 존재한다. 그 문제점에 대해 알아보자.
    RNN을 간단히 그림으로 나타내면 아래와 같다.

그러면 이제 위의 그림을 식으로 나타내어 생각해보자.

위의 식을 확인해본다면, Backpropagation을 할때,

  • W의 절대값이 1이하이면 계속해서 곱한다면 기울기가 0에 가까워져 Gradient Vanshing이 야기될 수 있다.
  • W의 절대값이 1이하이면 계속해서 곱한다면 기울기가 inf에 가까워져 Gradient Exploding이 야기될 수 있다.

    2. LSTM and GRU

    Long Short Term Memory (LSTM)

  • IDEA : transformation없이 직관적인 cell state 정보 전달
  • Original RNN에서 Long Term Dependency를 해결한 Model이다.
  • Original RNN의 Gradient VanshingGradient Exploding을 해결해준다.

  • hidden state를 단기기억을 담당하는 소자로 생각할 수 있다.
  • image
  • 위의 수식과 같이 LSTM에서는 Ct-1이라는 값이 더 추가해서 연산된다.
    • Ct-1 : Cell state vector
  • Cell state vector가 hidden state vector보다 완성된 정보를 가지고 있다.
  • hidden state vector는 Cell state vector를 한번더 가공해서 노출할 필요가 있는 정보만을 남긴 Vector이다.

How Training?

  • Xt와 Ht-1을 입력으로 받아서 vector를 선형 변환한 후, output vector를 분할 해서 각각의 vector를 sigmod로 계산하는데, 마지막 값은 tanh로 연산을 한다. 각각의 연산된 vector를 아래와 같이 명명한다.
    • i : input gate
    • f: forget gate
    • o : output gate
    • g : gate gate
  • 해당 vector들은 cell state vector, hidden state vector를 계산하기까지 사용되는 중간 결과물로써 사용이 된다.
  • i, f, o는 sigmoid 함수를 통해 연산되기에 0~1의 가진다.
  • 즉, 원래 값의 일부를 가지도록 해주는 역할을 한다.
  • g의 값은 -1 ~ 1의 값을 가진다. 즉, 현재 timestep에서 유의미한 값을 가지도록 해준다.
1. 얼마나 많은 정보가 cell state로부터 흘러갈지 제어하기위해 gate를 사용한다.

  • 전 timestep에서 넘어온 Ct-1을 적절하게 변환해서 중간 결과물인 i, f, o, g를 만들어 낸다.
2. Forget gate?

  • 이전 timestep에서 넘어온 값을 얼마나 잊을지, 얼마나 기억할지 계산하는 gate이다.

3. Gate Gate?

  • 이전 cell state vector를 f를 통해 적당한 비율로 정보를 잊게 만들어 왔을 때,
  • 해당 연산에서는 해당 state에서 들어온 input data를 적당한 비율로 기억을해서 해당 state에서의 cell state vector를 만들어 낸다.
  • image
4. Output Gate and Hidden State vector

  • Cell state vector가 가지던 값에서 적절한 비율로 그 값을 적게 만들어서 hidden state vector를 만든다.
  • Ct는 기억해야하는 모든 정보를 압축해서 가지고 있다.
  • 반면에 ht는 현재 timestep에서 직접적으로 필요한 정보만을 가진다.
  • image

Gated Recurrent Unit (GRU)

  • LSTM을 경량화 해서 더 빠른 속도와 적은 메모리를 사용하는 Model이다.
  • LSTM의 cell state vector와 hidden state vector를 통합하여 hidden state vector만을 사용한다.
  • LSTM과 동작 원리가 매우 비슷하다.
  • image

3. Plus Question

  • 1 BPTT 이외에 RNN/LSTM/GRU의 구조를 유지하면서 gradient vanishing/exploding 문제를 완화할 수 있는 방법이 있는지 찾아보자.

  • 2 RNN/LSTM/GRU 기반의 Language Model에서 초반 time step의 정보를 전달하기 어려운 점을 완화할 수 있는 방법을 찾아보자.

4. 이모저모

  1. 강의
    • 오늘은 자연어 처리 model인 LSTM과 GRU에 대해 배웠다.
    • RNN을 자연어 처리뿐만아니라 이미지 학습도 가능하다는 것을 들었는데
    • 오늘 배운 LSTM을 활용하여 이미지 분류를 해보아야겠다.
  2. 피어세션

댓글남기기