【论文阅读】Semi-supervised Sequence Learning半监督序列学习

news2024/11/27 22:30:03

【论文阅读】Semi-supervised Sequence Learning半监督学习

前言

半监督学习(Semi-Supervised Learning,SSL) 是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性,因此,半监督学习目前正越来越受到人们的重视。
无监督学习(Un-Supervised Learning,UL ) 现实生活中常常会有这样的问题:缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题。
——来自百度百科

其实总的来说就是:
有监督是所有的训练文本为人工标记的;
半监督是一部分是有标记的,剩下的为无标记的(一般无标记>>有标记);
无监督就是全部都是无标记的。

零、摘要

本篇工作围绕如何使用无标注数据来辅助有标注的更好的训练这一任务,作者用两句话描述了这篇工作提出的两种的使用无标签数据改进循环网络的序列学习的方法,一种是:预测一个序列中接下来的内容,这是自然语言处理中的一种传统语言模型; 另一种是:使用序列自动编码器,它将输入序列读入向量并再次预测输入序列。 作者通过实验发现用这两种方法预训练后的长短期记忆循环网络更稳定,泛化能力更强。通过预训练,能够训练数百个时间步长的长短期记忆循环网络,从而在许多文本分类任务中实现强大的性能。例如IMDB(全球信息量最大最全的电影数据库网站);DBpedia(是一个很特殊的语义网应用范例, 同时也是世界上最大的多领域知识本体之一);以及20个新闻主题分类。

一、简介

RNN虽然是序列数据建模的强大工具,但是通过时间的反向传播来训练模型却是非常困难。由于这个原因,RNN很少用于自然语言处理任务,例如文本分类,尽管它在表示顺序结构方面很强大。
在若干文件分类任务中,人们发现可以用过训练一个长短期记忆网络(LSTM)并仔细的调优超参数是有可能实现良好的性能的。此外,一个简单的预训练步骤可以显著稳定LSTMs的训练效果。例如,可以使用下一步预测模型(NSP,next ste prediction);另一种方法是序列自编码,它使用RNN将长输入序列读入单个向量。这个向量将被用来重建原始序列。通过这两种预训练方法得到的权值可以作为标准LSTM RNN的初始化,从而提高训练效果和泛化能力。
在作者使用20个新闻组和DBpedia进行文档分类的实验,以及使用IMDB和 Rotten Tomatoes进行情感分析的实验中,使用循环语言模型或序列自编码器预训练的LSTM通常优于随机初始化的LSTM。
实验的另一个结果是:在预训练中使用更多相关任务的无标签数据可以提高后续有监督模型的泛化能力。例如,使用Amazon评论中的无标记数据来预训练序列自动编码器,可以将Rotten Tomatoes上的分类准确率从79.7%提高到83.3%,这相当于添加了大量的标签数据。这一证据支持了以下论点:使用更多无标签数据的无监督学习可以改善监督学习。使用序列自编码器和外部无标记数据,LSTMs能够匹配甚至超过先前工作的结果。
作者提出的 semi-supervised approach 与 Skip-Thought vectors相关,但存在两个差异,一个是: Skip-Thought vectors的目标是预测相邻的句子,更难;另一个是: Skip-Thought vectors是纯粹的无监督学习,没有微调。

二、Sequence autoencoders and recurrent language models 序列自编码和循环语言模型

序列自动编码方法是受到Sutskever提出的sequence to sequence方法的启发,seq2seq方法的关键是使用循环网络作为编码器,将输入序列读取到隐藏状态,隐藏状态是预测输出序列的解码器循环网络的输入。
与seq2seq不同的是,Sequence autoencoders 是一个无监督学习方法,目标是重建输入序列本身。encoder输入为这个WXYZ,decoder输出为依然为WXYZ,这里的encoder和decoder隐层是共享的。
在这里插入图片描述
图1:序列“WXYZ”的序列自动编码器。序列自动编码器使用循环网络将输入序列读取到隐藏状态,然后可用于重建原始序列。
作者发现,从序列自编码器获得的权重可以用作另一个试图对序列进行分类的监督网络的初始化。作者假设这是因为网络已经能够记住输入序列。这个原因,以及梯度有shortcuts跨越(想想残差网络)的事实,是作者的假设,为什么序列自编码器是一个良好和稳定的初始化循环网络的方法。
序列自编码器的一个重要特性是它是无监督的,因此可以用大量的无标记数据进行训练,以提高其质量。结果是,增加无标记数据可以提高循环网络的泛化能力。这对于标记数据有限的任务尤其有用。

