深度学习入门(二)笔记

深度学习入门(二)笔记

标签(空格分隔): 深度学习


线性单元模型

线性单元是啥

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

深度学习入门(二)笔记

线性模型

当我们说模型时,我们实际上在谈论根据x输入预测输出y的算法,最总化简得到

y=wTx

长成这种样子模型就叫做线性模型,因为输出y就是输入特征x1,x2,x3,...的线性组合。

监督学习和非监督学习

  1. 监督学习

    为了训练一个模型,我们要提供这样一堆训练样本:每个训练样本既包括输入特征x,也包括对应的输出(也叫做标记y,label)。也就是说,我们要找到很多人,我们既知道他们的特征(工作年限,行业…),也知道他们的收入。我们用这样的样本去训练模型,让模型既看到我们提出的每个问题(输入特征),也看到对应问题的答案(标记)。当模型看到足够多的样本之后,它就能总结出其中的一些规律。然后,就可以预测那些它没看过的输入所对应的答案了。

  2. 非监督学习

    这种方法的训练样本中只有x而没有y。模型可以总结出特征的一些规律,但是无法知道其对应的答案。

线性单元的目标函数

在监督学习下,对于一个样本,我们知道它的特征x,以及标记y,同时根据模型h(x)计算得到输出y¯
注意这里面我们用y表示训练样本里面的标记,也就是实际值;用带上划线的y¯表示模型计算的出来的预测值。我们当然希望模型计算出来的和越接近越好。
这里我们利用:

e=12(yy¯)2

表示近似程度
我们把e叫做单个样本的误差。至于为什么前面要乘12,是为了后面计算方便。

训练数据中会有很多样本,比如N个,我们可以用训练数据中所有样本的误差的和,来表示模型的误差E,也就是

E=e(1)+e(2)+e(3)+...+e(n)

化简得到
E=i=1nei=12i=1n(y(i)y¯(i))2(2)

y¯(i)为预测数据,即:y¯(i)=h(xi)=wTxi

我们的目标就是竟可能的缩小预测值y¯真实值y之间的差
反应到公式上就是尽可能的减小E的值,从公式上我们可以看出能改变的就只能调节w的值,找到合适的w使minE(w)
E(w)就是我们要优化的目标函数

梯度下降优化算法

求函数y=f(x)的极值点,就是寻找f(x)=0的那个点,因此我们可以通过求解方程f(x)=0得出极值点(x0,y0)

深度学习入门(二)笔记
不过对于计算机来说,它可不会解方程。但是它可以凭借强大的计算能力,一步一步的去把函数的极值点『试』出来。如上图所示

首先,我们随便选择一个点开始,比如上图的x0点。接下来,每次迭代修改x的为x1,x2....xn,经过数次迭代后最终达到函数最小值点。
如何保证每次需改的数值都往函数的最小值方向前进?

我们每次都是向函数y=f(x)梯度的相反方向来修改。什么是梯度呢?梯度是一个向量,它指向函数值上升最快的方向。显然,梯度的反方向当然就是函数值下降最快的方向了。我们每次沿着梯度相反方向去修改x的值,当然就能走到函数的最小值附近。之所以是最小值附近而不是最小值那个点,是因为我们每次移动的步长不会那么恰到好处,有可能最后一次迭代走远了越过了最小值那个点。步长的选择是门手艺,如果选择小了,那么就会迭代很多轮才能走到最小值附近;如果选择大了,那可能就会越过最小值很远,收敛不到一个好的点上。

推导出公式

xnew=xoldηE(w)

以及推导出的目标函数E(w)梯度为:

E(w)=i=1n(yiy¯i)xi

随机梯度下降算法(SGD)

如果我们根据上面的公式来训练模型,那么我们每次更新的迭代,要遍历训练数据中所有的样本进行计算,我们称这种算法叫做批梯度下降(Batch Gradient Descent)。如果我们的样本非常大,比如数百万到数亿,那么计算量异常巨大。因此,实用的算法是SGD算法。在SGD算法中,每次更新w的迭代,只计算一个样本。这样对w于一个具有数百万样本的训练数据,完成一次遍历就会对w更新数百万次,效率大大提升。由于样本的噪音和随机性,每次更新w并不一定按照减少的方向。然而,虽然存在一定随机性,大量的更新总体上沿着减少E的方向前进的,因此最后也能收敛到最小值附近。下图展示了SGD和BGD的区别
深度学习入门(二)笔记