머신러닝-딥러닝

[딥러닝] RNN & LSTM & Auto-Encoder

옆동네애옹이 2024. 8. 12. 15:34
728x90

순환신경망(RNN)

 - 입력데이터가 sequence(시퀀스, 시계열 데이터time series data) - 시점에 따라 데이터가 달라짐. 특정 시점의 데이터 한 번에 수집이 아닌, 시간 흐름에 따라 데이터도 점차 수집하는 것. (각 데이터 포인트의 수집 시점이 다름)

  * 시퀀스 데이터: 데이터의 순서가 중요하고, 이전 데이터가 다음 데이터에 영향 미치는 경우.

  - NLP의 경우, 문장에서 단어들의 순서 중요.

  * 시계열 데이터: 시간 흐름에 따라 측정된 데이터, 시간 순서에 따라 연속적으로 측정

  -  주식 가격, 기후 데이터 등. 

- RNN: Recurrent(순환) -> 출력 결과가 다음 시점에 재사용

출력된 결과가 다음 시점까지 기억되어 사용

 

 

LSTM(Long Short Term Memory)

원: 행렬곱, +: 행렬합 의미

 

RNN의 vanishing gradient(그래디언트 소실), exploding gradinet(그래디언트 폭주) problem 해결하기 위해 만든 방법.

긴 시퀀스에서 '장기적 의존성 학습'에 어려움

결과값이 다음 시점으로 넘어갈 때, 결과값을 넘길지 말지 결정하는 단계가 추가됨

 

* vanishing gradient(그래디언트 소실): 학습 진행 과정에서 그래디언트가 점점 줄어 사라지는 현상

* exploding gradinet(그래디언트 폭주): 학습 진행 과정에서 그래디언트가 점점 커져 폭주하는 현상

 

cell state & gate

- Cell state: 정보를 장기간 유지 - 데이터가 네트워크를 통과하며 일관되게 유지할 수 있게 해줌

- Gates: 어떤 정보를 유지하고 어떤 정보를 버릴지 결정

  - Input gate: 현재 입력이 셀 상태에 얼마나 추가될지 결정.

  - Forget gate: 셀 상태에서 어떤 정보를 버릴지 결정

  - Output gate: 셀 상태에서 출력할 정보를 결정

 

LSTM 동작 방식

1) forget gate

- 입력과 이전 cell state 이용해, 현재 셀 상태에서 얼마나 많은 정보를 버릴지 결정 (sigmoid 이용)

 

2) input gate

- 새로운 정보가 cell state에 얼마나 추가될지 결정 (sigmoid)

  2.1) 입력 게이트 활성화: 현재 입력 & 이전 은닉 상태 사용해 새로운 정보 얼마나 추가할지 결정

  2.2) 후보 값 생성 Candidate memory: 새로운 정보를 생성 (tanh이용)

3) update cell state

- forget gate, input gate이용해 셀 상태 업데이트

4) output gate

- 셀 상태 바탕으로 현재 시점 출력 결정 (sigmoid & tanh)

activation fn.

* sigmoid: gate 동작 조정 / 0 ~ 1 범위로 매핑 / 정보 선택적으로 조절

* tanh: cell state 조정 / -1 ~ 1 범위로 매핑 / 정보 범위를 조절해 안정적 학습을 지원

 

+ 비슷한 원리로 GRU (Gated Recurrent Unit) 존재

 

 

Auto-Encoder

- Encoder: 입력 데이터를 Code(은닉층)으로 인코딩 (차원 축소)

- Decoder: 인코딩된 Code를 다시 디코딩 (차원 복원)

* feature data 넣고 predict 하는것과 다름, "비지도 학습" 에 해당.

 

728x90