人工神经网络概念梳理与实例演示

人工神经网络概念梳理与实例演示,第1张

人工神经网络概念梳理与实例演示

神经网络是一种模仿生物神经元的机器学习模型,数据从输入层进入并流经激活阈值的多个节点

递归性神经网络一种能够对之前输入数据进行内部存储记忆的神经网络,所以他们能够学习到数据流中的时间依赖结构。

如今机器学习已经被应用到很多的产品中去了,例如,siri、Google Now等智能助手,推荐引擎——亚马逊网站用于推荐商品的推荐引擎,Google和Facebook使用的广告排名系统。最近,深度学习的一些进步将机器学习带入公众视野:AlphaGo 打败围棋大师李世石事件以及一些识别和机器翻译等新产品的出现。

在这部分中,我们将介绍一些强大并被普遍使用的机器学习技术。这当然包括一些深度学习以及一些满足现代业务需求传统方法。读完这一系列的文章之后,你就掌握了必要的知识,便可以将具体的机器学习实验应用到你所在的领域当中。

随着深层神经网络的精度的提高,语音和图像识别技术的应用吸引了大众的注意力,关于AI和深度学习的研究也变得更加普遍了。但是怎么能够让它进一步扩大影响力,更受欢迎仍然是一个问题。这篇文章的主要内容是:简述前馈神经网络和递归神经网络、怎样搭建一个递归神经网络对时间系列数据进行异常检测。为了让我们的讨论更加具体化,我们将演示一下怎么用Deeplearning4j搭建神经网络。

一、什么是神经网络?

人工神经网络算法的最初构思是模仿生物神经元。但是这个类比很不可靠。人工神经网络的每一个特征都是对生物神经元的一种折射:每一个节点与激活阈值、触发的连接。

连接人工神经元系统建立起来之后,我们就能够对这些系统进行训练,从而让他们学习到数据中的一些模式,学到之后就能执行回归、分类、聚类、预测等功能。

人工神经网络可以看作是计算节点的集合。数据通过这些节点进入神经网络的输入层,再通过神经网络的隐藏层直到关于数据的一个结论或者结果出现,这个过程才会停止。神经网络产出的结果会跟预期的结果进行比较,神经网络得出的结果与正确结果的不同点会被用来更正神经网络节点的激活阈值。随着这个过程的不断重复,神经网络的输出结果就会无限靠近预期结果。

二、训练过程

在搭建一个神经网络系统之前,你必须先了解训练的过程以及网络输出结果是怎么产生的。然而我们并不想过度深入的了解这些方程式,下面是一个简短的介绍。

网络的输入节点收到一个数值数组(或许是叫做张量多维度数组)就代表输入数据。例如, 图像中的每个像素可以表示为一个标量,然后将像素传递给一个节点。输入数据将会与神经网络的参数相乘,这个输入数据被扩大还是减小取决于它的重要性,换句话说,取决于这个像素就不会影响神经网络关于整个输入数据的结论。

起初这些参数都是随机的,也就是说神经网络在建立初期根本就不了解数据的结构。每个节点的激活函数决定了每个输入节点的输出结果。所以每个节点是否能够被激活取决于它是否接受到足够的刺激强度,即是否输入数据和参数的结果超出了激活阈值的界限。

在所谓的密集或完全连接层中,每个节点的输出值都会传递给后续层的节点,在通过所有隐藏层后最终到达输出层,也就是产生输入结果的地方。在输出层, 神经网络得到的最终结论将会跟预期结论进行比较(例如,中的这些像素代表一只猫还是狗)。神经网络猜测的结果与正确结果的计算误差都会被纳入到一个测试集中,神经网络又会利用这些计算误差来不断更新参数,以此来改变中不同像素的重要程度。整个过程的目的就是降低输出结果与预期结果的误差,正确地标注出这个图像到底是不是一条狗。

深度学习是一个复杂的过程,由于大量的矩阵系数需要被修改所以它就涉及到矩阵代数、衍生品、概率和密集的硬件使用问题,但是用户不需要全部了解这些复杂性。

但是,你也应该知道一些基本参数,这将帮助你理解神经网络函数。这其中包括激活函数、优化算法和目标函数(也称为损失、成本或误差函数)。

激活函数决定了信号是否以及在多大程度上应该被发送到连接节点。阶梯函数是最常用的激活函数, 如果其输入小于某个阈值就是0,如果其输入大于阈值就是1。节点都会通过阶梯激活函数向连接节点发送一个0或1。优化算法决定了神经网络怎么样学习,以及测试完误差后,权重怎么样被更准确地调整。最常见的优化算法是随机梯度下降法。最后, 成本函数常用来衡量误差,通过对比一个给定训练样本中得出的结果与预期结果的不同来评定神经网络的执行效果。

