深度学习lstm做中文自动摘要,解码生成的摘要全是unk


这个库的目的是探索用深度学习進行NLP文本分类的方法

它具有文本分类的各种基准模型,还支持多标签分类其中多标签与句子或文档相关联。

虽然这些模型很多都很简單可能不会让你在这项文本分类任务中游刃有余,但是这些模型中的其中一些是非常经典的因此它们可以说是非常适合作为基准模型嘚。

每个模型在模型类型下都有一个测试函数

我们还探讨了用两个seq2seq模型(带有注意的seq2seq模型,以及transformer:attention is all you need)进行文本分类同时,这两个模型吔可以用于生成序列和其他任务如果你的任务是多标签分类,那么你就可以将问题转化为序列生成

pairs)作为记忆,并行运行从而获得噺的状态。它可以用于使用上下文(或历史)来回答建模问题例如,你可以让模型读取一些句子(作为文本)并提出一个问题(作为查询),然后请求模型预测答案;如果你像查询一样向其提供故事那么它就可以进行分类任务。

如果你想了解更多关于文本分类或这些模型可以应用任务的数据集详细信息,可以点击链接进行查询我们选择了一个:

它用左侧文本和右侧文本学习句子或文档中的每个单詞的表示:

对于左侧文本,它使用一个循环结构前一个单词的非线性转换和左侧上一个文本;类似于右侧文本。

}

深度学习现在是一个非常猖獗的領域 – 有如此多的应用程序日复一日地出现深入了解深度学习的最佳方法是动手实践。尽可能多地参与项目并尝试自己完成。这将帮助您更深入地掌握主题并帮助您成为更好的深度学习实践者。

在本文中我们将看一个有趣的多模态主题,我们将结合图像和文本处理來构建一个有用的深度学习应用程序即图像描述。图像描述是指从图像生成文本描述的过程 – 基于图像中的对象和动作例如:

这个过程在现实生活中有很多潜在的应用。值得注意的是保存图像的标题以便在此描述的基础上可以在稍后阶段轻松检索。

注意:本文假设您叻解深度学习的基础知识并且之前使用过CNN处理图像处理问题。 如果您想了解这些概念可以先阅读这些文章:

? 深度学习基础 – 从人工鉮经网络开始

? 卷积神经网络(CNNs)的体系结构揭秘

? 教程:使用Keras优化神经网络(带图像识别案例研究)

? 深度学习要点 – Attention的序列到序列建模(使用python)

? 图像描述问题需要什么?

假设你看到这张照片 –

你想到的第一件事是什么 (PS:请在下面的评论中告诉我们!)。

以下是人們可能提出的几句话:

一个男人和一个女孩坐在地上吃
人行道上,一个男人和一个小女孩正坐一个蓝色的袋子旁边吃东西
一个男人穿著一件黑色的衬衫和一个穿着橙色礼服的小女孩在分享乐趣。

快速浏览一下就足以让您理解并描述图片中正在发生的事情从人工系统自動生成此文本描述是图像描述的任务。

任务很简单 – 生成的输出应该通过单个句子描述图像中显示的内容 – 存在的对象它们的属性,正茬执行的动作以及对象之间的交互等但是与其他图像处理问题一样,在人工系统中复制此行为是一项艰巨的任务因此需要使用复杂和先进的技术(如深度学习)来解决这个任务。

图像描述的任务在逻辑上可以分为两个模块 – 一个是基于图像的模型 – 从图像中提取特征和細微差别另一个是基于语言的模型 – 它基于我们的图像模型通过我们给出的特征和对象翻译成自然句。

对于我们的基于图像的模型(即編码器) – 我们通常依赖于卷积神经网络模型对于我们基于语言的模型(即解码器) – 我们依赖于循环神经网络。下图总结了上面给出嘚方法

通常,预训练的CNN从输入图像中提取特征线性变换特征向量以具有与RNN / LSTM网络的输入维度相同的维度。该网络在我们的特征向量上被訓练为语言模型

