본문 바로가기

BLOG/머신러닝

[머신러닝] GRU란? 케라스로 GRU 은닉층 추가하기 (코드)

1. GRU란?

GRU(Gated Recurrent Unit)란 LSTM과 유사한 구조를 가지는 모델을 말하는데요, LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서 은닉 상태를 업데이트하는 계산을 감소시킨 알고리즘을 말합니다.

 

또한 GRU의 가장 큰 특징은 출력게이트, 입력게이트, 삭제게이트를 가진 LSTM과 달리 업데이터 게이트와 리셋 게이트만 갖고 있다는 점입니다.

 

LSTM과 GRU가 비슷한 구조를 가지고 있지만 어느 게 더 좋다고 말할 수는 없는데요, 다만 GRU에서 매개변수의 양이 적기 때문에 데이터의 양이 적을 땐 GRU를 사용하는 것이 좋고, 데이터의 양이 많다면 LSTM이 적절할 수 있습니다.

 

 

2. 케라스로 GRU 은닉층 추가하기

한편, 케라스를 이용해 GRU 은닉층을 추가하고 싶다면 다음과 같이 코드를 작성하면 됩니다.

 

model.add(GRU(hidden_size, input_shape=(timesteps, input_dim)))