神经网络算法(在循环神经网络RNN中注意力机制有哪些实际应用)

伏羲号

1.文本翻译中的attention

给定一个法语句子的输入序列,将它翻译成英语的输出序列。attention机制被用来将注意力放在与输出序列中的每一个词相对应的具体的输入序列上。

神经网络算法(在循环神经网络RNN中注意力机制有哪些实际应用)

「在生成下一个目标词的时候,我们通过让模型去搜索一些输入单词或者搜索由一个编码器计算得到的标记来扩展基本的编码器-解码器架构。这可以让模型不再必须将整个源句子编码成一个固定长度的向量,也可以让模型仅仅聚焦于和下一个要生成的词相关的信息。」

— Dzmitry Bahdanau, 等, 联合学习对齐和翻译的神经机器翻译, Neural machine translation by jointly learning to align and translate, 2015

将法语翻译为英语中的attention机制,图片来自于Dzmitry Bahdana等,联合学习对齐和翻译的神经机器翻译, Neural machine translation by jointly learning to align and translate, 2015。

2.图像标注中的attention机制

与启发式方法有所不同,基于序列的attention机制可以应用在计算机视觉问题上,来帮助实现这一思想:在输出序列的时候如何更好地利用卷积神经网络来关注输入的图片,例如在典型的图像标注任务中。

给定一副输入图像,输出对这幅图像的英文描述。attention机制被用来关注与输出的每一个词相关的局部图像。

「我们提出了一个基于attention的方法来在三个数据集上进行艺术表演状态的描述......我们也展示了学习到的attention机制如何被用来对模型生成过程给出多的可具解释性,我们还演示了学习到的对其关系与人类直觉对应得非常好。」

attention机制在图像标注任务中的解释。图片来自于论文:Show, Attend and Tell: Neural Image Caption Generation with Visual Attention, 2016。

3.语义蕴涵中的attention机制

给定一个前提场景,并且用英文给出关于场景的假设,输出内容是前提和假设是否矛盾,是否相互关联,或者是否继承了前提。

例如:

• 前提: 「婚礼上的照片」

• 假设: 「某人在结婚」

attention机制被用来关联与每假设中的每一个词相关的前提中的词,反之亦然。

我们提出了一个基于LSTM的神经模型,它能够将两个句子读取成一个句子来进行语义蕴涵分析,而不是把每个句子都独立地编码成一个语义向量。然后,我们用一个逐词使用neutral attention机制来在语义蕴涵中来扩展这个模型,以在语义蕴涵中的所有单词对和短语对中鼓励推理......这个逐词使用neutral attention机制的扩展模型比使用LSTM的基准测试准确率结果好了2.6%,创造了一项新的最新水平......

— Reasoning about Entailment with Neural Attention, 2016

相关论文: Reasoning about Entailment with Neural Attention, 2016

前提语句到假设语句中的attention机制解释。图片来自于论文:Reasoning about Entailment with Neural Attention, 2016

4.语音识别中的attention

给定一个英文语音的片段作为输入,输出一个音素序列。

attention机制被用来关联输出序列中的每一个音素与输入序列中特定的语音帧。

「......一个新颖的基于混合attention机制的端到端可训练的音识别模型架构,为了在解码的时候在输入序列中选择下一个位置,它同时结合了内容信息和位置信息。一个令人满意的特点就是它能够识别比训练的时候所用的语料更长的语音。」

— Attention-Based Models for Speech Recognition, 2015.

相关论文:Attention-Based Models for Speech Recognition, 2015.

输出音素与输入音频帧的attention解释。图片来自论文: Attention-Based Models for Speech Recognition, 2015。

5.文本摘要中的attention机制

给定一段英文文章作为输入序列输出一段英文文本来总结输入序列。

attention机制被用来关联摘要文本中的每一个词语源文本中的对应单词。

「......一个基于neutral attention机制的模型被用来做抽象摘要,它是在最近的神经机器翻译的进展之上发展而来的。我们使用一个能够生成准确抽象摘要的生成算法来结合这个概率模型。」

— A Neural Attention Model for Abstractive Sentence Summarization, 2015

相关论文:A Neural Attention Model for Abstractive Sentence Summarization, 2015

输入文本的单词与输出总结单词中的attention解释。图片来自论文:A Neural Attention Model for Abstractive Sentence Summarization, 2015。

集成神经网络是一种采用集成学习算法训练的神经网络模型。它通常具有以下特点:分布式:集成神经网络采用多个神经元或多个神经网络模型进行训练,每个神经元或模型都独立于其他模型,这种分布式的方式使得集成神经网络具有更高的容错性和鲁棒性。多样性:集成神经网络的多样性体现在多个方面,例如不同的神经元类型、不同的激活函数、不同的连接权重等。这种多样性使得集成神经网络在处理复杂问题时具有更高的泛化能力和适应能力。简单性:集成神经网络的每个神经元或模型通常都比较简单,这使得它们更容易理解和实现。此外,简单的模型也更容易过拟合训练数据,因此需要使用集成学习算法来提高模型的泛化能力。鲁棒性:由于集成神经网络的多个神经元或模型是独立训练的,因此它们对于不同的数据输入会有不同的误差曲面。这种误差曲面的多样性使得集成神经网络对于噪声和异常值具有更高的鲁棒性。高效性:集成神经网络通常采用并行计算技术进行训练,这使得它们能够更快地处理大规模的数据集。此外,集成神经网络还具有更少的参数和更低的计算复杂度,这使得它们更加高效和轻量级。

