CS224N学习笔记(十七)Multitask learning

2023-10-11 17:08

本文主要是介绍CS224N学习笔记(十七)Multitask learning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Multitask指多任务学习,大致意思是一个NLP的模型可以完成多种任务。

一、单任务学习的局限和特点

  • 由于{dataset,task,model,metric}等的发展,近年来single-task取得了很好的效果
  • 当训练集足够大,能够很容易局部最优
  • 对于通常更常用的AI,需要针对single-model的持续的学习(continus-learning),即很多时候不需要从头开始,顺着上次的结果接着训练
  • 模型很多时候随机初始化,或者仅仅是采用部分的预训练(partly)

上述特点或者局限决定了需要一种更为通用的预训练或者分享知识的手段,于是就提出了Muliti-task learning。

Pre-training and sharing knowledge is great

在计算机视觉中:

  • imagenet +cnn取得巨大的成功
  • 同时,classifcation也作为视觉中的一个常用的块,可以用于计算机视觉领域中的其他任务

在NLP中:

  • Word2Vec, GloVe, CoVe, ELMo, BERT等迁移学习的思想也开始逐渐成功
  • 但是没有这种single blocking task

所以在NLP中有发展multi-task的必要。

Why has weight & model sharing not happened as much in NLP?

课程解释了一下为什么NLP中sharing不是很广泛,总结如下:

  • NLP任务所需求的类型多:包括逻辑,语法,情绪,视觉等等,不容易用一个通用的模型来表达。
  • 由于语言的特点,需要长期或者短期不同的记忆
  • 很多NLP任务被划为多个任务来进行简化,以取得更好的进展。

NLP比较复杂,不太容用一个简单的无监督模型来解决相关问题,因此multi-task也应该是有监督的。

Why a unified multi-task model for NLP?

课程认为一个multi-task model应该具备以下条件:

  • 它应该是一个通用的blocker块在NLP系统中(对应于cv中的imagenet+cnn)
  • 这个统一的模型至少决定了如何进行transfer knowlege(domain adaptation,
    weight sharing, transfer and zero shot learning)

剩下的如图所示:
在这里插入图片描述

How to express many NLP tasks in the same framework?

进行Multi-task任务的第一个问题就是如何用一个通用的task来表达很多tasks,课程首先总结了,常见的nlp任务分类:
在这里插入图片描述
课程认为这些task都可以等效成下面这些task中的一个,称为equivalent supertasks ,如图所示:
在这里插入图片描述
课程把整合后task的形象称为:Natural Language Decathlon(decaNLP),整合的例子如图所示:
在这里插入图片描述
在这里插入图片描述
上面整合的十项任务是:
在这里插入图片描述
课程做了一些说明:

  • 这种称之为元监督学习(Meta-Supervised),输入的数据由{x, y}变成了{x,t, y},其中t表示任务类别。
  • 这种采用了一个问题q来描述任务t,允许任务之间通过语言信息链接起来
  • y是问题q的答案,x是和问题有关的文本

对于decalNLP的设计,应该符合以下要求:

  • 并不是针对特定任务的,即通用的,t输入到模型里面并不做task的分类,而是直接用,因为一般认为task id是不可用的。
  • 应当能在内部进行调整,去执行不同的任务
  • 应当由留有一定的零次推理(zero-shot inference)的能力(具有高度拓展性)

A Multitask Question Answering Network for decaNLPsuozuo

课程介绍了他们的工作,就这篇论文,论文的主要思路如下:
在这里插入图片描述
其模型结构如图所示:
在这里插入图片描述
首先是一个Fixed Glove+Character 的n-gram embeddings(固定是为了防止某些task数据量太小,对词向量产生负面影响。)
之后进入一个Linear,再之后输入到一个Shared BiLSTM with skip connection层中,如图:
在这里插入图片描述
其中这个Shared BiLSTM前面采用了co-attention机制,如图中的红色块(以前的课程讲过)。再之后,将question和context分开,分别输入到transfomer中进行编码,再输入到另外一个 BiLSTM中得到最终编码final encode。如图所示:
在这里插入图片描述
接着使用transformer中的具有自回归倾向的解码器进行解码,解码头(head)采用的是lstm decode去计算attention distributions over the context and question(which are used as pointers),如图所示:
在这里插入图片描述
通过计算question attention和context attention去确定两个开关,gamma和lambda来决定生成的vocabulary从哪个词分布中选择生,如图:
在这里插入图片描述
作者选取了多个任务多个数据集和多个评价指标,最终的评价指标得分是所有得分的和,如图:
在这里插入图片描述
接着和普通的single-task做对比,绘制成了如图所示的表,表的左侧是single-task有40个模型,表的右侧是multitask只用了4个模型。
在这里插入图片描述
课程仔细分析了以下这个表,总结出了一些特点:

  • transformer层加上之后,对单任务和多任务都有很好的效果
  • Question Answering和Semantic Role Labeling两个任务很相似
  • Pointing 部分也是很必要的,在某些方面取得了比较好的效果
  • 多任务的zero-shot learning比单任务好,有助于改善zero-shot
  • 从总的结果看,多任务还是和单任务的效果有一些差距。

Training Strategies: Fully Joint

课程继续将了训练策略,采用fully joint的方法进行训练效果比较好,即将每个task的数据集处理成一个batch,然后依次送入模型训练,如图:
在这里插入图片描述
在这里插入图片描述
后来发现,输入训练数据集的顺序也会对模型的效果产生影响,比如如果前面训练的数据太简单的话,有可能会使模型陷入局部优化,难以爬出来。对于多任务模型,不同任务的数据集的影响就会更大。所以采用了Anti-Curriculum Pre-training的训练策略。

Training Strategies: Anti-Curriculum Pre-training

Curriculum是从简单到复杂,Anti-Curriculum就是从复杂到简单,这种训练策略就是对任务从复杂到简单排一个序,对任务里面的数据也从复杂到简单排一个序,依次制作成batch输入到模型中进行训练,如图:
在这里插入图片描述
batch1 :A,batch2 :B,batch3 :A,batch4 :B,batch5 :C…
这种训练方式带来了一定模型的效果的提升,如图:
在这里插入图片描述
课程又介绍了一些其他的实验,也对模型起到了一定的效果,如图:
在这里插入图片描述

Where MQAN Points

课程对输出的结果进行分析,比如将输出的词的分布来源统(vocab,context,quesiont)计下来,如图所示:
在这里插入图片描述
可以看到该模型针对不同任务的输出的词的分布基本上都是正确的,说明该模型能够区分不同的任务。

Pretraining on decaNLP improves final performance

decaNLP 确实对模型的预训练起到了很好的效果,比如,这里新加入了一个任务IWSLT language pairs,采用decaNLP的预训练和随机初始化效果很不同,如图所示:
在这里插入图片描述

Zero-Shot Domain Adaptation of pretrained MQAN

这个模型有助改善零次学习,如图所示:
在这里插入图片描述
在这里插入图片描述

这篇关于CS224N学习笔记(十七)Multitask learning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189550

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件