| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- gas
- stride
- MAC
- rpc
- Multiplay
- C++
- gameplay effect
- 유니티
- CTF
- 게임개발
- attribute
- widget
- 보안
- 언리얼 엔진
- 언리얼엔진
- Aegis
- os
- 게임 개발
- unity
- photon fusion2
- gameplay ability system
- ability task
- UI
- Unreal Engine
- gameplay tag
- linear regression
- Replication
- animation
- local prediction
- listen server
- Today
- Total
Replicated
순환 신경망 (RNN, Recurrent Neural Network) / LSTM 본문
RNN
- 순환 신경망
- 시간적으로 연속성이 있는 데이터를 처리 (시계열 데이터)
- Recurrent: 반복적인 순환 구조를 갖는다
- 기억 능력을 가짐. 새로운 입력이 들어올 때마다 기억이 조금씩 수정
- 최종 출력: 모든 입력을 요약한 정보
- 각 단계마다 같은 가중치를 학습함
다양한 구조
일대다
- 입력이 하나이고 출력이 다수인 구조
- 이미지를 입력해서 이미지에 대한 설명을 문작으로 출력하는 이미지 캡션(image captioning)이 대표적
다대일
- 입력이 다수이고 출력이 하나인 구조
- 문장을 입력해서 긍정/부정을 출력하는 감정 분석기에서 사용
다대다
- 입력과 출력이 다수인 구조
- 언어를 번역하는 자동 번역기 등이 대표적
RNN 구조
RNN 계층(layer)과 셀(cell)
- RNN 셀은 RNN 계층의 구성 요소
- RNN 셀은 하나의 단계(time step)를 처리
- 입력과 과거 상태를 가져와 새로운 상태 출력
RNN의 가중치
- RNN 셀은 입력에 Wxh, 출력에 Why, 다음 스텝으로 보내는 가중치에 Whh를 곱함
- 세 개의 가중치는 모든 타임 스텝에서 동일
은닉층

- 이전 은닉층과 새로운 현재 입력과의 조합
- 활성화 함수: 하이퍼볼릭 탄젠트
출력층

- 소프트 맥스를 사용해 확률값 도출
- 각 타임 스템마다 오차를 측정
- 손실 함수의 예: 실제값 yt와 y^t의 평균 제곱 오차 (Mean Squared Error)
RNN 학습
RNN의 역전파
- 각 타임 스텝마다 오차 측정하고 역전파
- BPTT (Back Propagation Through Time) 이라 부름
- 오차가 멀리 전파될 때 기울기가 점점 작아지는 기울기 소실 문제 (Gradient Vanishing) 발생
- 1보다 작은 값을 계속 곱하기 때문
* 하이퍼볼릭 탄젠트 미분값이 1-y^2. 최대값이 1
기울기 폭발 문제 (Gradient Explosion)
- 행렬곱 연산에 의해 역전파 시 기울기가 계속 증가
- 같은 가중치 값이 계속 곱해져서 가중치 값에 따라 기울기가 지수적으로 증가할 수도, 감소할 수도 있음
- 증가하는 경우를 기울기 폭발이라 함
기울기 소실과 폭발 문제를 저감하기 위한 모델
- LSTM, GRU
LSTM
- 망각 게이트, 입력 게이트, 출력 게이트라는 새로운 요소를 은닉층의 각 뉴런에 추가
- h: hidden state, 히든 상태: 단기 기억과 출력에 사용
- c: cell state, 셀 상태: 장기 기억
망각 게이트 (forget gate)
- 과거 정보를 어느 정도 기억할지 결정

- 과거 정보와 현재 데이터를 입력받아 시그모이드를 취한 후 그 값을 과거 정보에 곱해 줌
- 시그모이드 출력이 0이면 버리고 1이면 온전히 보존
* [A, B] : concatenation
- : forget gate의 출력 (0~1 사이)
- : 시그모이드 함수
- : 망각 게이트의 가중치 행렬
- [ht−1,xt]: 이전 은닉 상태와 현재 입력을 연결(concatenation) 한 것
- : 이전 셀 상태
- : 업데이트된 셀 상태
입력 게이트 (input gate)
- 새로운 정보를 셀 상태에 얼마나 반영할지 결정

| it | 입력 게이트의 출력 (얼마나 받아들일지 결정) |
| c~t | 새로 들어올 셀 상태 (후보 기억) |
| ct−1 | 이전 셀 상태 (기존 기억) |
| ctc | 최종 업데이트된 새로운 셀 상태 |
| [ht−1,xt] | 이전 은닉 상태와 현재 입력의 연결 |
- 과거 정보와 현재 데이터를 입력받아 시그모이드와 tanh를 기반으로 현재 정보에 대한 보존량을 결정
- 1이면 현재 입력 xt가 들어올 수 있도록 허용, 0이면 차단
정확한 LSTM 셀 상태 업데이트 수식

실제로는 망각 게이트와 입력 게이트가 모두 셀 상태에 관여
첫번째 항: 망각 게이트 관여
두번째 항: 입력 게이트 관여

출력 게이트 (output gate)
- 과거 정보와 현재 데이터를 사용해 뉴런의 출력 결정

- 은닉 상태와 t번째 입력을 고려해서 다음 은닉 상태 계산
- LSTM에서는 이 은닉 상태가 그 시점에서의 출력
- ot : 출력 게이트 값 (0 ~ 1 사이, 시그모이드 결과)
- ht : 현재 시점의 은닉 상태
- ct : 업데이트된 셀 상태 (장기 기억)
- tanh(ct) : 셀 상태를 출력에 맞게 변환 (단기 기억 생성용 변환. 모든 정보가 출력될 필요가 없으니 -1 ~ 1 사이로 정규화)
LSTM 역전파
- C의 값이 tanh나 sigmoid를 직접 거치지 않고 다음 셀로 전달됨
- 합성곱이 있지만 셀마다 다른 값이 곱해짐
-> 기울기 소실 / 폭발 문제 저감
'학부 > 빅데이터마이닝' 카테고리의 다른 글
| 생성 모델 (0) | 2025.06.08 |
|---|---|
| 합성곱 신경망 (CNN, Convolutional Neural Network) (0) | 2025.06.08 |
| 신경망 학습 관련 기술들 (0) | 2025.06.08 |
| 오차 역전파법 (Backward Propagation) (0) | 2025.06.08 |
| 신경망 학습 / 수치미분 (0) | 2025.06.08 |