首页头条 IT 资讯国内国际教程入门 实战复现数据集图片音频视频 语言模型经典发表 应用论文分类检测 修复预测翻译AIGCAI

零基础入门深度学习(2) - 线性单元和梯度下降

2022-12-22 13:28:19    来源:    编辑:
线性单元   梯度下降   AI入门教程

原文写得很棒,地址:https://www.zybuluo.com/hanbingtao/note/448086
在上一篇文章中,我们已经学会了编写一个简单的感知器,并用它来实现一个线性分类器。你应该还记得用来训练感知器的『感知器规则』。然而,我们并没有关心这个规则是怎么得到的。本文通过介绍另外一种『感知器』,也就是『线性单元』,来说明关于机器学习一些基本的概念,比如模型、目标函数、优化算法等等。这些概念对于所有的机器学习算法来说都是通用的,掌握了这些概念,就掌握了机器学习的基本套路。

线性单元是啥

感知器有一个问题,当面对的数据集不是线性可分的时候,『感知器规则』可能无法收敛,这意味着我们永远也无法完成一个感知器的训练。为了解决这个问题,我们使用一个可导线性函数来替代感知器的阶跃函数,这种感知器就叫做线性单元。线性单元在面对线性不可分的数据集时,会收敛到一个最佳的近似上。

为了简单起见,我们可以设置线性单元的激活函数f为: f(x)=x

这样的线性单元如下图所示

对比此前我们讲过的感知器

这样替换了激活函数之后,线性单元将返回一个实数值而不是0,1分类。因此线性单元用来解决回归问题而不是分类问题。
 

线性单元的模型

当我们说模型时,我们实际上在谈论根据x输入预测输出y的算法。比如,x可以是一个人的工作年限,y可以是他的月薪,我们可以用某种算法来根据一个人的工作年限来预测他的收入。比如:
y=h(x)=w*x+b(公式1)
函数h(x)叫做假设,而w、b是它的参数。我们假设参数w=1000,参数b=500,如果一个人的工作年限是5年的话,我们的模型会预测他的月薪为: y=h(x)=1000*5+500=5500元。
你也许会说,这个模型太不靠谱了。是这样的,因为我们考虑的因素太少了,仅仅包含了工作年限。如果考虑更多的因素,比如所处的行业、公司、职级等等,可能预测就会靠谱的多。我们把工作年限、行业、公司、职级这些信息,称之为特征。对于一个工作了5年,在IT行业,百度工作,职级T6这样的人,我们可以用这样的一个特征向量来表示他。
X=(5,IT,百度,T6)
既然输入x变成了一个具备四个特征的向量,相对应的w,仅仅一个参数就不够用了,我们应该使用4个参数w1、w2、w3、w4,每个特征对应一个。这样,我们的模型就变成
y=w1*x1+w2*x2+w3*x3+w4*x4+b  (公式2) , 其中,x1对应工作年限,x2对应行业,x3对应公司,x4对应职级。
为了书写和计算方便,我们可以令w0等于b,同时令w0对应于特征x0。由于其实x0并不存在,我们可以令它的值永远为1。也就是说
b=w0*x0 ,其中 x0=1,则公式(2)可写为:y=w0*x0+w1*x1+w2*x2+w3*x3+w4*x4  ,这样把公式(2)写成向量的形式: y=h(x)=wTx,长成这种样子模型就叫做线性模型,因为输出y就是输入特征x1、x2、x3......的线性组合
 

监督学习和无监督学习

