机器学习基础——数值计算

server/2025/3/6 12:35:16/

数值计算是机器学习领域的三驾马车之一,另外两个是线性代数和概率论,这三门数学基础性学科既是入门数据挖掘行业的门槛也是机器学习从业人员技术能力提升的阶梯。之前的文章已经介绍了线性代数和概率论相关的内容,今天本数据分析狮就分享一下机器学习中用到的数值计算。再次声明,小狮分享的这三篇只是基础性的理论知识,期望对大家入门机器学习有帮助。

一、为什么机器学习要用数值计算

机器学习为什么要用到数值计算,众所周知机器学习的过程跟把大象放进冰箱一样都是简单的三步:

step1:定义一个模型范围【Model Set】

step2:定义评估模型好坏的标准【Loss Function】

step3:根据标准选出最好的model【Best Model】

其中,第三步要从模型的汪洋Set中选出最好的那个,这就需要大量的数值计算,通常是指通过迭代过程更新解的估计值来解决数学问题的算法,而不是通过解析过程推导出公式来提供正确解的方法。常见的操作包括优化(找到最小化或最大化函数值的参数)和线性方程组的求解。那这就存在一个问题,为什么不能通过解析过程推导出公式来提供解,比如线性回归的解析解就可以用导数等于0可推导出
在这里插入图片描述

我个人总结之所以需要用数值解而不是解析解的原因有两个:一是无法满足大数据量矩阵乘法,比如线性回归的解析解当数据量达到几亿十几亿的时候显然一般的计算机都很难进行运算;二是很多模型没有解析解比如深度学习、逻辑回归都不存在解析解。因此需要数值解来逼近最优解。

【一个小类比】机器学习的这三个流程可以类比成女孩找对象。

step1:定义一个你要找的范围(比如男的、活的)。

step2:定义一个衡量好对象的标准(比如:身高2米以上,北京二环内有房,跑车等等)

step3:根据标准选出最好的对象(比如:搜索策略,从微信第一个男生开始挨个搜索,直到找到Mr Right)

二、基于梯度的优化算法

目标函数:在机器学习中需要最小(大)化的函数,也就是评估模型好坏的标准,比如:均方误差(MSE)、交叉熵损失函数等,有时也被称为代价函数、损失函数或误差函数

我们的目标是寻找f(x)取到最小值的参数值,这就需要我们定义一个搜索策略来改变参数值从而减小目标函数或者叫误差函数。其中最常用最直观的一种就是沿着导数(梯度)方向来搜索。

导数的意义:通过改变x的值来改变y值f(x + ϵ) ≈ f(x) + ϵf′(x)

梯度下降:通过导数的反方向移动自变量改变因变量值。直到因变量不再减少即为最优解,梯度是f(x)对xi【多个自变量】偏导数组成的向量f(x - ϵsign(f′(x))) <f(x)

最速梯度下降法:f(x)沿梯度的方向是函数值下降速度最快的方向x′ = x - ϵ∇xf(x) 其中ϵ是学习率

【f′(x) = 0 导数为0的情况】

导数为0时,无法提供更改x的方向,这些点就是临界点或驻点,驻点可以是局部极大点、局部极小点、鞍点,当然机器学习当然是想要得到全局最小点【最大点】
在这里插入图片描述

驻点是机器学习中最怕陷入的点,在驻点上导数为零,机器学习就会停止更新参数,误将驻点认为是全局最小点。所以,在深度学习中会加入动量的概念,来优化Optimizer比如 Adadelta,Adagrad,RMSProp 等方法都可以避免参数更新时陷入驻点
在这里插入图片描述

最速下降在梯度的每一个元素为零时收敛(或在实践中,很接近零时)。在某些情况下,我们也许能够避免运行该迭代算法,并通过解方程 ∇xf(x) = 0 直接跳到临界点。

虽然梯度下降被限制在连续空间中的优化问题,但不断向更好的情况移动一小步(即近似最佳的小移动)的一般概念可以推广到离散空间。递增带有离散参数的目标函数被称为 爬山( hill climbing)算法

三、其他优化算法

Jacobian、Hessian 矩阵

Jacobian 矩阵:当函数的输出是多维时,函数的一阶导数就不再是一个向量(梯度)而是一个矩阵这就是Jacobian 矩阵。

一阶求导总结:一个自变量一个因变量的求导得到一个数就是导数,多个自变量一个因变量求导后得到的向量是梯度,多个自变量多个因变量求导后得到就是Jacobian 矩阵。

Hessian 矩阵:当函数具有多维输入时, 二阶导数也有很多。我们可以将这些导数合并

成一个矩阵,称为 Hessian 矩阵

在这里插入图片描述

Hessian 矩阵性质:

Hessian 矩阵是对函数曲率的衡量,表示一阶导数将如何随着输入的变化而改变,只基于梯度信息的梯度下降步骤是否会产生如我们预期的那样大的改善。以二次函数为例进行说明,如果这样的函数具有零二阶导数,那就没有曲率。也就是一条完全平坦的线,仅用梯度就可以预测它的值。我们使用沿负梯度方向大小为 ϵ 的下降步,当该梯度是 1 时, 代价函数将下降 ϵ。如果二阶导数是负的,函数曲线下一个错别字向下凹陷 (向上凸出),因此代价函数将下降的比 ϵ 多。如果二阶导数是正的,函数曲线是向上凹陷 (向下凸出),因此代价函数将下降的比 ϵ 少。

