본문 바로가기
딥러닝(Deep Learning)/D&A Deep Session

[D&A Deep Session] 8차시 - 14. GRU, Seq2Seq

by rahites 2022. 5. 16.

 

# GRU ( Gate Recurrent units )

: LSTM 모델을 더 단순화 할 수는 없을까? 라는 아이디어에서 시작된 모델로 cell state를 사용하지 않고 Reset gate, Update Gate를 사용한다. 

 

1. Reset gate를 계산해서 임시 h_t를 만든다.

2. Update gate를 통해 h_{t-1}와 h_t간의 비중을 결정한다.

3. z_t를 이용해 최종 h_t를 계산한다.

 

* Reset Gate

: 과거의 정보를 적당히 리셋시키는 것을 목적으로 sigmoid 함수를 활용한다.

( 이전 hidden state의 값을 얼마나 사용할지 )

 

* Update Gate

: LSTM의 forget gate와 input gate를 합친 느낌으로 과거의 현재 정보의 최신화 비율을 결정한다. 

 

=> LSTM과 마찬가지로 비선형 함수를 거치지 않고 Back Propagation이 이루어지기 때문에 Gradient Vanishing Problem의 상당 부분이 해결된다!! LSTM과 성능적으로 큰 차이가 없지만 LSTM보다 학습할 가중치 개수가 훨씬 적다는 장점을 가진다.

 

** 참고 **

https://yjjo.tistory.com/18

 

Gated Recurrent Units (GRU)

Gated Recurrent Units (GRU) GRU는 게이트 메커니즘이 적용된 RNN 프레임워크의 일종으로 LSTM에 영감을 받았고, 더 간략한 구조를 가지고 있습니다. 아주 자랑스럽게도 한국인 조경현 박사님이 제안한 방

yjjo.tistory.com

 

 

# Seq2Seq

: 기계 번역, 음성 인식 등의 분야에서 사용할 수 있는 Encoder-Decoder 모델이다. LSTM이나 GRU 모델을 기반으로 고정된 길이의 sequence를 입력받아 같은 길이의 sequence를 출력해준다. 기존에 사용하던 DNN(Deep Neural Network)는 고정된 차원의 feature와 고정된 차원의 출력에만 특화되어있기 때문에 입력과 출력의 길이가 매번 다른 데이터를 활용하는 문제에 적합하지 않기 때문에 이러한 단점을 극복한 Seq2Seq 방법이 제안되었다.

 

Seq2Seq 모델은 LSTM이나 GRU를 사용하고 Encoder, Decoder부분으로 구성된 모델이다. Encoder는 입력 sequence의 상태를 추출해주고, Decoder는 Encoder에서 생성된 상태를 초깃 값으로 이용하여 순차적으로 sequence를 생성한다. 

 

- Encoder : 시계열 데이터를 압축해서 표현하고 압축한 데이터를 Context Vector(고정 길이의 벡터)라고 한다. sequence를 순차적으로 LSTM이나 GRU 모델에 입력받아 sequence의 마지막 부분에서 cell state와 hidden state를 추출한다( GRU는 cell state가 없기 때문에 hidden state만 추출 ). 이 때 sequence의 종료를 나타내주는 EOS(End of Senntence, .!? 등)가 매우 중요하다. 

 

- Decoder : 압축된 데이터를 다른 시계열 데이터로 표현해준다. Encoder에서 추출한 state들을 초기 state로 받아 LSTM이나 GRU를 활용하여 순차적으로 결과를 출력해준다. 학습과정에서 처음 부분은 시작 값을 알 수 없기 때문에 EOS를 입력 값으로 받는다. 

 

* 성능 개선 방법

1. 입력 데이터 reverse

: reverse 이전보다 Gradient 전파가 원활하게 진행되기 때문에 학습 속도와 성능이 높아진다.

 

2. peeky Seq2Seq

: Context Vector를 Decoder의 모든 계층에 전달하는 방법이다. Seq2Seq의 핵심 정보는 hidden state 벡터에 들어있는데 Decoder의 처음 모델에서만 해당 벡터를 받게 된다. 따라서 이 중요한 정보가 한번만 쓰이는 것이 효율성이 낮기 때문에 해당 벡터를 모든 계층에 전달해주자는 아이디어이다. 

 

 

** 참고 **

https://yjjo.tistory.com/35?category=881892 

 

Seq2seq Model (Sequence to Sequence Model)

개요 이번 포스팅에서는 Sequence to Sequence (Seq2seq) Model에 대해서 알아보겠습니다. Seq2seq 모형은 LSTM(또는 GRU) 기반 모형으로 고정된 길이의 sequence를 입력받아, 입력 sequence에 알맞은 길이의 sequ..

yjjo.tistory.com

https://godsdy0410.tistory.com/entry/Seq2Seq-%EA%B0%9C%EC%84%A0-Reverse-Peeky-Attention-%EC%96%B4%ED%85%90%EC%85%98?category=880453 

 

Seq2Seq 개선 (Reverse, Peeky, Attention-어텐션)

이번 장에서는 앞에서 설명한 seq2seq의 구조를 살짝 변경해 성능을 올리는 기술을 설명 하겠다. 구조자체는 간단한 기술이라서 설명할 것이 많지 않기에 가볍게 봐주었으면 좋겠다. 하지만 이장

godsdy0410.tistory.com

 

댓글