接下来,我们需要关心的是这个模型如何训练,也就是参数w取什么值最合适。
机器学习有一类学习方法叫做监督学习,它是说为了训练一个模型,我们要提供这样一堆训练样本:每个训练样本既包括输入特征x,也包括对应的输出y(y也叫做标记,label)。也就是说,我们要找到很多人,我们既知道他们的特征(工作年限,行业...),也知道他们的收入。我们用这样的样本去训练模型,让模型既看到我们提出的每个问题(输入特征x),也看到对应问题的答案(标记y)。当模型看到足够多的样本之后,它就能总结出其中的一些规律。然后,就可以预测那些它没看过的输入所对应的答案了。
另外一类学习方法叫做无监督学习,这种方法的训练样本中只有x而没有y。模型可以总结出特征x的一些规律,但是无法知道其对应的答案y。
很多时候,既有x又有y的训练样本是很少的,大部分样本都只有x。比如在语音到文本(STT)的识别任务中,x是语音,y是这段语音对应的文本。我们很容易获取大量的语音录音,然而把语音一段一段切分好并标注上对应文字则是非常费力气的事情。这种情况下,为了弥补带标注样本的不足,我们可以用无监督学习方法先做一些聚类,让模型总结出哪些音节是相似的,然后再用少量的带标注的训练样本,告诉模型其中一些音节对应的文字。这样模型就可以把相似的音节都对应到相应文字上,完成模型的训练。
 

线性单元的目标函数

现在,让我们只考虑监督学习。在监督学习下,对于一个样本,我们知道它的特征x,以及标记y。同时,我们还可以根据模型h(x)计算得到输出ÿ。注意这里面我们用y表示训练样本里面的标记,也就是实际值;用带上划线的ÿ表示模型计算的出来的预测值。我们当然希望模型计算出来的ÿ和实际值y越接近越好。
数学上有很多方法来表示y和ÿ的接近程度,比如我们可以用y和ÿ差的平方的1/2来表示它们的接近程度.
.

我们把e叫做单个样本误差。至于为什么前面要乘1/2,是为了后面计算方便。
训练数据中会有很多样本,比如N个,我们可以用训练数据中所有样本的误差的,来表示模型的误差E,也就是

我们还可以把上面的式子写成和式的形式。使用和式,不光书写起来简单,逼格也跟着暴涨,一举两得。所以一定要写成下面这样

 

由此可见,模型的训练,实际上就是求取到合适的w,使(式2)取得最小值。这在数学上称作优化问题,而E(w)就是我们优化的目标,称之为目标函数
 

梯度下降优化算法

大学时我们学过怎样求函数的极值。函数y=f(x)的极值点,就是它的导数f'(x)=0的那个点。因此我们可以通过解方程f'(x)=0,求得函数的极值点(x0,y0)。

不过对于计算机来说,它可不会解方程。但是它可以凭借强大的计算能力,一步一步的去把函数的极值点『试』出来。如下图所示:
 

下图所示:

首先,我们随便选择一个点开始,比如上图的x0点。接下来,每次迭代修改x为x1、x2x3 ...,经过数次迭代后最终达到函数最小值点。
你可能要问了,为啥每次修改x的值,都能往函数最小值那个方向前进呢?这里的奥秘在于,我们每次都是向函数y=f(x)的梯度相反方向来修改x。什么是梯度呢?翻开大学高数课的课本,我们会发现梯度是一个向量,它指向函数值上升最快的方向。显然,梯度的反方向当然就是函数值下降最快的方向了。我们每次沿着梯度相反方向去修改x的值,当然就能走到函数的最小值附近。之所以是最小值附近而不是最小值那个点,是因为我们每次移动的步长不会那么恰到好处,有可能最后一次迭代走远了越过了最小值那个点。步长的选择是门手艺,如果选择小了,那么就会迭代很多轮才能走到最小值附近;如果选择大了,那可能就会越过最小值很远,收敛不到一个好的点上。



后面还有内容,限于篇幅请下载本文pdf阅读

零基础入门深度学习2.pdf
b29a4434cfbbafa42de695c1bbbc4b75.pdf (2.61 MB)
 

pdf补充图:下图展示了SGD和BGD的区别

如上图

今日推荐
精选图文
网友最喜欢看
首页头条
24小时排行榜
Copyright 慕课网(moocw.com) All Rights Reserved 版权所有 复制必究