3D Gaussian Splatting Rasterization

상솜공방·어제

논문 리뷰

목록 보기
53/53

가우시안 스플래팅을 표현법으로 사용한 SLAM 논문에서 이에 대한 수식을 간단히 짚고 넘어가는데, 한 번 깊게 이해하고 정리해둘 필요가 있어 해당 포스트를 적는다. 위 이미지의 (1),(2),(3)(1), (2), (3)번 식을 이해해보자.

1. 중심 좌표 투영 공식

이 수식은 3차원 공간에 존재하는 Gaussian의 중심점인 평균(μ\mu)을 2차원 이미지 평면상의 좌표(μI\mu^{I})로 투영하는 과정을 나타낸다. 3D Gaussian Splatting에서 제안된 핵심 렌더링 메커니즘을 기반으로 하며, 다음과 같이 각 항을 설명할 수 있다.

μI=π(P(Twcμhomogeneous))\mu^{I} = \pi(P(T_{wc}\mu_{homogeneous}))
  • μI\mu^{I}: 이미지 평면(Image Plane)에서의 2차원 좌표다. 최종적으로 화면에 그려질 픽셀 위치를 의미한다.
  • π\pi: 투영된 4차원 동차 좌표(Homogeneous Coordinates)를 2차원 픽셀 좌표로 변환하는 사영 함수다. 일반적으로 마지막 성분으로 앞의 성분들을 나누는 정규화 과정을 포함한다.
  • PP: OpenGL 스타일의 4×44 \times 4 투영 행렬(Projection Matrix)이다. 카메라의 내부 파라미터를 반영하여 3차원 카메라 좌표계를 클립 공간(Clip Space)으로 변환한다.
  • TwcT_{wc}: 세계 좌표계(World)에서 카메라 좌표계(Camera)로의 변환을 담당하는 SE(3)SE(3) 행렬이다. 즉, 카메라의 위치와 자세를 나타내는 외재적 파라미터(Extrinsic Parameters)를 의미한다.
  • μhomogeneous\mu_{homogeneous}: 세계 좌표계에서의 3차원 Gaussian 중심점을 4차원 동차 좌표 형태로 표현한 것이다.

1.1. 예시

1.1.1. 좌표계 정의 및 점의 표현 (Pw,μhomogeneousP_w, \mu_{homogeneous})

  • 월드 좌표계(WW): 보편적인 그림인 ZZ 전방, XX 오른쪽, YY 아래 방향을 향하도록 그린다.
  • Pw=(1,0,1)P_w = (1, 0, 1)은 동차 좌표계로 다음과 같이 표현된다.
    μhomogeneous=[1011]\mu_{homogeneous} = \begin{bmatrix} 1 \\ 0 \\ 1 \\ 1 \end{bmatrix}

1.1.2. World-to-Camera 변환 행렬 (TwcT_{wc}) 구성

TwcT_{wc}는 월드 좌표계의 점을 카메라 좌표계(CC)로 변환하는 행렬이며, 회전 행렬 RwcR_{wc}와 평행이동 벡터 twct_{wc}로 구성된다.

회전 행렬 (RwcR_{wc}):

  • 카메라가 월드 YY축을 기준으로 90도 회전했다는 것은, 카메라의 ZZ축이 월드의 XX축 방향을 향하게 됨을 의미한다.
  • YY축 기준 90도 회전 행렬은 다음과 같다.
    Rwc=[cos(90)0sin(90)010sin(90)0cos(90)]=[001010100]R_{wc} = \begin{bmatrix} \cos(90^\circ) & 0 & \sin(90^\circ) \\ 0 & 1 & 0 \\ -\sin(90^\circ) & 0 & \cos(90^\circ) \end{bmatrix} = \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 \end{bmatrix}

평행이동 벡터 (twct_{wc}):

  • 카메라가 월드 좌표계에서 ZwZ_w 방향으로 +1+1, YwY_w 방향으로 1-1만큼 이동했다. 카메라의 월드상 위치 Cw=(0,1,1)C_w = (0, -1, 1)이다.
  • World-to-Camera 평행이동 벡터 twc=RwcCwt_{wc} = -R_{wc} C_w로 계산된다.
    twc=[001010100][011]=[110]=[110]t_{wc} = -\begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 \\ -1 \\ 1 \end{bmatrix} = -\begin{bmatrix} 1 \\ -1 \\ 0 \end{bmatrix} = \begin{bmatrix} -1 \\ 1 \\ 0 \end{bmatrix}