作者提出第二种方法:循环语言模型可以作为LSTM的预训练方法。这相当于删除图1中序列自动编码器的编码器部分。实验结果表明,该方法比随机初始化的LSTMs算法性能更好。
在这里插入图片描述

三、方法概述

在本篇工作的实验中,使用LSTM循环网络,因为它们通常比RNN更好(其实在大多数情况下,人们说RNN通常指的就是LSTM)。标准的LSTM包含输入门、输出门、遗忘门,将基本的LSTM与采用序列自编码初始化的LSTM(SA-LSTMs)进行对比,采用循环语言模型初始化的LSTM(LM-LSTMs)。大多数实验中,输出层从LSTM输出的最后一个时间步预测文档标签。还尝试了在每个时间步上都贴上标签,并将预测目标的权重从0线性增加到1的方法。这样就可以在循环网络的早期步骤中注入梯度。我们称这种方法为线性标签增益
最后,作者对监督学习任务与序列自编码器联合训练的方法进行了实验,称之为联合训练。

四、实验

IMDB and Rotten Tomatoes任务是情感分析和20 Newsgroups and DBpedia任务是文本分类。
在序列自动编码器的实验中,训练它在读取所有输入单词后重新生成完整的文档。换句话说,不执行任何截断或窗口操作。在每个输入序列的末尾添加一个句末标记< eos >,然后训练网络在该标记之后开始复制序列。为了加快性能并减少GPU内存的使用,从序列的末尾开始执行截断的反向传播,最多可达400个时间步。对文本进行预处理,以便将标点符号视为单独的标记,并忽略DBpedia文本中的任何非英语字符和单词。还删除在每个数据集中只出现一次且不执行任何术语加权或词干的单词。
在训练循环语言模型或序列自动编码器大约500K步(批处理大小为128)之后,使用单词嵌入参数和LSTM权重来初始化监督任务的LSTM。然后,对该任务进行训练,同时微调嵌入参数和权重,并在验证错误开始增加时使用提前停止。根据验证集选择dropout参数。
使用SA-LSTM,能够匹配或超过所有数据集的报告结果。必须强调的是,以前的最佳结果来自各种不同的方法。因此,一种方法对所有数据集都能获得强大的结果是很重要的,大概是因为这种方法可以用作任何类似任务的通用模型。实验结果汇总如表所示
在这里插入图片描述

4.1Sentiment analysis experiments with IMDB

第一组实验:在Maas等人提出的IMDB电影情感数据集上对作者的方法进行基准测试。通过调优,可以训练LSTM循环网络来适应长文档训练集。
lstm对长文档的超参数非常敏感,训练会很容易崩溃。相比之下,SA-LSTM算法工作得更好,也更稳定。如果使用序列自编码器,改变隐藏状态的大小或backprop 步骤的数量几乎不会影响LSTM的训练,模型训练起来更加实用。
利用序列自编码器克服了LSTMs的优化不稳定性,从而在训练集上快速、容易地实现完美分类。为了避免过拟合,再次使用输入维度dropout,并在验证集上选择退出率。在这里插入图片描述
结果表明,带输入嵌入dropout的SA-LSTM算法在该数据集上可以取得与以往最好的结果相同的结果。相比之下,没有序列自编码器的LSTMs在优化目标时遇到麻烦,因为文档中存在很长的依赖关系。
使用语言建模(LM-LSTM)作为初始化的效果很好,达到了8.98%,但与SA-LSTM相比效果较差。这可能是因为语言建模是一个短期目标,所以隐藏状态只捕获预测接下来几个单词的能力。
在上表中,使用1024个单元作为存储单元,在LM-LSTM和SA-LSTM中使用512个单元作为输入嵌入层。还使用了512个隐藏层单元,在最后一个隐藏状态和分类器之间的dropout为50%。在接下来的实验中继续使用这些设置,除了最终隐藏层中有30个单元。在表中,给出了一些来自IMDB数据集的例子,这些例子是通过SALSTM而不是bigram NBSVM模型正确分类的。这些例子通常有长期的依赖关系,或者有很难仅从短语中找到的。

4.2 Sentiment analysis experiments with Rotten T omatoes and the positive effects of additional unlabeled data

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.3 Text classification experiments with 20 newsgroups

到目前为止,实验都是在文档中标记数量相对较少的数据集上进行的,只有几百个字。我们的问题变成是否可以将salstm用于具有大量单词的任务。为此,我们在20个新闻组数据集[16].4上进行了接下来的实验训练集有11,293个文档,测试集有7,528个文档。我们使用15%的培训文档作为验证集。每个文档都是一封邮件,平均长度为267字,最大长度为11925字。附件、PGP键、副本和空消息被删除。由于新闻组文档很长,以前认为循环网络不可能从数据集中学到任何东西。

