谈谈无监督Meta Learning的研究

249 阅读5分钟
原文链接: zhuanlan.zhihu.com

大家好!在今天这篇文章中我们来谈谈Unsupervised Meta Learning,这是一个很有意思的研究方向。


Meta Learning单排小教学中,我们已经提到,Meta Learning很神奇的地方就是Task里面的Train和Test是可以不一样的,比如Train是无监督学习,而Test是有监督,那么我们就可以利用Test的有监督信号来学习一个无监督学习了。因为这样的设定,我们就可以构造出下面的无监督学习任务:


1)使用无标签样本来学习一个好的特征表达feature representation

2)利用这个feature representation在Few-Shot Learning问题上取得好的效果


这样的问题设计是很合理的,因为我们无监督学习的最终目标也是要在特定任务上取得比较好的效果。传统的无监督学习方法比如VAE,我们训练这个神经网络学出来了一些特征表达,但是我们却无法直接说明VAE的这套学习方式是直接对特定任务有利。举一个类似的例子:image captioning图像标注问题,一开始的做法是使用纯粹的监督学习来训练这个神经网络,但是我们是使用人为设计的评价指标如BLEU,CIDEr-D来评价效果的好坏,这种情况下监督学习和评价指标没有直接联系。所以近年来image captioning就采用增强学习的方法,基于评价指标来改进网络的效果,这就有了直接联系。


回到现在的无监督学习问题上,Few-Shot Learning这个task就是无监督学习的指标,我们可以利用这个指标通过Meta Learning来引导学习无监督学习,从而学到一个好的representation。


目前这一块的研究有两篇文章,一篇是《Learning Unsupervised Learning Rules》,另一篇是刚刚出来的《Unsupervised Learning via Meta Learning》。我们这里简单的说一下这两篇文章的idea。两篇文章的问题设定是一样的。


1. Learning Unsupervised Learning Rules


这篇文章的idea就是直接利用Meta Learning特性,先利用无监督数据更新一下网络参数,然后利用更新后的网络参数来做Few-Shot Learning。通过反复的训练,就能够使得这套神经网络在Few-Shot Learning上表现更好。所以,核心的问题是


如何用无监督数据更新网络参数呢?


这篇文章采用的是生成参数的方法,也就是本来如果是有监督学习,我们通过Loss可以通过反向传播得到梯度进行更新,现在我们没有了Loss,我们就自己额外构造一个神经网络利用当前的参数来直接预测要更新的参数:




这里作者设计的是Neuron-Local的方式,既每一个神经元输入到这个额外的神经网络中输出对应的更新值,这样的设计就不会受限于网络的结构了。简化一下这个idea的基本过程就如下图所示:



按照上图,我们可以认为这个Meta Network学习到了Unsupervised Learning rule。输入一些无监督数据,我们就可以来更新神经网络。更新完之后我们再用Few-Shot Learning监督学习来更新整个网络包括Meta Network:



Meta Network的设计其实也可以不按这篇文章的来,比如把Feature encoder的网络大小固定,那么Meta Network就可以直接变成一个HyperNetwork,输入所有当前参数,输出一个新的更新参数。


2 Unsupervised Learning via Meta-Learning


这篇文章的idea和上一篇不一样,比较人工的做法,主要是研究如何让无监督数据也能做Few-Shot Learning。可是没有标签怎么做?先用传统的无监督学习方法学出一个基本的feature representation,然后使用K-means将无监督数据做分类,分完类那就变成有标签数据了,这样就可以构造task然后用MAML这样的meta learning算法来训练。那我们肯定会怀疑,这样分类显然不会准啊,这样构造的task也会有偏,没有关系,因为我们有Test阶段真实的有监督数据,通过Meta Learning,就可以使得无监督数据的分类效果越来越好了。所以,这篇文章把这个算法称为Clustering to Automatically Construct Tasks for Unsupervised meta-learning (CACTUs),核心在于自动为无监督数据构造Task。





这篇文章的idea也是有道理的,但是看起来有点丑,很麻烦的做法。


小结一下


今天我们简单分析了一下无监督Meta Learning的基本思路和两篇文章的做法,可以说这个问题确实很新,可以优化的地方还很多,怎么才能学到一个更好的Meta Network是值得去思考的。与此同时,无监督Meta Learning也可以直接应用到RL领域上,事实上也有相关文章了,我们可以以后再谈。最后,我们能否构造出更新更奇特的Meta Learning设定呢?train和test的不同还可以到什么程度?这可能是更重要的问题。