Keras、Deeplearning4j 等开源框架让创建神经网络变得简单。创建神经网络结构时,需要考虑的是怎样将你的数据类型匹配到一个已知的被解决的问题,并且根据你的实际需求来修改现有结构。

三、神经网络的类型以及应用

神经网络已经被了解和应用了数十年了,但是最近的一些技术趋势才使得深度神经网络变得更加高效。

GPUs使得矩阵 *** 作速度更快;分布式计算结构让计算能力大大增强;多个超参数的组合也让迭代的速度提升。所有这些都让训练的速度大大加快,迅速找到适合的结构。

随着更大数据集的产生,类似于ImageNet 的大型高质量的标签数据集应运而生。机器学习算法训练的数据越大,那么它的准确性就会越高。

最后,随着我们理解能力以及神经网络算法的不断提升,神经网络的准确性在语音识别、机器翻译以及一些机器感知和面向目标的一些任务等方面不断刷新记录。

尽管神经网络架构非常的大,但是主要用到的神经网络种类也就是下面的几种。

31前馈神经网络

前馈神经网络包括一个输入层、一个输出层以及一个或多个的隐藏层。前馈神经网络可以做出很好的通用逼近器,并且能够被用来创建通用模型。

这种类型的神经网络可用于分类和回归。例如,当使用前馈网络进行分类时,输出层神经元的个数等于类的数量。从概念上讲, 激活了的输出神经元决定了神经网络所预测的类。更准确地说, 每个输出神经元返回一个记录与分类相匹配的概率数,其中概率最高的分类将被选为模型的输出分类。

前馈神经网络的优势是简单易用,与其他类型的神经网络相比更简单,并且有一大堆的应用实例。

32卷积神经网络

卷积神经网络和前馈神经网络是非常相似的,至少是数据的传输方式类似。他们结构大致上是模仿了视觉皮层。卷积神经网络通过许多的过滤器。这些过滤器主要集中在一个图像子集、补丁、图块的特征识别上。每一个过滤器都在寻找不同模式的视觉数据,例如,有的可能是找水平线,有的是找对角线,有的是找垂直的。这些线条都被看作是特征,当过滤器经过图像时,他们就会构造出特征图谱来定位各类线是出现在图像的哪些地方。图像中的不同物体,像猫、747s、榨汁机等都会有不同的图像特征,这些图像特征就能使图像完成分类。卷积神经网络在图像识别和语音识别方面是非常的有效的。

卷积神经网络与前馈神经网络在图像识别方面的异同比较。虽然这两种网络类型都能够进行图像识别,但是方式却不同。卷积神经网络是通过识别图像的重叠部分,然后学习识别不同部分的特征进行训练;然而,前馈神经网络是在整张上进行训练。前馈神经网络总是在的某一特殊部分或者方向进行训练,所以当的特征出现在其他地方时就不会被识别到,然而卷积神经网络却能够很好的避免这一点。

卷积神经网络主要是用于图像、视频、语音、声音识别以及无人驾驶的任务。尽管这篇文章主要是讨论递归神经网络的,但是卷积神经网络在图像识别方面也是非常有效的,所以很有必要了解。

33递归神经网络

与前馈神经网络不同的是,递归神经网络的隐藏层的节点里有内部记忆存储功能,随着输入数据的改变而内部记忆内容不断被更新。递归神经网络的结论都是基于当前的输入和之前存储的数据而得出的。递归神经网络能够充分利用这种内部记忆存储状态处理任意序列的数据,例如时间序列。

递归神经网络经常用于手写识别、语音识别、日志分析、欺诈检测和网络安全。

递归神经网络是处理时间维度数据集的最好方法,它可以处理以下数据:网络日志和服务器活动、硬件或者是医疗设备的传感器数据、金融交易、电话记录。想要追踪数据在不同阶段的依赖和关联关系需要你了解当前和之前的一些数据状态。尽管我们通过前馈神经网络也可以获取事件,随着时间的推移移动到另外一个事件,这将使我们限制在对事件的依赖中,所以这种方式很不灵活。

追踪在时间维度上有长期依赖的数据的更好方法是用内存来储存重要事件,以使近期事件能够被理解和分类。递归神经网络最好的一点就是在它的隐藏层里面有“内存”可以学习到时间依赖特征的重要性。

接下来我们将讨论递归神经网络在字符生成器和网络异常检测中的应用。递归神经网络可以检测出不同时间段的依赖特征的能力使得它可以进行时间序列数据的异常检测。

递归神经网络的应用

网络上有很多使用RNNs生成文本的例子,递归神经网络经过语料库的训练之后,只要输入一个字符,就可以预测下一个字符。下面让我们通过一些实用例子发现更多RNNs的特征。

