在梯度下降法(求最小值)里, x迭代的方向是梯度的反方向, 但是我们要选择一个步长使得函数值的确是下降的, 假设函数形式如下:
\[
f(\textbf{x})= \textbf{x}^T\textbf{A}\textbf{x} + 2\textbf{b}^T + c
\]
其中\(\textbf{x}\)为向量.
设\(\textbf{d}\)是负梯度方向, 那么, 我们的目标是解:
\[
min_{\alpha>=0}f(\textbf{x}+\alpha \textbf{d})
\]
中的\(\alpha\).
解:
令 \(h(\alpha)=f(x+\alpha d)\)
函数最小值肯定是在导数为0时取得. 即:
\[
{\partial h(\alpha) \over \partial \alpha} = \textbf{0}
\]
1, 先求梯度:
\[
\nabla f(x)=2A\textbf{x} + a \textbf{b}
\]
2, 求偏导
根据链式法则有:
\[
\begin{align}
{\partial h \over \partial \alpha} &= d^T[\nabla f(x + \alpha d)] \\
&= d^T [2A(x+\alpha d) + 2b] \\
&= d^T[2Ax+2b] + 2 \alpha d^T A d \\
&= d^T \nabla f(x) + 2 \alpha d^T A d
\end{align}
\]
3, 由于导数为0, 所以有:
\[
d^T \nabla f(x) + 2 \alpha d^T A d = 0 \\
\alpha = - {\ {d^T \nabla f(x)} \over {2 d^T A d}\ }
\]
这是机器学习数学基础课程作业.