机器学习(1):线性回归
目录
2.1 批量梯度下降(Batch Gradient Descent)
2.2 随机梯度下降(Stochastic Gradient Descent)
2.3 小批量梯度下降(Mini-Batch Gradient Descent)
一、线性回归算法
1.1 正常算法:
预测值与误差:
假设误差服从高斯分布:
若不符合标准分布,则要做预处理,很多论文中的这步公式会加入加入一些项,是为了让数据服从正常分布。
将(1)式带入(2)式:
似然函数:
解释:什么样的参数跟我们的数据组合后恰好是真实值
最大似然估计:什么样的参数跟我们的数据组合后是真实值的可能性最大的参数估计
再把上面的式子取对数:
对数似然:
解释:乘法难解,加法就容易了,对数里面乘法可以转换成加法
展开化简:
要成为最大似然估计,则要概率结果最大,又上面式子中减号2端都为正数,即要
越小越好,得出:
目标函数:
解释:目标函数越小,似然函数越大,目标函数最小,似然函数就是最大似然估计
使用目标函数求偏导=0,在一部分的情况下可以求出θ。
当计算不出时,下面介绍其他方法。
1.2 评估方法:
最常用的评估项:
取值越接近于1我们认为模型拟合的越好
二、梯度下降
目标函数(也叫损失函数):
2.1 批量梯度下降(Batch Gradient Descent)
α都为学习率,下面不在赘述
优点:
(1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。
缺点:
(1)当样本数目 mm 很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。
从迭代的次数上来看,BGD迭代的次数相对较少。其迭代的收敛曲线示意图可以表示如下:
2.2 随机梯度下降(Stochastic Gradient Descent)
随机梯度下降法不同于批量梯度下降,随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。
优点:
(1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。
缺点:
(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛。
(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
(3)不易于并行实现。
从迭代的次数上来看,SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。其迭代的收敛曲线示意图可以表示如下:
2.3 小批量梯度下降(Mini-Batch Gradient Descent)
小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 ** batch_size** 个样本来对参数进行更新。batch_size是小批量的具体量
优点:
(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
(3)可实现并行化。
缺点:
(1)batch_size的不当选择可能会带来一些问题。
batcha_size的选择带来的影响:
(1)在合理地范围内,增大batch_size的好处:
a. 内存利用率提高了,大矩阵乘法的并行化效率提高。
b. 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
c. 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。
(2)盲目增大batch_size的坏处:
a. 内存利用率提高了,但是内存容量可能撑不住了。
b. 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
c. Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。
下图显示了三种梯度下降算法的收敛过程:
三、学习率