一个月前和实验室的伙伴们打了一个跨领域半监督依存句法分析的比赛,比赛成绩出乎意料,在封闭测试下是第一名。这也是我第一次接触半监督学习。最近师兄在写这个评测论文,我也在帮忙准备下实验数据。昨天师兄发现了一个极其简单的半监督方法论文,挺后悔这么简单当初没用上。今天就来说说这个很简单的论文。

给还不了解的小伙伴普及下半监督和无监督哈:

半监督semi-supervised

半监督学习(Semi-Supervised Learning,SSL)是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。半监督学习使用大量的未标记数据,以及同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性,因此,半监督学习目前正越来越受到人们的重视。

无监督学习un-supervised

现实生活中常常会有这样的问题:缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高。很自然地,我们希望计算机能代我们完成这些工作,或至少提供一些帮助。根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称之为无监督学习。

-来自百度百科

一句话解释就是:

有监督是所有的训练文本为人工标记的;

半监督是一部分是有标记的,剩下的为无标记的(一般无标记>>有标记);

无监督就是全部都是无标记的。

简单了解后,开始正事。

论文解析

半监督学习还有哪些方法 监督 半监督_数据

地址:

https://arxiv.org/pdf/1511.01432.pdf

这篇文章主要讲的就是如何使用无标注数据来辅助有标注的更好的训练。这里提出了2个方法,用无标签数据进行无监督训练的参数来初始化有监督学习的模型

  • 一种是用seq2seq自编码模型(sequence autoencoder, SA-LSTM),encoder输入为这个WXYZ,decoder输出为依然为WXYZ,和普通的seq2seq模型相比不同的是,这里的encoder和decoder隐层是共享的。

半监督学习还有哪些方法 监督 半监督_半监督学习还有哪些方法_02

  • 另一种是用最基础的语言模型(language models, LM-LSTM),输入上一个词预测下一个词,就相当于上面的没有encoder一样。大概长这个样子:

半监督学习还有哪些方法 监督 半监督_数据_03

用无标注数据训练完后,用此时的LSTM内部权重来初始化一会将要进行有标注数据的有监督学习LSTM模型即可。

作者在情感分析、文本分类、目标分类等多组任务中进行了对比实验,均取得了不错的结果。

有什么好处呢?

文章中说,这样的好处是网络在还没有有监督训练的时候,就已经学到了文本的内部信息,也就是提前让循环神经网络学会句子的表达,再之后根据标签去学习分类的能力。这样会使得最终训练的梯度更好,不会出现提出骤变的现象。

和word2vec初始化相比呢?

这个文中也做了实验:

半监督学习还有哪些方法 监督 半监督_数据_04

这两种方法初始化,都比word2vec好了不少。


这个模型用的都是论文用的都是LSTM。因为是2015年的一篇经典论文,所以当时LSTM都是很火的。现在我觉得bert什么的或许可以采用相同的方法,进行预训练。这里只是提供一个思想而已。

当然还有别的实验分析,但是这里就不分析了,论文中的实验分析很多都是自己在一堆数据中找出来特别具有代表性的数据来展示给你看的。所以这里主要还是看大概思想和思路,在自己以后碰到这个无监督问题是能够猛然想到