GRU(Gated Recurrent Unit) - LSTM의 간소화
LSTM의 연산 복잡도를 간소화한 GRU의 gate는 다음과 같습니다.
- Reset Gate(r): 현재 입력을 얼마나 사용할지
- Forget Gate(z): 이전 hidden state 얼마나 잊을지
- Hidden Gate(g, h): LSTM의 Cell state와 Hidden state의 역할을 모두 수행
Reset Gate
Reset gate는 이전 hidden state와 현재 입력값을 이용해 생성되며, 활성화 함수는 sigmoid를 사용합니다. reset gate의 결과는 이후 g gate를 연산할 때 이전 hidden state를 조정합니다.
예) 입력값 ⓐ 나는 사과가 좋아합니다. ⓑ 너는 과일을 싫어합니다.
Q) 나는 어떤 과일을 먹고 싶을까요?
=> 질문을 위해 ⓐ의 정보가 필요합니다. Reset gate는 ⓐ와 ⓑ를 구분하는 기능을 합니다.
수식 설명
- 이전 hidden state와 현재 입력값을 이용해 reset gate 생성
- reset gate 결과는 현재 입력값을 조정하는데 사용
Forget Gate
GRU의 Forget gate는 LSTM의 Forget gate와 Output gate의 역할 겸합니다.
Forget gate는 이전 hidden state와 현재 입력값을 이용해 생성되며, 활성화 함수는 sigmoid를 사용합니다. 이전 hidden state에 직접 곱해서 이전 hidden state의 특징을 제거 합니다.
- 이전 hidden state와 현재 입력값을 이용해 forget gate 생성
- forget gate의 결과는 hidden state에서 이전 hidden state와 g의 값을 조정해 출력값을 내는데 사용
Hidden state
GRU의 Hidden gate는 LSTM의 Cell state와 Hidden state의 역할을 모두 수행합니다. 즉....
GRU의 Hidden gate는 Reset gate, Forget gate를 모두 적용하여 계산됩니다.
- g는 reset gate의 결과를 이용해 이전 hidden state값을 조정하고 현재 입력 값을 이용해 계산
- g의 활성화 함수는 하이퍼볼릭 탄젠트를 사용
- h는 forget gate를 이용해 이전 hidden state와 현재 g결과를 이용해 연산
- z + (1-z) 연산은 이전 hidden state에서 제거된 만큼 새로운 feature를 받아들이는 특성이 있어 결과 값을 -1~1사이로 bound함(LSTM처럼 tanh 필요없음)
감사합니다.
Reference
- Fast Campus
댓글
댓글 쓰기