RNN,LSTM深度学习模型原理与应用------作者:王琳(yongheng5871)序列标注任务机器学习任务主要包含两大类。第一种属于模式识别范畴,认为所有的样本之间相互独立,可以直接将每个样本的特征输入机器学习模型进行训练,如逻辑回归,SVM,随机森林,稀疏自编码等模型;另一种属于序列任务,需要考虑样本之间的某种关联,如预测天气状况,很明显,今天的天气(一个样本)和昨天的天气(另一个样本)有关,这样的任务如果仅仅使用模式识别,将忽略样本之间的联系,达不到理想的效果,一般这种问题的解决办法是使用固定窗口,即将某一个连续的范围内的所有样例共同训练,从而提高准确率,另一种办法是使用带有时序的模型,如HMM,RNN,LSTM等。序列标注任务包含三类:第一种叫Sequencelabeling,即一个序列只有一个label;另一种叫Segmentlabeling,和Sequencelabeling不同的是一个序列可以有多个label,并且知道哪些地方需要进行标注,如天气预报,每一天都需要一个标注;最后一种是Temporallabeling,可以有任意个标注并且不知道具体标注的位置。Temporallabeling任务相对比较复杂,一种好的办法是将HMM与LSTM模型进行组合,此部分内容超出本文所讲述的范围。传统神经网络模型前向传播:直接将数据特征输入模型,通过每一层之间的边进行前向传播(矩阵乘法),每一层的节点使用激活函数(sigmoid,tanh)对其进行非线性变换,最终预测结果。反向传播:更新边权重反向传播误差图中sigma是节点输入误差,eps是节点的输出误差,它们满足:sigma=eps*f’(x).反向传播同正向传播一样,只不过正向传播的是激活值,反向传播的是误差项,并且激活函数变为原激活函数的导数。计算每一个节点的输出误差只需查看该节点的所有出边,将每条出边所带来的误差进行累和即可。请牢记这句话,所有的神经网络模型均可以通过此方法进行计算,并且相对简单。RNN模型的原理将神经网络模型加入时序的特征。将隐藏层加反馈边,每个隐层的输入既包括当前样本特征又包含上一个时序所带来的信息。以下为两个输入节点,一个隐层(包含两个节点),一个输出节点的RNN模型结构。上图仅画出两个时刻之间的关系,其中红边表示反馈边。第二个时刻隐层输入既包含输入层的数据又包含上一时刻隐层的数据,其中红边是另一个矩阵,用于传播隐层相邻时刻之间的信息。反向传播时,需要从T时刻开始计算,直到计算到初始时刻,每个隐层的节点输出误差按照所有出边进行累加即可。所以第一时刻隐藏层的误差除了输出误差(黑边)之外还包括第二时刻隐层本身反馈的误差(红边),将之进行累加即可。LSTM模型(longshorttermmemory)当某些特定的任务只有相近的几个时刻具有特殊关系时,使用RNN模型表现非常好,但是当较远的两个时刻也有关系时,RNN无法表达。即通过隐层反馈的方法当时间越久对后面的影响越薄弱,下图是RNN第一时刻的输入对后面各个时刻的影响,颜色越深表示影响越大。为了解决上述问题,LSTM模型应运而生。LSTM是RNN的一种特殊形式,同样考虑时序关系,并且具有与RNN一样的反馈边,只不过LSTM每个隐层节点还加一些特殊的结构。下图是LSTM的一个隐层节点,在LSTM中改名为内存块(memoryb
RNN,LSTM深度学习模型原理与应用 来自淘豆网m.daumloan.com转载请标明出处.