在这个数据集上对LSTMs和SA-LSTMs重复同样的实验。与之前实验的观察结果相似,SA-LSTMs通常比LSTMs训练更稳定。为了提高模型的泛化性,我们再次使用在验证集中选择的输入嵌入dropout和单词dropout。在70%的输入嵌入缺失和75%的单词缺失的情况下,SA-LSTM获得了15.6%的测试集误差,大大优于以往的分类器。结果如表6所示。
在这里插入图片描述

4.4 Character-level document classification experiments with DBpedia

在这里插入图片描述

4.5 Object classification experiments with CIFAR-10

在这里插入图片描述

五、结论

在本文中,作者证明了使用LSTM循环网络来完成诸如文档分类等NLP任务是可能的。进一步,证明了语言模型或序列自编码器可以帮助稳定LSTM循环网络的学习。在作者尝试的五个基准上,LSTM可以达到或超过所有以前基准的性能水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

别让 Linux 成为拿offer的阻碍

文章目录前言目录结构VI/VIM 编辑器是什么一般模式编辑模式&#xff08;插入模式&#xff09;命令模式模式间转换常用基础命令&#xff08;重要&#xff09;帮助命令man 获得帮助信息help 获得 shell 内置命令的帮助信息type 查看某命令是内置命令还是外部命令常用快捷键文件目…

Java 之 ElasticSearch8.x.x 【一篇文章精通系列】【ES的基本操作,ES安装,ES head + Kibana】

Java 之 ElasticSearch8.x.x 【一篇文章精通系列】【上&#xff1a;ES的基本操作&#xff0c;ES安装&#xff0c;ES head Kibana】一、ElasticSearch的安装1、解压安装ES2、熟悉目录3、启动ES4、安装可视化界面&#xff08;elasticsearch head&#xff09;5、了解ELK6、安装Ki…

【路径插值与抽稀篇】(3)路径插值与抽稀篇

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、路径曲线插值、拟合和逼近的区别1、拟合2、插值3、逼近二、路径点线性插值方法&#xff08;1&#xff09;纯跟踪&#xff…

EDA程序设计--计时器设计

实训题目&#xff1a;计时器的设计 1 系统设计 1.1设计要求 1.1.1 设计任务 设计并制作一台计时器。 1.1.2 性能指标要求 ① 用EDA实训仪的I/O设备和PLD芯片实现计时器的设计。 ② 计时器能够显示时、分和秒。 ③ 用EDA实训仪上的8只八段数码管显示时、分和秒&#xff08;如00…

mysql 常用查询优化策略详解

前言 在程序上线运行一段时间后&#xff0c;一旦数据量上去了&#xff0c;或多或少会感觉到系统出现延迟、卡顿等现象&#xff0c;出现这种问题&#xff0c;就需要程序员或架构师进行系统调优工作了&#xff0c;其中&#xff0c;大量的实践经验表明&#xff0c;调优的手段尽管…

Linux学习——目录操作和库使用

目录 一、打开目录 二、读取目录 三、关闭目录 四、修改文件权限 五、获取文件属性 六、库的概念&#xff1a; 1、静态库 缺点&#xff1a; 优点&#xff1a; 创建静态库步骤&#xff1a; 链接静态库&#xff1a; 2、动态库 动态库的生成步骤&#xff1a; 练习题&a…

论文阅读之Enhancing Transformer with Sememe Knowledge(2020)

文章目录论文阅读Transformmer-SETransformer-SP实验结果总结参考论文阅读 文章建议结合两种简单的方法将义原知识整合&#xff1a; 1&#xff09;基于语言学假设&#xff0c;我们将聚合义原嵌入添加到每个词嵌入中以增强其语义表示&#xff1b; 2&#xff09;我们使用义原预测…

OpenCV实战项目 -- 口罩识别

每次我忘记戴口罩去食堂吃饭的时候&#xff0c;门口都会有志愿者学生提醒你&#xff1a;“你好&#xff0c;麻烦戴下口罩。” 进门后里面那块大屏幕还会发出声音&#xff1a;“请佩戴口罩”。 上次博客仿照宿舍楼下那块大屏幕写了个人脸考勤&#xff0c;所以这次我打算弄一个口…

std::logic_error 错误的解决

