AI之旅(5):正则化与牛顿方法
前置知识
导数,矩阵的逆
知识地图

正则化是通过为参数支付代价的方式,降低系统复杂度的方法。牛顿方法是一种适用于逻辑回归的求解方法,相比梯度上升法具有迭代次数少,消耗资源多的特点。
过拟合与欠拟合
回顾线性回归和逻辑回归这两个算法,我们发现特征这个词汇在频繁出现。特征是从不同的角度对事物进行描述,特征数量会决定模型的复杂程度和最终的性能表现。
为了方便讨论,我们通过添加高阶多项式的方法来增加特征数量。原始数据集中只有一个特征,依次添加原始特征的2次方,3次方......直至6次方作为新的特征。
当特征数量不足时会使得模型太简单,模型不能很好地拟合样本。这种情况称为欠拟合,如下图所示:

随着特征数量的增加,模型的复杂度也逐渐增加,模型对样本的拟合程度也在逐步提升,如下图所示:

当特征数量过多时会使得模型太复杂,模型可以极好地拟合样本。这种情况称为过拟合,如下图所示:

显然欠拟合的情况是不好的,那么过拟合的情况如何呢?虽然模型很好地拟合了数据集,然而这不是一个好的模型,它对数据集过度拟合以至于对新样本的泛化能力很差。
“如无必要,勿增实体”。参数是特征的权重,当参数越大时特征的影响越大,当参数越小时特征的影响越小。如果能让参数尽量变小,就可以降低模型的复杂度。
为了避免出现过拟合的情况,可以在代价函数中加入正则化项,正则化项是关于参数的代价。因为存在代价,算法在寻找全局最优点的过程中,必须使得参数尽量最小化。
正则化
线性回归原代价函数如下:

线性回归新代价函数如下:

λ称为正则化参数,和学习率α一样,这是一个需要手动调节的参数。正则化参数λ的作用是调节以下两个目标间的平衡关系:
目标一:使模型更好地拟合数据;
目标二:使参数θ尽量最小化;
当正则化参数λ减小时,需要为参数θ支付的代价变小,模型的复杂度提高,存在的风险是可能会出现过拟合。
当正则化参数λ增大时,需要为参数θ支付的代价变大,模型的复杂度降低,存在的风险是可能会出现欠拟合。

注:1/2是为了后续求导的方便;
正则化项的含义是,平均每个样本需要为参数支付的代价,代价以参数平方的形式体现。数据集中原本有n个特征,加入一列全为1的常数项后一共有n+1个特征,对应n+1个参数。
下图为特征相同的情况下,当正则项参数不同时模型的变化。随着正则项参数增大,需要为参数所支付的代价增大。为了最小化代价函数,必须降低特征的权重,进而简化了模型。

以下为对应的参数:

注意j是从1开始算起的,也就是说,常数项对应的参数θ0不参与正则化。这是理解和实践中很容易混淆的地方,下面用对比图说明这样约定的原因。

左图为所有参数都参与正则化的结果,因为正则化参数非常大,为了最小化代价函数,所有的参数都趋向于0。模型是经过原点的曲线,无法体现出样本的平均水平。

右图为θ0不参与正则化的结果,因为正则化参数非常大,为了最小化代价函数,除了θ0外的参数都趋向于0。虽然模型的表现也很差,至少体现出样本的平均水平。

注意在理论说明时向量的下标是从0开始计数,在代码编写时向量的下标是从1开始计数。向量θ中的第一个元素即常数项对应的参数,这个元素不参与正则化。
将线性回归的函数更新如下:

将逻辑回归的函数更新如下:

函数与导数
当函数只有一个变量时,在二维空间中可以表现为一条曲线。假设函数在f(θ)=0处有解,已知导数是切线的斜率,根据这一点可以寻找到函数在该点的解。

首先随机选择一个初始值作为第一个交点。
求出函数在第一个交点的导数,将切线延长到x轴上,可以得到第二个交点。
求出函数在第二个交点的导数,将切线延长到x轴上,可以得到第三个交点。
在这个过程中,交点在不断地向目标靠近。如此反复,最终得到函数在f(θ)=0处的解。单变量的牛顿法迭代形式如下:

牛顿方法
这个方法如何应用到逻辑回归算法中?当一阶导数为0时,函数处于极值点。要求代价函数的最优解,可转化为求一阶导数为0,这又可通过牛顿方法用二阶导数进行迭代。

所以问题的关键在于如何求代价函数的二阶导数。因为代价函数中有多个变量,每个变量都有相对于其他变量的二阶偏导数。这些二阶偏导数表现为矩阵的形式,以两个变量为例。

右边的符号表示第j个变量相对于第i个变量的二阶偏导数。虽然形式复杂,但本质上在求一个变量的偏导数时,是直接将其他变量视为常数,这就极大地简化了问题。

左边是一阶导数向量,右边是二阶导数矩阵(Hessian Matrix),多维下的牛顿方法可表示为以下形式:

逻辑回归一阶导数:

逻辑回归二阶导数:

蓝色部分相对于变量是常数项可以直接消去,等式最外面有一个负号不要遗漏了。现在的问题是该如何得到整个二阶导数矩阵呢?构造一个小规模的样本观察一下规律。


假设j=1,k=2,将对应的二阶偏导数函数展开:

观察上式,发现只有一种矩阵的组合方法满足要求,即:

相比梯度上升法,牛顿方法的优点是不需要设置学习率,且所需迭代次数远远少于前者。缺点是需要计算二阶导数的逆矩阵,为避免求逆又衍生出了许多的改良版本。

