Neural Network의 high frequency 데이터에 대한 convergence에 대해

신희준·2023년 11월 20일
1

Background Knowledge

목록 보기
9/12

** 읽어보면 좋을 seminar works
1) Fourier Features Let Networks Learn High Frequency Functions in Low Dimensional Domains (Matthew Tancik, Pratul P. Srinivasan, Ben Mildenhall, Sara Fridovich-Keil, Nithin Raghavan, Utkarsh Singhal, Ravi Ramamoorthi, Jonathan T. Barron, Ren Ng / NIPS 2020)
2) Neural Tangent Kernel: Convergence and Generalization in Neural Networks (https://arxiv.org/abs/2006.10739) (Arthur Jacot, Franck Gabriel, Clément Hongler / NIPS 2018)
3) On the Spectral Bias of Neural Networks (Nasim Rahaman, Aristide Baratin, Devansh Arpit, Felix Draxler, Min Lin, Fred A. Hamprecht, Yoshua Bengio, Aaron Courville / ICMR 2019)
4) The Convergence Rate of Neural Networks for Learned Functions of Different Frequencies (Ronen Basri, David Jacobs, Yoni Kasten, Shira Kritchman / NIPS 2019)

  • Motivation : Coordinate-based network에 관한 연구에서는 다양한 positional encoding이 제안되곤 하는데, 이때 당연시 여기는 것이 Neural Network는 high frequency detail을 학습하기 어렵다는 것이다. 위 논문에서 설명하는 방향에 맞춰 이해하려고 노력했다. method나 experimental result 등은 기술하지 않았다.

Introduction

위의 그림과 같이 low-dimensional coordinates를 input으로 받고, 그 input 위치에 대한 shape, density, color 등을 출력하도록 학습하는 network를 coordinate-based network라고 한다.

이런 coordinate-based network는 implicit neural representation (INR)으로도 생각할 수 있는데, 어떤 continuos signal을 neural network에 encoding한다는 의미에서 그렇다.

즉, 데이터를 저장하는 하나의 방법으로 생각할 수 있고, "implicit"이라는 단어에 집중해보면 아래와 같이 "explicit"과 구분해볼 수도 있겠다.

INR은 기존의 방식에 비해 여러 장점을 가지는데, 아래 정도로 정리할 수 있을 것 같다.
1) Continous representation & resolution agnostic
2) Memory Efficiency
3) Differentiable Rendering

아무튼 이것이 중요한 것은 아니고, 우리가 여기서 다룰 내용은 저 MLP에 들어가게 되는 coordinate input의 형태에 관한 것이다.

이미 여러 literature에서 neural network의 spectral bias에 대해서 다루고 , neural network가 low-dimensional input을 통한 학습에 취약하다는 것에 대해 다루었다.

이에 대해 많은 연구들은 잘 설계된 positional encoding을 통해 이러한 문제를 극복하고자 한다.

특히 이 논문에서는 Fourier feature를 사용한 input coordinate (v\bold v)의 mapping을 통해 이러한 문제를 해결한다.

γ(v)=[a1cos(2πb1Tv),a2sin(2πb1Tv),...,amcos(2πbmTv),amsin(2πbmTv)]\gamma(\bold v)= [a_1cos(2\pi\bold b_1^T\bold v),a_2sin(2\pi\bold b_1^T\bold v),...,a_mcos(2\pi\bold b_m^T\bold v),a_msin(2\pi\bold b_m^T\bold v)]

Kernel regression

ref: https://web.mit.edu/modernml/course/lectures/MLClassLecture3.pdf

Training dataset (X,y)={(xi,yi)}i=1n(\bold X, \bold y)=\{(x_i, y_i)\}^n_{i=1}가 있다고 하자.

yi=f(xi)y_i=f(x_i)인 scalar output으로, 우리는 임의의 point xx에 대해 estimate f^\hat{f}를 구하려한다.

먼저 Linear regression에서부터 시작해보자.

f(w,x)=wTxf(w,x)=w^Tx라는 함수를 정의해서,

