李宏毅 Machine Learning 2019
哇,听闻李宏毅的Machine Learning好久了,这次终于改掉拖延症去听了,我的笔记本用完了,干脆就一并电子存档记录吧,还可以稍微回顾加强一下记忆。
B站地址:https://www.bilibili.com/video/av46561029?p=1
我想说
第一篇主要就是在讲Machine Learning在接下来的发展会如何。我没有听过之前的比如2017的课,不知道是不是也是结合Machine Learning目前的发展然后再引入基础的内容。听的感觉好像这个课的前置课程是有Deep Learning 基础的,因为第一节的时候有提到神经网络中softmax的层这些知识直接拿过来用的。反正和传统从Naive Bayes Classifier开始讲的Machine Learning是不一样的。在第一节课的时候直接提到了Machine Learning目前面临的问题有哪些,可能是个Advanced之类的课程?但是也提到了二分类以及ROC的定义,所以我现在还没弄清这个课的套路,但是讲得比较清晰。个人想法,作为记录。
Intro
这节课就是提到了这门课Machine Learning将会讲到的一些问题:
1 Machine 是否可以知道 “我不知道”?
在通常的对于机器,不管是传统的机器学习还是大规模的神经网络学习的时候,我们对于模型的训练一般是给出标定好的训练集,比如说 我想训练一个模型帮助我识别一张图片是猫还是狗。那么我的训练集这个时候就是一系列猫的图片伴随着“猫”的label,然后有一系列狗的图片伴随着“狗” 的label。这样训练出来的模型,在我们给他一个新的图片的时候,就可以帮我们判断是 “猫” 还是 “狗” 了。
但有一个问题是,现实世界总是奇怪而又复杂的,我们收集训练数据总是有限,就拿这个猫狗识别器为例,如果我就不给你 猫或者狗的图片,反而给你一个企鹅的图片,你的模型有可以告诉我“我不知道这图片上是什么东西”的能力吗?如何才能交给Machine 他识别不知道事物的能力呢? 还是强行将企鹅划分为猫或者狗呢?
2 Machine 是否可以知道 “我为什么不知道”?
这部分将会说明如何让机器知道 “我不知道” 给出的测试图片是什么的原因
3 机器的错觉
我们在训练模型,比如说神经网络的时候,往往并不知道你的神经网络究竟是根据图片的哪个特征得出的结论。比如说,我想训练一个识别“马” 的网络,就从同一个网站上下载了大量的图片,作为训练识别 ”马“ 网络的训练数据。训练好了之后,利用同一个网站上的图片,我还是可以轻易的识别出 哪张图片上有🐴, 哪张图片上没有🐴。但如果换了网站下载 马的图片,便识别不出了。后来发现是因为同一个网站下载的图片都有一个相同的水印表示,训练好的网络并不是学习了马的特征,而是学习了水印的特征。所以 机器错以为水印的特征就是马的特征。
再一个例子,我们训练好的熊猫的分类器,可能在新输入的熊猫的图片上改动一个像素,分类的结果就会发生剧烈的变化。我们称这种改动一小部分就能把训练好的模型攻击到无法正常工作的行为 为: Adversarial Attack。这种技术很危险,比如说在自动驾驶的时候,如果识别的图片被恶意修改,那么汽车将无法判断需不需要停车,或造成错误判断。这部分也会讲到 如何避免 Adversarial Attack.
4 终身学习
人都是会终身学习的,不断学习新的知识,获得新的能力。但对于机器而言,目前我们的策略是对于一项特定的任务,学习一个新的模型。这样会造成一些局限:1. 具有多种能力的机器就需要储存多个不同的模型,在用尽储存空间后就无法学习新的任务;2. 已经训练好的模型也无法帮助机器学习新的任务,无法发挥自身已经学习过的经验;3. 如果对同一个模型先进行任务A再进行任务B的训练,那模型可能在训练完成任务B之后便忘记任务A该如何实现,这被称作 Catastrophic Forgetting。这部分将会讨论机器如何进行终身学习
5 如何学习机器学习
现在说的机器学习的内容,都是我们人工搭建的结构以及给予的训练数据。那我们能不能训练一个模型,让他教机器如何学习呢?换言之,就是是否可以让机器 学习 机器学习?这部分的相关内容被称为 Meta-Learning
6 一定需要很多训练资料吗
这部分提出的问题很切实,如何在训练数据很少或是没有的情况下进行机器学习呢?
- Few-shot Learning
- Zero-shot Learning
7 强化学习
强化学习的概念被广泛应用,但是强化学习有一个缺点就是学习的很慢。那强化学习的时间为什么这么慢,有没有办法改进呢?
8 神经网络压缩
这部分将会涉及到对于神经网络压缩的讨论,也就是让神经网络不要占用太多的空间。
9 机器学习的谎言
这部分是在说,我们给机器的训练集和测试集真的需要有相同的结构吗?在一些情况加我们得到的测试集,或者是最终应用的场景中的测试集和之前的训练集不同时,机器是否还能保持很高的运行准确率呢? 这部分提到了 Unsupervised Domain Adaption
第一节主要就是讲了一些机器学习现在面临的挑战,第一部分的介绍说的比较清晰是因为我已经听了半节课辽。然后后面的部分的介绍也会在听完课后稍微更新一下,(就看我总结能力有没有提高了
下章见 :)