28.33 순환 신경망(RNN)에서의 3차 텐서 구조: 배치×시간 단계×특성
1. 차 텐서 구조의 도입 동기
순환 신경망(Recurrent Neural Network, RNN)은 시계열, 음성, 자연어 등 순서적 의존 관계를 가지는 자료를 처리하기 위해 고안된 신경망 계열로, 그 입력과 내부 활성값은 일반적으로 3차 텐서로 표현된다. 가장 보편적으로 사용되는 약속에서 입력 텐서 \mathcal{X}의 형상은 (N, T, D)이며, 각 축의 의미는 다음과 같다. N은 미니배치 내 표본의 수, T는 시퀀스의 시간 단계 수, D는 각 시점에서의 특성 벡터의 차원이다. 이 세 축이 결합된 3차 텐서 구조는 임의로 정해진 것이 아니라, 순환 신경망이 가지는 시간적 순차성과 시점별 동일 가중치 적용이라는 두 본질적 성질을 가장 단순하게 부호화한 결과이다.
2. 각 축의 의미론적 분석
2.1 배치 축 N
배치 축은 동시에 처리되는 독립적인 시퀀스 표본의 수를 나타낸다. 합성곱 신경망의 배치 축과 마찬가지로, 순환 신경망은 배치 축에 대해 동일한 순환 셀(Recurrent Cell)을 표본별로 동일하게 적용하므로, 이 축은 통계적으로 독립적인 병렬 차원으로 간주된다. 즉, 한 미니배치 내의 서로 다른 표본은 서로의 은닉 상태(Hidden State) 갱신에 영향을 주지 않으며, 모든 시점에서 표본별로 동일한 형태의 연산이 병렬적으로 수행된다.
2.2 시간 단계 축 T
시간 단계 축은 시퀀스의 순서적 위치를 나타내는 축으로, 다른 어떤 축과도 본질적으로 구별되는 성격을 가진다. 배치 축과 특성 축은 한 번에 모든 원소가 함께 처리될 수 있는 병렬 차원이지만, 시간 단계 축은 정의상 순차적 의존 관계를 내포하므로 일반적으로 시점 t의 출력은 시점 t-1까지의 입력에만 의존하도록 처리된다. 이 순차성은 순환 신경망의 정의 그 자체이며, 동시에 GPU 병렬화의 근본적 제약이 되는 차원이기도 하다.
2.3 특성 축 D
특성 축은 각 시점에서 입력으로 주어지는 벡터의 차원을 나타낸다. 자연어 처리에서는 토큰 임베딩의 차원, 음성 신호 처리에서는 한 프레임에서 추출된 특성 벡터의 차원, 일반적인 시계열에서는 한 시점에서 관측된 변량의 수에 해당한다. 특성 축에 대한 연산은 일반적으로 완전 결합(Fully Connected) 형태로 수행되며, 순환 셀의 입력 가중치 행렬이 이 축을 입력 차원으로 받는다.
3. 입력과 출력의 형상 변화
순환 신경망 계층은 입력 텐서 \mathcal{X} \in \mathbb{R}^{N \times T \times D}를 받아 출력 텐서 \mathcal{H} \in \mathbb{R}^{N \times T \times H}를 산출한다. 여기서 H는 은닉 상태의 차원이며, 출력 텐서의 형상은 시간 단계 축의 길이를 그대로 유지한 채 특성 축이 입력 차원 D에서 은닉 차원 H로 변환된 것이다. 시퀀스 분류 과제와 같이 시퀀스 전체에 대해 단일 출력만 필요한 경우에는, 마지막 시점의 은닉 상태 \mathcal{H}(:, T, :)만을 추출하여 (N, H) 형상의 2차 텐서로 축소하는 것이 일반적이다. 반대로 시퀀스 레이블링과 같이 시점별 출력이 필요한 경우에는 (N, T, H) 텐서 전체가 다음 계층의 입력으로 전달된다.
4. 순환 셀 연산의 형식적 정의
기본 순환 신경망 셀의 갱신식은 다음과 같다.
\mathbf{h}_t^{(n)} = \tanh \big( W_x \, \mathbf{x}_t^{(n)} + W_h \, \mathbf{h}_{t-1}^{(n)} + \mathbf{b} \big)
여기서 \mathbf{x}_t^{(n)} = \mathcal{X}(n, t, :) \in \mathbb{R}^{D}는 표본 n의 시점 t 입력 벡터이며, \mathbf{h}_t^{(n)} = \mathcal{H}(n, t, :) \in \mathbb{R}^{H}는 표본 n의 시점 t 은닉 상태이다. 입력 가중치 행렬 W_x \in \mathbb{R}^{H \times D}와 순환 가중치 행렬 W_h \in \mathbb{R}^{H \times H}, 편향 벡터 \mathbf{b} \in \mathbb{R}^{H}는 모든 시점에서 공유되며, 이는 합성곱 신경망의 가중치 공유가 공간 축에 대해 이루어지는 것과 정확히 대응되는 방식으로, 시간 축에 대해 이루어지는 가중치 공유에 해당한다.
미니배치 단위로 한 시점의 갱신을 한꺼번에 표현하면 다음과 같다.
H_t = \tanh \big( X_t W_x^{\top} + H_{t-1} W_h^{\top} + \mathbf{1} \mathbf{b}^{\top} \big)
여기서 X_t = \mathcal{X}(:, t, :) \in \mathbb{R}^{N \times D}, H_t = \mathcal{H}(:, t, :) \in \mathbb{R}^{N \times H}이며, \mathbf{1}은 N차원의 모두 1인 벡터이다. 이러한 표현은 시간 축에 대한 순차 진행과 배치 축·특성 축에 대한 병렬 처리가 어떻게 결합되는지를 명료하게 보여 준다.
5. 시간-우선과 배치-우선 약속
시간 단계 축의 위치에 대해서는 두 가지 표준 약속이 존재한다. 첫째는 배치-우선(Batch-First) 약속으로 형상이 (N, T, D)이며, 사용자에게 직관적이고 다른 계층과의 결합이 자연스럽다는 장점을 가진다. 둘째는 시간-우선(Time-First) 약속으로 형상이 (T, N, D)이며, 시점 t에 해당하는 모든 표본의 데이터가 메모리 상에서 연속적으로 배치되므로 시점별 순차 처리에서 메모리 접근의 지역성(Locality)이 향상된다. PyTorch의 nn.RNN, nn.LSTM, nn.GRU는 기본값이 시간-우선이며 batch_first=True 옵션을 통해 배치-우선 형식으로 전환할 수 있다. 두 약속은 수학적으로 동일한 정보를 표현하지만, 효율적 구현과 다른 계층과의 결합 편의성이라는 두 측면에서 상이한 절충점을 가진다.
6. 가변 길이 시퀀스의 처리
실제 자료에서는 미니배치 내 시퀀스 길이가 일반적으로 서로 다르므로, 동일한 형상의 텐서로 묶기 위해서는 가장 긴 시퀀스의 길이에 맞추어 짧은 시퀀스의 빈자리를 특수 토큰으로 채우는 패딩(Padding)이 필요하다. 이때 모델이 패딩 위치를 실제 입력으로 간주하지 않도록, 어느 위치가 실제 토큰인지를 표시하는 마스크 텐서가 함께 전달된다. 보다 효율적인 처리를 위하여 PyTorch는 PackedSequence라는 특수 자료 구조를 제공하며, 이는 패딩 위치를 메모리에 명시적으로 저장하지 않고 시퀀스를 길이 내림차순으로 정렬한 뒤 각 시점에서 유효한 표본만큼만 연산을 수행하도록 한다. 이 구조는 3차 텐서의 시간 단계 축이 가지는 비균일성을 효율적으로 처리하기 위한 표준 기법으로 자리잡았다.
7. 양방향 순환 신경망에서의 형상
양방향 순환 신경망(Bidirectional RNN)은 동일한 입력 텐서 (N, T, D)에 대해 정방향과 역방향의 두 순환 셀을 동시에 적용하며, 두 방향의 은닉 상태를 시점별로 결합하여 출력 텐서를 산출한다. 결합 방식이 단순 연결(Concatenation)인 경우 출력 텐서의 형상은 (N, T, 2H)가 되며, 합산이나 평균인 경우에는 (N, T, H)가 유지된다. 슈스터(M. Schuster)와 팔리왈(K. K. Paliwal)의 1997년 논문 “Bidirectional Recurrent Neural Networks“에서 이러한 구조가 처음 제안되었으며, 이후 음성 인식과 자연어 처리에서 표준적 구성 요소로 채택되었다.
8. 다층 순환 신경망에서의 텐서 흐름
다층 순환 신경망에서는 한 계층의 출력 텐서 (N, T, H_{\ell})이 다음 계층의 입력 텐서로 전달되며, 각 계층의 은닉 차원 H_{\ell}은 일반적으로 동일하게 설정되거나 점진적으로 변화한다. 이때 시간 단계 축 T와 배치 축 N은 모든 계층에서 동일하게 유지되며, 오직 특성 축의 크기만이 계층별로 변화한다. 이는 합성곱 신경망에서 공간 축이 점진적으로 축소되고 채널 축이 증가하는 패턴과 대비되는 특징으로, 순환 신경망이 시간 축의 길이를 유지한 채 시점별 표현을 점진적으로 추상화한다는 사실을 반영한다.
9. 시간 축에 따른 순차성과 BPTT의 관계
3차 텐서의 시간 단계 축이 가지는 본질적 순차성은 시간에 대한 역전파(Backpropagation Through Time, BPTT)의 형식적 기반을 제공한다. 학습 시 손실 함수의 경사도는 출력 시점에서 입력 시점 방향으로, 즉 시간 단계 축을 거꾸로 따라가며 전파되며, 모든 시점에서 동일한 가중치 행렬이 사용되었기 때문에 각 시점의 경사 기여가 누적되어 최종 가중치 갱신량을 형성한다. 이러한 역전파 구조는 시간 단계 축이 단순한 인덱스 축이 아니라, 그 위에 정의된 의존 관계가 신경망의 학습 동역학 자체를 결정짓는 축임을 명확하게 보여 준다. 또한 시간 단계 축이 길어질수록 경사 소실(Vanishing Gradient)과 경사 폭주(Exploding Gradient) 문제가 심화되는 현상은, 호크라이터(S. Hochreiter)와 슈미트후버(J. Schmidhuber)의 1997년 논문 “Long Short-Term Memory“에서 LSTM 셀이 도입된 직접적 동기가 되었다.
10. 정착된 약속으로서의 3차 텐서 구조
이러한 3차 텐서 구조는 엘만(J. L. Elman)의 1990년 논문 “Finding Structure in Time“에서 제시된 단순 순환 신경망(Simple Recurrent Network) 이래로 점진적으로 정착되었으며, 현대 딥러닝 프레임워크가 모두 (N, T, D) 또는 (T, N, D) 형식을 표준으로 채택하면서 시퀀스 자료의 보편적 표현 방식으로 자리잡았다. 트랜스포머가 등장한 이후에도 토큰 시퀀스를 표현하는 기본 텐서 형상은 동일하게 유지되며, 이는 배치·시간·특성이라는 세 축이 시퀀스 자료의 가장 본질적인 의미론적 단위에 정확히 대응한다는 사실을 반영한다.