原文地址:机器学习原理
想要学习机器学习,就避不开数学,一想到我这学渣,竟然还要学习高数,就脑瓜子疼,不过也只能一点一点啃了。
梯度下降
1.梯度
定义:对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。
含义:是函数变化增加最快的地方。类似于山脉上最陡的地方。沿着梯度的方向能快速找到函数的最大值(不一定是全局最优)。
相反则可以快速找到函数的最小值(同样不一定是全局最优)
2.梯度下降算法详解
2.1相关概念
步长(Learning rate):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
特征(feature):指的是样本中输入部分,比如样本(x0,y0),(x1,y1),则样本特征为x,样本输出为y。
假设函数(hypothesis function):就是为了拟合而建立的函数,也可以说是模型,不过这个函数并不一定能完全拟合,是有一定误差存在的。
损失函数(loss function):损失函数即用来评价假设函数的输出结果和实际输出结果之间的拟合程度。损失函数越小则说明拟合的效果越好。
2.2梯度下降的详细算法
由于数学底子不好,这里就不详细介绍了,仅将自身的理解描述出来。
首先我们要明确,生成模型其实就是生成假设函数的过程,对于给定数据,首先我们要确定假设函数的基本形式,是线性还是其他什么种类,这关系到假设模型的参数设置情况。
生成假设模型之后,定义损失函数,我们的目标是当把训练数据输入进损失函数的时候,这要求我们在假设函数中所设置的参数能使损失函数最小,那么怎么设置参数才能使损失函数最小呢,在这里我们就用到了梯度下降算法。
梯度下降算法通过不断迭代,使自变量的位置逐渐靠近整个函数的最低点,最低点当然就是损失函数值最小的地方,当迭代最后收敛的时候,所得到的自变量的值就是我们需要的参数。
2.3梯度下降算法的调优
1.要优化算法步长的选择,值太大容易错过最小值点,值太小收敛速度则会很慢,多取一些值进行实验,找到最合适的步长。
2.初始值的选择,初始值的不同影响了你收敛的时间,是局部最优解还是全局最优解等等,当不了解损失函数类型的时候,多选几个初始点进行实验。
3.归一化。由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据归一化。
3.其他梯度下降算法
3.1批量梯度算法(BGD)
批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。
3.2随机梯度下降算法(SGD)
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。
3.3小批量梯度下降算法(MBGD)
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代。