티스토리 뷰
1️⃣ LSTM (Long Short Term Memory)
▶ LSTM 이란?
Long Short Term Memory = 장단기 메모리 → 장기 의존성과 단기 의존성을 모두 기억할 수 있다는 의미
- Vanilla RNN의 기울기 소실 문제를 해결하고자 등장했다.
- 새로 계산된 hidden state를 출력값으로도 사용한다.
- Vanilla RNN과 내부 연산 방식만 다르고 입력값, 출력값은 Vanilla RNN처럼 사용할 수 있다.
(Vanilla RNN을 사용한 부분의 모델을 LSTM으로 바꿔서 사용 가능)
💡 RNN의 장기 의존성 문제
RNN은 시계열 데이터와 같은 순차 데이터의 경향성을 학습하는 데 훌륭한 성능을 제공한다.
하지만 모델 학습에 사용하는 데이터의 길이(sequence)가 길어질수록 학습 성능이 저하되는 문제가 있다.
이는 거리가 먼 입력값과 출력값 사이에 역전파 되는 기울기 값이 점점 0에 수렴하는 기울기 소실 문제 때문
→ 길이가 긴 시계열 데이터에서 장기 의존성을 학습하는 데 약점
Cell State
: 기울기 소실 문제를 해결하기 위한 핵심 장치
- 장기적으로 기억할 정보를 조절한다.
게이트 (Gate)
3종류의 게이트가 4개의 FC Layer로 구성된다.
- 𝑊𝑓 : 망각 게이트 (Forget Gate)
- 𝑊𝑖 , 𝑊𝐶 : 입력 게이트 (Input Gate)
- 𝑊𝑜 : 출력 게이트 (Output Gate)
1) 망각 게이트 (Forget Gate)
기존 cell state에서 어떤 정보를 잊을지 결정하는 게이트
- 𝜎 : sigmoid 함수
- [ℎ𝑡−1, 𝑥𝑡 ] : ℎ𝑡−1벡터와 𝑥𝑡 벡터를 concatenate 하는 연산 ex) [1 2 3] 과 [4 5 6] 을 concatenate하면 [1 2 3 4 5 6]
2) 입력 게이트 (Input Gate)
현재 입력 받은 정보에서 어떤 것을 cell state에 저장할지 결정
→ 새로운 Cell State는 Forget Gate와 Input Gate의 정보를 통해 갱신된다.
- * 연산자는 벡터의 각 원소별로 곱하는 연산 (Hadamard Product) ex) [1 2 3] ∗ [4 5 6] = [4 10 18]
3) 출력 게이트 (Output Gate)
다음 hidden state와 출력값을 계산
- 새로 계산된 cell state(Ct)를 사용
2️⃣ GRU (Gated Recurrent Unit)
▶ GRU 란?
Gated Recurrent Unit = 게이트를 가지는 순환 유닛
- LSTM이 가지는 3개의 게이트를 2개로 간소화하고 Cell State를 없앴다.
→ 파라미터 수가 감소하여 LSTM보다 빠른 학습 속도를 가짐
→ 그럼에도 성능은 일반적으로 LSTM과 비슷한 수준
- LSTM과 마찬가지로 새로 계산된 hidden state를 출력값으로도 사용한다.
GRU의 게이트
2종류의 게이트가 2개의 FC Layer로 구성된다.
- 𝑊𝑟 : 리셋 게이트 (Reset Gate)
- 𝑊𝑧 : 업데이트 게이트 (Update Gate)
1) 리셋 게이트 (Reset Gate)
기존 hidden state의 정보를 얼마나 초기화할지 결정하는 게이트
(LSTM의 망각 게이트와 비슷함)
→ Reset Gate의 결과를 통해 새로운 hidden state의 후보를 계산한다.
- 𝑟𝑡 ∗ ℎ𝑡−1 부분이 점선을 통해 𝑊𝑖로 전달
2) 업데이트 게이트 (Update Gate)
기존 hidden state의 정보를 얼마나 사용할지 결정하는 게이트
→ Update Gate의 결과를 통해 새로운 hidden state를 계산한다.
- Update Gate의 정보만이 새로운 hidden state 계산에 사용된다.
(Update Gate가 LSTM의 Forget Gate와 Input Gate를 하나로 합친 것과 유사한 역할)
3️⃣ RNN 모델 활용
▶ 모델 학습을 위한 손실 함수 계산
주로 사용하는 손실 함수 𝑓
- 회귀 분석 : Mean Squared Error (MSE)
- 분류 작업 : Cross Entropy
▶ RNN 기반 모델 활용
RNN/LSTM/GRU 모델은 회귀 분석과 분류 작업에 모두 활용 가능
회귀 분석
: 각 시점의 출력값이 어느 정도일지 예측
ex) 주가 예측, 기온 예측, ...
분류 작업
: 각 시점의 데이터가 어느 클래스일지 예측
ex) 문장에서 다음 단어 예측, 각 단어의 품사 예측, 상품 리뷰의 긍정/부정 분류, ...
이 글은 엘리스의 AI트랙 5기 강의를 들으며 정리한 내용입니다.
'개발공부 > 🤖 DL & ML' 카테고리의 다른 글
[자연어 처리] 한국어 자연어 처리 및 문장 유사도 (0) | 2022.11.09 |
---|---|
[딥러닝 활용] 모델 서비스하기 (0) | 2022.11.09 |
[RNN] Recurrent Neural Network (0) | 2022.11.07 |
[자연어 처리] 텍스트 전처리 및 단어 임베딩 (0) | 2022.11.03 |
[CNN] Convolutional Neural Network (0) | 2022.11.02 |
프론트엔드 개발자 삐롱히의 개발 & 공부 기록 블로그