为了训练我们的LSTM模型,我们预定义了标签和目标文本例如,如果标题是“一个男人和一个女孩坐在地上吃饭”我们嘚标签和目标将如下 –

这样做是为了使我们的模型理解标记序列的开始和结束。

让我们看一下Pytorch中图像描述的简单实现我们将图像作为输叺,并使用深度学习模型预测其描述

可以在GitHub上找到此示例的代码。此代码的原作者是Yunjey Choi为他在Pytorch中出色的例子致敬!

在本演练中,预训练嘚resnet-152模型用作编码器解码器是LSTM网络。

在运行此示例中给出的代码之前您必须先安装。确保你有一个工作的python环境最好安装anaconda。然后运行以丅命令来安装其余所需的库

设置好系统后,下载训练模型所需的数据集这里我们将使用MS-COCO数据集。可以运行以下命令自动下载数据集:

現在您可以开始模型构建过程。 首先 – 您必须处理输入:

现在您可以通过运行以下命令开始训练模型:

只是为了窥视引擎并查看我们洳何定义模型,您可以参考model.py文件中编写的代码

现在我们可以使用以下方法测试我们的模型:

对于我们的示例图像,我们的模型为我们提供了输出:

这就是为图像描述构建深度学习模型的方法!

我们上面看到的模型只是冰山一角关于这个主题已经做了很多研究。目前图潒描述中最先进的模型是微软的CaptionBot. 您可以在他们的官方网站上查看该系统的演示 (link : www.captionbot.ai)。

我将列出一些可用于构建更好的图像描述模型的想法

? 使用Attention模型 – 正如我们在本文中所看到的 (深度学习要点 – 使用Attention进行序列建模),使用注意力模型可以帮助我们微调模型性能

? 继续研究更大哽好的技术 – 研究人员正在研究一些技术 – 例如 使用 强化学习来构建端到端深度学习系统,或者使用新颖的视觉哨兵注意模型

在本文中,我介绍了Image Captioning这是一个多模式任务,它构成了对自然语句中的图像进行解密和描述 然后我解释了解决任务的方法,并详细介绍了它的实現 除此之外,我还列出了可用于改善模型性能的方法列表

我希望本文能激励您发现更多可以通过深度学习解决的任务,以便在行业中實现越来越多的突破和创新 如果您有任何建议/反馈,请在下面的评论中告诉我们!

}

LSTM比传统的RNN强在哪里

传统的RNNs只能解决短期依赖的问题,比如我们想预测这句话“the clouds are in the sky”的最后一个词"sky"我们不需要更多的信息,前面的信息已经足够了这种情况下,相关信息之间的距离非常近此时传统的RNNs可以处理此类问题。但当相关信息距离非常远时比如我们要预测“I grew up in France…I speak fluent French”这句话中的最后一个词“French”,峩们需要之前的信息“France”对于这种长距离的依赖RNNs是无法处理的,但是LSTMs可以解决此类问题

第一幅图是传统的RNN的结构,每个循环单元中只囿一层layer传统的RNN计算公式可以参看此
下图是LSTM的结构,每个循环单元中有四层layer
将LSTM循环单元进一步展开如下图:

  1. 第一个门((forget gate layer)):决定我们偠扔掉哪些信息 Γf?t??=σ(Wf?[a?t?1?,x?t?]+bf?)(1)该公式计算出的值介于0-1之间(因为激活函数是sigmoid),所以当该值与 c<t?1>点乘操作时值越大的位置楿乘后得到的结果值也越大,即该位置保留的历史信息越多
  2. 第二个门(updating gate):用来决定我们要增加哪些新的信息 第三层layer的计算公式如下,鼡来与更新门点乘得到要增加的信息: c<t>即用来保存历史信息的输出,用下面公式计算:
  3. 第三个门(Output gate)该门用来计算
}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信