建设钓鱼网站,云南建设监理协会网站,网页版视频怎么下载,网站建设工作汇报说明 在本专栏机器学习_墨#≯的博客-CSDN博客前面几篇文章中#xff0c;大多采用梯度下降法来求解。其实还有很多的高级优化算法可以用来求解回归和分类问题#xff0c;本文就是在吴恩达机器学习视频课程[1]的启示下#xff0c;想要简单尝试一下Matlab自带的无约束多变量函数…说明 在本专栏机器学习_墨#≯的博客-CSDN博客前面几篇文章中大多采用梯度下降法来求解。其实还有很多的高级优化算法可以用来求解回归和分类问题本文就是在吴恩达机器学习视频课程[1]的启示下想要简单尝试一下Matlab自带的无约束多变量函数最小值优化工具:fminunc。 本文的内容很简单说白了就是一个函数的介绍和使用。(本来并不想形成一篇博文的不过csdn一天连发两篇似乎有流量券于是凑了一下本文)。不过本文也算是对高级优化算法起了个头后续如果接触和使用到更具体的算法我再在本文基础上补充。 Blog
2024.10.24 博文第一次撰写 目录
说明
目录
一、有关机器学习问题中的高级优化算法
二、Matlab自带的Fminunc函数介绍与实践
2.1 fminunc函数介绍
2.2 fminunc函数实践1 --- 曲面最小值
2.3 fminunc函数实践2 --- 直线拟合
三、总结
四、参考资料
五、数据与代码链接 一、有关机器学习问题中的高级优化算法 在本专栏机器学习_墨#≯的博客-CSDN博客前面几篇文章中对于机器学习的典型问题如回归、分类的解决我们采用的方法是梯度下降法(特别是批量梯度下降法当然也对其变体如小批量梯度下降法以及随机梯度下降法做了介绍)。梯度下降法有其缺点特别是要预设合适的超参数学习率此外梯度下降法的收敛速度一般(当然也与学习率有关)。 那么有没有更加优越的方法(不需要设置学习率收敛速度还能更快)。自然是有的计算机以及数学发展这么多年科研工作者们发明了很多的高级优化算法比如共轭梯度算法(Conjugate Gradient)、牛顿法及其变体(如BFGS、L-BFGS)、AdaGrad算法、Adam算法等等。这些算法可以不需要人为地设置学习率且收敛速度比梯度下降法更快(当然这些都是以增加计算复杂度为代价的)。 不过前述更高级的优化算法的原理理解需要比梯度下降法更复杂繁琐的数学推导本文不做尝试。本文只是在吴恩达机器学习视频课程[1]的启示下想要简单尝试一下Matlab自带的无约束多变量函数最小值优化工具fminunc。Fminunc使用的应该是拟牛顿法来进行优化求解。 二、Matlab自带的Fminunc函数介绍与实践
2.1 fminunc函数介绍 fminunc函数是一个非线性规划求解器可用于求解无约束多变量函数的最小值。其典型的调用方式如下 输入包括
costfunc是一个需要定义的函数我们要在该函数体中给出需要优化的函数。
InitilaTheta 是解的初始值这里的解就是前述损失函数costfunc的解。
options 是优化选项是一个结构体可以在其中配置包括所使用的优化算法(支持quasi-newton和trust-region)、允许的最大迭代次数等。
输出包括
optTheta是优化完成后的参数值(损失函数的解)。
functionval是损失函数在该优化好的参数值下的损失值。
exitFlag是给出是否已经收敛的标签为1表示已经收敛。 使用fminunc函数的关键在于设计损失函数costfunc,在前述介绍的基础上我们就可以基于该函数解决一些问题。 2.2 fminunc函数实践1 --- 曲面最小值 视频课[1]中介绍该函数时使用的例子是 2-1 在实数范围内求使得该损失函数取得最小值的theta值。其实有些数学基础的就直接可以看出当theta [5 5]时上式取得最小值0。 其函数图像如下图所示 图2.1 costfunc图像 对该损失函数的优化代码如下 图2.2 调用fminunc函数解决式(2-1)问题的代码 得到的结果如下 图2.3 优化结果 其优化得到的theta值为5和5损失值为0并且收敛。 结果符合预期。 2.3 fminunc函数实践2 --- 直线拟合 在博文[2]中我们使用梯度下降法求解了单变量(特征)下的曲线拟合问题、多变量(特征)下的房屋价格拟合问题。 这些问题也可以用高级优化算法求解具体到fminunc函数关键在于求解损失函数costfunc。 为类比博文[2]我尝试过用fminunc来求一元四次函数的拟合但是costfunc的求解太繁琐了最终放弃了。 本章以最基本的直线拟合来实践一下该fminunc函数。 【数据集】待拟合的直线设置为 y 1 x数据集我直接通过给该直线上的点噪声获得。 图2.4 数据集生成 通过给y值加一个SNR 10的高斯白噪声得到如右图所示的数据集。进一步地将数据的顺序随机打乱并选取2/3的数据作为训练集其余为测试集。如下图所示 图2.5 训练集和测试集 【模型与损失函数】我们用线性模型来做回归 (2-2) 其损失函数设计为均方误差和 (2-3) 式中m为训练集的样本数。关于这里有不了解的可以参考博文[2]。 【调用fminunc函数】使用该fminunc函数的关键在于计算得到costfunc式2-3就是costfunc对(2-3)式拆解公式插入有误我这里直接贴图片 我们需要把全部的训练数据集代入式(2-4)并最终求得各θ值对应的系数。 (试想如果是一元四次函数上面的式子要复杂几倍不止暂时没想到更简单的解法所以我放弃了)。求得前述θ值后按照图2.2所示类似的方法代入对应的数据得到结果如下 图2.6 fminunc函数输出结果 截距和系数几乎都为1与我们预设的直线很接近结果符合预期。将拟合得到的曲线与数据集画在一起得到 图2.7 回归结果(与全部数据集的对比) 图中红色为拟合得到的直线。 结果符合预期。 三、总结 本文对适用于机器学习里的回归、分类问题的高级优化算法做了简单的介绍随后介绍了Matlab自带的非线性规划求解器fminunc函数并基于该函数对曲面最小值问题、直线回归问题进行了求解尝试。 本文的内容很基础后续如果接触和使用到更具体的算法我再在本文基础上补充。 四、参考资料
[1] [中英字幕]吴恩达机器学习系列课程_哔哩哔哩_bilibili
[2] 回归问题探讨与实践-CSDN博客 五、数据与代码链接
本文相关的代码请参考如下链接获取
高级优化算法之fminunc函数实践博文对应的代码资源-CSDN文库