최종 변환 행렬 (TwcT_{wc}):

Twc=[Rwctwc01]=[0011010110000001]T_{wc} = \begin{bmatrix} R_{wc} & t_{wc} \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 1 & -1 \\ 0 & 1 & 0 & 1 \\ -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}

이 행렬을 μhomogeneous\mu_{homogeneous}에 곱하면 Pc=(0,1,1,1)TP_c = (0, 1, 1, 1)^T가 계산되어 그림의 상황과 일치한다.

1.1.3. 프로젝션 매트릭스 (Projection Matrix): PP

이제 월드 좌표계의 점을 이미지 평면의 픽셀 좌표로 투영하는 최종 행렬 PP를 구할 수 있다. P=K[Rt]P = K[R|t]이다.

P=[80003200800240001][001101011000]P = \begin{bmatrix} 800 & 0 & 320 \\ 0 & 800 & 240 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & 0 & -1 & 1 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 0 & 0 \end{bmatrix}

이 행렬을 곱하면 3x4 크기의 행렬이 나오며, 이를 통해 어떤 PwP_w값이든 이미지상의 픽셀 위치로 변환할 수 있다.

1.1.4. 수식 검증

실제로 Pw=(1,0,1)P_w = (1, 0, 1)을 넣었을 때 Pc=(0,1,1)P_c = (0, 1, 1)이 나오는지 확인해 보겠다.

Pc=RPw+t=[001010100][101]+[110]=[101]+[110]=[011]P_c = RP_w + t = \begin{bmatrix} 0 & 0 & -1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 1 \\ 0 \\ 1 \end{bmatrix} + \begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix} = \begin{bmatrix} -1 \\ 0 \\ 1 \end{bmatrix} + \begin{bmatrix} 1 \\ 1 \\ 0 \end{bmatrix} = \begin{bmatrix} 0 \\ 1 \\ 1 \end{bmatrix}

그림에 적어주신 값과 정확히 일치하는 것을 볼 수 있다.

이 점 PcP_c를 앞서 설정한 내부 파라미터 KK를 이용해 이미지 픽셀 좌표 (u,v)(u, v)로 바꾸면 다음과 같다.
1. x=0/1=0x = 0 / 1 = 0, y=1/1=1y = 1 / 1 = 1 (ZcZ_c로 나누어 정규 좌표계로 만드는 연산 π\pi)
2. u=fxx+cx=8000+320=320u = f_x \cdot x + c_x = 800 \cdot 0 + 320 = 320
3. v=fyy+cy=8001+240=1040v = f_y \cdot y + c_y = 800 \cdot 1 + 240 = 1040

결과적으로 이 점은 이미지의 (320,1040)(320, 1040) 위치에 찍히게 된다.

1.1.5. 그림을 통한 이해

2. 투영시 공분산의 변화

3차원 가우시안 스플래팅에서 월드 좌표계의 가우시안을 2D 이미지 평면으로 투영하는 과정은 기하학적 변환과 선형 근사를 포함한다. 이 때, 입체 공간상의 가우시안을 2D 평면으로 투영할 시, 공분산 행렬 ΣI\Sigma^I를 구하는 수식은 다음과 같다.

ΣI=JRwcΣRwcTJT\Sigma^I = J R_{wc} \Sigma R_{wc}^T J^T

이 수식의 각 요소가 의미하는 바를 구체적인 예시와 함께 설명한다.

2.1. 공분산 행렬의 회전 변환과 좌표계 일치

2.1.1. 3차원 공분산의 회전: RwcΣRwcTR_{wc} \Sigma R_{wc}^T

3차원 가우시안의 형상을 결정하는 공분산 행렬 Σ\Sigma를 월드 좌표계에서 카메라 좌표계로 변환할 때, 위에서 살펴본 좌표 변환과 달리 회전 행렬 RwcR_{wc}앞뒤로 곱하는 형식을 취한다. 이는 공분산 행렬이 벡터가 아닌 이차 형식(Quadratic form)을 갖는 텐서이기 때문이다.

월드 좌표계의 확률 변수 벡터를 XwX_w라고 할 때, 카메라 좌표계에서의 벡터는 Xc=RwcXwX_c = R_{wc} X_w로 정의된다. 이때 카메라 좌표계에서의 공분산 Σc\Sigma_c는 기대값 연산을 통해 다음과 같이 유도된다.

