개요
면접을 준비하며 포트폴리오에 대해 읽어보다가 학부 졸업작품으로 진행한 프로젝트에서 사용한 메인 기술인 LSTM에 대해 정리해 보자.
사실 이 기술을 사용한 지 너무 오래돼서 기억이 가물가물 한 건 안 비밀..
RNN
RNN(순환 신경망)이란 과거의 정보를 기억하면서 현재 데이터를 과거의 정보를 토대로 처리하는 신경망을 의미한다.
과거에 사용되던 일반적인 신경망은 입력을 한 번 받고 결과를 출력한다. 즉, 이전에 사용된 데이터를 축적하지 않는다.
하지만 RNN은 이전의 정보를 저장하고 이를 다음 단계에서 활용한다.
하지만 이 RNN도 과거에 사용된 정보를 영원히 보관하지 못한다. (장기 의존성 문제)
이렇게 RNN이 과거 정보를 잘 기억하지 못하는 이유는 역전파 과정에서 발생하는 기울기 소실 (Gradient Vanishing) 때문이다.
RNN은 과거에 입력된 데이터에 기울기를 전달하며 입력된 문장의 순서대로 학습하는 방식을 사용하는데, 이 기울기가 소실된다면 의미 있는 모델을 학습시킬 수 없는 것이다.
그렇기 때문에 이러한 문제를 해결하기 위해 나온 기술이 LSTM이다.
LSTM (Long Short Term Model)
LSTM은 RNN의 기울기 소실 문제를 해결하기 위해 셀 상태와 게이트를 추가했다.
여기서 셀 상태란 이전에 입력된 데이터를 저장하는 공간이고, 게이트는 총 3 가지로 나뉘어 있다.
- 오래된 정보를 삭제하는 망각 게이트
- 삭제하는 기준은 sigmoid 가 0에 가까울수록 삭제될 확률이 크다.
- 새로운 정보가 입력돼서, 이 정보를 얼마나 셀 상태에 저장할지 결정하는 입력 게이트
- 현시점을 기준으로 셀 상태의 값(예측값)을 출력하는 출력 게이트
참고
'개발 일기' 카테고리의 다른 글
[개발 일기] 2025.02.02 - 제네릭 (0) | 2025.02.02 |
---|---|
[개발 일기] 2025.02.01 - 객체 지향 생활 체조 9가지 규칙 (2) (1) | 2025.02.01 |
[개발 일기] 2025.01.30 - 객체 지향 생활 체조 9가지 규칙 (1) (0) | 2025.01.30 |
[개발 일기] 2025.01.29 - 불변 객체 (0) | 2025.01.29 |
[개발 일기] 2025.01.28 - 이분탐색 (Lower Bound, Upper Bound) (0) | 2025.01.28 |