관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

텍스트를 위한 인공 신경망 6 - LSTM과 GRU 셀 1 : LSTM 구조와 LSTM 신경망 훈련하기 본문

인공지능/딥러닝

텍스트를 위한 인공 신경망 6 - LSTM과 GRU 셀 1 : LSTM 구조와 LSTM 신경망 훈련하기

huenuri 2024. 12. 18. 10:44

순환 신경만에서 빼놓을 수 없는 핵심 기술인 LSTM과 GRU 셀을 사용한 모델을 만들어볼 것이다.

 

시작하기 전에

이 절에서는 고급 순환층인 LSTM과 GRU에 대해 알아보겠다. 이른 층들은 앞에서 배웠던 SimpleRNN보다 계산이 훨씬 복잡하다. 하지만 성능이 뛰어나기 때문에 순환 신경망에서 많이 채택되고 있다.

일반적으로 기본 순환층은 긴 시퀀스를 학습하기 어렵다. 시퀀스가 길수록 순환되는 은닉 상태가 담긴 정보다 점차 희석되기 때문이다. 따라서 멀리 떨어져 있는 단어 정보를 인식하는 데 어려울 수 있다. 이를 위해 LSM과 GRU 셀이 발명되었다.


 

 

 

 

 

 

LSTM 구조

 

 

 

LSTM은 Long Short-Term Memory의 약자이다. 말 그대로 단기 기억을 오래 기억하기 위해 고안되었다. LSTM은 구조가 복잡하므로 단계적으로 설명하겠다. 하지만 기본 개념은 동일하다. LSTM은 구조가 복잡하므로 단계적으로 설명하겠다. 하지만 기본 개념은 동일하다. LSTM에는 입력과 가중치를 곱하고 절편을 더해 활성화 함수를 통과시키는 구조를 여러 개 가지고 있다. 이런 계산 결과는 다음 타임스텝에 재사용된다.

 

 

 

 

 

 

 


 

 

 

 

 

LSTM 신경망 훈련하기

먼저 이전 절에서처럼 IMDB 리뷰 데이터를 로드하고 훈련 세트와 검증 세트로 나눈다. 이번에는 500개의 단어를 사용하겠다.

 

 

그 다음 케라스의 pad_sequences() 함수로 각 샘플의 길이를 100에 맞추고 부족할 때는 패딩을 추가한다.

 

 

 

 

경고창이 뜨지 않도록 input_length를 제거했는데 역시 아무것도 출력되지 않았다.

 

 

 

 

이렇게 길이를 명시해 주니 해결되었다.

 

simpleRNN 클래스의 모델 파라미터 개수는 200개였다. LSTM 셀에는 작은 셀이 4개 있으므로 4배가 늘어 800개가 되었다. 이제 모델을 컴파일하고 훈련해 보겠다.


 

 

 

 

 

 

 

 

그래프를 보면 기본 순환층보다 LSTM이 과대적합을 억제하면서 훈련을 잘 수행한 것으로 보인다. 하지만 경우에 따라서는 과대적합을 더 강하게 제어할 필요가 없다.


 

 

 

 

학습을 마치고

이제 훈련도 잘 되고 출력도 잘 된다. 아마도 오랫동안 쉬었지만 다시 딥러닝 공부 모드로 진입해서 이전의 능력을 회복한 것 같다. 무엇이든 첫 공부가 가장 힘들다. 하지만 이 과정을 견디면 내가 생각한 것 이상으로 많은 것을 얻게 된다.

다음으로 마지막 공부가 남아있다.