论文链接:http://www.aclweb.org/anthology/D/D16/D16-1012.pdf
问题:神经网络的参数很多,需要大的数据集。有限的数据量很难将神经网络generalizeds well。为了克服这个问题,这些模型往往有一个无监督的pre-training阶段。最终的模型 is fine-tuned on specific task with respect to a supervised training criterion. 大多数预训练方法都是基于无监督的目标unsupervised objectives,对最终的performance有改进,但是不直接优化具体的task。
多任务学习是同时学习多个相关的任务,用来改进单独学习每个task的performance。。这种多任务架构,它们共享底层来确定common特征。在shared layers之后,剩下的层分开给具体的任务。
本文提出了两种架构,用来多任务之间的信息共享。所有tasks集合到一个系统中,这个系统是联合训练的,trained jointly。本文收到Neural Turing Machine(NTM)神经图灵机和memory network的影响,使用LSTM和一个外部的shared memory。外部memory可以存储长期的信息,这些信息是任务之间共享的。与NTM不同的是,本文使用deep fusion策略来将外部memeory中的信息集成到task-specific LSTM,fusion gate控制信息的流动并且使模型可以选择性的利用共享的信息。
本文的贡献:
1. 提出一个多任务框架,多种任务之间可以通过一个外部memory共享信息,通过reading/writing机制 读写机制来沟通。
2. 与NTM和memory network不同的是,我们介绍一个deep fusion机制,存在在internal和external memories之间,可以帮助LSTM单元之间交互,并且不被混合在一起。
3. fusion gate可以让我们更容易理解这个外部的共享记忆单元如何帮助具体的任务。

ME-LSTM包含原有的LSTM和外部memory,外部memory is maintained by reading and writing operations。
External Memory:

K是memory segments的大小,M是每个segment的大小。K和M是独立的,并且预定义为超参数。在每一个时间点t,LSTM有一个输出ht和三个key vectors kt, et和at,用如下方法计算:

Wm和bm是affine transformation(仿射变换)的参数
Reading: 从M(t-1)读取信息:

at 属于 Rk,代表了Mt-1时刻segments集合的分布,控制了从memory读取和写入的信息量。在attention分布中的每个标量at,k可以通过以下公式获取:

Mt-1,k代表memory vector中的第k行,kt-1代表LSTM生成的key vector。 g(x,y)是一个对齐函数,考虑两种方式:


当前的实现中,相似度计算使用cosine
Writing:memory可以通过两个操作来写:erase和add

et和at分别代表erase和add vector。写操作的公式为:

External和Internal memories之间的deep fusion:

Wf是参数矩阵,gt是fusion gate,用来从external memory选择信息,通过如下计算:

最终:通过如下方式更新external memory enhanced LSTM:

参数p代表LSTM所有内部的参数,参数q代表所有外部记忆的参数。
Deep Architectures with shared memory for multi-task learning:
现有的单任务学习都收到训练数据有限的限制。为了处理这个问题,这些模型往往包含一个无监督的预训练过程,但是都不能直接优化想要的任务。本文提出两种方法:

ARC-I:Global shared memory

ARC-II:Local-Global Hybrid Memory
所有任务都共享同一个memory,这个memory可能会记录task相关的信息,为了解决这个问题,给每个任务都分配一个特定的external memory,


Training:
任务具体的表示 h(m),被输送到特定任务的输出层,

损失:

网友评论