一、梯度下降

### --- 梯度下降(Gradient Descent)

~~~ 在求解机器学习算法的模型参数,即无约束优化问题时,
~~~ 梯度下降(Gradient Descent)是最常用的方法之一,接下来就对梯度下降进行介绍。
### --- 梯度

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_迭代


|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_损失函数_02

### --- 梯度下降和梯度上升

~~~ 在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,
~~~ 得到最小化的损失函数,和模型参数值。
~~~ 反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
~~~ 梯度下降和梯度上升法是可以互相转化的。
~~~ 比如我们需要求解损失函数f0的最小值,这时我们需要用梯度下降来迭代求解。
~~~ 但是实际上,我们可以反过来求解损失函数-f0的最大值,这时梯度上升法就派上用场了。
### --- 算法详解

~~~ 首先来看看梯度下降的一个直观的解释。
~~~ 比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,
~~~ 也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,
~~~ 也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,
~~~ 向这一步所在位置沿着最陡峭最易下山的位置走一步。
~~~ 这样一步步的走下去,一直走到觉得我们已经到了山脚。
~~~ 当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
~~~ 从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。
~~~ 当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_梯度下降_03

### --- 梯度下降的相关观念

~~~ # 在详细了解梯度下降的算法之前,我们先看看相关的一些概念。
~~~ 步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。
~~~ 用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
~~~ 假设函数(hypothesis function)∶在监督学习 ,
~~~ 为了拟合输入样本,而使用的假设函数记为 比如对于单个特征的m个样本,可以采用拟合函数为∶y=W0 +W1Z 。
~~~ 损失函数(loss function)∶为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。
~~~ 损失函数极小化,意味着拟合程度最好,对应的模型的参数即为最优参数。
~~~ 在线性回归中,损失函数通常为样本输出和假设函数的差去平方。
~~~ 比如对于m个样本,采用线性回归,损失函数为∶

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_损失函数_04

~~~     梯度下降的算法用矩阵法来表示,更加简洁,且由于使用了矩阵,实现逻辑更加的一目了然。
~~~ 这一节要求有一定的矩阵分析的基础知识,尤其是矩阵求导的知识。
~~~ # 先决条件∶
~~~ 需要确认优化模型的假设函数和损失函数。
~~~ 对于线性回归,假设函数

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_迭代_05

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_迭代_06

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_损失函数_07

### --- 梯度下降算法调优:

~~~ # 在使用梯度下降时,需要进行调优。哪些地方需要调优呢?
~~~ 算法的步长选择。在前面的算法描述中,提到取步长为1,但是实际上取值取决于数据样本,
~~~ 可以多取一些值,从大到小,分别运行算法,
~~~ 看看迭代效果,如果损失函数在变小,说明取值有效,否则要增大步长。
~~~     # 算法参数的初始值选择。
~~~ 初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;
~~~ 当然如果损失函数是凸函数则一定是最优解。
~~~ 由于有局部最优解的风险,需要多次用不同的初始值运行算法,
~~~ 观测损失函数的最小值,选择损失函数最小化的初始值。

~~~ # 标准化。
~~~ 由于样本不同特征的取值范围不一样,
~~~ 可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据标准化,
~~~ 也就是对于每个特征z,求出它的期望和标准差 std(x),然后转化为∶
~~~ 这样特征的新期望为0,新方差为1,且无量纲,收敛速度可以大大加快。

|NO.Z.00014|——————————|BigDataEnd|——|Arithmetic&Machine.v14|——|Machine:逻辑回归算法.v02|_损失函数_08


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor