들어가며

Backpropagation은 1986년 Hinton과 그 동료들에 의해 고안된 알고리즘이다. 하지만 Hinton은 인터뷰를 포함하여 논문까지 써가며 backpropagation을 갈아엎아야 한다는 주장을 하였다. 심지어는 Nature Reviews Neuroscience에 Backpropagation and the Brain이라는 리뷰 페이퍼를 쓰기까지 하였는데, 이러한 맥락에서 backpropgation보다 더 빠르고 효율적이고 경제적인 learning rule이 없을까?라는 질문에 대한 대답으로 dual number system을 통한 forward-time differentiation을 생각해볼 수 있다. 본 글은 이 forward-propgation에 대한 내용을 다룬다.

선수지식

$G$를 이항연산(binary operation) $\ast$가 있는 집합이라고 하자. 이를 $(G,\ast)$로 적는다. 만약 $(G,\ast)$가 다음 조건들을 만족하면, $(G,\ast)$를 군(group)이라고 한다.

  1. 모든 $g,h,k\in G$에 대해서, $(g\ast h)\ast k = g\ast(h\ast k)$.
  2. $e\in G$가 하나 존재하여 모든 $g\in G$에 대해 $g\ast e = e\ast g = g$.
  3. 각 $g\in G$에 대해, $g^{-1}\in G$가 하나씩 존재하여 $g\ast g^{-1}=g^{-1}\ast g=e$.

이 때 $e$를 항등원, $g^{-1}$을 $g$의 역원이라고 부른다. 또한 $g\ast g'=g'\ast g$가 항상 만족된다면 $G$를 아벨군(abelian group)이라고 부른다.

이제 $(R,+)$를 아벨군이라고 하자다. $(R,+)$위에 연산 $\circ$가 하나 더 존재하고 다음 조건을 만족시킨다면, $(R,+,\circ)$를 환(ring)이라고 부른다.

  1. 모든 $a,b,c\in R$에 대해서 $a\circ(b\circ c)=(a\circ b)\circ c$.
  2. 모든 $a,b,c\in R$에 대해서 $a\circ(b+c)=a\circ b + a\circ c$ 및 $(a+b)\circ c=a\circ c + b\circ c$.

만약 $a\circ b = b \circ a$가 항상 만족된다면 우리는 $(R,+,\circ)$를 가환환(commutative ring)이라고 부른다.

$R$을 가환환이라고 하고 $\circ$를 $\cdot$으로 쓰거나 생략하기로 하자. 그러면 $R$위의 다항식환(polynomial ring)은 다음처럼 정의된다:

$$ R[x] := \{a_0 + a_1x + a_2x^2+\cdots+a_nx^n:a_i\in R, n\in\mathbb{N}\} $$

또한 원소 $r\in R[x]$와 부분집합 $S\subseteq R[x]$ 사이의 $+$연산을 다음처럼 정의한다:

$$ r+S:=\{r+s\in R[x]:s\in S\} $$

이제 가환환 $R[x]$의 아이디얼(ideal)을 정의하자. 각 $r\in R[x]$에 대해서, 그리고 모든 $i\in I$에 대해서 $ri\in I$가 성립한다면 $I$를 $R[x]$의 ideal이라고 부르기로 한다. 이를 $I\triangleleft R[x]$로 쓴다.