① BP神经网络的原理的BP什么意思
原文链接:http://tecdat.cn/?p=19936
在本教程中,您将学习如何在R语言中创建神经网络模型。
神经网络(或人工神经网络)具有通过样本进行学习的能力。人工神经网络是一种受生物神经元系统启发的信息处理模型。它由大量高度互连的处理元件(称为神经元)组成,以解决问题。它遵循非线性路径,并在整个节点中并行处理信息。神经网络是一个复杂的自适应系统。自适应意味着它可以通过调整输入权重来更改其内部结构。
该神经网络旨在解决人类容易遇到的问题和机器难以解决的问题,例如识别猫和狗的图片,识别编号的图片。这些问题通常称为模式识别。它的应用范围从光学字符识别到目标检测。
本教程将涵盖以下主题:
神经网络概论
正向传播和反向传播
激活函数
R中神经网络的实现
案例
利弊
结论
神经网络概论
神经网络是受人脑启发执行特定任务的算法。它是一组连接的输入/输出单元,其中每个连接都具有与之关联的权重。在学习阶段,网络通过调整权重进行学习,来预测给定输入的正确类别标签。
人脑由数十亿个处理信息的神经细胞组成。每个神经细胞都认为是一个简单的处理系统。被称为生物神经网络的神经元通过电信号传输信息。这种并行的交互系统使大脑能够思考和处理信息。一个神经元的树突接收来自另一个神经元的输入信号,并根据这些输入将输出响应到某个其他神经元的轴突。
创建测试数据集
创建测试数据集:专业知识得分和沟通技能得分
预测测试集的结果
使用计算函数预测测试数据的概率得分。
现在,将概率转换为二进制类。
预测结果为1,0和1。
利弊
神经网络更灵活,可以用于回归和分类问题。神经网络非常适合具有大量输入(例如图像)的非线性数据集,可以使用任意数量的输入和层,可以并行执行工作。
还有更多可供选择的算法,例如SVM,决策树和回归算法,这些算法简单,快速,易于训练并提供更好的性能。神经网络更多的是黑盒子,需要更多的开发时间和更多的计算能力。与其他机器学习算法相比,神经网络需要更多的数据。NN仅可用于数字输入和非缺失值数据集。一位着名的神经网络研究人员说:“神经网络是解决任何问题的第二好的方法。最好的方法是真正理解问题。”
神经网络的用途
神经网络的特性提供了许多应用方面,例如:
模式识别:神经网络非常适合模式识别问题,例如面部识别,物体检测,指纹识别等。
异常检测:神经网络擅长异常检测,它们可以轻松检测出不适合常规模式的异常模式。
时间序列预测:神经网络可用于预测时间序列问题,例如股票价格,天气预报。
自然语言处理:神经网络在自然语言处理任务中提供了广泛的应用,例如文本分类,命名实体识别(NER),词性标记,语音识别和拼写检查。
最受欢迎的见解
1.r语言用神经网络改进nelson-siegel模型拟合收益率曲线分析
2.r语言实现拟合神经网络预测和结果可视化
3.python用遗传算法-神经网络-模糊逻辑控制算法对乐透分析
4.用于nlp的python:使用keras的多标签文本lstm神经网络分类
5.用r语言实现神经网络预测股票实例
6.R语言基于Keras的小数据集深度学习图像分类
7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译
8.python中基于网格搜索算法优化的深度学习模型分析糖
9.matlab使用贝叶斯优化的深度学习
② 循环神经网络(RNN)简介
循环神经网络英文名称为 ( Recurrent Neural Network, RNN ),其通过使用带自反馈的神经元,能够处理任意长度的 时序 数据。
给定输入时序序列
式中, 表示一段时序数据, 为时间长度
以一段英文段落为例,其时序数据可以表示为:
若是一段视频,将其每一帧通过CNN网络处理得到相应的编码向量
循环神经网络通过以下公式更新隐藏层的活性值
循环神经网络图示
RNN的基本模型如下图所示,为便于理解,图中将RNN的模型展开,按照时序方向对其前向传播流程进行介绍
RNN的基本模型
利用数学表达式整个过程可以变得更加清晰,RNN的前向传播公式如下:
将上述过程整合到一个RNN cell中,可以表示为如下图所示的过程:
RNN的前向传播示意图
缺陷:
没有利用到模型后续的信息,可以通过双向RNN网络进行优化
RNN主要有两种计算梯度的方式:随时间反向传播(BPTT)和实时循环学习法(RTRL)算法
本文中主要介绍随时间反向传播的方法 ( BackPropagation Through Time )
RNN的损失函数与任务有关,对于同步的序列对序列任务,其loss可以用交叉熵公式表示
然后通过BPTT算法便可以进行梯度的反向传播计算
梯度爆炸的解决方法:梯度修剪
梯度消失的解决方法:增加长程依赖 LSTM,GRU
GRU的基本思路:增加相关门(Relate Gate)和更新门(Update Gate),进而使得RNN单元具有记忆能力
首先从数学角度对GRU的前向传播过程进行介绍,具体公式如下:
公式中各变量的含义:
将上述数学公式转化为图像,可得
GRU Cell的前向传播流程
LSTM意为长短时记忆网络 (Long Short-Term Memory Network,LSTM) ,可以有效地解决简单神经网络的梯度消失和爆炸问题
在LSTM中,与GRU主要有两点不同
同样,先从数学公式入手,对LSTM的前向传播过程进行了解
基于数学公式的过程,可将LSTM CELL的前向传播过程总结为(图片借用于nndl):
LSTM Cell的前向传播示意图
从上图中可以看出,LSTM在前向传播的过程中传输了两个状态:内部状态 以及外部状态 ,在整个传播过程中 外部状态(隐状态) 每个时刻都会被重写,因此可以看作一种 短时记忆 ,而 内部状态 可以在某个时刻捕捉一些关键信息,并将此信息保存一段时间间隔,可以看作一种 长时记忆 (长的短时记忆)
此外,在LSTM网络初始化训练的时候,需要手动将遗忘门的数值设置的大一些,否则在参数初始化的时候,遗忘门的数据会被初始化为一个很小的值,前一时刻的内部状态 大部分都会丢失,这样网络很难获取到长距离的依赖信息,并且相邻时间间隔的梯度会非常小,导致 梯度弥散 问题,因此遗忘门的 偏置变量 的初始值 一般很大,取 1或2
将 设置为1即可,但是长度非常的大的时候会造成记忆单元的饱和,降低性能
三个门不仅依赖于 和 ,也依赖于
将两者合并为一个门,即:
首先,我们要理解什么是深层的RNN,对于单个的RNN cell,若将其在时间维度上展开,其深度与时间维度的长度成正比,但若将一个RNN cell看作为单个从 的映射函数,则单个cell实际上是很浅显的一层,因此深层循环神经网络要做的就是把多个RNN cell组合起来,换句话说,就是增加从输入 到输出 的路径,使得网络的深度更深。
如何增加从输入 到输出 的路径呢?两种途径:
堆叠循环神经网络示意图
将网络带入到实际应用场景中:假如我们要翻译一段句子
在这里,is和are实际上是由后面的Lucy和they所决定的,而这种单向的按照时序进行传播的方式没有利用到后面的信息。因此诞生了双向循环网络
双向循环神经网络示意图
双向循环神经网络实际上就是简单的双层循环神经网络,只不过第二层网络的传播方式为按时序的逆向传播,其传播公式为: