感知器、线性单元
参考:零基础入门深度学习(1) - 感知器 - 作业部落 Cmd Markdown 编辑阅读器 (zybuluo.com)
系列
一、感知器
1.深度学习引言
(1)人工智能方法->机器学习
(2)机器学习算法->神经网络
神经网络:神经元+连接
其中:输入层+隐藏层+输出层
(3)隐藏层较多的神经网络->深度神经网络
即:深度学习:使用深层架构的机器学习方法
(4)优缺点?
=>1隐藏层+多神经元=多隐藏层+1神经元=拟合任何一个函数(任何线性分类or线性回归,但异或运算打咩),即节约资源
=> 需要大量数据+优化方法=好的深层网络
2.感知器(神经元)
(1)输入(x1,x2,……) 权值(w1,w2,……) 偏置项b(w0)
(2)激活函数
(3)输出 y=f(w*x+b)
3.感知器训练
即:获得权重、偏执值
算法:初始=0,然后利用下面的感知器规则迭代的修改,直到训练完成
其中,
b:值永远为1的输入所对应的权重
t:训练样本的实际值,label
y:输出值
n:学习速率,常数。为了控制每一步调整权的幅度。
每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据上面的规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。
4.实例
5.总结
二、线性单元、梯度下降
1.线性单元
数据集线性可分+感知器规则=>感知器训练
数据集线性不可分+可导的线性函数=>感知器训练
此时的感知器叫做线性单元。
2.线性单元模型(即预测y的算法)
h(x):假设
(x1,x2,……):特征向量
w1,w2,……:每个向量对应的参数
b:参数
也可以令b=w0, x0=1
此时y就是输入特征的线性组合
3.模型的训练
3.1训练方法
1.监督方法
输入数据->模型计算(模型获得:已知一些样本+实际值,总结规律)->预测该数据的值
2.无监督方法
模型可以总结出特征的一些规律,但是无法知道其对应的答案。
很多时候,既有x又有y的训练样本是很少的,大部分样本都只有在x。比如在语音到文本(STT)的识别任务中,x是语音,y是这段语音对应的文本。我们很容易获取大量的语音录音,然而把语音一段一段切分好并标注上对应文字则是非常费力气的事情。这种情况下,为了弥补带标注样本的不足,我们可以用无监督学习方法先做一些聚类,让模型总结出哪些音节是相似的,然后再用少量的带标注的训练样本,告诉模型其中一些音节对应的文字。这样模型就可以把相似的音节都对应到相应文字上,完成模型的训练
3.2线性单元的训练
从误差角度:
所有样本误差和
其中
整理得
对于一个模型,误差越小越好。由公式看出,其实就是求一个权重,使得E最小。
这在数学上称作优化问题,而就是我们优化的目标,E称之为目标函数。
3.3 训练单元的优化算法(梯度下降优化算法)
1.数学上:求E的最小值=>求导,得极值点
计算机上:求E的最小值=>依次试每个权重值,迭代求得最终的极值点
2.如何试?
向函数的梯度(上升方向最快的方向)的相反(即函数下降最快的方向)方向来修改
3.梯度下降的算法公式
误差E即函数
最终得到线性单元的参数修改
用向量表示,其中w、x都是N+1维(虚拟0),y是一维标量
此时,每次w的迭代,都需要遍历训练数据中所有样本计算。=>批梯度下降(Batch Gradient Descent)
3.3随机梯度下降算法SGD
1.每次更新的迭代,只计算一个样本。
2.由于样本的噪音和随机性,每次更新并不一定按照减少的方向。然而,虽然存在一定随机性,大量的更新总体上沿着减少的方向前进的,因此最后也能收敛到最小值附近。
3.SGD不仅仅效率高,而且随机性有时候反而是好事。今天的目标函数是一个『凸函数』,沿着梯度反方向就能找到全局唯一的最小值。然而对于非凸函数来说,存在许多局部最小值。随机性有助于我们逃离某些很糟糕的局部最小值,从而获得一个更好的模型。
4.模型对比
5.实例
三、总结
机器学习算法:
1.模型,即h(x)
2.目标函数,参数值