본문 바로가기

Major Study/25 Deep Learning Application

[Deep Learning Application] Lecture 9 : Sequential Models II

1. Exploding / Vanishing Gradient Problem

- RNN은 순전파 시 ht를 계산할 때, 이전 은닉 상태 ht-1와 가중치 행렬 Whh를 이용한다.

- 역전파시 | Whh | < 1이면 Vanishing Gradient가 일어나고,  > 1이면 Exploding Gradient가 일어난다.

 

- 손실 L에서 Whh로의 기울기는 다음과 같이 표현된다.

- tanh'(z) < 1이므로 반복 곱하면 Vanishing Gradient 문제가 일어난다.

 

- 너무 작은 가중치를 사용하면, 역전파시 출력이 0으로 수렴한다.

- 큰 가중치는 출력이 무한히 커지며 발산한다.

- Xavier 초기화는 적절한 초기 분포를 유지해주는 역할을 하지만 깊은 모델일 수록 여전히 0으로 수렴한다.

 

- RNN은 입력 시퀀스의 길이가 CNN에서의 깊이 역할을 한다.

- 즉, 시퀀스가 길어질수록 RNN의 깊이가 깊어지는 셈이다.

 

- RNN의 Exploding Gradient 문제를 해결하는 방법은 Gradient Clipping이다.

- 각 gradient 값을 일정한 최대 크기로 제한하는 것이다.

- 이때, 각 차원은 Gradient 방향을 유지한 채 비례적으로 축소되어야 한다.

 

- 가중치가 발산하지 않더라도, 각 층을 지날수록 값이 점점 줄어들 수 있다.

- 입력 시퀀스의 후반부에서 발생한 손실은 초반부로 역전파되며 거의 전달하지 못한다.

- 즉, 시간이 많이 지난 입력으로부터의 손실 정보가 초반으로 전달되지 않기 때문에 long-term dependency를 학습하기 어렵다.

- Vanishing Gradient 문제는 모델 구조 자체를 바꾸는 접근이 필요하다.

 

2. Towards Modeling Longer Dependence

- LSTM은 Vanishing Gradient 문제를 해결하기 위해 Cell state를 추가한다.

- cell state는 장기 기억을 저장하고 FC-layer를 우회하는 역할을 한다.

- 또한 이전 셀 상태 ct-1에 새로운 값을 더한 뒤 그 결과에 비선형 함수를 적용하는 구조를 가진다.

 

- forget gate를 추가해서 이전의 정보를 얼마나 유지할지를 결정한다.

 

- 입력 쪽에도 흐름을 조절하는 Input gate를 추가한다.

- Input gate는 새로운 입력으로부터 정보를 얼마나 받아들일지 결정한다.

 

- 마지막으로 Output gate는 은닉상태 ht로 업데이트 되는 값을 조절한다.

 

- 다만, LSTM은 Exploding / Vanishing Gradient 문제를 완전히 제거하는 것은 아니고, 장기 의존성을 학습하기 훨씬 용이하다.

 

- GRU는 LSTM과 유사한 아이디어로, 장기 의존성을 학습할 수 있도록 고안된 다른 구조이다.

- LSTM과 달리 Cell state는 존재하지 않고, 파라미터 수가 적고 계산이 빠르다.

 

3. Word Embedding

- 단어의 의미는 주변에 자주 등장하는 단어들로부터 유추할 수 있다.

- Word2Vec은 이를 학습하기 위한 방법으로, 두 가지 구조를 가진다.

 

1. CBOW (Continuous Bag of Words)

- 주변 단어가 주어졌을 때, 중심 단어를 예측한다.

2. Skip-Gram

- 중심 단어가 주어졌을 때, 주변 단어를 예측한다.

 

- 주변 단어를 올바르게 예측할 확률을 최대화하도록 단어 벡터를 학습한다.

 

- Word2Vec은 지역적 학습을 수행하지만 Glove는 전체 말뭉치의 전역적 통계를 이용한다.

- 단어 i가 단어 j 근처에 얼마나 자주 등장하는지 나타내는 동시출현 행렬 Xij를 구성한다.

 

- 두 단어 벡터의 내적이 동시출현 확률의 로그값과 근사하게 만든다.

 

- f(Xij) : 너무 드물거나 너무 자주 등장하는 단어에 대한 가중치 조절 함수

 

- Glove 임베딩은 개별 단어의 의미뿐 아니라, 단어들 사이의 의미적 관계까지 포착한다.

- 즉, 벡터 간의 차이가 단어 사이의 의미적 관계를 표현하도록 모델이 자연스럽게 학습된다.

 

4. Sequence-to-Sequence (seq2seq) Models

- many-to-many 형태의 NLP 문제로, 기계 번역(machine translation) 을 생각해보자.

- 입력 문장이 한 언어로 주어졌을 때, 같은 의미를 가진 다른 언어의 문장을 생성하는 것이 목표이다.

 

- 이 문제를 RNN으로 푸는 것은 적절하지 않다.

- 기존 RNN은 1:1 대응 관계를 전제로 하는데, 기계 번역의 경우 문장의 길이는 언어마다 다르고 단어의 순서 또한 달라질 수 있다.

- 어떤 경우에는, 아직 해당 단어를 읽지 않았는데 출력을 생성해야 하는 문제도 있다.

 

- 따라서 이전 방식의 '입력마다 출력 하나' 구조를 버리고,

- 우선 전체 입력 시퀀스를 인코딩하고, 그 정보를 이용해 출력을 디코딩 하는 방식을 사용한다.

 

- 입력 문장의 마지막 시점에서 은닉 상태 ht는 전체 문장의 의미를 포함한 문장 임베딩으로 간주된다.

- 이후 디코더가 이 임베딩을 입력 받아 단어를 하나씩 순차적으로 생성한다.

- 인코더는 디코더의 출력으로부터 전달되는 손실을 통해 함게 학습된다.

 

 

- 각 시점에서 디코더는

- 입력 문장 정보를 담은 은닉 상태와 이전 출력 단어를 입력으로 받아

- 다음 출력 단어를 예측한다.

- > 이를 자기회귀 구조라고 한다. 즉, 모델은 자기 자신의 이전 예측값을 다시 입력으로 사용하는 방식이다.

 

- 학습 단계에서는 이전 시점의 실제 정답 단어 yt-1를 입력으로 사용한다.

- > 모델이 올바른 맥락에서 출력을 학습할 수 있다.

 

- 따라서 학습 중에는 teacher forcing 기법을 사용한다.

- 즉, 모델이 이전에 예측한 단어 대신 정답 단어를 강제로 입력한다.

 

- 추론 단계에서는 실제 정답이 아닌 이전 단계에서 모델이 예측한 단어를 입력으로 사용한다.