이 글은, 유튜브에서 설명하다가 생긴, 과거의 내가 만들어 놔서 까먹은 내용을 저장한 글 이다
RNN 순전파 예시의 전치 표기법 분석
유튜브에서 설명할 때, 소멸에선 순전파시 전치를 사용하지 않았고,
폭발에선 전치를 사용하였는데,
이 둘의 계산은 근본적으로 동일하다.
두 예시의 차이점은 수식의 표기법에 있으며, ‘폭발’ 예시가 수학적으로 더 명확한 표기법을 사용한다.
벡터 형태와 행렬 곱셈
행렬-벡터 곱셈은 일반적으로 (m x n)
크기의 행렬과 (n x 1)
크기의 열벡터(column vector) 간에 수행되어 (m x 1)
크기의 결과 벡터를 생성한다.
슬라이드에서는 입력 데이터 $x_1$을 [1, 2]
와 같은 행벡터(row vector) 형태로 표기하였다.
이는 (2 x 2)
크기의 가중치 행렬 $W_{xh}$와 직접 곱할 수 없는 형태이다.
따라서 곱셈을 위해 행벡터를 열벡터로 변환하는 과정이 필요하다.
슬라이드는 이 변환 과정을 두 가지 방식으로 표현한다.
1. 기울기 소멸 예시: 암묵적 변환
기울기 소멸 예시의 수식
$h_t = tanh(W_x \cdot x_t + \dots)$
에는 전치($^T$) 기호가 없다.
하지만 계산 과정은 (2 x 2)
행렬과 [1, 2]
벡터를 곱해 [0.5, 1.1]
이라는 결과를 도출한다.
이는 연산 시 행벡터 [1, 2]
를 열벡터 [[1], [2]]
로 암묵적으로 간주하여 계산한 것이다.
2. 기울기 폭발 예시: 명시적 변환
기울기 폭발 예시의 수식
$h_1 = W_{xh} \cdot x_1^T + \dots$
는 전치 기호($^T$)를 명시적으로 사용한다.
이는 행벡터로 정의된 $x_1$을 열벡터로 변환하여 곱셈을 수행했음을 수학적으로 명확히 보여준다.
이러한 표기법이 더 엄밀하고 정확하다.
결론
두 예시의 계산 결과는 모두 올바르다. 표기법은 다르지만, 두 경우 모두 (2 x 2)
행렬과 (2 x 1)
열벡터의 곱셈이라는 동일한 연산을 수행하기 때문이다.
결론적으로, 두 슬라이드 간의 차이는 RNN 순전파 메커니즘의 차이가 아니라 벡터 표기법의 명확성 차이이다.
순전파 연산을 위해서는 입력 벡터가 열벡터 형태여야 하며, ‘기울기 폭발’ 예시의 전치 표기는 이 과정을 더 정확하게 표현한 것이다.
요 차이점을 설명하려고 일부러 둘을 다르게 적은건데,
정작 만들어놓고 시간이 좀 지나 내가 왜 저렇게 했지 라는 의문을 가지게 되었다.
일을 미루지 말고, 빨리 하는게 더 좋다는 교훈을 오늘도 얻고 간다.