Hessian 矩阵与Jacobian矩阵的关系:Hessian 矩阵是梯度的Jacobian矩阵

Hessian 矩阵的用途:

1、用于验证临界点是局部极大点、局部极小点还是鞍点

当 f′(x) = 0 且 f′′(x) > 0 时, x 是一个局部极小点

当 f′(x) = 0 且 f′′(x) < 0 时, x 是一个局部极大点

当 f′(x) = 0 且 f′′(x) =0 时, x 是一个鞍点

在多维情况下,我们需要检测函数的所有二阶导数。利用 Hessian 的特征值分解,我们可以将二阶导数测试扩展到多维情况。在临界点处( ∇xf(x) = 0),我们通过检测 Hessian 的特征值来判断该临界点是一个局部极大点、 局部极小点还是鞍点

2、指导函数搜索

(1)确定最优步长

f(x)近似二阶泰勒级数:
在这里插入图片描述

g是梯度 H是Hessian 矩阵
在这里插入图片描述

可得最优步长为:
在这里插入图片描述

(2)指导搜索方向

梯度下降无法利用包含在 Hessian 矩阵中的曲率信息,可以使用 Hessian 矩阵的信息来指导搜索,以解决这个问题。其中最简单的方法是 牛顿法( Newton’s method)。牛顿法基于一个二阶泰勒展开来近似 x(0) 附 近的 f(x):
在这里插入图片描述

可通过计算得到临界点为:
在这里插入图片描述

当 f 是一个正定二次函数时, 牛顿法只要应用一次上式就能直接跳到函数的最小点。如果 f 不是一个真正二次但能在局部近似为正定二次, 牛顿法则需要多次迭代应用上式 。迭代地更新近似函数和跳到近似函数的最小点可以比梯度下降更快地到达临界点。

总结一下,数值计算主要用于机器学习的第三步,从模型集合中寻找性能最好的那个模型,具体寻找的策略有:基于梯度的搜索策略【最速梯度下降法】及其变体【Adam Adadelta,Adagrad,RMSProp】以及基于二次求导的牛顿法


http://www.ppmy.cn/server/172870.html

相关文章

FcDesigner页面样式错乱/功能不正常解决办法

form-create-designer 是一款开源的低代码表单设计器&#xff0c;通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单&#xff0c;提高开发者对表单的开发效率&#xff0c;节省开发者的时间。并广泛应用于在政务系统、OA系统、ERP系统、电商系统、流程管理等领域。 源码地…

计算机网络(1) 网络通信基础,协议介绍,通信框架

网络结构模式 C/S-----客户端和服务器 B/S -----浏览器服务器 MAC地址 每一个网卡都拥有独一无二的48位串行号&#xff0c;也即MAC地址&#xff0c;也叫做物理地址、硬件地址或者是局域网地址 MAC地址表示为12个16进制数 如00-16-EA-AE-3C-40 &#xff08;每一个数可以用四个…

【Java学习】String类变量

面向对象系列七 一、String类似复刻变量 1.似复刻变量 1.1结构 1.2常量池检查 1.3构造方法 1.4""形式 1.5引用 2、字符数组 2.1不可变性 2.2常创性 二、String类变量里的方法 1.获取 1.1引用获取&#xff1a; 1.2字符获取&#xff1a; 1.3数组获取 1.…

【每日学点HarmonyOS Next知识】输入法光标控制、Text部分圆角、Web组件缓存、Grid问题、Web出现PC效果

1、HarmonyOS 输入法光标控制&#xff1f; 在onSubmit回调里写组件间的光标跳转。onSubmit回车之后【.enterKeyType(EnterKeyType.Next)】默认会把键盘关闭&#xff0c;我再去focusControl.requestFocus(nextKeyStr)就会呈现一个键盘先关闭再弹起的效果&#xff0c;这样看起来…

python如何使输出的数为整数

python使输出的数为整数的方法&#xff1a; 1、使用for循环语句遍历列表元素 2、将列表的元素转换成字符串格式并用if语句判断是否不包含小数点&#xff0c;如果是则输出这个数。这样就可以使输出的数为整数了。 完整代码如下&#xff1a; 执行结果如下&#xff1a;

Web服务器配置

配置虚拟主机 通过虚拟主机&#xff0c;可以实现用自定义的域名来访问&#xff0c;并且可以为不同的域名指定不同的站点目录。 配置IP地址和域名的映射关系 申请真实的域名需要一定的费用&#xff0c;为了方便开发&#xff0c;可以通过修改hosts文件来实现将任意域名解析到本…

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…

确定信号分析:从傅里叶级数到信号带宽的Matlab实践

关键词&#xff1a;傅里叶变换 信号能量 功率谱密度 自相关函数 信号带宽 Matlab仿真 内容摘要&#xff1a; 本文系统讲解确定信号分析的核心理论与Matlab实践&#xff0c;涵盖周期信号的傅里叶级数展开、非周期信号的傅里叶变换及性质、信号能量与功率的计算、自相关函数与频…