摘要:当前机器学习的研究方向主要分为两类:一类是传统机器学习的研究,该类研究主要是研究学习机制,注重探索通过算法来模拟人的思维和学习机制 ...
当前机器学习的研究方向主要分为两类:一类是传统机器学习的研究,该类研究主要是研究学习机制,注重探索通过算法来模拟人的思维和学习机制,如:决策树、随机森林、人工神经网络、贝叶斯学习等。一类是大数据环境下机器学习的研究,大数据的价值体现主要集中在数据的转向以及数据的信息处理能力。大数据时代的到来,对数据的转换,数据的处理、数据的存储提供了更好的技术支持,产业升级和新产业诞生形成了一股强大的推动力量。
本报告对机器学习中的一类算法---人工神经网络中的长短时记忆模型(LSTM)进行探索。LSTM是循环神经网络(RNN)的一种,改进后的LSTM较好的解决了时间序列的预测问题,因此也成为当下最主流的RNN算法,同时在语音识别、图片描述、自然语言处理等许多领域中得到较好的应用。
1、神经网络
1.1神经网络原理
神经网络的原理是模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
1.2神经网络结构
典型的神经网络结构如下图所示,构成这个网络结构的层分别为:输入层、隐藏层、输出层。
图一:神经网络工作图
资料来源:华鑫期货研究所
输入层负责给予神经网络的信息;隐藏层对外部来说不可见,负责特征提取;输出层显示神经网络计算出的结果。
1.3神经元工作数学表达
神经元的多个输入x1,x2,x3,…,xn整理为数学表达式:
y=a(z),z=w1x1+ w2x2+…+ wnxn+b
其中,w为权重,b为偏置,n为输入的个数,a(z)为激活函数。
2.激活函数
2.1激活函数
激活函数(Activation Function)在神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。常用的激活函数有Sigmoid函数、Tanh函数和ReLU函数。
2.1.1激活函数的作用
激活函数是用来加入非线性因素,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。对于神经网络模型去学习、理解复杂和非线性的函数来说具有十分重要的作用。
2.1.2 三种常用激活函数
2.1.2.1 Sigmoid函数
Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。由于连续、光滑可导的两种性质使得Sigmoid函数很容易处理,因此它常被用作神经网络的阈值函数,将变量映射到0,1之间,公式如下:
函数图像如下:
图二:Sigmoid函数图像
资料来源:华鑫期货研究所
例:我们将神经元的示意图抽象化之后,对于输出信号,我们也对其生物上的限制进行一般化。根据激活与否,生物学上的神经元的输出y分布取值1和0(激活与否用1和0表示):
图三:神经元工作图
资料来源:华鑫期货研究所
这时表示激活与否的式子如下:
y= a(z),z=w1x1+ w2x2+…+ wnxn+b
这里的函数a是建模者定义的激活函数,即Sigmoid函数,x1,x2,x3,…,xn是模型允许的任何数值,y是函数a能取到的任意数值,其输出值是大于0小于1的任意值。
2.1.2.2 Tanh函数
Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。
公式如下:
函数图像如下:
图四: Tanh函数图像
资料来源:华鑫期货研究所
相较而言,在隐藏层,tanh函数要优于sigmoid函数,可以认为是sigmoid的平移版本,优势在于其取值范围介于-1 ~ 1之间,数据的平均值为0,而不像sigmoid为0.5,有类似数据中心化的效果。但在输出层,sigmoid也许会优于tanh函数,原因在于你希望输出结果的概率落在0 ~ 1 之间,比如二元分类,sigmoid可作为输出层的激活函数。
2.1.2.3 ReLU函数
Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。公式如下:
函数图像如下:
图五: ReLU函数图像
资料来源:华鑫期货研究所
实际应用中,特别是深层网络在“训练”时,tanh和sigmoid会在端值趋于饱和,造成训练速度减慢,故深层网络的激活函数默认大多采用relu函数,浅层网络可以采用sigmoid和tanh函数。
3.输出过程
假定图一的神经网络中,激活函数采用sigmoid,由输入节点1、2、3的值,有:
输出节点y1的表达式为:
同理,我们可以算出a5、a6、a7、y2的值,这就完成了神经网络输出值的计算。
4.神经网络优化
4.1 代价函数介绍
向神经网络提供学习数据,并确定符合学习数据的权重和偏置,这个过程称为学习或训练,在数学上一般称为最优化,最优化的目标函数是代价函数,也可以称为损失函数、目的函数、误差函数等。
4.1.1代价函数原理
神经网络确定权重和偏置的参数优化原理与回归分析相同,求使得表示误差总和CT的代价函数达到最小,即代价函数CT为误差的平方和,CT=C1+C2+...Cn,其中C1、C2、...Cn是输出层的变量与该变量对应的正解的平方误差C。
4.1.2代价函数数学表达
代价函数CT最小值条件的方程为dCT/dx=0,dCT/dy=0,dCT/dz=0
图六: 神经网络平方误差图
资料来源:华鑫期货研究所
周期 | 训练损失率 | 验证损失率 | 模型训练耗时(秒) | RMSE |
5分钟 | 0.0037 | 0.0096 | 48.672 | 24.731 |
1小时 | 0.0117 | 0.0082 | 6.183 | 24.212 |
1日 | 0.026 | 0.0177 | 2.005 | 52.401 |
周期 | 训练损失率 | 验证损失率 | 模型训练耗时(秒) | RMSE |
5分钟 | 0.0040 | 0.0061 | 83.218 | 30.504 |
1小时 | 0.0118 | 0.0095 | 17.764 | 23.744 |
1日 | 0.0239 | 0.0176 | 5.029 | 45.100 |