포스트

딥러닝 기초 (13) - RNN: 순환 구조와 BPTT

시퀀스를 은닉 상태로 요약하며 한 원소씩 읽는 순환 신경망의 구조와 시간축 파라미터 공유, 시간을 통한 역전파(BPTT), 그리고 기울기 소실·폭발과 순차 처리라는 두 근본 한계를 정리한 딥러닝 기초 (13)편입니다.

딥러닝 기초 (13) - RNN: 순환 구조와 BPTT

딥러닝 기초 시리즈의 13편입니다. 전체 목차는 0편에 있습니다. 12편에서 시퀀스를 벡터열로 만들었으니, 이 편은 그 열을 순서대로 읽는 구조 RNN을 다룹니다.

순환: 상태를 이어가며 읽는다

RNN은 시퀀스를 한 번에 보지 않고, 한 원소씩 순서대로 읽으며 은닉 상태(hidden state)를 갱신합니다. 시점 t의 은닉 상태는 지금 입력 x_t와 직전 상태 h_{t−1}로 정해집니다.

1
h_t = tanh(W_x · x_t + W_h · h_{t−1} + b)

h_t는 “지금까지 읽은 것의 요약”, 곧 메모리 역할을 합니다. 결정적인 점은 모든 시점이 같은 가중치 W_x, W_h를 재사용한다는 것입니다. 9편의 CNN이 공간축에서 필터를 공유했다면, RNN은 시간축에서 파라미터를 공유합니다. 덕분에 길이가 몇이든 같은 셀을 반복 적용해 처리할 수 있습니다.

출력은 과제에 따라 다릅니다. 문장 전체를 하나로 분류하면 마지막 h만 쓰고(시퀀스→하나), 번역처럼 시퀀스를 시퀀스로 내보내기도 합니다.

시간을 통한 역전파 (BPTT)

RNN을 학습시키려면 이 순환을 시간축으로 펼쳐서(unroll) 봐야 합니다. 시퀀스 길이가 T면 같은 셀이 T번 이어진 깊이 T짜리 신경망과 같습니다. 여기에 4편의 역전파를 그대로 적용한 것이 BPTT(Backpropagation Through Time)입니다. 손실의 기울기가 마지막 시점에서 첫 시점까지 시간을 거슬러 전파됩니다. 문제는 여기서 나옵니다.

근본 한계 1: 기울기 소실과 폭발

시간을 거슬러 기울기를 전파할 때, 같은 가중치 W_h가 반복해서 곱해집니다. 어떤 값을 여러 번 곱하면 결과는 극단으로 갑니다.

1
2
0.9 ** 50 = 0.005      # 1보다 작으면 → 0으로 소실
1.1 ** 50 = 117.39     # 1보다 크면 → 폭발

W_h가 작으면 먼 과거의 기울기가 0으로 소실되고, 크면 폭발합니다. 소실이 특히 치명적입니다. 문장 앞부분의 정보가 뒤까지 기울기를 전달하지 못해, RNN은 긴 의존성을 학습하지 못합니다. “그 사람은 프랑스에서 자랐고 … 그래서 [프랑스어]를 유창하게 한다”에서 멀리 떨어진 단서와 빈칸을 연결하지 못하는 것입니다.

폭발은 기울기 크기를 잘라내는 gradient clipping으로 비교적 쉽게 막지만, 소실은 값을 되살릴 수 없어 그렇게 해결되지 않습니다. 이를 구조로 푸는 것이 다음 편의 LSTM입니다.

근본 한계 2: 순차 처리

또 하나의 한계는 속도입니다. h_t를 계산하려면 h_{t−1}이 먼저 있어야 합니다. 시점들을 순서대로만 계산할 수 있고 병렬화가 불가능합니다. 시퀀스가 길수록, 데이터가 많을수록 학습이 느려집니다. 이 순차성의 한계는 LSTM으로도 해결되지 않고, 결국 Transformer에서야 “순서대로 읽는다”는 전제를 버리며 풀립니다.

정리

개념한 줄 요약
순환 구조은닉 상태로 과거를 요약하며 한 원소씩 읽음
시간축 파라미터 공유모든 시점이 같은 셀 재사용. 길이에 무관
BPTT시간축으로 펼쳐 역전파. 길이 T면 깊이 T
한계 1: 소실/폭발W_h 반복 곱 → 긴 의존성 학습 실패
한계 2: 순차 처리h_th_{t−1}에 의존 → 병렬화 불가

다음 편은 소실 문제를 게이트라는 장치로 정면 돌파하는 LSTM과 GRU입니다.

다음 글: 딥러닝 기초 (14) - LSTM과 GRU: 게이트로 장기 의존성

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.