문제의식

Backpropagation (BP)은 neural network (NN)의 유일한 학습 알고리즘으로 1986년 Geoffrey Hinton의 논문에서 처음 제안되었고 현재까지도 그 명성을 유지하며 널리 사용되고 있습니다. 현재 가장 많이 쓰이는 deep learning (DL) 프레임워크인 Tensorflow (Keras), PyTorch 또한 BP를 기반으로 NN을 학습하고 있으니까요.

하지만 BP에는 문제점이 있습니다.

  1. 계산량의 부담 - BP는 각 layer의 parameter별 gradient를 모두 계산해야 하므로 계산량이 부담스럽습니다. 현재 NVIDIA의 GPU가 딥러닝의 하드웨어로 쓰는 것은 이때문입니다.
  2. 비-생물학적인 learning algorithm - 뇌가 BP를 한다는 것은 일견 아직까지는 정설이 아닙니다. 간혹 brain이 BP를 한다는 주장을 하는 연구들이 있지만 이는 소수의견일 뿐입니다.
  3. Backward를 진행할 때의 대칭 네트워크의 필요 - BP는 계산을 수행함에 있어서 backward mode에서 forward mode와 동일한 네트워크를 필요로 합니다.

등등 많은 문제들이 있습니다. 자세한 문제의식은 이 논문에서 살펴볼 수 있습니다. 따라서 본 글에서는 본인이 고안한 GO-UP (Gradient-based optimization with Ornstein-Uhlenbeck Process)를 살펴봅니다.

(엄밀하지는 않은) 수학적 원리

먼저 gradient descent의 수식을 살펴봅시다:

$$ \theta_{t+1} = \theta_{t} - \alpha\frac{\partial L}{\partial\theta_t} $$

표준 Gaussian이 아닌 Ornstein-Uhlenbeck process (OUP)는 다음과 같습니다:

$$ \frac{\partial\theta}{\partial t}=-k\theta + \eta,\quad\eta\sim\mathcal{N}(\mu,\sigma) $$

(사실 위 수식은 조금 엄밀성과는 거리가 있습니다.) 이제 위 OUP를 discrete version으로 써 봅시다:

$$ \theta_{t+1}=\theta_t-k\theta_t+\eta_t,\quad\eta_t\sim\mathcal{N}(\mu_t,\sigma_t) $$

만약 이유는 묻지 말고 위 GD가 OUP를 따른다면 우리는 두 식을 연립할 수 있을 것입니다:

$$ \cancel{\theta_t}-\alpha\frac{\partial L}{\partial\theta_t}=\cancel{\theta_t}-k\theta_t+\eta_t,\quad\eta_t\sim\mathcal{N}(\mu_t,\sigma_t) $$

결국 우리가 얻는 식은 다음입니다:

$$ k\theta_t-\alpha\frac{\partial L}{\partial\theta_t}=\eta_t,\quad\eta_t\sim\mathcal{N}(\mu_t,\sigma_t) $$

이제 또 한 번 더 이유는 묻지 말고 $k=\alpha$로 같다고 가정하면

$$ \alpha\theta_t-\alpha\frac{\partial L}{\partial\theta_t}=\eta_t,\quad\eta_t\sim\mathcal{N}(\mu_t,\sigma_t) $$