E[XcXcT]=E[(RwcXw)(RwcXw)T]=E[RwcXwXwTRwcT]=RwcE[XwXwT]RwcT=RwcΣRwcTE[X_c X_c^T] = E[(R_{wc} X_w) (R_{wc} X_w)^T] = E[R_{wc} X_w X_w^T R_{wc}^T] = R_{wc} E[X_w X_w^T] R_{wc}^T = R_{wc} \Sigma R_{wc}^T

따라서 좌표계 변환처럼 단순히 RwcΣR_{wc}\Sigma만을 곱해서는 행렬의 대칭성과 공분산으로서의 성질을 유지할 수 없으며, 반드시 전치 행렬을 뒤에 곱해줘야 한다.

왜 공분산이 E[XcXcT]E[X_c X_c^T]의 형태를 따르는지 이해하기 어렵다면 아래 링크를 통해 복습하자.

2.1.2. 좌표계 변환에 따른 형상 변화 예시

위에서 살펴본 좌표에 월드 좌표계 기준 ZwZ_w축 방향으로 길쭉한 가우시안이 있다고 가정한다. 이때 공분산 행렬은 다음과 같은 형태를 가질 수 있다.

Σ=[0.10000.10001.0]\Sigma = \begin{bmatrix} 0.1 & 0 & 0 \\ 0 & 0.1 & 0 \\ 0 & 0 & 1.0 \end{bmatrix}

카메라가 YY축을 기준으로 시계 방향으로 90도 회전했으니, 회전 행렬은 다음과 같다.

Rwc=[001010100]R_{wc} = \begin{bmatrix} 0 & 0 & -1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix}

이를 적용하여 카메라 좌표계에서의 공분산 Σc\Sigma_c를 계산하면 다음과 같다.

Σc=RwcΣRwcT=[001010100][0.10000.10001.0][001010100]=[1.00000.10000.1]\Sigma_c = R_{wc} \Sigma R_{wc}^T = \begin{bmatrix} 0 & 0 & -1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0.1 & 0 & 0 \\ 0 & 0.1 & 0 \\ 0 & 0 & 1.0 \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 \end{bmatrix} = \begin{bmatrix} 1.0 & 0 & 0 \\ 0 & 0.1 & 0 \\ 0 & 0 & 0.1 \end{bmatrix}

계산 결과, 월드 좌표계에서 ZwZ_w축으로 길었던 성분(1.01.0)이 카메라 좌표계에서는 첫 번째 행 성분인 XcX_c축으로 옮겨갔다. 즉, 월드에서 앞뒤로 길었던 물체가 카메라 좌표계에서는 가로 방향으로 길게 놓인 것으로 해석된다.

이해를 돕기 위해 3차원 가우시안을 2차원 가우시안 분포로 차원을 내린 후 정리해둔 글이 있다. 한 번 읽어보자.

2.2. 이미지 투영을 위한 비선형 변환과 야코비안

2.2.1. 투영 과정의 비선형성

카메라 좌표계의 점 Pc=(x,y,z)P_c = (x, y, z)를 이미지 평면의 픽셀 좌표 (u,v)(u, v)로 투영하는 식은 다음과 같다.

u=fxxz+cx,v=fyyz+cyu = f_x \frac{x}{z} + c_x, \quad v = f_y \frac{y}{z} + c_y

편의상 Pc=(Xc,Yc,Zc)P_c = (X_c, Y_c, Z_c)Pc=(x,y,z)P_c = (x, y, z)로 간소화하여 표현한다.

이 식은 분모에 깊이 값인 zz가 포함되어 있어 입력값 x,y,zx, y, z에 대해 비선형적(Non-linear)이다. 가우시안의 공분산을 투영할 때는 이 비선형 함수를 직접 적용하기 어려우므로, 특정 점(가우시안의 중심)에서의 1차 미분인 야코비안 행렬(Jacobian matrix) JJ를 사용하여 선형 근사한다.

2.2.2. 야코비안 행렬 JJ의 유도

야코비안 행렬 JJ는 픽셀 좌표 (u,v)(u, v)를 카메라 좌표 (x,y,z)(x, y, z)로 각각 편미분하여 구성한다.

J=[uxuyuzvxvyvz]J = \begin{bmatrix} \frac{\partial u}{\partial x} & \frac{\partial u}{\partial y} & \frac{\partial u}{\partial z} \\ \frac{\partial v}{\partial x} & \frac{\partial v}{\partial y} & \frac{\partial v}{\partial z} \end{bmatrix}