总结
正则化通过为参数支付一个代价,使得参数尽量最小化。参数是特征的权重,当权重降低的时候,特征对于模型的影响也随之降低。当模型复杂度降低时,往往能获得更好的表现。
牛顿方法是通过二阶导数来更新参数的方法,在大规模机器学习问题中,求解二阶导数的逆矩阵难以实现,实际中常用的是伪牛顿法,如BFGS,L-BFGS等等。
非正规代码


版权声明
1,本文为原创文章,未经作者授权禁止引用、复制、转载、摘编。
2,对于有上述行为者,作者将保留追究其法律责任的权利。
Tieven
2019.1.9
tieven.it@gmail.com
AI之旅(5):正则化与牛顿方法的更多相关文章
- AI之旅(2):初识线性回归
前置知识 矩阵.求导 知识地图 学习一个新事物之前,先问两个问题,我在哪里?我要去哪里?这两个问题可以避免我们迷失在知识的海洋里,所以在开始之前先看看地图. 此前我们已经为了解线性回归做了 ...
- 牛顿方法(Newton's Method)
在讲义<线性回归.梯度下降>和<逻辑回归>中我们提到可以用梯度下降或梯度上升的方式求解θ.在本文中将讲解另一种求解θ的方法:牛顿方法(Newton's method). 牛顿方 ...
- 牛顿方法(Newton-Raphson Method)
本博客已经迁往http://www.kemaswill.com/, 博客园这边也会继续更新, 欢迎关注~ 牛顿方法是一种求解等式的非常有效的数值分析方法. 1. 牛顿方法 假设\(x_0\)是等式的 ...
- 机器学习-牛顿方法&指数分布族&GLM
本节内容 牛顿方法 指数分布族 广义线性模型 之前学习了梯度下降方法,关于梯度下降(gradient descent),这里简单的回顾下[参考感知机学习部分提到的梯度下降(gradient desce ...
- AI之旅(6):神经网络之前向传播
前置知识 求导 知识地图 回想线性回归和逻辑回归,一个算法的核心其实只包含两部分:代价和梯度.对于神经网络而言,是通过前向传播求代价,反向传播求梯度.本文介绍其中第一部分. 多元分类:符号转换 ...
- AI之旅(1):出发前的热身运动
前置知识 无 知识地图 自学就像在海中游泳 当初为什么会想要了解机器学习呢,应该只是纯粹的好奇心吧.AI似乎无处不在,又无迹可循.为什么一个程序能在围棋的领域战胜人类,程序真的有那么聪明吗?如 ...
- Dropout正则化和其他方法减少神经网络中的过拟合
1. 什么是Dropout(随机失活) 就是在神经网络的Dropout层,为每个神经元结点设置一个随机消除的概率,对于保留下来的神经元,我们得到一个节点较少,规模较小的网络进行训练. 标准网络和dro ...
- 斯坦福《机器学习》Lesson4感想--1、Logistic回归中的牛顿方法
在上一篇中提到的Logistic回归是利用最大似然概率的思想和梯度上升算法确定θ,从而确定f(θ).本篇将介绍还有一种求解最大似然概率ℓ(θ)的方法,即牛顿迭代法. 在牛顿迭代法中.如果一个函数是,求 ...
- AI:IPPR的数学表示-CNN方法
前言: 随着超量类别PR和高精度的需求,人工特征方法局限性凸显出来,固定的特征hash压缩映射因其压缩损失.表现为特定的特征hash方法,在海量的同类数据集上近邻特性变差,而在不同类别的数据上面隔离性 ...
随机推荐
- oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法
之前在调试存储过程时,出现卡死情况,无法插入数据 解决方法 1.查看那些表被锁住: --1.查看那些表被锁住--- select b.owner,b.object_name,a.session_id, ...
- DocumentBuilderFactory.newInstance() 异常解决
现象: objc[27212]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk ...
- linux jpg文件查找木马
find ./ -type f -name "*.jpg" | xargs grep "eval"
- RK3288 GPIO
简介GPIO, 全称 General-Purpose Input/Output(通用输入输出),是一种软件运行期间能够动态配置和控制的通用引脚.RK3288有9组 GPIO bank: GPIO0,G ...
- 以数之名:In Praise of APL 后记
原文:http://www.jsoftware.com/papers/perlis77.htm 标题:In Praise of APL: A Language for Lyrical Programm ...
- 框架、颜色、颜色名、脚本、字符实体、URL、速查列表
一. 1.<iframe></iframe>标签设置内联框架(一个内联框架用来当前HTML文档嵌入另一个文档).[语法:<iframe src="URL&quo ...
- [树组BIT]训练两题重新理解ver.
树状数组重(jiao)新(wo)理(zuo)解(ren) POJ-2352 加加加都给我加 输入是一行一行按照x从小到大给出的,所以对于每个点,要考虑的只是x比它小的点的个数.即记录各个x的情况,并且 ...
- Python之路【目录】
https://www.cnblogs.com/wupeiqi/articles/4938499.html
- CentOS7.6配置do.cker和K.B.S
方法一: 节点及功能 主机名 IP Master.etcd.registry K8s-01 10.8.8.31 Node1 K8s-02 10.8.8.32 Node2 K8s-03 10.8.8. ...
- shell练习题6
需求如下: 有日志access.log,部分内容如下: 127.0.0.1 - - [03/Jul/2018:00:00:01 +0800] "GET / HTTP/1.1" 20 ...