L(w)=12i=1n(yif(w,xi))2L(w)=\frac{1}{2}\sum^n_{i=1}(y_i-f(w,x_i))^2의 loss를 minimize하도록 하는 ww를 구할 수 있을 것이다.

그런데, 여기서 linear model ff는 representation에 한계가 있기 때문에, model에 nonlinearity를 추가하고 싶다.

이를 위해 어떤 nonlinear transform을 정의하고, 이를 xx에 적용하여 어떤 feature map (ϕ\phi)을 만들고, 이를 통해 linear regression하는 방법을 생각할 수 있다.

xiRdϕ(xi)RDx_i\in\mathbb R^d \to \phi(x_i)\in\mathbb R^D
f(w,x)=wTϕ(x)f(w,x)=w^T\phi(x)

예를 들어, 아래와 같은 non-linear transform을 통해 더 높은 차원의 feature space로 데이터를 옮기고 구분하기 쉽게 데이터를 represent하는 것이 가능해진다.

ϕ[x1x2]=[x1x2x12+x22]\phi\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} x_1 \\ x_2 \\ \sqrt{x_1^2+x_2^2} \end{bmatrix}

이때, Representer Theorem으로 인해, optimization problem의 solution이 training data point에서 evaluate된 kernel function의 선형 조합으로 구해질 수 있다. (여기서 증명하지는 않으려고 한다.)

w=i=1nαiϕ(xi)w^*=\sum^n_{i=1}\alpha_i\phi(x_i)

그러면 우리는 linear regression문제를 풀기위한 loss function을 아래와 같이 다시 쓸 수 있는데,

L(w)=12(yiwTϕ(x))2=12i=1n(yij=1nαjϕ(xj)Tϕ(xi))2L(w)=\frac{1}{2}\sum(y_i-w^T\phi(x))^2=\frac{1}{2}\sum^n_{i=1}(y_i-\sum^n_{j=1}\alpha_j\phi(x_j)^T\phi(x_i))^2
=12i=1n(yi[α1  α2  ...  αn][ϕ(x1)ϕ(xi)ϕ(x2)ϕ(xi)...ϕ(xn)ϕ(xi)])2=\frac{1}{2}\sum^n_{i=1}(y_i-\begin{bmatrix} \alpha_1 \;\alpha_2 \; ... \; \alpha_n \end{bmatrix}\begin{bmatrix} \phi(x_1)\phi(x_i) \\ \phi(x_2)\phi(x_i) \\ ... \\ \phi(x_n)\phi(x_i) \end{bmatrix})^2

여기서 중요한 점은 linear regression 문제를 풀기 위해서는 각 input feature의 내적 값만 있으면 된다는 것이다. 심지어 만약에 우리가 아래와 같이 두 feature의 내적값을 내어주는 어떤 function을 정의할 수 있다면, feature mapping ϕ\phi도 몰라도 된다.

K(x,x~)=<ϕ(x),ϕ(x~)>K(x,\tilde{x})=<\phi(x),\phi(\tilde{x})>

이 함수가 바로 kernel function이고, 이러한 kernel을 이용한 linear regression을 kernel regression이라고 한다 (kernel trick).

Kernel regression을 생각하기 위해 다시 위에서 구한 loss function을 가지고 오면,

L(w)=12i=1n(yij=1nαjϕ(xj)Tϕ(xi))2L(w)=\frac{1}{2}\sum^n_{i=1}(y_i-\sum^n_{j=1}\alpha_j\phi(x_j)^T\phi(x_i))^2

여기서 j=1nαjϕ(xj)Tϕ(xi)=αK\sum^n_{j=1}\alpha_j\phi(x_j)^T\phi(x_i)=\alpha K라고도 쓸 수 있으므로, loss를 matrix form으로 쓰면

L(α)=yαK^2L(\alpha)=||y-\alpha \hat K||_2

즉, 우리는 y=αK^y=\alpha \hat K라는 n개의 variable이 있는 linear system을 푸는 것과 같고, particular solution을 아래와 같이 구해질 수 있을 것이다.

w=i=1nαiϕ(xi)=i=1n(K1y)iϕ(xi)w^*=\sum^n_{i=1}\alpha_i\phi(x_i)=\sum^n_{i=1}(K^{-1}y)_i\phi(x_i)