각 성분을 미분하면 다음과 같은 결과를 얻는다.

  1. uu에 대한 미분:

    • ux=fxz\frac{\partial u}{\partial x} = \frac{f_x}{z}

    • uy=0\frac{\partial u}{\partial y} = 0

    • uz=fxxz2\frac{\partial u}{\partial z} = -\frac{f_x \cdot x}{z^2}

  2. vv에 대한 미분:

    • vx=0\frac{\partial v}{\partial x} = 0

    • vy=fyz\frac{\partial v}{\partial y} = \frac{f_y}{z}

    • vz=fyyz2\frac{\partial v}{\partial z} = -\frac{f_y \cdot y}{z^2}

이를 행렬 형식으로 정리하면 야코비안 행렬이 유도된다.

J=[fx/z0fxx/z20fy/zfyy/z2]J = \begin{bmatrix} f_x / z & 0 & -f_x \cdot x / z^2 \\ 0 & f_y / z & -f_y \cdot y / z^2 \end{bmatrix}

여기서 z2z^2이 분모에 들어가는 항들은 카메라로부터 멀어지거나 가까워질 때(Z축 변화) 이미지상의 픽셀이 변화하는 비율이 거리의 제곱에 반비례하여 급격히 변함을 나타낸다.

2.2.3. 야코비안 행렬 JJ 계산

좌표계상의 점은 Pc=(0,1,1)P_c = (0, 1, 1)이고, 내부 파라미터는 fx=fy=800f_x = f_y = 800이므로, 이 값을 야코비안 행렬식에 대입하면 다음과 같은 결과를 얻는다.

  • fx/z=800/1=800f_x / z = 800 / 1 = 800

  • fxx/z2=8000/12=0-f_x \cdot x / z^2 = -800 \cdot 0 / 1^2 = 0

  • fy/z=800/1=800f_y / z = 800 / 1 = 800

  • fyy/z2=8001/12=800-f_y \cdot y / z^2 = -800 \cdot 1 / 1^2 = -800

이를 행렬로 나타내면 다음과 같다.

J=[800000800800]J = \begin{bmatrix} 800 & 0 & 0 \\ 0 & 800 & -800 \end{bmatrix}

2.2.4. 최종 ΣI\Sigma^I 도출 과정

이제 카메라 좌표계의 공분산 Σc=diag(1.0,0.1,0.1)\Sigma_c = \text{diag}(1.0, 0.1, 0.1)와 야코비안 JJ를 결합하여 ΣI=JΣcJT\Sigma^I = J \Sigma_c J^T를 계산한다.

먼저 JΣcJ \Sigma_c를 계산하면 다음과 같다.

JΣc=[800000800800][1.00000.10000.1]=[8000008080]J \Sigma_c = \begin{bmatrix} 800 & 0 & 0 \\ 0 & 800 & -800 \end{bmatrix} \begin{bmatrix} 1.0 & 0 & 0 \\ 0 & 0.1 & 0 \\ 0 & 0 & 0.1 \end{bmatrix} = \begin{bmatrix} 800 & 0 & 0 \\ 0 & 80 & -80 \end{bmatrix}

이어서 (JΣc)(J \Sigma_c)JTJ^T를 곱한다.

ΣI=[8000008080][800008000800]\Sigma^I = \begin{bmatrix} 800 & 0 & 0 \\ 0 & 80 & -80 \end{bmatrix} \begin{bmatrix} 800 & 0 \\ 0 & 800 \\ 0 & -800 \end{bmatrix}
ΣI=[(800800)+0+00+0+00+0+0(80800)+(80800)]\Sigma^I = \begin{bmatrix} (800 \cdot 800) + 0 + 0 & 0 + 0 + 0 \\ 0 + 0 + 0 & (80 \cdot 800) + (-80 \cdot -800) \end{bmatrix}
ΣI=[640,00000128,000]\Sigma^I = \begin{bmatrix} 640,000 & 0 \\ 0 & 128,000 \end{bmatrix}

2.3. 계산 결과의 기하학적 해석