今天测试一个程序&#xff0c;突然出现一个 std::logic_error 错误&#xff0c;详细如下&#xff1a; 这个应该是 std::string 相关的一个错误&#xff0c;具体的错误信息还得用 GDB 跟踪一下了。 看第 8 栈帧已经是系统库里的东西了&#xff0c;第 9 帧是我本地的代码&#x…

【C进阶】之定义结构体及使用typedf

1 结构体中包含函数指针类型成员 声明的格式&#xff1a; struct 结构体名 { 返回类型 (*函数指针名)(形参列表); }; 定义结构体类型的变量并对结构体中的函数指针成员进行初始化 struct 结构体名 结构体变量名; 结构体变量名.函数指针名 函数名; // 函数指针指向的函数具有相…

目标检测(7)—— YOLO系列V3

一、YOLOV3 多scale 三种scale&#xff1a; 为了检测到不同大小的物体&#xff0c;设计了3个scale。 特征融合不好。 感受野大的特征图预测大的&#xff0c;中的预测中的&#xff0c;小的预测小的。各自预测各自的&#xff0c;不用做特征融合。 三个候选框&#xff1a; 每个特…

「C++小游戏教程」基本技巧(2)——系统 DOS 命令

0. 引言 「C小游戏教程」基本技巧(1)——随机化 在 (1) 中&#xff0c;我在使用 random_shuffle() 时加了一个 system("pause");。其中 system() 是系统发出 DOS 命令的函数&#xff0c;原型为 int system(char *command);。我们今天就来谈谈这个函数的主要功能用途…

Redis持久化

目录 一、Redis高可用 1.持久化 2.主从复制 3.哨兵 4.Cluster集群 二、Redis持久化 三、RDB持久化 1.概念 2.触发条件 &#xff08;1&#xff09;手动触发 &#xff08;2&#xff09;自动触发 3.执行流程 4.启动时自动加载 四、AOF持久化 1.概念 2.开启AOF持久…

微信公众号获取openid流程

说明 微信公众号获取openid&#xff0c;在官方文档中称为网页授权&#xff0c;授权有两种scope&#xff0c;snsapi_base和snsapi_userinfo&#xff0c;snsapi_base是静默授权&#xff0c;不需要用户同意&#xff0c;以下要说的就是静默授权。 关于网页授权的两种 scope 的区别…

[CISCN2019 华北赛区 Day1 Web2]ikun

要买lv6 然后下一页下一页的找&#xff0c;也找不到 来个脚本爆破一下 #coding&#xff1a;utf-8 import requests import time for i in range(1,200):print(i)url http://17dfa3f4-2826-4b97-9d61-a920b6c8976f.node4.buuoj.cn:81/shop?page{}.format(i)r requests.get…

目标检测(6)—— YOLO系列V2

一、YOLOV2改进的概述 做的改进如下图&#xff1a; Batch Normalization 批量归一化层 不加BN层&#xff0c;网络可能学偏&#xff0c;加上归一化进行限制。 从今天来看&#xff0c;conv后加BN是标配。 更大的分辨率 V1训练的时候使用224224&#xff0c;测试用448448。 V2训…

胡扯推荐算法(协同)及其dome实现

文章目录前言推荐系统定义基本分类相似度计算欧式距离皮尔逊系数余弦相似度协同过滤案例数据定义相似度计算推荐svd奇异值分解优化完整代码总结前言 打瞌睡遇到送枕头的感觉真爽嘿嘿 BoyC啊 废话不多说&#xff0c;开始吧。 推荐系统定义 推荐系统(Recommendation System,…

张益唐与黎曼猜想

一个人活在世界上&#xff0c;可以有不同层次的贡献&#xff0c;有正的有负的。唐山烧烤店打人的那种人&#xff0c;就是典型的负的贡献。正的贡献有大有小&#xff0c;像我这样开发一个小软件&#xff0c;写一段小博文&#xff0c;这是小的贡献&#xff1b;像张益唐这样&#…

zlMediaKit 9 ThreadPool模块

semaphore.h TaskQueue.h threadgroup.h ThreadPool.h ThreadPool semaphore 基于条件变量和锁实现的信号量post和wait语义 #include <mutex> #include <condition_variable>namespace toolkit {class semaphore { public:explicit semaphore(size_t initia…

Linux命令从入门到实战 ----查找文件和目录压缩和解压缩

文章目录搜索查找find查找文件和目录locate快速定位文件路径grep 过滤查找| 管道符which命令用于查找文件。whereis压缩和解压缩gzip/gunzip 压缩zip/unzip压缩tar打包总结搜索查找 find查找文件和目录 find指令将从指令指定目录下向下遍历其各个子目录&#xff0c;将满足条件…