应用一、RNNs用于字符生成

递归神经网络经过训练之后可以把英文字符当做成一系列的时间依赖事件。经过训练后它会学习到一个字符经常跟着另外一个字符(“e”经常跟在“h”后面,像在“the、he、she”中)。由于它能预测下一个字符是什么,所以它能有效地减少文本的输入错误。

Java是个很有趣的例子,因为它的结构包括很多嵌套结构,有一个开的圆括号必然后面就会有一个闭的,花括号也是同理。他们之间的依赖关系并不会在位置上表现的很明显,因为多个事件之间的关系不是靠所在位置的距离确定的。但是就算是不明确告诉递归神经网络Java中各个事件的依赖关系,它也能自己学习了解到。

在异常检测当中,我们要求神经网络能够检测出数据中相似、隐藏的或许是并不明显的模式。就像是一个字符生成器在充分地了解数据的结构后就会生成一个数据的拟像,递归神经网络的异常检测就是在其充分了解数据结构后来判断输入的数据是不是正常。

字符生成的例子表明递归神经网络有在不同时间范围内学习到时间依赖关系的能力,它的这种能力还可以用来检测网络活动日志的异常。

异常检测能够使文本中的语法错误浮出水面,这是因为我们所写的东西是由语法结构所决定的。同理,网络行为也是有结构的,它也有一个能够被学习的可预测模式。经过在正常网络活动中训练的递归神经网络可以监测到入侵行为,因为这些入侵行为的出现就像是一个句子没有标点符号一样异常。

应用二、一个网络异常检测项目的示例

假设我们想要了解的网络异常检测就是能够得到硬件故障、应用程序失败、以及入侵的一些信息。

模型将会向我们展示什么呢?

随着大量的网络活动日志被输入到递归神经网络中去,神经网络就能学习到正常的网络活动应该是什么样子的。当这个被训练的网络被输入新的数据时,它就能偶判断出哪些是正常的活动,哪些是被期待的,哪些是异常的。

训练一个神经网络来识别预期行为是有好处的,因为异常数据不多,或者是不能够准确的将异常行为进行分类。我们在正常的数据里进行训练,它就能够在未来的某个时间点提醒我们非正常活动的出现。

说句题外话,训练的神经网络并不一定非得识别到特定事情发生的特定时间点(例如,它不知道那个特殊的日子就是周日),但是它一定会发现一些值得我们注意的一些更明显的时间模式和一些可能并不明显的事件之间的联系。

我们将概述一下怎么用 Deeplearning4j(一个在JVM上被广泛应用的深度学习开源数据库)来解决这个问题。Deeplearning4j在模型开发过程中提供了很多有用的工具:DataVec是一款为ETL(提取-转化-加载)任务准备模型训练数据的集成工具。正如Sqoop为Hadoop加载数据,DataVec将数据进行清洗、预处理、规范化与标准化之后将数据加载到神经网络。这跟Trifacta’s Wrangler也相似,只不过它更关注二进制数据。

开始阶段

第一阶段包括典型的大数据任务和ETL:我们需要收集、移动、储存、准备、规范化、矢量话日志。时间跨度的长短是必须被规定好的。数据的转化需要花费一些功夫,这是由于JSON日志、文本日志、还有一些非连续标注模式都必须被识别并且转化为数值数组。DataVec能够帮助进行转化和规范化数据。在开发机器学习训练模型时,数据需要分为训练集和测试集。

训练神经网络

神经网络的初始训练需要在训练数据集中进行。

在第一次训练的时候,你需要调整一些超参数以使模型能够实现在数据中学习。这个过程需要控制在合理的时间内。关于超参数我们将在之后进行讨论。在模型训练的过程中,你应该以降低错误为目标。

但是这可能会出现神经网络模型过度拟合的风险。有过度拟合现象出现的模型往往会在训练集中的很高的分数,但是在遇到新的数据时就会得出错误结论。用机器学习的语言来说就是它不够通用化。Deeplearning4J提供正则化的工具和“过早停止”来避免训练过程中的过度拟合。

神经网络的训练是最花费时间和耗费硬件的一步。在GPUs上训练能够有效的减少训练时间,尤其是做图像识别的时候。但是额外的硬件设施就带来多余的花销,所以你的深度学习的框架必须能够有效的利用硬件设施。Azure和亚马逊等云服务提供了基于GPU的实例,神经网络还可以在异构集群上进行训练。

创建模型

Deeplearning4J提供ModelSerializer来保存训练模型。训练模型可以被保存或者是在之后的训练中被使用或更新。

