首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习100天-Day1501训练模型-线性模型

说明:本文依据《Sklearn 与 TensorFlow 机器学习实用指南》完成,所有版权和解释权均归作者和翻译成员所有,我只是搬运和做注解。

第四章是对模型训练内部工作流程的了解,帮助炼丹师们找到恰当的学习模型、算法、数据集。

为了尽量简单(懒),在这里默认已经了解线性回归、多项式回归、损失函数、梯度下降

1. 简单的线性回归模型,讨论两种不同训练方法的最优解

封闭方程求根运算,得到模型在当前训练集上的最优解。

迭代优化(梯度下降GD),调整模型参数获取最小损失函数。批量梯度下降、随机梯度下降、小批量梯度下降。

2. 多项式回归,用来拟合非线性数据集

介绍正则方式减少过拟合的出现

介绍Logistic回归和Softmax回归

1. 线性回归

线性模型的描述指通过计算输入变量的加权和,并加上一个常数偏置项(截距项)来得到一个预测值

线性回归模型的表示

y=θ_0+θ_1x_1+θ_2x_2+…+θ_nx_n

y表示预测结果

n表示特征个数

x_i表示第i个特征的数值

θj表示第j个参数 y=hθ(X)=θ^TX

这是上式的向量化表示,在吴恩达机器学习教程中有专门提到。

θ^TX表示θ^T和X的点积

h_θ(X)表示参数为θ的假设函数

线性回归模型的训练

均方根误差RMSE或均方误差MSE,训练目标就是找到一个线性回归模型,让其RMSE或MSE最小。

MSE(X, h_θ)=1/m\Sigma_^m(\theta^TX^i-y^i)^2

1. 公式求解损失函数(通过解正态方程直接得到最后的结果)

\theta=(X^TX)^{-1}X^Ty

θ指最小化损失函数

y是包含所有y值的向量

2.复杂度计算

正态方程需要计算矩阵X.TT,特征个数n,因此矩阵为nn,其复杂度在n^2.4-n^3之间,因此特征个数会直接影响到求解的速度。为了应对这种问题,引入了梯度下降方法。

3.梯度下降

梯度下降是一种非常通用的优化算法,它能够很好地解决一系列问题。梯度下降的整体思路是通过的迭代来逐渐调整参数使得损失函数达到最小值。

随机初始值θ

超参数学习率决定了参数步长的大小,以及时间开销,学习率过大或过小都会影响到学习结果。

梯度下降陷阱,就是当损失函数出现不规则形状的时候,收敛到全局最小是很困难的,会出现收敛局部最小或跨越高原,都无法达到全局最小。

特征缩放,在使用梯度下降的时候,应该确保所有的特征又相近的尺度范围,使用Sklearn的StandardScaler,否则会影响到收敛结果。

批量梯度下降

在梯度下降的过程中要计算每一个θ下的损失函数梯度,这个就是偏导数,在公式推导中,这个应该是初学者感觉最困难的地方,为了避免单独计算每一个偏导数,可以使用批量梯度下降。

这边按照不同学习率生成了前100次的迭代,可以明显对比出来差别。在学习率为0.1得时候能够最快拟合,但是这个超参数的寻找是一个问题,教程在这里推荐了网格搜索

随机梯度下降

批量梯度下降的一个问题是每一步梯度都需要使用整个数据集,在处理大规模数据的时候会十分慢。而随机梯度下降,每一步只选取训练集中的一个样本,提高了算法速率。

由于损失函数的不规则性,可以跳过局部最小值,其效果要优于批量梯度下降。

但另一方面,由于随机性,呈现出更多的不规律性:它到达最小值不是平缓的下降,损失函数会忽高忽低,只是在大体上呈下降趋势。随着时间的推移,它会非常的靠近最小值,但是它不会停止在一个值上,它会一直在这个值附近摆动。因此,当算法停止的时候,最后的参数还不错,但不是最优值。

随机性可以很好的跳过局部最优值,但同时它却不能达到最小值。解决这个难题的一个办法是逐渐降低学习率。 开始时,走的每一步较大(这有助于快速前进同时跳过局部最小值),然后变得越来越小,从而使算法到达全局最小值。 这个过程被称为模拟退火,因为它类似于熔融金属慢慢冷却的冶金学退火过程。 决定每次迭代的学习率的函数称为learning schedule。

在Sklearn中使用SGDRegressor来实现随机梯度下降。

从图中可以看到每一步都是不规则的跳跃。

小批量梯度下降

基于批量梯度和随机梯度,在迭代的每一步中,批量梯度使用整个数据集,随机梯度使用一个实例,小批量梯度使用随机的小型实例集。比随机梯度的主要优点在于你可以通过矩阵运算的硬件优化得到一个较好的训练表现,尤其当你使用 GPU 进行运算的时候。

图中显示了训练期间三种梯度下降算法在参数空间中所采用的路径。

批量梯度的路径最后停在了最小值

随机梯度和小批量梯度最后都在最小值附近摆动。

如果使用了一个较好的learning schedule,随机梯度和小批量梯度也可以得到最小值。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190107A0KF6H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券