c语言知识地图,AI之旅(5):正则化与牛顿方法

前置知识

导数,矩阵的逆

知识地图

8582a03a56b662af159dc1e1d2fe14e6.png

正则化是通过为参数支付代价的方式,降低系统复杂度的方法。牛顿方法是一种适用于逻辑回归的求解方法,相比梯度上升法具有迭代次数少,消耗资源多的特点。

过拟合与欠拟合

回顾线性回归和逻辑回归这两个算法,我们发现特征这个词汇在频繁出现。特征是从不同的角度对事物进行描述,特征数量会决定模型的复杂程度和最终的性能表现。

为了方便讨论,我们通过添加高阶多项式的方法来增加特征数量。原始数据集中只有一个特征,依次添加原始特征的2次方,3次方......直至6次方作为新的特征。

当特征数量不足时会使得模型太简单,模型不能很好地拟合样本。这种情况称为欠拟合,如下图所示:

9b9f5d9dd6cc7cb219c6ea80ec89ce51.png

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

f339231f70b444c1fe3b6bfb374c20dd.png

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

21812a25d499a3ddd2efa05294c8d882.png

显然欠拟合的情况是不好的,那么过拟合的情况如何呢?虽然模型很好地拟合了数据集,然而这不是一个好的模型,它对数据集过度拟合以至于对新样本的泛化能力很差。

“如无必要,勿增实体”。参数是特征的权重,当参数越大时特征的影响越大,当参数越小时特征的影响越小。如果能让参数尽量变小,就可以降低模型的复杂度。

为了避免出现过拟合的情况,可以在代价函数中加入正则化项,正则化项是关于参数的代价。因为存在代价,算法在寻找全局最优点的过程中,必须使得参数尽量最小化。

正则化

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

4dc8ec838d90bcfc2053d6f2d6a08595.png

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

2e1428f661fc7377bbafbcc678c419a8.png

λ称为正则化参数,和学习率α一样,这是一个需要手动调节的参数。正则化参数λ的作用是调节以下两个目标间的平衡关系:

目标一:使模型更好地拟合数据;

目标二:使参数θ尽量最小化;

当正则化参数λ减小时,需要为参数θ支付的代价变小,模型的复杂度提高,存在的风险是可能会出现过拟合。

当正则化参数λ增大时,需要为参数θ支付的代价变大,模型的复杂度降低,存在的风险是可能会出现欠拟合。

9d3c969717b3192520f5bd3762e004d7.png

注:1/2是为了后续求导的方便;

正则化项的含义是,平均每个样本需要为参数支付的代价,代价以参数平方的形式体现。数据集中原本有n个特征,加入一列全为1的常数项后一共有n+1个特征,对应n+1个参数。

下图为特征相同的情况下,当正则项参数不同时模型的变化。随着正则项参数增大,需要为参数所支付的代价增大。为了最小化代价函数,必须降低特征的权重,进而简化了模型。

25af2ee3c90dbdc6e92076480d93aba0.png

以下为对应的参数:

5271e8e223b48e508fadb27ef98483e8.png

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

0f4165e955ad2d3afe30d9ca5bc6f3e2.png

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

37f36bc697f9066ac8c34591c3f72ecc.png

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

99440fb710eb9f018c7f54f5f74d9fe3.png

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

将线性回归的函数更新如下:

e554b0f27faa24d80d4a29c8b0b07397.png

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

8927afec0ffd6e2162d183839d3a6767.png

函数与导数

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

29f315707bf8ba9648a0a0f83cea9339.png

首先随机选择一个初始值作为第一个交点。

求出函数在第一个交点的导数,将切线延长到x轴上,可以得到第二个交点。

求出函数在第二个交点的导数,将切线延长到x轴上,可以得到第三个交点。

在这个过程中,交点在不断地向目标靠近。如此反复,最终得到函数在f(θ)=0处的解。单变量的牛顿法迭代形式如下:

3779574a6cd5523fa6f24e8f55991429.png

牛顿方法

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

8d838d30016f6661d4ae6b067b2ab783.png

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

87483d19e73d67c0dcd6c9f37e064da4.png

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

00484f75818c63c08b4f3d0c0400eb32.png

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

1663667d03c5c85533034fa4311c92f4.png

逻辑回归一阶导数:

40ba4563d9e4d0041e71127cbbf64c93.png

逻辑回归二阶导数:

31b9e462bd168bb9c6d51573690e391e.png

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

695b2b1ecae0592d511097cbee196b21.png

18163c5c4c579dca82ed694d6777c8b9.png

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

e8bcdcace819618e8d644c2af0721ae9.png

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

2783f2bdb365c9f2592d84c8a685f1e2.png

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

b67de5e5e4018ce850a8d61532626809.png

总结

正则化通过为参数支付一个代价,使得参数尽量最小化。参数是特征的权重,当权重降低的时候,特征对于模型的影响也随之降低。当模型复杂度降低时,往往能获得更好的表现。

牛顿方法是通过二阶导数来更新参数的方法,在大规模机器学习问题中,求解二阶导数的逆矩阵难以实现,实际中常用的是伪牛顿法,如BFGS,L-BFGS等等。

非正规代码

51b62f088686e6307cbd68f670f86e00.png

7497d0762e38a9c84888266286139d89.png

版权声明

1,本文为原创文章,未经作者授权禁止引用、复制、转载、摘编。

2,对于有上述行为者,作者将保留追究其法律责任的权利。

Tieven

2019.1.9

tieven.it@gmail.com

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方法,在海量的同类数据集上近邻特性变差,而在不同类别的数据上面隔离性 ...

随机推荐

Python [Leetcode 344]Reverse String

题目描述: Write a function that takes a string as input and returns the string reversed. Example:Given s ...

android 单独编译某个模块

第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了And ...

Docker容器案例:应用 Mysql

原创 杜亦舒   前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有人会认为没必要,在一台 ...

Tomcat 内存设置

大型项目或者使用了SSH 的话, Tomcat 可能会报 java.lang.OutOfmemoryError: PermGen Space Windows: 在 bin/catlina.bat 最上 ...

20170721_python字符串操作_《python语言及其应用》

str = 'abcde...wxyz' [num]提取指定字符 str[0] == 'a' str[1] == 'b' str[-1] == 'z' [start:end:step]分片/切片,一定 ...

Leetcode_7_Reverse Integer

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41578077 Reverse Integer Revers ...

Spring Boot实战笔记(六)-- Spring高级话题(多线程)

一.多线程 Springt通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中 ...

react-native webView android使用本地html问题

react-native WebView组件使用本地html时候,一般都是这样使用 var source = require('../html/my.html') :

NET(C#):关于正确读取中文编码文件

https://blog.csdn.net/ma_jiang/article/details/53213442 首先如果读者对编码或者BOM还不熟悉的话,推荐先读这篇文章:.NET(C#):字符编码( ...

LeetCode 232:Implement Queue using Stacks

 Implement the following operations of a queue using stacks. push(x) -- Push element x to the back ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值