这是2020年秋季的课程,也有2021的课程,但是因为官方还没上传视频到平台,所以只能看2020年的。
视频地址:
Lecture1 - 深度多任务和元学习-CS330【斯坦福】_哔哩哔哩_bilibili
课程网址:
CS 330 Deep Multi-Task and Meta Learning
先修课程要求:
需要同等的机器学习入门课程(斯坦福课程CS 229)。推荐同等的人工智能入门课程(斯坦福课程CS 221),但不是必需的。
这节课程分为两部分:
课程流程介绍
为什么要学习多任务学习和元学习?
课程流程如下:
- 1. Multi-task learning, transfer learning basics
- 2. Meta-learning algorithms
- (black-box approaches, optimization-based meta-learning, metric learning)
- 3. Advanced meta-learning topics
- (meta-overfifitting, unsupervised meta-learning)
- 4. Hierarchical Bayesian models & meta-learning
- 5. Multi-task RL, goal-conditioned RL
- 6. Meta-reinforcement learning
- 7. Hierarchical RL
- 8. Lifelong learning
- 9. Open problems
- Emphasis on deep learning techniques.
- Emphasis on reinforcement learning domain (6 lectures)
为什么要学习多任务学习和元学习?
授课教授引入了她在读博期间机器人如何自己学习组装零件的许多例子,来说明机器人是可以通过不断尝试,最后找到完成任务的方法后完成任务。但机器人只能在单一环境下完成单一任务,意味着比如要求机器人将勺子放到碗了,如果把勺子换成叉子,机器人就要重新开始训练才能完成任务了,这种情况的AI系统把它称之为specialist,专家。
机器人无法像人类小孩一样,在不同环境下也能根据以往的学习经历最后完成给定的任务。面对现实世界,他们必须能够跨任务、跨对象和跨环境进行泛化,才能真正在人类环境中发挥作用。他们需要某种形式的常识理解才能做得好,并在现实世界中良好运作。对比机器人,人类的学习是generalist,通才。
这是多任务学习和元学习的研究潜力所在。
另外一点是目前关于深度学习的研究,许多任务都是面向大数据集的,但是现实生活中许多应用场景都会是小样本的数据集,比如医学成像中、机器人技术、 个性化教育、医学护理、 推荐系统等。当我们想要翻译更多稀有语言时,通常没有针对每个机器人或每个患者或每个学生的庞大数据集。因此,这些已有的面向大型数据集的技术实际上可能对这些非常现实的问题没有那么有用或适用。因此, 针对每种疾病、每种机器人、每个 人、每个任务从头开始学习是不切实际的。
这是多任务学习和元学习可以发挥作用的领域之一。
授课中,教授举了一个例子,人类可以从少量的数据中判断出给定的画是出自哪个画家之手。而机器学习在少量数据的情况下得出的效果是很差的。
答案是第一个作者,相信大家都能猜对。
什么是多任务学习?元学习?
首先理解单任务,单任务学习是给定一个数据集,找一个函数,训练损失函数尽可能小,使它能高质量完成指定任务。这样的一个任务会因为对象、目标、人员等不同而不同。而多任务学习是能够对多个单任务进行学习,会有多个数据集,机器能找到一个适用每个数据集的函数来完成任务。元学习是基于多任务学习延展的。(下面会更清楚知道多任务学习和元学习的区别)
进行多任务学习和元学习的关键假设是:
不同任务需要有共享某些结构,这也是难点。而现实,许多不同任务往往有共享的结构,举个例子,如拧盖子这个动作,不管是拧果酱盖子、水瓶盖子还是啤酒瓶盖子,都是顺时针拧紧,逆时针拧松。
尽管多任务之间似乎不相关,但
- 物理定律是所有真实数据的基础
- 人类都是有目的的有机体
- 英语的规则是所有英语语言数据的基础
- 语言都是因类似的目的开发
这就带来了比随机任务更大的结构。
用原课件的英文解释多任务学习和元学习更容易理解:
The multi-task learning problem: Learn all of the tasks more quickly or more proficiently than learning them independently.
The meta-learning problem: Given data/experience on previous tasks, learn a new task more quickly and/or more proficiently.
迁移学习(transfer learning)和元学习的区别?
元学习算法显式优化一定数量数据来达到有效迁移,迁移学习方法实际上倾向于手工设计技术,而不是通过一组任务进行显式优化来达到良好的转移。
在迁移学习中,通常会利用一些先前的经验并设计一些规则来将以前学到的知识转移到新任务中。做到这一点的一种方法是微调,可以在之前的任务上训练一个模型 ,然后针对新任务对其进行微调。这是一种将知识从一项任务转移到另一项任务的手工设计方案。
而在元学习中, 你要做的是处理一组任务并尝试显式优化可迁移性, 本质上是在看到新任务的少量数据后显式优化以获得良好的泛化性能。
多任务学习和元学习的主要区别?
主要的不同之处在于,在元学习中,是在给定以前的经验尝试更快或更熟练地解决新任务;而在多任务学习中,会得到一个集合的任务, 目的是同时做好所有这些任务 。
元学习和多任务学习是有联系的。解决元学习问题的一种方法可以是只接受这个新任务并将其添加到之前拥有的任务数据中,然后应用多任务学习算法。
通常情况,元学习中有点不同的是,我们对先前的任务进行训练之后,我们重新访问所有这些数据和经验,而是尝试将学到的知识应用到一项新任务中, 本质上是将所有这些以前的经验编译成一个模型或一组参数,然后在学习新任务时使用该编译的经验。