我们在日常所说的模型训练的过程就是模型不断学习数据特征的过程,那么这个过程是如何进行的?

可以把一个初始化的模型视为一个刚出身的婴儿,对这个世界(数据)一无所知,于是他便开始学习自己接触的一切事务,从中掌握事物运行的规律。

而这个学习的过程就要靠两个基本的概念,第一个是损失函数,第二个是梯度更新。

损失函数

什么是损失函数?

在模型每次学习过后他都会对数据做出一次预测(也就是之前对房价进行一次预测)然后这个模型的预测结果和这个房子的实际价格的差值就叫做误差,而误差函数就是对这个误差进行一种数学上的处理,目前常见的误差函数有MSE,交叉熵等,这里简答的介绍MSE

MSE

MSE 全名是mean Square Error ,中文意思是均方误差,数学表现形式为

MSE

等号右边的M表示预测的总个数(也就是你预测了多少个房子)

梯度下降

意义不言而喻,就是把你预测的所有误差平方相加,得到这次的总损失。那么在得到这一轮的总损失后,我们肯定要想办法把这个损失降低,既然这个是函数,那么我们就可以通过对函数求导的方式得到最低点,学过求导和高数的你们肯定会这样想对不对?理论上确实是这样,但是,在机器学习中的函数的形式往往十分复杂,复杂到不能求出当前状况下的最低点的参数值,那么我们应该要怎么做?是想办法提高计算机的计算能力?这确实会起到作用,毕竟现在人工智能的火热跟硬件性能提高有很大关系,毕竟人工智能的概念提出都是上个世纪的事情,只不过当时的硬件无法进行现在这般大规模运算才作罢。回到正题,学过高数的你们都应该知道,对于一个函数来说,一个点的梯度方向就是这个点上升最快的方向,那么反过来就是下降最快的地方。那么我们就可以通过这种方式一步一步的走到最低点,如果你所求的函数是凸函数,甚至可以走到全局最优点!!。不理解的话,可以想象你自己在一个山上,周围一片漆黑,伸手不见五指,你现在急需回家,越快越好。你现在只有一个仅仅能照射到距自己两米远的地方的手电筒,那么你会怎么做?自然是先用手电筒照射周围,然后选择下降最快,且安全的地方是不是?这个过程就是梯度下降算法的过程。

现在我们假设你预测的房价函数为y=ax+b(x为房屋尺寸),那么梯度更新的过程就是不断更新a,b的过程。

具体的过程是先对当前的MSE求导

求导公式

同样也要对对b的求导。

把对a求导的结果记为A,同理记为B,那么我么就得到一组向量[A,B]T,那么这组向量相反的方向就是下降最快的方向,

接下来就是更新参数,我们让a-Aλ,b-Bλ,(λ就是学习率也叫做步长)就得到更新后的参数值,然后再进行下一轮预测,再求误差函数,重复进行上述过程,直至误差降到自己设定的值,一般来说都是让模型循环一定的次数1000次,2000次,这个过程就叫做迭代(epoch),也叫做拟合,训练.

对于梯度下降又分为随机梯度下降(SGD),批量梯度下降(BGD),小批量的梯度下降(MBGD)

BGD

批量梯度下降就是把所有的样本用来训练参数,这样确实可以让在很少的迭代情况下找到当前最优值,但是缺点也很明显,机器学习的样本规模太大,如果使用BGD,这就增加了计算机计算的难度,从而增加了每轮计算的复杂度,严重可能会出现爆内存的情况。

SGD

随机梯度下降跟BGD的区别就是不会把所有样本都投入训练,而是每次只用一个样本进行训练,这样就很好的避免了上面说的因为样本过大导致计算困难,但是这样做也会有缺点,就是每次都只用一个样本,使得模型很难求拟合出正确的参数,很可能只能拟合到局部最优而不是全局最优,并且需要更多的迭代次数。

那么,有没有可以哪种方法可以综合上面的两种方法的优点?sgd跟BGD之间差别在损失函数上是怎么体现的?交叉熵是干嘛的?如何用交叉熵来更新参数?这些问题都交给你们去思考了。

相关文章
评论
分享
  • 线代简讲

    行列式 谈到线性代数时有两个基本概念:行列式,矩阵。 说到行列式我们应该明确一点:行列式表达的是一个具体的值,他的表现形式为$$\left| \begin{array}{c} a_{\text{1,}1},, a_{\text{...

    线代简讲
  • pandas 简单介绍

    前面介绍了pandas如何读取文件,这次就介绍一下pandas的一些基本知识

    pandas 简单介绍
  • 二. 读数据

    如何读取数据前言人工智能本质上是数据科学,一切操作都是基于对数据的操作,因此,立志要学好ai的人就必须要学会数据的基本操作。 先来个简单的先介绍一种比较简单的读取文件方式,这种方式相对于下面的pandas读取来说速度更快的一点,结构自...

    二. 读数据
  • 一.决策树

    前言在具体了解机器学习之前,我们先了解一些基本的操作和概念。以下的内容如果你感觉简单,你可以自行选择后面内容学习,不过我还是建议每篇文章都大概浏览一遍。如果你不太理解,也别灰心,很多前面文章一带而过的东西则会在后面详细讲解。 决策树众...

    一.决策树
  • Knn

    KNN前言:knn(K-Nearest Neighbor)中文名叫做k最近邻算法,这是有监督算法(自己下去百度一下什么是有监督,什么是无监督),分类算法中简单粗暴的一个。 分类方法是根据距离该点最近的k个邻居,从而得到该点所属的分类。...

    Knn
  • Hello World

    Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using ...

    Hello World