Physicist, Programmer. What you eat, how you think, and most importantly what you have done become who you are. Who are you? and who will you be?
[IT/Programming]/Algorithm/Database
Machine Learninig :: Fastest learning by Quadratic approximation approach with finite equal step size through steepest descent.
kipid2023. 12. 5. 22:22
728x90
반응형
# Machine Learninig :: Fastest learning by Quadratic approximation approach with finite equal step size through steepest descent.
기계학습 코드를 짜는건 최적화 문제와 관련이 있는데 이 최적화라는게 the method of Lagrange multipliers (라그랑지 승수법) 과 밀접한 관련이 있다.
보통 질문 (input) 과 정답 (output) set 를 왕창 준비한 다음 Machine Learning code (Deep Learning with Artificial Neural Networks) 로 특정 변수들 집합일 때 (처음에는 Initial guess 로 거의 무작위한 값을 넣는 경우가 많음.) error 를 구한 뒤, 변수들을 변화시켜 나가면서 이 error 를 줄여나가는 것이다.
## PH
2023-12-01 : First posting.
## TOC
## Error function
\mathrm{E} (\text{input}, \text{output}, \{x_i\})
변수 set \{x_i\} 에 Constraints (제한) 이 없다고 한다면, 위 에러 \mathrm{E} 가 minimum (최소) 가 되는 조건은
\frac{\partial \mathrm{E}}{\partial x_k} (\text{input}, \text{output}, \{x_i\}) = 0 ~ \text{for all} ~ x_k
이다.
하지만 이 식만 가지고 변수 set \{x_i\} 를 찾는건 거의 불가능에 가깝기 때문에, 초기값 at \tau = 0 일 때 \{x_i (\tau)\} 를 대충 찍고 (적절히 짱구를 굴려서 적당한 이러이러한 값 정도면 되지 않을까하고 educated guess 를 넣을수록 좋다. 아님 그냥 완전 무작위 숫자들을 넣기도한다.) 이 값에서부터 \{x_i (\tau)\} 값을 변화시켜 나가면서 \mathrm{E} 를 최소화시켜 나가는 것이다.
이 때 쓰는 방법이 라그랑지 승수법인데, constraints
\sum_k \bigg( \frac{d x_k}{d \tau} \bigg)^2 = 1
일 때,
\frac{d \mathrm{E} (\{x_i (\tau)\})}{d \tau}
를 minimize 해야 steepest descent 경로를 따라 local minimum 으로 찾아간다는걸 알 수 있다.
위 식은 아래와 같이 풀어지므로
\frac{d \mathrm{E} (\{x_i (\tau)\})}{d \tau}
= \sum_k \frac{\partial \mathrm{E} (\{x_i (\tau)\})}{\partial x_k} \frac{d x_k}{d \tau}
와 같이 표현되고, 여기서 라그랑지 승수법을 써서 언제 \frac{d \mathrm{E} (\{x_i (\tau)\})}{d \tau} 가 minimum 인지, with a constraint , 를 계산하면 다음과 같은 조건이 나온다.
\frac{\partial \mathrm{E} (\{x_i (\tau)\})}{\partial x_k} + 2 \lambda \frac{d x_k}{d \tau} = 0
즉 steepest descent (에러가 최소인 곳으로 가는 경사가 가장 가파른 길) 는
\frac{d x_k}{d \tau} = - \frac{1}{2 \lambda} \frac{\partial \mathrm{E} (\{x_i (\tau)\})}{\partial x_k}
라는 결론이 나온다. \lambda 는 임의의 상수이므로 그리고 minimum 으로 가려면 \frac{d x_k}{d \tau} 가 \frac{\partial \mathrm{E} (\{x_i (\tau)\})}{\partial x_k} 와 부호가 반대이여야 하므로 양수 \alpha (\tau) 를 도입해서 다음과 같이 나타내자.
\frac{d x_k}{d \tau} = - \alpha (\tau) \frac{\partial \mathrm{E} (\{x_i (\tau)\})}{\partial x_k}
보통 minimum 근처에서는 Quadratic approximation (2차 곡면근사) 가 되므로, local minimum 에서의 변수 \{x_i (\tau_f)\}
\mathrm{E} (\tau) = \mathrm{E} (\tau_f) + \frac{d \mathrm{E} (\tau)}{d \tau} (\tau_f) \cdot (\tau - \tau_f) + \frac{1}{2!} \frac{d^2 \mathrm{E} (\tau)}{d \tau^2} (\tau_f) \cdot (\tau - \tau_f)^2 + \cdots
Local minimium 에선 \frac{d \mathrm{E} (\tau)}{d \tau} (\tau_f) = 0 일테니...
\begin{align*}
\mathrm{E} (\tau) &= \text{Const} + \frac{1}{2!} \frac{d}{d \tau} \bigg( \frac{d \mathrm{E} (\tau)}{d \tau} \bigg)\Bigg|_{\tau=\tau_f} \cdot (\tau - \tau_f)^2 + \cdots \\
&= \text{Const} + \frac{1}{2!} \frac{d}{d \tau} \bigg( \sum_k \frac{\partial \mathrm{E} (\{x_i\})}{\partial x_k} \frac{d x_k (\tau)}{d \tau} \bigg)\Bigg|_{\tau=\tau_f} \cdot (\tau - \tau_f)^2 + \cdots \\
&= \text{Const} + \frac{1}{2!} \Bigg[
\sum_{k, l} \bigg( \frac{\partial^2 \mathrm{E} (\{x_i\})}{\partial x_l \partial x_k} \frac{d x_l (\tau)}{d \tau} \frac{d x_k (\tau)}{d \tau} \bigg)\Bigg|_{\tau=\tau_f}
+ \bigg( \sum_k \frac{\partial \mathrm{E} (\{x_i\})}{\partial x_k} \frac{d^2 x_k (\tau)}{d \tau^2} \bigg)\Bigg|_{\tau=\tau_f}
\Bigg] \cdot (\tau - \tau_f)^2 + \cdots \\
\end{align*}
여기서 \frac{\partial \mathrm{E} (\{x_i\})}{\partial x_k} \bigg|_{\tau=\tau_f} = 0 이므로 다음과 같이 간략해진다.
\mathrm{E} = \text{Const} + \frac{1}{2!} \Bigg[
\sum_{k, l} \bigg( \frac{\partial^2 \mathrm{E} (\{x_i\})}{\partial x_l \partial x_k} \frac{d x_l (\tau)}{d \tau} \frac{d x_k (\tau)}{d \tau} \bigg)\Bigg|_{\tau=\tau_f}
\Bigg] \cdot (\tau - \tau_f)^2 + \cdots
## 아주 간단하게 변수가 1개인 경우를 생각해보자.
이 경우 이 다음과 같이 표현된다.
\mathrm{E} = \text{Const} + \frac{1}{2!} \bigg( \frac{\partial^2 \mathrm{E} (\{x\})}{\partial x^2} \Big( \frac{d x (\tau)}{d \tau} \Big)^2 \bigg)\Bigg|_{\tau=\tau_f} \cdot (\tau - \tau_f)^2 + \cdots
위와 같은 Error function 이 있다고 치고, Initial guess 로 x(\tau_i) = -3 으로 잡았다고 치자.
이 때 어떻게 프로그래밍을 해서 Error function 이 최소값을 같는 x 를 찾을 수 있을까?
\frac{d x}{d \tau} = - \alpha (\tau) \frac{\partial E}{\partial x}
일테니 이 수식으로 finite step by step 으로 접근해 나가야 할 것이다. 컴퓨터에서는 continuous moving 이 불가능 하니까 말이다.
여기서 잘못된 예로 \alpha (\tau) 를 \tau 에 따라 변하지 않는 상수라고 잡고 step by step 나아간다고 해보자.
\begin{align*}
x (\tau_{n+1}) &:= x (\tau_{n}) - \frac{\partial E}{\partial x}\bigg|_{x=(x(\tau_{n+1})+x(\tau_{n}))/2} \times \alpha \Delta \tau \\
&:= x (\tau_{n}) - 2(x-2)_{x=(x(\tau_{n+1})+x(\tau_{n}))/2} \times \alpha \Delta \tau
\end{align*}
\Big( \frac{d x}{d \tau} \Big)^2 = 1
로 제한을 뒀으므로,
\frac{x (\tau_{n+1}) - x (\tau_{n})}{\Delta \tau} := - 2(x-2) \Big|_{x=(x(\tau_{n+1})+x(\tau_{n}))/2} \times \alpha
x (\tau_i) = -3 이고 x (\tau_i+\Delta \tau) = -1 로 잡으면,
\frac{-1 - (-3)}{\Delta \tau} := - 2(-2-2) \times \alpha
즉 \Delta \tau = 2 가 되고,
1 = 8 \times \alpha