您的位置:首页 > 编程语言

深度学习基础模型算法原理及编程实现--02.线性单元

2018-02-21 14:14 1181 查看
文章列表

1.深度学习基础模型算法原理及编程实现–01.感知机.

2.深度学习基础模型算法原理及编程实现–02.线性单元 .

3.深度学习基础模型算法原理及编程实现–03.全链接 .

4.深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 .

5.深度学习基础模型算法原理及编程实现–05.卷积神经网络.

6.深度学习基础模型算法原理及编程实现–06.循环神经网络.

9.深度学习基础模型算法原理及编程实现–09.自编码网络.



深度学习基础模型算法原理及编程实现–02.线性单元
线性单元
1线性单元的训练
1.1.1前向计算

1.1.2误差项计算

1.1.3系数更新

1.1.4小结

1.2 编程实现

深度学习基础模型算法原理及编程实现–02.线性单元

线性单元

感知机的激活函数为阶跃函数,输出为(+1,-1),只能用于分类问题。如果将其激活函数改为有连续输出值的函数,那么就可以用来解决回归问题。线性单元的激活函数ff可表示为f(x)=xf(x)=x,这样线性单元的返回值将是一个实数,而不是(+1,-1)分类,因此线性单元用来解决回归问题而不是分类问题。



图 2线性单元模型

1线性单元的训练

对于数据集T={(x1,y1),(x2,y2),......,(xN,yN)}T={(x1,y1),(x2,y2),......,(xN,yN)},其中xixi为输入元素,yiyi为输出元素,线性单元的作用就是寻找合适的输入和输出之间的映射关系,从而解决回归问题。与一般的神经网络训练方法类似,线性单元的训练方法都可以归结为3个步骤,前向计算、误差项计算以及系数更新。

1.1.1前向计算

net=Wxi+b(1.1)(1.1)net=Wxi+b

oi=f(net)(1.2)(1.2)oi=f(net)

其中xixi为第ii个输入元素, WW为输入元素到节点的权重系数矩阵,表示输入相应于输出的重要性, bb为偏置系数,某种意义上将表征了阈值的负数, netnet 为节点的加权输入, ff为激活函数, oioi为第ii个输入的输出项。线性单元中的激活函数定义如下:

y=f(x)=x(1.3)(1.3)y=f(x)=x

1.1.2误差项计算

在介绍误差项之前,首先介绍目标函数,与感知机不同,线性单元的目标函数可以表示为:

E=12∑i=1N(yi−oi)2(1.4)(1.4)E=12∑i=1N(yi−oi)2

其中系数项写成1/2是为了方便后面计算时能够将公式的系数项归一化,yiyi为真实值,由此不难发现目标函数表征了输出值与真实值之间的误差。对于线性单元,上式可进一步整理为:

E=12∑i=1N(yi−Wxi−b)2(1.5)(1.5)E=12∑i=1N(yi−Wxi−b)2

为了使输出值与真实值尽量一致,应该寻找合适的WW和bb使得目标函数的值最小。同样利用梯度下降法来解决,由于线性单元模型较为简单,目标函数对加权输入节点的偏导数对各参数求解的意义不大。而损失函数对权重系数及偏置项的偏导数可表示为:

∂E∂W(j)=∑i=1N(oi−yi)xi(j)(1.6)(1.6)∂E∂W(j)=∑i=1N(oi−yi)xi(j)

∂E∂b=∑i=1N(oi−yi)(1.7)(1.7)∂E∂b=∑i=1N(oi−yi)

式(1.6)中的j表示输入项中的第j个元素,将其扩展成矢量形式,有:

∂E∂W=∑i=1N(oi−yi)xi(1.6)(1.6)∂E∂W=∑i=1N(oi−yi)xi

1.1.3系数更新

W=W−η∂E∂W(1.9)(1.9)W=W−η∂E∂W

b=b−η∂E∂b(1.10)(1.10)b=b−η∂E∂b

1.1.4小结

1.2 编程实现

这里参考了“零基础入门深度学习(2)”中的编程实例,我觉得“零基础入门深度学习”是一个很好的学习资料。下面通过线性单元实现收入与工作时间的映射关系。由于线性单元算法编程实现比较简单,这里不再做详细说明,可直接参看上传的代码,或者自己手动编写一个。

python版本:https://pan.baidu.com/s/1qZLJ7Gg

C++版本:https://pan.baidu.com/s/1qZLJ7Gg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