그러면 최종적으로 우리의 예측기는 아래와 같이 쓸 수 있다. (논문에 나온 식)

f^(x)=wTϕ(x)=i=1n(K1y)iϕ(xi)ϕ(x)=i=1n(K1y)ik(xi,x)=i=1nαik(xi,x)\hat{f}(x)=w^{*T}\phi(x)=\sum^n_{i=1}(K^{-1}y)_i\phi(x_i)\phi(x)=\sum^n_{i=1}(K^{-1}y)_ik(x_i,x)=\sum^n_{i=1}\alpha_ik(x_i,x)

정리하자면, kernel regression은 training examples의 feature들의 superposition을 통하여 새로운 데이터에 대한 예측을 하는 것이라고 볼 수 있다.

(그림 출처: Every Model Learned by Gradient Descent Is Approximately a Kernel Machine (Pedro Domingos / arxiv)

Neural Tangent Kernel (NTK)

Neural tangent kernel은 neural network training이 NTK를 사용한 kernel regression로 approximate할 수 있다라는 이론으로, deep wide neural network의 lazy training을 가정한다.

아래와 같은 1-layer MLP를 생각해보자.

y=f(x;θ)=i=1mbiσ(aiTx)y=f(x;\theta)=\sum^m_{i=1}b_i\sigma(a_i^Tx)

여기서 weight a,ba,b를 학습하기 위해 위에서와 똑같이 regression loss를 사용할 수 있다.

L(θ)=12(f^(xi;θ)yi)2L(\theta)=\frac{1}{2}\sum(\hat f(x_i;\theta)-y_i)^2

Gradient descent based training을 하면

θ(t+1)=θ(t)ηi=1n(f(xi;θ)yi)θf(xi;θ)\theta(t+1)=\theta(t)-\eta\sum^n_{i=1}(f(x_i;\theta)-y_i)\nabla_{\theta}f(x_i;\theta)

여기서 weight를 update한다는 것은 initial weight θN\theta \sim \mathcal N가 시간 tt에 따라 학습된다는 것이다.

이때, neural network가 충분히 wide하다면 (i.e., m>>1m>>1), weight들이 거의 static하다고 하는데, 그러한 경우 weight θ\theta에 대해서 θ0\theta_0에서 1st order taylor approximation를 생각해볼 수 있다.

f(x;θ)f(x;θ0)+θf(x;θ0)(θθ0)+...f(x;\theta) \approx f(x;\theta_0)+\nabla_\theta f(x;\theta_0)(\theta-\theta_0)+...

즉, neural network model을 initialization point주변에서 linearization할 수 있게 있게 되는데, θf(x;θ0)\nabla_\theta f(x;\theta_0)를 mapping function의 관점에서 본다면, 이를 kernel regression과 비슷하게 생각해볼 수 있다.

ϕ(x)=θf(x;θ0)\phi(x)=\nabla_\theta f(x;\theta_0)

그러면 이에 해당하는 kernel function도 정의할 수 있게된다.

kNTK(xi,xj)=EθN<f(xi;θ)(θ),f(xj;θ)(θ)>k_{NTK}(x_i,x_j)=\mathbb E_{\theta\sim\mathcal N}<\frac{\partial f(x_i;\theta)}{\partial(\theta)}, \frac{\partial f(x_j;\theta)}{\partial(\theta)}>

여기서, 추가적으로 gradient descent 분석을 하기 위해 η0\eta \to 0으로 보내 gradient flow dynamics를 구해보자.

θ(t+1)=θ(t)ηθL(θ)\theta(t+1)=\theta(t)-\eta\nabla_\theta L(\theta)
θ(t+1)θ(t)η=θL(θ)\frac{\theta(t+1)-\theta(t)}{\eta}=-\nabla_\theta L(\theta)
dθdt=θL(θ)\frac{d\theta}{dt}=-\nabla_\theta L(\theta)

여기서 L(θ)=12(f(xi;θ)yi)2L(\theta)=\frac{1}{2}\sum(f(x_i;\theta)-y_i)^2 이므로

θL(θ)=f(x;θ)(f(x;θ)y)\nabla_\theta L(\theta)=\nabla f(x;\theta)(f(x;\theta)-y)
dθdt=f(x;θ)(f(x;θ)y):gradient  flow  dynamics\frac{d\theta}{dt}=-\nabla f(x;\theta)(f(x;\theta)-y) :gradient\; flow\;dynamics

그리고, gradient trajectory를 따라 변하는 estimated output의 값을 추적해보면, (gradient flow dynamics 대입)

dfdt=θf(x;θ)Tdθdt:chain  rule\frac{df}{dt}=\nabla_\theta f(x;\theta)^T\frac{d\theta}{dt} :chain \; rule
=θf(x;θ)Tθf(x;θ)(f(x;θ)y)=-\underline{\nabla_\theta f(x;\theta)^T\nabla_\theta f(x;\theta)}(f(x;\theta)-y)
=kNTK(f(x;θ)y)=-k_{NTK}(f(x;\theta)-y)

위와 같이 gradient-descent based neural network training을 NTK를 이용한 kernel regression으로 나타낼 수 있다.

Spectral Bias when training neural networks

Training error e=y^y=f(x;θ)ye=\hat{y}-y=f(x;\theta)-y를 정의해보자.

그러면

dedt=kNTKe(t)\frac{de}{dt}=-k_{NTK}e(t)
e(t)=ekNTKte(0)e(t)=e^{-k_{NTK}t}e(0)

이제 time tt에서 network의 output을 network 초기 output과 error를 통해 나타낼 수 있다.

f(x;θt)=y+e(t)=y+ekNTKt(f(x;θ0)y)f(x;\theta_t)=y+e(t)=y+e^{-k_{NTK}t}(f(x;\theta_0)-y)

논문 equation (3)에서는 초기 f(x;θ0)f(x;\theta_0)를 그냥 0으로 가정하고 아래와 같이 기술한 것 같다. (이상적인 training과정에서는 Ktest=KK_{test}=K이다.)(η\eta도 사실 그냥 상수 곱해준 것으로 크게 중요하진 않음)

y^tKtestK1(IeηKt)y\hat{y}^t\approx K_{test}K^{-1}(I-e^{-\eta Kt})y

이때, kernel matrix kk는 positive semi definite하기 때문에 eigendecomposition (k=QΛQTk=Q \Lambda Q^T)이 가능하고 ekt=QeΛtQTe^{-kt}=Qe^{-\Lambda t}Q^T와 같이 쓸 수 있다. 그러면

e(t)=y^ty=QeΛtQTye(t)=\hat{y}^t-y=-Qe^{-\Lambda t}Q^Ty
QTe(t)=QT(y^ty)=eΛtQTyQ^Te(t)=Q^T(\hat{y}^t-y)=-e^{-\Lambda t}Q^Ty

위 식을 보면, error가 NTK의 eigenvalue 값에 따라서 decay되는 것을 알 수 있고, target function의 component 중에서 larger eigenvalue를 갖는 kernel eigenvector가 더 빠르게 학습한다는 것을 의미한다.

그런데 여기서 kk의 eigenfunction (columns  of  Q=qicolumns\;of\;Q=q_i)은 서로 orthogonal하기 때문에 fourier analysis에서 basis function의 역할을 할 수 있고, 이때 eigenvalue들은 각 eigenfunction의 amplitude, coefficient로 생각할 수 있다.

k=i=1nλiqiqiTk=\sum_{i=1}^n\lambda_iq_iq_i^T

이러한 kernel들은 대부분 smoothing function인데, smoothing function의 경우 low frequency components가 energy가 집중되어있기 때문에 (거의 모든 정보가 low-frequency regime에 몰려있음), fourier coefficient가 더 크다. 즉, 더 큰 eigenvalue를 가진다. 반면에 high frequency components는 작은 eigenvalue.

작은 eigenvalue는 convergence가 잘 되지 않는다고 했으므로,

neural network는 high-frequency를 잘 학습하지 못한다는 것을 증명해 냈다.

profile
공부하고 싶은 사람

0개의 댓글