도출된 2D 공분산 행렬 ΣI\Sigma^I는 이미지 평면에서 가우시안이 어떤 형태로 맺히는지를 보여준다.

  1. 방향성: 공분산 행렬의 비대각 성분(Off-diagonal elements)이 00이므로, 이미지 평면의 uu축과 vv축에 정렬된 타원 형태를 띤다.

  2. 크기 비대칭: uu 방향의 분산(640,000640,000)이 vv 방향의 분산(128,000128,000)보다 약 5배 크다. 이는 월드 좌표계에서 ZwZ_w축으로 길었던 가우시안이 카메라의 90도 회전으로 인해 카메라 좌표계의 XcX_c축으로 정렬되었고, 이것이 이미지의 가로(uu) 방향으로 길게 투영되었음을 의미한다.

  3. 깊이 영향: vv 방향의 분산은 카메라 좌표계의 yy 성분 분산뿐만 아니라 zz 성분(깊이)의 분산도 함께 반영된 결과다. 야코비안의 세 번째 열 성분인 800-800에 의해 깊이 방향의 불확실성이 픽셀 평면의 세로 방향 확산에 기여하게 된다.

3. 픽셀 색상 계산

3.1. 픽셀에서의 가우시안 영향력 계산

특정 픽셀 ii에 대해 jj번째 2D 가우시안이 미치는 실질적인 불투명도(Opacity) αj\alpha_j는 다음 수식들로 결정된다.

σj=12ΔjTΣj1Δj\sigma_j = \frac{1}{2} \Delta_j^T \Sigma_j^{-1} \Delta_j
αj=ojeσj\alpha_j = o_j e^{-\sigma_j}

여기서 Δj\Delta_j는 픽셀 중심과 가우시안의 2D 투영 중심 사이의 2차원 좌표 평면상 거리 벡터(Offset)이며, Σj1\Sigma_j^{-1}는 앞서 투영을 통해 구한 2D 공분산 행렬 ΣI\Sigma^I의 역행렬이다.

첫 번째 수식은 픽셀이 가우시안 중심으로부터 공분산 형태를 기준으로 얼마나 떨어져 있는지를 나타내는 마할라노비스 거리(Mahalanobis distance)의 절반을 계산한다. 두 번째 수식은 이 거리값을 기반으로 지수 감쇠(Exponential falloff)를 적용하여 픽셀에서의 불투명도를 구한다. ojo_j는 해당 가우시안이 중심점에서 가지는 고유의 불투명도 최댓값이다.

예를 들어, 앞선 시나리오에서 투영된 가우시안을 G1G_1이라 하고, 이것의 2D 중심이 픽셀 ii와 정확히 일치하여 Δ1=[0,0]T\Delta_1 = [0, 0]^T라고 가정한다. 이때 σ1=0\sigma_1 = 0이 되므로 αj=e0=1\alpha_j = e^0 = 1이다. 만약 이 가우시안의 고유 불투명도 o1=0.8o_1 = 0.8이라면, 이 픽셀에서의 최종 불투명도 α1\alpha_10.8×1=0.80.8 \times 1 = 0.8이 된다.

반면, 같은 픽셀을 덮고 있는 또 다른 가우시안 G2G_2의 중심이 픽셀 ii로부터 떨어져 있어 σ2=1\sigma_2 = 1로 계산되었다면, e10.368e^{-1} \approx 0.368이 된다. G2G_2의 고유 불투명도가 o2=0.9o_2 = 0.9라면, 픽셀 ii에서의 실질적인 불투명도는 α2=0.9×0.3680.33\alpha_2 = 0.9 \times 0.368 \approx 0.33으로 중심점 대비 크게 감소한다.

3.2. 알파 블렌딩을 통한 최종 픽셀 색상 결정

하나의 픽셀을 통과하는 광선(Ray) 상에 존재하는 mm개의 가우시안들을 카메라에 가까운 순서(Front-to-back)대로 정렬한 뒤, 최종 색상을 누적하는 볼륨 렌더링 방정식은 다음과 같다.

Cich=jmCjchαjk<j(1αk)C_i^{ch} = \sum_{j \leq m} C_j^{ch} \alpha_j \prod_{k<j} (1 - \alpha_k)

이 수식에서 CjchC_j^{ch}는 구면 조화 함수(Spherical Harmonics)에 의해 방향 의존적으로 결정된 jj번째 가우시안의 특정 색상 채널(예: Red) 값이다. 우측의 k<j(1αk)\prod_{k<j} (1 - \alpha_k) 부분은 투과도(Transmittance)를 의미하며, 광선이 카메라를 출발해 목표 가우시안 이전까지 존재하는 kk개의 앞선 가우시안들을 통과하면서 흡수되지 않고 살아남은 빛의 비율을 나타낸다.