神经网络旨在通过构建多层次(输入层、隐层、输出层)的机器学习模型和海量训练数据来学习更有用的特征,能够构建复杂的人工智能模型,从而模拟人脑解决人工智能问题。2006年Hinton等人提出“深度学习”神经网络以后,人工智能在技术上经过5-8年的沉淀后获得突破性进展,自2012年以来,以“卷积神经网络(CNNs)”和“递归神经网络(RNN)”为主的深度学习模型使得复杂任务分类准确率大幅提高,相比其他算法效果和效率改善显著,从而推动了以图像处理、语音识别以及语义理解技术为核心的人工智能的的快速发展。

神经网络的目标旨在用简单的独立结构构建出复杂的数学模型。在单独的节点和节点之间是简单的线性模型,而当层数变多,节点数变多的时候,整个模型构建出了非线性的特征,具有强大的数学模型效果,通过数据学习出适合特定数据的网络参数,从而适应极为复杂的现实情况。深度学习用通俗的说法来看,就是层数较多的神经网络。最基础的神经网络模型是前馈神经网络,这是最基础的模型,其他的神经网络结构的逻辑结构和训练方式都基于这个模型。神经网络模型可以看作是一个黑箱子,外部很多观测到的特征,这些特征按照模型要求作为输入节点,数据在这些节点中按照自己的特征输入,这个模型的目的是通过一个较为复杂的结构得到目标值。其实不用把神经网络想得有多么高深,其实中间的每个节点的连接只是最简单的线性方程。我用通俗的方式打个比方,如果我们把一个人的特征进行数学表达,然后判断他是什么性别,我们用神经网络可以这样来表示,中间的黑箱就是神经网络:

这个黑箱过程是一个很复杂的结构,这些结构就是所谓的隐层节点,隐层节点相互之间连接是通过线性结构连接的,他们可以是一层也可以是多层,每一层的节点数可以是任意的,当调整好结构之后,数据就可以根据训练数据学习出特定的模型,这个模型中隐含了数据的模式,在未来遇到不曾遇到的数据之后这些数据就会通过学习到的结构得出想要解决的目标。在这里,对输入端特征的选取和把目标问题转化成模型的输出是需要去尝试的,当可以将实际问题转化成神经网络能够处理的问题之后,隐层结构的构建也是需要经验的。

神经网络最重要的几个概念就是前向反馈,反向反馈,权重更新,具体来说我可以用单层神经网络的训练过程做一个解释。

我们给定了样本的输入值x,样本的输出值y,神经网络的权重w,这个单层的神经网络可以表现为如下形式:

我们在神经网络中的每一个步骤都有一个权重w,那利用这组输出权重与我们的样本输出值会形成一个误差值

我们现在要做的是,根据这个误差来自动调整我们的权重,并且权重变化方向是收敛结果走的,这里我们用了梯度下降方法。

这是某一个节点的梯度变化过程:

尽管这是单层的训练过程,多层神经网络的过程是一个叠加,我们所谓的卷积神经网络是在维图像上用一个卷积操作做了一个节点的编码,过程也是类似的。

现在所谓的深度学习就是层数很深的神经网络,近年来随着计算性能的提升,神经网络结构的发展,很多过去的人工智能任务得以用神经网络end-to-end得实现。其实这个过程没有大家想的这么复杂,曾经在爱丁堡大学从零手写DNN,CNN,那一段经历加深了我的理解。

神经网络精确度是指模型在预测时的准确性,通常用百分比表示。它是通过将模型的预测结果与实际结果进行比较来计算的。一个高精确度的神经网络意味着模型能够正确地对数据进行分类或预测。神经网络的精确度取决于许多因素,包括数据质量、模型复杂度和超参数的选择。在训练神经网络时,我们通常会尝试不同的方法来提高精确度,例如增加训练数据量、优化网络结构或调整超参数。

Python的优势:Python相对于Matlab最大的优势:免费。

Python次大的优势:开源。

你可以大量更改科学计算的算法细节。可移植性,Matlab必然不如Python。

但你主要做Research,这方面需求应当不高。

第三方生态,Matlab不如Python。比如3D的绘图工具包,比如GUI,比如更方便的并行,使用GPU,Functional等等。

长期来看,Python的科学计算生态会比Matlab好。语言更加优美。

另外如果有一定的OOP需求,构建较大一点的科学计算系统,直接用Python比用Matlab混合的方案肯定要简洁不少。

Matlab的优势:Community. 目前学校实验室很多还用Matlab,很多学者也可能都用Matlab。交流起来或许更加方便。

Matlab本来号称更快,但实际上由于Python越来越完善的生态,这个优势已经逐渐丧失了。总结来说就是python开源免费,有丰富的第三方库,比较适合实际工程,matlab是商业软件如果买了的话做学术研究不错, 如果混合编程比较麻烦。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,90人围观)

还没有评论,来说两句吧...