文章列表
1.深度学习基础模型算法原理及编程实现–01.感知机.
2.深度学习基础模型算法原理及编程实现–02.线性单元 .
3.深度学习基础模型算法原理及编程实现–03.全链接 .
4.深度学习基础模型算法原理及编程实现–04.改进神经网络的方法 .
5.深度学习基础模型算法原理及编程实现–05.卷积神经网络.
6.深度学习基础模型算法原理及编程实现–06.循环神经网络.
9.深度学习基础模型算法原理及编程实现–09.自编码网络.
…
深度学习基础模型算法原理及编程实现–02.线性单元
线性单元
感知机的激活函数为阶跃函数,输出为(+1,-1),只能用于分类问题。如果将其激活函数改为有连续输出值的函数,那么就可以用来解决回归问题。线性单元的激活函数
f
f
可表示为,这样线性单元的返回值将是一个实数,而不是(+1,-1)分类,因此线性单元用来解决回归问题而不是分类问题。
图 2线性单元模型
1线性单元的训练
对于数据集 T={(x1,y1),(x2,y2),......,(xN,yN)} T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . . , ( x N , y N ) } ,其中 xi x i 为输入元素, yi y i 为输出元素,线性单元的作用就是寻找合适的输入和输出之间的映射关系,从而解决回归问题。与一般的神经网络训练方法类似,线性单元的训练方法都可以归结为3个步骤,前向计算、误差项计算以及系数更新。
1.1.1前向计算
其中 xi x i 为第 i i 个输入元素, 为输入元素到节点的权重系数矩阵,表示输入相应于输出的重要性, b b 为偏置系数,某种意义上将表征了阈值的负数, 为节点的加权输入, f f 为激活函数, 为第 i i 个输入的输出项。线性单元中的激活函数定义如下:
1.1.2误差项计算
在介绍误差项之前,首先介绍目标函数,与感知机不同,线性单元的目标函数可以表示为:
其中系数项写成1/2是为了方便后面计算时能够将公式的系数项归一化, yi y i 为真实值,由此不难发现目标函数表征了输出值与真实值之间的误差。对于线性单元,上式可进一步整理为:
为了使输出值与真实值尽量一致,应该寻找合适的 W W 和使得目标函数的值最小。同样利用梯度下降法来解决,由于线性单元模型较为简单,目标函数对加权输入节点的偏导数对各参数求解的意义不大。而损失函数对权重系数及偏置项的偏导数可表示为:
式(1.6)中的j表示输入项中的第j个元素,将其扩展成矢量形式,有:
1.1.3系数更新
1.1.4小结
1.2 编程实现
这里参考了“零基础入门深度学习(2)”中的编程实例,我觉得“零基础入门深度学习”是一个很好的学习资料。下面通过线性单元实现收入与工作时间的映射关系。由于线性单元算法编程实现比较简单,这里不再做详细说明,可直接参看上传的代码,或者自己手动编写一个。
python版本:https://pan.baidu.com/s/1qZLJ7Gg
C++版本:https://pan.baidu.com/s/1qZLJ7Gg