이전 게시글(https://pasus.tistory.com/362)에서 함수 \(f(x), \ 0 \lt x \le t\) 를 \(N\)차원 부분 함수공간으로 투사한 근사 함수 \(g(x), \ 0 \lt x \le t\) 를 다음과 같이 유도하였다.
\[ \begin{align} g(x) & = \sum_{n=0}^{N-1} c_n (t) \sqrt{(2n+1)} P_n \left( \frac{2x}{t}-1 \right) \tag{1} \\ \\ c_n (t) &= \int_0^t f(x) \sqrt{(2n+1)} P_n \left( \frac{2x}{t}-1 \right) \frac{1}{t} \ dx \end{align} \]
식 (1)에서 계수 \(c_n (t)\) 에 관한 적분식을 미분방정식으로 바꾸고자 한다. 식 (1)의 두번째 식을 미분하면 다음과 같다.
\[ \begin{align} \frac{dc_n (t)}{dt} &= \int_0^t f(x) \sqrt{(2n+1) } \frac{d}{dt} \left( P_n \left( \frac{2x}{t}-1 \right) \right) \frac{1}{t} \ dx \tag{2} \\ \\ & \ \ \ - \int_0^t f(x) \sqrt{(2n+1) } P_n \left( \frac{2x}{t}-1 \right) \frac{1}{t^2} \ dx \\ \\ & \ \ \ + f(t) \sqrt{(2n+1)} \frac{1}{t} \end{align} \]
여기서 \(P_n (1)=1\) 이 되는 것과 다음과 같은 라이프니츠 적분 법칙(Leibniz integral rule)을 이용했다.
\[ \begin{align} \frac{d}{dt} \int_{a(t)}^{b(t)} h(t,x) \ dx &= \int_{a(t)}^{b(t)} \frac{\partial h(t,x)}{\partial t} \ dx \tag{3} \\ \\ & \ + h(t,b(t)) \frac{db(t)}{dt} - h(t,a(t)) \frac{da(t)}{dt} \end{align} \]
이제 식 (2)의 첫번째 적분에서 미분항을 구해보면 다음과 같다.
\[ \begin{align} \frac{d}{dt} \left( P_n \left( \frac{2x}{t}-1 \right) \right) &= P_n^\prime (\nu) \frac{d}{dt} \left( \frac{2x}{t}-1 \right) \tag{4} \\ \\ &= - 2 \frac{x}{t^2} P_n^\prime (\nu) \\ \\ &=- \frac{2}{t^2} \frac{(\nu+1) t}{2} P_n^\prime (\nu) \\ \\ &= -\frac{1}{t} (\nu+1) P_n^\prime (\nu) \end{align} \]
다음으로 르장드르 다항식의 미분 관계식을 이용하면,
\[ \begin{align} (\nu+1) P_n^\prime (\nu)=nP_n+(2n-1) P_{n-1}+(2n-3) P_{n-2}+ \cdots \tag{5} \end{align} \]
식 (4)는 다음과 같이 된다.
\[ \begin{align} \frac{d}{dt} \left( P_n \left( \frac{2x}{t}-1 \right) \right) = - \frac{1}{t} (nP_n+(2n-1) P_{n-1}+(2n-3) P_{n-2}+ \cdots ) \tag{6} \end{align} \]
위 식을 식 (2)에 대입하면 다음과 같이 된다.
\[ \begin{align} \frac{dc_n (t) }{dt} &= - \frac{1}{t} \int_0^t f(x) \sqrt{(2n+1) } \left( \begin{matrix} nP_n+(2n-1) P_{n-1} \\ +(2n-3) P_{n-2}+ \cdots \end{matrix} \right) \frac{1}{t} \ dx \tag{7} \\ \\ & \ \ -\frac{1}{t} \int_0^t f(x) \sqrt{(2n+1) } P_n \frac{1}{t} \ dx \\ \\ & \ \ + \frac{1}{t} f(t) \sqrt{(2n+1) } \end{align} \]
한편 식 (1)에 의하면,
\[ \begin{align} & \int_0^t f(x)\sqrt{(2n+1) } nP_n \frac{1}{t} \ dx = nc_n (t) \tag{8} \\ \\ & \int_0^t f(x) \sqrt{(2n+1) } (2n-1) P_{n-1} \frac{1}{t} \ dx \\ \\ & \ \ \ \ = \sqrt{(2n+1) } (2n-1) \frac{1}{\sqrt{(2n-1)}} \int_0^t f(x) \sqrt{2(n-1)+1) } P_{n-1} \frac{1}{t} \ dx \\ \\ & \ \ \ \ = \sqrt{(2n+1) } \sqrt{(2n-1)} c_{n-1} (t) \\ \\ & \int_0^t f(x) \sqrt{(2n+1) } (2n-3) P_{n-2} \frac{1}{t} \ dx \\ \\ & \ \ \ \ = \sqrt{(2n+1)} (2n-3) \frac{1}{\sqrt{(2n-3)} } \int_0^t f(x) \sqrt{2(n-2)+1) } P_{n-2} \frac{1}{t} \ dx \\ \\ & \ \ \ \ = \sqrt{(2n+1) } \sqrt{(2n-3) } c_{n-2} (t) \\ \\ & \cdots \cdots \end{align} \]
이므로, 식 (8)을 식 (7)에 대입하면 계수 \(c_n (t)\) 에 관한 미분방정식을 다음과 같이 구할 수 있다.
\[ \begin{align} \frac{dc_n (t)}{dt} &= - \frac{1}{t} \left( \begin{matrix} nc_n (t)+ \sqrt{(2n+1) } \sqrt{(2n-1) } c_{n-1} (t) \\ \ + \sqrt{(2n+1) } \sqrt{(2n-3) } c_{n-2} (t) + \cdots \end{matrix} \right) \tag{9} \\ \\ & \ \ \ \ \ - \frac{1}{t} c_n(t) + \frac{1}{t} f(t)\sqrt{(2n+1) } \\ \\ &= - \frac{(2n+1)}{t} \left( \begin{matrix} \frac{(n+1)}{\sqrt{(2n+1)}} c_n (t)+ \sqrt{(2n-1)} c_{n-1} (t) \\ + \sqrt{(2n-3) } c_{n-2} (t)+ \cdots \end{matrix} \right) \\ \\ & \ \ \ \ \ + \frac{\sqrt{(2n+1)}}{t} f(t) \end{align} \]
참고로 식 (9)를 이용하여 계수 미분방정식을 몇 개 구해보면 다음과 같다.
\[ \begin{align} \dot{c}_0 (t) &= - \frac{1}{t} c_0 (t)+ \frac{1}{t} f(t) \tag{10} \\ \\ \dot{c}_1 (t) &= -\frac{\sqrt{3}}{t} \left( \frac{2}{\sqrt{3}} c_1 (t)+c_0 (t) \right) +\frac{\sqrt{3}}{t} f(t) \\ \\ \dot{c}_2 (t) &= -\frac{\sqrt{5}}{t} \left( \frac{3}{\sqrt{5}} c_2 (t)+ \sqrt{3} c_1 (t)+c_0 (t) \right )+ \frac{\sqrt{5}}{t} f(t) \end{align} \]
식 (9)의 계수 미분방정식은 다음과 같이 벡터/행렬 미분방정식으로 간결하게 표현할 수 있다.
\[ \begin{align} \dot{\mathbf{c}}(t)= - \frac{1}{t} A \mathbf{c}(t)+ \frac{1}{t} Bf(t) \tag{11} \end{align} \]
여기서
\[ \begin{align} & \mathbf{c}(t)= \begin{bmatrix} c_0 (t) \\ c_1 (t) \\ \vdots \\ c_{N-1} (t) \end{bmatrix} \in \mathbb{R}^N \\ \\ & A_{nk}= \begin{cases} \sqrt{(2n+1)} \sqrt{(2k+1)}, & n \gt k \\ n+1, & n=k \\ 0 & n \lt k \end{cases} \\ \\ & B_n= \sqrt{(2n+1)} \end{align} \]
이다. 식 (11)을 연속시간 히포 미분방정식(continuous-time HiPPO ODE)이라고 한다.
참고로 \(N=3\) 일 때 행렬 \(A \in \mathbb{R}^{N \times N}\) 와 \(B \in \mathbb{R}^{N \times 1}\) 를 구해보면 다음과 같다.
\[ \begin{align} A=\begin{bmatrix} 1 & 0 & 0 \\ \sqrt{3} & 2 & 0 \\ \sqrt{5} & \sqrt{15} & 3 \end{bmatrix}, \ \ \ \ \ B= \begin{bmatrix} 1 \\ \sqrt{3} \\ \sqrt{5} \end{bmatrix} \end{align} \]
히포 행렬 \(A\) 와 \(B\) 를 계산하는 매트랩 코드는 다음과 같다.
function [A, B] = hippo_AB(N)
%
% [A, B] = hippo_AB(N)
% input
% N - dimension of basis function
% output
% A, B HiPPO matrix
%
% (c) st.watermelon
A = zeros(N,N);
B = zeros(N,1);
for n = 0:N-1
for k = 0:n
if n > k
A(n+1, k+1) = sqrt(2*n+1) * sqrt(2*k+1);
elseif n==k
A(n+1, k+1) = n+1;
else
A(n+1, k+1) = 0;
end
end
B(n+1,1) = sqrt(2*n+1);
end
정리하면, 함수 \(f(x), \ 0 \lt x \le t\) 를 \(N\)차원 부분 함수공간으로 투사한 근사 함수 \(g(x), \ 0 \lt x \le t\) 는 다음과 같다.
\[ \begin{align} g(x) &= \sum_{n=0}^{N-1} c_n (t) \sqrt{(2n+1)} P_n \left( \frac{2x}{t}-1 \right) \tag{12} \\ \\ \dot{\mathbf{c}}(t) &=-\frac{1}{t} A \mathbf{c}(t)+ \frac{1}{t} Bf(t) \end{align} \]
'AI 딥러닝 > Sequence' 카테고리의 다른 글
HiPPO - 3 (0) | 2025.01.12 |
---|---|
HiPPO - 1 (0) | 2025.01.08 |
[PtrNet] Pointer Net 구조 (0) | 2023.09.12 |
[seq2seq] 어텐션이 포함된 seq2seq 모델 (0) | 2023.08.23 |
[seq2seq] 간단한 seq2seq 모델 구현 (0) | 2023.08.17 |
댓글