详解模型训练原理(梯度下降法)
学习机器学习非常重要的一步就是弄清模型训练背后的原理。接下来我给大家详细讲一讲基于梯度下降法的模型训练过程。在开始之前先解释一下损失函数训练样本输入模型后产生的输出值和该样本的真实值往往会有差异损失函数就是用数学方式表示衡量差异多少的函数。通过损失函数计算出来的差异值就叫做损失Loss。损失函数是一个非负实值函数通常用L(Y, f(x))来表示。通常损失函数衡量的是在整个训练样本空间上的整体损失。比如均方差公式就是一个常见的损失函数。首先模型的训练过程可以表达为对以参数为自变量的损失函数求最小值的过程。现在让我们来看一个例子使用单参数模型y ax 拟合单样本点11即给定点11求通过该点的直线y ax 的a的值*在机器学习中通常的做法是以样本真实值和模型输出值之差的绝对值为损失函数即L |1-a|在样本空间中这个值即是下图中红色虚线的距离现在要做的就是求该公式达到最小值时a的值让我们画出这个公式L的几何图像即相当于把y |a|向右移动1个单位从图中我们看出a1时该函数取得最小值0。那么计算机如何求这个a的值呢在机器学习中使用了一种通过逐步逼近求最优参数a的方法称为梯度下降法。它的计算方法如下首先随机给a取一个值如a3代入L的公式中得到L2即损失0如下图所示此时L在a3处的导数梯度为dL/da1 dL/da 1dL/da1应用下面的公式更新参数a的值a′a−1∗dL/da2 a a - 1 * dL/da 2a′a−1∗dL/da2也就是说经过一次更新a的值从3变为了2。我们来看直线yax即模型在样本空间中的变化也就是说模型从虚线位置变到了实线位置离样本点更近了这符合我们的期望。接下来将a2代入L的公式中得到L1即损失仍然0如下图所示此时L在a2处的导数梯度为dL/da1 dL/da 1dL/da1应用下面的公式更新参数a的值a′a−1∗dL/da1 a a - 1 * dL/da 1a′a−1∗dL/da1接下来将a1代入L的公式中损失函数取得最小值0。此时模型为yx即在坐标系中正好通过点11:也就是说a1就是我们要求的参数值。纵观a的变化轨迹红色虚线箭头因其一直沿着梯度红色实线箭头的反方向变化因此这种更新参数的方法又叫做梯度下降法*在中学数学中我们常做的是把x1y1代入y ax得到a的值。这种方法虽然简单直接但是能求解是因为此时只有1个样本和1个参数。当模型参数和样本数量都到达B十亿以上时直接求最优解的代价无法接受。因此需要通过逼近的方法去求最优解。误区网上有很多教程说梯度下降是“沿最陡的方向下山”这只部分描述了梯度下降过程但这句话简单来说等于“哪有悬崖往哪跳”这和我们实际生活中选择下山路线并不相同希望大家不要陷入这个误区。以上就是我对模型训练原理的一点理解如果您有什么意见和建议欢迎提出如果您觉得我写得还可以欢迎点赞、收藏和分享另外转载还请注明出处
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2412143.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!