구체적인 예시로, 픽셀 ii의 Red 채널 색상을 3개의 가우시안(G1,G2,G3G_1, G_2, G_3)이 카메라와 가까운 순서대로 덮고 있다고 가정한다.

  • G1G_1 (가장 앞): C1=1.0C_1 = 1.0, α1=0.8\alpha_1 = 0.8
  • G2G_2 (중간): C2=0.5C_2 = 0.5, α2=0.5\alpha_2 = 0.5
  • G3G_3 (가장 뒤): C3=0.2C_3 = 0.2, α3=1.0\alpha_3 = 1.0

수식에 따라 누적되는 색상은 다음과 같이 계산된다.

  1. G1G_1의 기여도: 가장 앞에 있어 빛을 가리는 객체가 없으므로 초기 투과도는 11이다.
    1.0×0.8×1=0.81.0 \times 0.8 \times 1 = 0.8
    (이후 남은 빛의 비율: 10.8=0.21 - 0.8 = 0.2)

  2. G2G_2의 기여도: 앞선 G1G_1에 의해 20%의 빛만 뚫고 들어왔다.
    0.5×0.5×0.2=0.050.5 \times 0.5 \times 0.2 = 0.05
    (이후 남은 빛의 비율: 0.2×(10.5)=0.10.2 \times (1 - 0.5) = 0.1)

  3. G3G_3의 기여도: 앞선 G1,G2G_1, G_2를 거치며 10%의 빛만 남았다. 불투명도가 1.0이므로 도달한 남은 빛을 모두 반사(또는 차단)한다.
    0.2×1.0×0.1=0.020.2 \times 1.0 \times 0.1 = 0.02
    (이후 남은 빛의 비율: 0.1×(11.0)=00.1 \times (1 - 1.0) = 0)

최종적으로 픽셀 ii의 Red 채널 색상 CiRedC_i^{Red}는 세 기여도의 합인 0.8+0.05+0.02=0.870.8 + 0.05 + 0.02 = 0.87이 된다. 앞에 있는 G1G_1이 최종 색상에 가장 지배적인 영향을 미치고, 뒤에 있는 가우시안일수록 누적된 투과도에 의해 영향력이 크게 줄어드는 것을 확인할 수 있다.

3.3. 공분산 행렬의 양의 준정부호 보존 분해

3D 가우시안 스플래팅은 경사 하강법(Gradient descent)을 통해 가우시안의 위치, 색상, 그리고 3D 공분산 Σ\Sigma 파라미터들을 반복적으로 최적화한다. 이때 공분산 행렬은 수식적으로 다음과 같이 분해되어 학습 모델에 인코딩된다.

Σ=RSSTRT\Sigma = R S S^T R^T

이러한 분해를 사용하는 이유는 명확하다. 공분산 행렬이 공간상에서 유효한 물리적 타원체 형태를 지니기 위해서는 수학적으로 항상 대칭 행렬(Symmetric matrix)이자 양의 준정부호(Positive semi-definite) 행렬이라는 특성을 띠어야 한다. 최적화 과정에서 3x3 공분산 행렬의 성분을 직접 조작하며 업데이트할 경우, 그레디언트의 이동에 의해 행렬이 이 수학적 조건을 벗어나 타원체가 붕괴되는 치명적인 문제가 발생한다.

따라서 회전을 나타내는 쿼터니언 변수 배열(추후 회전 행렬 RR로 변환됨)과, 각 축의 크기(Scale)를 나타내는 3D 벡터 ss(대각 행렬 SS를 구성)를 독립적인 최적화 파라미터로 두고 학습을 진행한다. 크기 벡터 ss에 지수 함수(Exponential activation)를 씌워 항상 양수값을 갖도록 강제하면, SSTS S^T는 대각 성분이 모두 양수인 유효한 양의 준정부호 행렬이 된다. 여기에 회전 행렬 RR을 앞뒤로 곱하는 RSSTRTR S S^T R^T 연산을 거치면, 학습 과정에서 파라미터가 어떻게 업데이트되더라도 결과물인 Σ\Sigma는 항상 유효한 공분산 행렬의 조건을 완벽하게 유지할 수 있다.

profile
상어 인형을 좋아하는 사람

0개의 댓글