热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

模型预测控制索引超出数组元素的数目(0)。_神经语言模型

让我们考虑一下语言建模:从先前的单词上下文预测即将出现的单词。与前面ngram语言模型相比,基于神经网络的语言模型具有许多优点。其中包括,神经语言模型不
0b39c9c356b543731bda1fac5297f462.png

让我们考虑一下语言建模:从先前的单词上下文预测即将出现的单词。与前面ngram语言模型相比,基于神经网络的语言模型具有许多优点。其中包括,神经语言模型不需要平滑处理,它们可以处理更长的历史记录,并且可以在相似单词的上下文中进行泛化。对于给定大小的训练集,神经语言模型比n-gram语言模型具有更高的预测精度。此外,神经语言模型是我们将介绍的用于机器翻译、对话和语言生成等任务的许多模型的基础。另一方面,这种性能的提高是有代价的:神经网络语言模型的训练速度明显慢于传统语言模型,因此对于许多任务,n-gram语言模型仍然是正确的工具。我们将描述简单前馈神经语言模型。现代神经语言模型通常不是前馈的,而是递归的,

前馈神经LM是一种标准的前馈网络,它在t时刻将若干个先前单词(

等)的表示作为输入,并输出可能的下一个单词的概率分布。因此,与N -gram LM类似,前馈神经LM通过基于前面N个单词的近似来逼近给定整个先前上下文
的单词的概率(N表示窗口大小):
40967be6e826be3ea38b6e094ec2e620.png

在下面的例子中,我们将使用一个4-gram的例子,所以我们将展示一个网络来估计概率

Embeddings

在神经语言模型中,先前的上下文由先前单词的嵌入(也就是词向量)表示。将先前的上下文表示为嵌入,而不是用n-gram语言模型中使用的精确单词表示,这使得神经语言模型能够比n-gram语言模型更好地泛化为不可见的数据。例如,假设我们在训练中见过这个句子:

I have to make sure when I get home to feed the cat.

但是我们从来没有见过“feed the”这个词后面跟着“dog”这个词。在我们的测试集中,我们试图预测前缀“I forgot when I got home to feed the”之后会发生什么。一个n-gram语言模型可以预测“cat”,但不能预测“dog”。但是,神经LM可以利用“cat”和“dog”具有类似嵌入的事实,将能够为“dog”和“cat”分配相当高的概率,仅仅因为它们有相似的向量。

让我们看看这在实践中是如何工作的。假设我们有一个嵌入字典E,对于词汇表V中的每个单词,这个单词的嵌入,可能是由word2vec算法预先计算出来的。图7.12为简化后的FFNNLM示意图,N=3,我们有一个在时间t移动窗口,其中有一个嵌入向量代表每个3之前的单词( 词

)。这三个向量连接在一起产生x(按照维度拼接),这是一个神经网络的输入层,它的输出是一个softmax,具有单词上的概率分布。因此,
,输出节点42的值是下一个单词
的概率,即索引为42的单词。

图7.12所示的模型是足够的,假设我们通过word2vec方法来单独学习嵌入。使用另一种算法学习我们用于输入单词的嵌入表示的方法称为预训练。如果这些预先训练好的嵌入足以满足您的目的,那么这就是您所需要的。然而,我们常常希望在训练网络的同时学习嵌入。当网络所设计的任务(情感分类、翻译或解析)对什么是好的表示设置了严格的限制时,这是正确的。因此,让我们展示一个允许学习嵌入式的体系结构。为此,我们将在网络中添加一个额外的层,并将错误传播回嵌入向量,从带有随机值的嵌入开始,然后慢慢地向合理的表示方式移动。为了使它在输入层工作,而不是预先训练好的嵌入,我们将把前面的N个单词表示为长度为|V|的一个one-hot vector,即,每个单词对应一个维度。一个one-hot vector是一个向量,它的一个元素在对应于词汇表中该单词的索引的维数中等于1,而所有其他元素都设置为零。

8c136bd4086982d49881dc1986458ee4.png
前馈神经语言模型在文本中移动的简化视图。在每个步骤t中,网络接受3个上下文单词,将每个单词转换为d-维 embeddings,并将3个embeddings连接在一起,得到网络的第1个单元输入层x。这些单位乘以一个权重矩阵W和偏置向量b,然后是一个激活函数,生成一个隐藏层h,然后再乘以另一个权重矩阵u。

最后,一个softmax输出层在每个节点i预测下一个单词

为词汇表单词
的概率。

因此,在“toothpaste”一词的one-hot表示中,假设单词中索引为5,

是1,然后其他的是0
f0bf3be12eee0d04adf1ec0648d48344.png

图7.13显示了LM训练中学习嵌入所需的额外层。这里,N=3个上下文单词表示为3个one-hot向量,通过E嵌入矩阵的3个实例完全连接到嵌入层。注意,我们不想学习将前三个单词映射到投影层的独立权重矩阵,我们想要在这三个单词之间共享一个嵌入字典E(已经学习到的词向量矩阵)。这是因为随着时间的推移,许多不同的单词会以

的形式出现,我们想用一个向量来表示每个单词,不管它出现在哪个上下文位置。因此,嵌入权矩阵E对于每个单词都有一行,每个向量都有d维,因此具有维数
4b78bb74e7a04eea56dd975bf4bad662.png

让我们通过图7.13的前向计算:

  1. 从E中选择三个嵌入: 给定前面的三个单词,我们查找它们的索引,创建3个one-hot向量,然后将每个向量乘以嵌入矩阵E。考虑
    。“The”(索引35)的一个热向量乘以嵌入矩阵E,得到第一个隐藏层的第一部分,称为投影层。因为输入矩阵E的每一行只是一个单词的嵌入,而输入为one-hot列向量
    ,对应单词
    i,输入w的投影层为
    ,对应单词i的嵌入。
  2. 乘以W: 现在我们乘以W(加上b),通过修正的线性(或其他)激活函数得到隐含层h。
  3. 乘以U: h现在乘以U。
  4. 应用softmax: 在softmax之后,输出层的每个节点i估计概率

综上所述,如果我们用e表示投影层,将三个上下文向量的3个嵌入连接起来形成,神经语言模型的方程为:

a6a508432704aa945bb097d836ff1217.png

训练神经语言模型

为了训练模型,即设置所有参数

,我们进行梯度下降,利用计算图上的误差反向传播来计算梯度。因此,训练不仅设置了网络的权重W和U,而且当我们预测即将出现的单词时,
我们还学习了每个单词的嵌入E(更新),这些嵌入E最能预测即将出现的单词。

一般的训练过程是把很长的文本作为输入,把所有的句子连接起来,以随机权重开始,然后迭代地遍历文本,预测每个单词的

。在每个词的
下,交叉熵(负对数似然)损失为
53168fc4d0021f34a9ca347add21e816.png

该损失的梯度为:

6057902abccc7cf65d46393fb4b47874.png

这种梯度可以以任何标准神经网络计算框架,将通过U, W, b, Ef反向传播 .训练参数以减少损失将结果在一个算法语言建模(一个单词预测),但还一套新的嵌入E,可以用作其他词表示的任务。



推荐阅读
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
  • keras归一化激活函数dropout
    激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
author-avatar
手机用户2502869145_913
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有