在执行异常检测的过程中,日志文件的格式需要与训练模型一致,基于神经网络的输出结果,你将会得到是否当前的活动符合正常网络行为预期的结论。

代码示例

递归神经网络的结构应该是这样子的:

MultiLayerConfiguration conf = new NeuralNetConfigurationBuilder(

seed(123)

optimizationAlgo(OptimizationAlgorithmSTOCHASTIC_GRADIENT_DESCENT)iterations(1)

weightInit(WeightInitXAVIER)

updater(UpdaterNESTEROVS)momentum(09)

learningRate(0005)

gradientNormalization(GradientNormalizationClipElementWiseAbsoluteValue)

gradientNormalizationThreshold(05)

list()

layer(0, new GravesLSTMBuilder()activation("tanh")nIn(1)nOut(10)build())

layer(1, new RnnOutputLayerBuilder(LossFunctionsLossFunctionMCXENT)

activation("softmax")nIn(10)nOut(numLabelClasses)build())

pretrain(false)backprop(true)build();

MultiLayerNetwork net = new MultiLayerNetwork(conf);

netinit();

下面解释一下几行重要的代码:

seed(123)

随机设置一个种子值对神经网络的权值进行初始化,以此获得一个有复验性的结果。系数通常都是被随机的初始化的,以使我们在调整其他超参数时仍获得一致的结果。我们需要设定一个种子值,让我们在调整和测试的时候能够用这个随机的权值。

optimizationAlgo(OptimizationAlgorithmSTOCHASTIC_GRADIENT_DESCENT)iterations(1)

决定使用哪个最优算法(在这个例子中是随机梯度下降法)来调整权值以提高误差分数。你可能不需要对这个进行修改。

learningRate(0005)

当我们使用随机梯度下降法的时候,误差梯度就被计算出来了。在我们试图将误差值减到最小的过程中,权值也随之变化。SGD给我们一个让误差更小的方向,这个学习效率就决定了我们该在这个方向上迈多大的梯度。如果学习效率太高,你可能是超过了误差最小值;如果太低,你的训练可能将会永远进行。这是一个你需要调整的超参数。

神经网络是一种通用机器学习模型,是一套特定的算法集,在机器学习领域掀起了一场变革,本身就是普通函数的逼近,可以应用到任何机器学习输入到输出的复杂映射问题。

一般来说,神经网络架构可分为3类:

1、前馈神经网络:是最常见的类型,第一层为输入,最后一层为输出。如果有多个隐藏层,则称为“深度”神经网络。它能够计算出一系列事件间相似转变的变化,每层神经元的活动是下一层的非线性函数。

2、循环神经网络:各节点之间构成循环图,可以按照箭头的方向回到初始点。循环神经网络具有复杂的动态,难以训练,它模拟连续数据,相当于每个时间片段具有一个隐藏层的深度网络,除了在每个时间片段上使用相同的权重,也有输入。网络可以记住隐藏状态的信息,但是很难用这点来训练网络。

3、对称连接网络:和循环神经网络一样,但单元间的连接是对称的(即在两个方向的连接权重相同),它比循环神经网络更容易分析,但是功能受限。没有隐藏单元的对称连接的网络被称为“Hopfiels网络”,有隐藏单元的对称连接的网络则被称为“波兹曼机器”。

按照训练方式分类,常见的神经网络类型包括:

监督学习(Supervised Learning):使用有标记的数据集进行训练,输出结果与实际值进行比较来计算误差。

无监督学习(Unsupervised Learning):使用没有标记的数据集进行训练,目的是发现数据之间的潜在关系。

强化学习(Reinforcement Learning):通过奖惩机制进行学习,训练模型执行正确的动作以达到最大化预期奖励的目标。

  笔者:张教授您好,我们了解到自从2007年您参与教育部“新世纪优秀人才支持计划”并担任重要职务以来,已发表了与神经网络相关的论文近百篇,比如您的重要研究课题“仿人脑信息处理与控制的人工系统的研究”等。这表征着您的科研攻关实力,也充分说明了当前国家对科技进步、发展的高度重视。想请教张教授,能否以您个人为出发点就咱们国内这一领域的科研攻关状况总括性地谈一下

张雨浓:目前来说,人工神经网络、冗余度机器人学和科学计算与优化是我们科研攻关的三个主要方向,最早当始于导师毛宗源教授主持负责的“仿人脑信息处理与控制的人工系统的研究”,随后开展了近年来承担的国家自然科学基金委支持的课题“机器手臂的基于二次规划的冗余度解析方案”“冗余机器人实时运动规划的统一理论”等项目。就人工神经网络、人工智能等相关领域的研究情况而言,我国很多学术前辈、同事甚至是后学不同程度地做出了不少创新性的成果,有些甚至达到世界领先的水准,这一点还是值得我们欣喜的。

以人工神经网络为例来说,其理论在国内外都已经取得了许多令人瞩目的成果,国内也有许多学者相继提出了不同的人工神经网络模型,并取得了较为广泛的应用,且应用范围在不断扩展,渗透到了多个领域,如信号处理,智能控制、模式识别、机器视觉、非线性优化、图像处理等等。我团队近期拓展的神经网络模型的连接权值直接确定一项可避开传统BP(误差回传)神经网络的内在弱点,如冗长的权值迭代计算、局部极小点问题、网络参数及隐神经元数的选取困难等等,并将递归神经网络应用于冗余度机械臂的运动规划与控制中,展现出了良好的成果。

笔者:早在2001年,您率先提出变矩阵/向量/优化问题的神经网络新解法,能否借此机会有针对性地讲述几点其与传统解析与架构上的不同

张雨浓:其与传统梯度方法的不同之处可归纳为如下数点:首先,新型神经网络解法是基于矩阵/向量形式的误差函数而设计的,令其每个误差元素不断递减至零而成。与此相对,基于梯度法的传统神经网络解法是基于非负或至少下有界的标量形式的能量函数而设计的;值得指出的是,在基于梯度法的神经网络解法中涉及的参数矩阵等多是探讨定常的情况。

其次,新型神经网络在处理时变问题时,系统地采用变矩阵,向量的时间导数信息,这也是新型神经网络能够全局指数收敛到时变问题的准确理论解的原因之一。与此相对,基于梯度法的传统神经网络解法因没有使用如此重要的时间导数信息而难以有效地求解时变矩阵/向量/优化问题。

另外,新型神经网络通常是用更为普适的隐动力学方程描述的;而基于梯度法的传统神经网络则多是采用显动力学方程描述的。

笔者:在您的科研范围内,冗余机器人是您科学研究的主项,它显然代表着高端的科技发展方向,我们想请张教授谈一下冗余机器人今天的发展状况及其特性、优势,其在未来科技领域内的应用情况,给人类社会所带来的利好。

张雨浓:就冗余机器人而言,现主要研究的是冗余机械臂,其可广泛地应用于工业生产之中,包括焊接、油漆,组装、绘图、挖掘,送料和其他智能活动等等。冗余机械臂是指末端执行器在执行给定的任务时有比其所必需自由度之上更多的自由度和灵活度的机械臂。在冗余机器人的运动学研究中,正运动学和逆运动学都是研究的核心部分。正运动学指给定关节变量,通过已知的手臂函数映射关系,能够唯一地确定末端执行器的位姿,而逆运动学是指给定末端执行器的笛卡尔变量,如何来实时求解机械臂的关节变量。两者刚好相对,但逆运动学的求解却不容易。后者直接关系到运动分析,离线编程、轨迹规划等等,是将工作空间内机器人末端的位姿转化成关节量值的前提。由于机械臂逆运动学问题的复杂性,我们将机械臂逆运动学逆动力学问题都统一地转化为最优化问题,具体为时变二次规划问题,这种做法能减少大量矩阵求逆,矩阵相乘等运算,减少计算时间,也更灵活、更加智能化。

这些科研结果能为装备制造,加工作业乃至空间机器人等领域的运动控制和新型机械臂的研发,制造以及技术提升提供一个更为科学更加有力的理论与实践基础。该冗余度解析理论将会在重工制造装备等方面展露,并带来广阔的应用前景和较大的社会经济效益,如用以改造和提升喷浆机器人、焊接和绘图机器人、车载机器臂系统等机械设备的运动解析与控制技术、 *** 作模式及其安全性稳定性等。

笔者:2007年您所提出的BP神经网络权值直接确定理论研究,克服了传统BP神经网络所固有的迭代时间长、迭代次数多,易陷入局部极小点和学习精度不高等诸多缺陷。您一直站在科技前沿,在未来您的研究方向还将力求冲破哪些方面的障碍

张雨浓:我们的一个科研工作重心就是人工神经网络的权值直接确定法以及外延的新方法新理论,比如在权值直接确定基础上的隐层神经元数目自适应确定研究等等。就未来在该方面继续做工作而言,首先我们仍将继续寻找,挖掘、探讨和考察不同的激励函数、网络模型,以求从不同的角度更加丰富地证实权值直接确定法的可行性,有效性、普适性以及优异的学习能力等等;其次,我们将(也已经在)探讨多输入多输出人工神经网络的权值直接确定法,并同时探研拓扑结构自适应确定算法于其中;另外,也如同我们向中科院某所提交的一个开放课题 申请书 中所言,应用神经网络权值与结构直接确定理论处理海量数据同样值得尝试与探讨,我们以往曾开发出基于Toeplitz矩阵的时间序列高斯过程回归技术处理了六万维矩阵求逆和两万四千维数据,这一结果或可以借鉴用以开发神经网络超万维数据处理技术。

笔者:您于2006年回国后受聘于中山大学信科院电子系至今,主要研究领域是冗余机器人、递归神经网络、高斯过程、科学计算和软硬件开发。能否在这些您潜心研究的方面针对国内的发展状况提出一些前瞻性的建议

张雨浓:我在回国前后一直保持和坚持上述研究方向,从一点点地开始展开到目前大约已有12年了。这些研究方向外在的领域看起来不同,但本质、本原、核心、基础的东西却大致相通,就国内科研发展状况而言,我的一个简单粗泛的理解是,我们的国内同行、前辈乃至后学其实都已经做得很好了,也许已经在登世界科技的舞台了,但如果还能够往本质、本原,核心、基础的方向上再继续深入地挖掘,也许会更好,更能够找到自主创新的东西来。基础、应用基础以及自由探索式研究可以更加强一些:对科学的成见、误解或偏见可以再少一些,多用科学的态度、逻辑和证据作分析判断。再比如国内科研评审可以更加科学一些,可以更加注重内容和质量一些,这样就蛮好。

在谣言检测研究方面,目前很少有基于谣言传播结构的方法。一些基于核的方法用来建模传播树的结构,通过对比树的相似性可以区分谣言和非谣言,但是不能直接分类一棵树,而是需要与其他树两两对比。

在本文中提出使用递归神经网络(Recursive Neural networks,RvNN)来建模和学习谣言的传播结构。RvNN本身用来学习段落或句子的语法和语义表示,与文本解析不同的是,我们模型的输入是一棵源自源推文的传播树,而不是单个句子的解析树,树的节点是一个响应的帖子而非单个词。通过沿着树形结构的递归特征学习过程,可以共同捕获帖子的内容语义及其之间的响应关系。

那么,为什么这种神经模型能更好地完成谣言检测任务呢?分析发现,推特可以通过用户分享观点、猜测和证据来“自我纠正”一些不准确的信息。举例来说,下图展示了一个假谣言和真谣言的传播树:

结构不敏感的方法基本上依赖于文本中不同立场的相对比例,在这样的线索不清晰的情况下,就不能很好地发挥作用。然而,可以看到,当一个帖子否认了虚假谣言时,往往会得到支持或肯定的回复,证实了谣言的否认;相反,对真实谣言的否认往往会引发质疑或否认。这一观察结果可能暗示了一个更普遍的假设,即回复者倾向于不同意(或质疑)那些支持虚假谣言或否认真实谣言的人,同时也倾向于同意那些否认虚假谣言或支持真实谣言的人。同时,一个回复,通常是响应其直接祖先(也就是所回复的帖子)而不是直接响应源推文(即传播树的根节点)。递归网络自然地对这些结构进行建模,以学习捕获谣言指示信号,并通过递归聚合来自不同分支的信号来增强其表示。

本文采用的RvNN模型分为两种,bottom-up(BN)模型和top-down(TD)模型,通过不同方式来表示传播树结构。这种架构的重要优点是,在给定传播树的所有路径的连接和方向的情况下,可以通过递归有选择地优化节点特征。

一个谣言检测数据集定义为集合 ,每个 包含源推文 以及所有按时间顺序排列的相关响应推文 ,也就是说 。需要注意的是,尽管推文是按时间顺序标注的,但它们之间基于回复或转发关系存在联系,可以形成传播树结构,并以 为根节点。谣言检测问题被定义为分类任务,也就是学习一个分类器 , 属于四个细粒度的类:non-rumor,false rumor, true rumor和unverified rumor。

根据方向考虑的树结构分为两种:

①Bottom-up树的回复节点永远指向被回复的节点,叶子节点没有任何回复,用 表示,其中 ,对于节点 , 存在表示 回复 ;

②Top-down树符合信息传播的方向, 表示信息从 流向 , 看到了 并给 留下了一个回复。

RvNN的原始版本针对句子解析二叉树,每个节点表示的计算与其直接子节点关联在一起。举例来说,下图展示了RvNN的结构,对应图左边的解析树:

叶子节点是输入句子中词的word embedding。用 表示一个父亲节点,它的两个子节点为 和 ,那么父亲节点的表示的计算过程为 , 是激活函数, 是参数,这个过程被在所有节点上递归地执行,学习到的节点表示可以被用来进行各种分类任务。

自下而上模型的核心思想是通过递归访问每个节点,从底部的叶子到顶部的根,为每个子树生成特征向量,最终聚合得到顶部根节点的表示作为树的全局表示。一棵传播树及其对应的RvNN计算过程如下图(a),(b)所示:

每个节点的表示是对应回复的tf-idf向量。在这里每个节点都有一个输入向量,并且节点的子节点数量不一定是相同的。在本文中选用拓展GRU作为隐层单元。使用 表示节点 的直接子节点集合,节点 的隐状态计算过程为:

是原始输入向量, 用来对 进行仿射变换, 是GRU的参数, 代表哈达玛积。不了解GRU可以参考: 人人都能看懂的GRU 。

最终使用根节点隐状态进行分类:

Top-down RvNN旨在利用自顶向下树的结构来捕获用于对谣言进行分类的复杂传播模式,其计算过程如上图(c)所示。每个节点的表示是通过组合它自己的输入和它的父节点而不是子节点来计算的,这与Bottom-up模型不同。

使用 代表节点 的父亲节点,节点的隐状态计算过程如下:

然后对叶子节点的表示进行max-pooling得到 进行分类,这可以帮助从所有传播路径中捕获最有效的指示性特性:

我们可以推测,Top-down模型会更好。在Bottom-up的情况下最终的输出依赖于根节点的表示,并且它的信息损失比Top-down模型要大。因为在Top-down的情况下,通过不同传播路径嵌入到叶子节点的表示可以通过pooling进行整体地合并。

采用平方损失来训练并进行L2正则化:

是类别的数目。使用Adagrad进行训练,使用均匀分布初始化模型参数,词典大小为5000,隐层状态与embedding大小为100。

对比了多个baseline的效果:

谣言的早期检测测试:

下面是一个被Bottom-up和Top-down模型都检测到的一个假谣言的例子:

递归网络与前馈网络有所不同,递归网络中节点间连接方式存在反馈,即神经元之间存在着反馈回路。因此在递归网络中,输入也可以由同一层的各节点通过反馈回路输入,还可以由下一层的各节点通过反馈回路输入。递归网络中至少存在一个反馈环,反馈环对整个神经网络的学习、“记忆”等性能有较深的影响。前馈网络的输出由源节点的输入、网络结构及参数来决定,与过去的输出无关,因而不具有“记忆”能力;由于反馈回路的作用,反馈网络的输出不仅与源节点的输入、网络结构及参数有关,还与网络过去的输出有关,因而反馈网络具备“记忆”的能力。

从效果上看,前馈网络主要是函数的映射,可用作函数逼近和模式识别;而递归网络按能力函数的极小点可分为全部极小点起作用和局部极小点起作用两类,前者可用于各种联想存储器,后者主要用于各种优化问题。

第1章神经网络和自动控制的基础知识

11人工神经网络的发展史

11120世纪40年代——神经元模型的诞生

11220世纪50年代——从单神经元到单层网络,形成第一次热潮

11320世纪60年代——学习多样化和AN2的急剧冷落

11420世纪70年代——在低迷中顽强地发展

11520世纪80年代——AN2研究热潮再度兴起

11620世纪90年代——再现热潮,产生许多边缘交叉学科

117进入21世纪——实现机器智能的道路漫长而又艰难

12生物神经元和人工神经元

121生物神经元

122人工神经元

13生物神经网络和人工神经网络

131生物神经网络

132人工神经网络

14自动控制的发展史

141从传统控制理论到智能控制

142智能控制的产生与基本特征

143智能控制系统

15模糊集与模糊控制概述

151模糊集

152模糊隶属函数

153模糊控制

16从生物神经控制到人工神经控制

161生物神经控制的智能特征

162人工神经控制的模拟范围

17小结

习题与思考题

第2章神经计算基础

21线性空间与范数

211矢量空间

212范数

213赋范线性空间

214L1范数和L2范数

22迭代算法

221迭代算法的终止准则

222梯度下降法

223最优步长选择

23逼近论

231Banach空间和逼近的定义

232L2逼近和最优一致逼近

233离散点集上的最小二乘逼近

24神经网络在线迭代学习算法

25Z变换

251Z变换的定义和求取

252Z变换的性质

253Z反变换

26李雅普诺夫意义下的稳定性

261非线性时变系统的稳定性问题

262李雅普诺夫意义下的渐进稳定

263李雅普诺夫第二法

264非线性系统的稳定性分析

27小结

习题与思考题

第3章神经网络模型

31人工神经网络建模

311MP模型

312Hebb学习法则

32感知器

321单层感知器

322多层感知器

33BP网络与BP算法

331BP网络的基本结构

332BP算法及步长调整

34自适应线性神经网络

35自组织竞争型神经网络

351自组织竞争型神经网络的基本结构

352自组织竞争型神经网络的学习算法

36小脑模型神经网络

361CMAC的基本结构

362CMAC的工作原理

363CMAC的学习算法与训练

37递归型神经网络

371DTRNN的网络结构

372实时递归学习算法

38霍普菲尔德(Hopfield)神经网络

381离散型Hopfield神经网络

382连续型Hopfield神经网络

383求解TSP问题

39小结

习题与思考题

第4章神经控制中的系统辨识

41系统辨识基本原理

411辨识系统的基本结构

412辨识模型

413辨识系统的输入和输出

42系统辨识过程中神经网络的作用

421神经网络辨识原理

422多层前向网络的辨识能力

423辨识系统中的非线性模型

43非线性动态系统辨识

431非线性动态系统的神经网络辨识

432单输入单输出非线性动态系统的BP网络辨识

44多层前向网络辨识中的快速算法

45非线性模型的预报误差神经网络辨识

451非动态模型建模,

452递推预报误差算法

46非线性系统逆模型的神经网络辨识

461系统分析逆过程的存在性

462非线性系统的逆模型

463基于多层感知器的逆模型辨识

47线性连续动态系统辨识的参数估计

471Hopfield网络用于辨识

472Hopfield网络辨识原理

48利用神经网络联想功能的辨识系统

481二阶系统的性能指标

482系统辨识器基本结构

483训练与辨识 *** 作

49小结

习题与思考题

第5章人工神经元控制系统

51人工神经元的PID调节功能

511人工神经元PID动态结构

512人工神经元闭环系统动态结构

52人工神经元PID调节器

521比例调节元

522积分调节元

523微分调节元

53人工神经元闭环调节系统

531系统描述

532Lyapunov稳定性分析

54人工神经元自适应控制系统

541人工神经元自适应控制系统的基本结构

542人工神经元自适应控制系统的学习算法

55人工神经元控制系统的稳定性

56小结

习题与思考题

第6章神经控制系统

61神经控制系统概述

611神经控制系统的基本结构

612神经网络在神经控制系统中的作用

62神经控制器的设计方法

621模型参考自适应方法

622自校正方法

623内模方法

624常规控制方法

625神经网络智能方法

626神经网络优化设计方法

63神经辨识器的设计方法

64PID神经控制系统

641PID神经控制系统框图

642PID神经调节器的参数整定

65模型参考自适应神经控制系统

651两种不同的自适应控制方式

652间接设计模型参考自适应神经控制系统

653直接设计模型参考自适应神经控制系统

66预测神经控制系统

661预测控制的基本特征

662神经网络预测算法

663单神经元预测器

664多层前向网络预测器

665辐射基函数网络预测器

666Hopfield网络预测器

67自校正神经控制系统

671自校正神经控制系统的基本结构

672神经自校正控制算法

673神经网络逼近

68内模神经控制系统

681线性内模控制方式

682内模控制系统

683内模神经控制器

684神经网络内部模型

69小脑模型神经控制系统

691CMAC控制系统的基本结构

692CMAC控制器设计

693CMAC控制系统实例

610小结

习题与思考题

第7章模糊神经控制系统

71模糊控制与神经网络的结合

711模糊控制的时间复杂性

712神经控制的空间复杂性

713模糊神经系统的产生

72模糊控制和神经网络的异同点

721模糊控制和神经网络的共同点

722模糊控制和神经网络的不同点

73模糊神经系统的典型结构

74模糊神经系统的结构分类

741松散结合

742互补结合

743主从结合

744串行结合

745网络学习结合

746模糊等价结合

75模糊等价结合中的模糊神经控制器

751偏差P和偏差变化率Δe的获取

752隶属函数的神经网络表达

76几种常见的模糊神经网络

761模糊联想记忆网络

762模糊认知映射网络

77小结

习题与思考题

第8章神经控制中的遗传进化训练

81生物的遗传与进化

811生物进化论的基本观点

812进化计算

82遗传算法概述

821遗传算法中遇到的基本术语

822遗传算法的运算特征

823遗传算法中的概率计算公式

83遗传算法中的模式定理

831模式定义和模式的阶

832模式定理(Schema)

84遗传算法中的编码 *** 作

841遗传算法设计流程

842遗传算法中的编码规则

843一维染色体的编码方法

844二维染色体编码

85遗传算法中的适应度函数

851将目标函数转换成适应度函数

852标定适应度函数

86遗传算法与优化解

861适应度函数的确定

862线性分级策略

863算法流程

87遗传算法与预测控制

88遗传算法与神经网络

89神经网络的遗传进化训练

891遗传进化训练的实现方法

892BP网络的遗传进化训练

810小结

习题与思考题

附录常用神经控制术语汉英对照

参考文献

……

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/12157202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存