李宏毅《机器学习》大纲
李宏毅《机器学习》大纲
主要是学习台湾大学李宏毅2017版《机器学习》课程的学习笔记
| 课程 | 文档&视频 | 文档视频更新时间 | 博客 | | :--- | :---: | :---: | :---: | | Introduction of this course | pdf,pptx | (2017/02/23) | | | Regression
|pdf,pptx,video | (2017/03/02) | | | Where does the error come from? | pdf,pptx,video | (2017/03/02, recorded at 2016/10/07) | | Gradient
Descent | pdf,pptx,video | (2017/03/09, recorded at 2016/10/07) | Classification: Probabilistic Generative Model | pdf, pptx, video | (2017/03/16,
recorded at 2016/10/07) | | | Classification: Logistic Regression | pdf, pptx, video | (2017/03/23, part of the video recorded at 2016/10/14) | | |
Introduction of Deep Learning | pdf, pptx, video | (2017/03/23, recorded at 2016/10/14) | | | Backpropagation | pdf, pptx, video | (2017/03/23) | | |
“Hello world” of Deep Learning | pdf, pptx, video | (2017/03/23) | | | Tips for Deep Learning | pdf, pptx, video | (2017/03/30) | | | Convolutional
Neural Network | pdf, pptx, video | (2017/04/06) | | | Why Deep? | pdf, pptx, video | (2017/04/06, recorded at 2016/11/04) | | | Semi-supervised
Learning | pdf, pptx, video | (2017/04/13, recorded at 2016/11/11) | | | Unsupervised Learning: Principle Component Analysis | pdf, pptx, video |
(2017/04/13, recorded at 2016/11/11) | | | Unsupervised Learning: Neighbor Embedding | pdf, pptx, video | (2017/04/20) | | | Unsupervised
Learning: Deep Auto-encoder | pdf, pptx, video | (2017/04/20) | | | Unsupervised Learning: Word Embedding | pdf, pptx, video | (2017/04/27) | | |
Unsupervised Learning: Deep Generative Model | pdf, pptx, video | (2017/04/27) | | | Transfer Learning | pdf, pptx, video | (2017/05/03) | | |
Recurrent Neural Network | pdf, pptx, video (part 1), video (part 2) | (recorded at 2016/12/30) | | | Matrix Factorization | pdf, pptx, video |
(2017/05/25) | | | Ensemble | pdf, pptx, video | (2017/05/25) | | | Introduction of Structured Learning | pdf, pptx, video (part 1), video (part 1) |
(2017/06/01) | | | Introduction of Reinforcement Learning | pdf, pptx, video | (2017/06/15) ||
以上链接都是转至 台湾大学的官网
视频内容也可以去bilibili上面看 李宏毅机器学习(2017)
目录
P1 机器学习介绍
P2 为什么要学习机器学习
P3 回归
P4 回归-演示
P5 误差从哪来?
P6 梯度下降
P7 梯度下降(用AOE演示)
P8 梯度下降(用Minecraft演示)
P9 作业1-PM2.5预测
P10 概率分类模型
P11 logistic回归
P12 作业2-赢家还是输家
P13 深度学习简介
P14 反向传播
P15 深度学习初试
P16 Keras2.0
P17 Keras演示
P18 深度学习技巧
P19 Keras演示2
P20 Tensorflow 实现 Fizz Buzz
P21 卷积神经网络
P22 为什么要“深度”学习?
P23 半监督学习
P24 无监督学习-线性降维
P25 无监督学习-词嵌入
P26 无监督学习-领域嵌入
P27 无监督学习-深度自编码器
P28 无监督学习-深度生成模型I
P29 无监督学习-深度生成模型II
P30 迁移学习
P31 支持向量机
P32 结构化学习-介绍
P33 结构化学习-线性模型
P34 结构化学习-结构化支持向量机
P35 结构化学习-序列标注
P36 循环神经网络I
P37 循环神经网络II
P38 集成学习
P39 深度强化学习浅析
P40 机器学习的下一步
机器学习介绍
机器学习介绍
这门课,我们预期可以学到什么呢?我想多数同学的心理预期就是你可以学到一个很潮的人工智慧。我们知道,从今年开始,人工智慧这个词突然变
得非常非常非常的热门,讲大家、政府通都在讲人工智慧这个词。
但人工智慧是什么呢?人工智慧其实一点都不是新的词,人工智慧这个词、AI这个词、Artificial Intelligence这个词,在1950年代就有了。那这个词意
味着什么呢?这个词意味着一个人类长久以来的目标,希望机器可以跟人一样的聪明,那在科幻小说里面,我们看要很多这样的幻想和期待。但很长
段时间里面,人们并不知道怎么做到人工智慧这件事情,直到后来,大概1980年代以后,有了机器学习的方法。那么机器学习顾名思义,从名字就可
以被猜出,就是让机器具有学习的能力。所以机器学习跟人工智慧,他们之间什么关系呢?
人工智慧是我们想要达成的目标,而机器学习是想要达成目标的手段,希望机器通过学习方式,他跟人一样聪明。而深度学习和机器学习有什么关系
呢?深度学习就是机器学习的其中一种方法。
在有深度学习、机器学习之前,人们用什么样的方式来做到人工智慧这件事呢?我记得高中生物学告诉我们说,生物的行为取决于两件事,一个是后
天学习的结果,不是后天学习的结果,就是先天的本能。对于机器来说也是一样,他怎么样表现的有智慧,要么就是通过后天学习的手段表现的很有
智慧,要么就是他的先天的本能。机器为什么会有先天的本能,那可能就是他的创造者,其实都是人类,帮他事先设立好的。
那么先来看一下生物的本能,讲一个跟机器学习一点都没有关系的,生物的本能。这个是河狸,那河狸的特色呢,就是他会筑水坝把水挡起来。但是
河狸怎么知道要筑水坝呢?河狸筑水坝能力是天生的。也就是说,假设河狸他在实验室出生,他没有父母叫他怎么筑水坝。但是他一生下来,他心里
就有个冲动,就是他想要筑水坝。那如果我们要程序语言来描述他的话,他那的程序语言就是这样的:
If 他听到流水声
Then 他就筑水坝直到他听不到流水声。
所以呢,生物学家就可以欺负河狸,他就用一个扬声器来播放流水声啊,如果他把扬声器流放在水泥墙里面,然后河狸就会在水泥墙上面的放很多的
树枝,在水泥墙上面筑堤,想把扬声器的声音盖住。如果你把扬声器放在地上,河狸就会用树枝把他盖住直到你听不见扬声器的声音为止。这就是生
物的本能,那机器的本能跟生物的本能其实也很像。
假设有一天,你想要作一个chat-bot、如果你不是用机器学习的方式,而是给他天生的本能的话,那像是什么样子呢?你可能就会在这个chat-bot里
面,在这个聊天机器人里面的设定一些规则。这些规则我们通常称hand-crafted rules,叫做人设定的规则。那假设你今天要设计一个机器人,他可以
帮你打开或关掉音乐的话,那你的做法可能是这样,设立一条规则,就是写方程式,如果输入的句子里面看到turn off这个词汇,那chat-bot要做的事情
呢,就是把音乐关掉。这个时候呢,你之后对chat-bot说,please turn off the music 或can you turn off the music, please? 他就会帮你把音乐关掉。
看起来好像很聪明。人家就会觉得果然这就是人工智慧。但是如果你今天想要欺负chat-bot的话,你就可以说please don‘t turn off the music,但是他
还是会把音乐关掉。这是个真实的例子,你可以看看你身边有没有这种类似的chat-bot,然后你去真的对他说这种故意欺负他的话,他其实是会答错
的。这是真实的例子,但是不告诉他是哪家公司产品,这家公司也是号称他们做很多AI的东西的。不要让你发现是哪家产品免得被告。
用hand-crafted rules有什么样的坏处呢,他的坏处就是,你没办法,考虑到所有的可能性,他非常的僵化,而用hand-crafted rules创造出来的
machine,他永远没有办法超过创造他的人类。人类想不到东西,就没办法写规则,没有写规则,机器就不知道要怎么办。所以如果一个机器,他只能
够按照人类所设定好的hand-crafted rules,他就他这个行为都是被规定的,都没有办法freestyle。如果是这样的话,他就没有办法超越创造他的人
类。
那你可能会说,但是你好像看到很多chat-bot看起来非常的聪明,这些chat-bot,如果你是有个是一个非常大的企业,他给以派给成千上万的工程师,
他用血汗的方式来建出数以万计的规则,然后让他的机器看起来好像很聪明。但是对于中小企业来说,这样建规则的方式反而是不利的。所以我认为
机器学习发展,对比较小规模企业反而是更有利的,因为接下,不需要非常大量的人来帮你想各式各样的规则。只要手上有data,你可以机器来帮你
做这件事情,当然怎么收集data又是另外一个问题。
这不是我们今天要讨论的主题,那我知道说,因为AI这个词现在非常非常非常非常的热门,所以会有各式各样,奇奇怪怪的东西,我觉得现在非常经常
碰到的一个问题,也许可用以下这个漫画来说明,这是个四格漫画,而这个漫画并不是随随便便的一个四格漫画。
这个漫画是facebook上的漫画,这个漫画说的是,现在你一定常常新闻或者是商场上看到这个讯息,有一个seller说看看我们最新的人工智慧机器人,
他就是非常的人工智慧。这个系统搭配一个能言善道seller,加上一个非常非常潮的前端和外壳,里面是什么没有人知道,外面的观众就问说,他是用
什么neural做的?反正就是最好的AI的技术。但是你把他剖来看一看,里面通通都是if掉出来。现在我政府,企业都说想要推广的AI,可是他们想要推
广AI其实是这种AI。那这个其实都不是我们现在应该做的事,如果你要推动,如果你要推广的是这种hand craft AI的话,你怎么五十年前不推广,一直
到今天才出来做呢?今天,我们要走的不是目前这个路线,如果是这个路线他应该是要被diss,那我们要做的其实是让机器他有自己学习的能力。也就
我们要做的应该machine learning的方向。讲的比较拟人化一点,所谓machine learning的方向,非常拟人化的想法,你就写个方程式,然后让机器人
变得了很聪明,他就能够有学习的能力,接下来呢,你就像教一个婴儿、教一个小孩一样的教他。你并不是写方程式让他做到这件事,你就写方程式
让他具有学习的能力,然后接下来呢,你就可以用像教小孩的方式,教他告诉他说。假设你要叫他学会做语音辨识,你就告诉他这段声音就是Hi,这段
声音就是How are you,有这段声音就是Good bye,希望接下他就学会了。你给他一个新的声音,他就可以帮你产生语音辨识的结果。
或者是如果你希望他学会怎么做影像辨识的话,那你可能不太需要改太多的方程式。因为他本身就有这种学习的能力,你只是需要交换,就告诉他
说,我看到这张图片,你要说这是猴子;看到这张图片,然后说是猫;看到这张图片,可以说是狗。他是要具有影像辨识的能力,接下来看到他没有
看过猫,希望他可以认识。
这是比较拟人化的说法,如果讲的更务实一点的话呢,machine learning做的事情,你可以想成就是在寻找一个function,要让机器具有一个能力,这
种能力是根据你提供给他的资料,他去寻找出我们要寻找的function。还有很多关键问题都可以想成是我们就是需要一个function。举例来说,语音辨
识,在语音辨识这个问题里面,我们要找一个function,他的输入声音讯号,他的输出是语音辨识的文字。这个function非常非常的复杂,有人会想说
我来用一些写规则的方式,读很多语言学文献,然后写一个规则,然后做语音辨识。这件事情,60年代就有人做,但到现在都还没有做出来。语音辨
识太过复杂,这个function太过的复杂,不是人类所可以写出来,可以想象的,所以我们需要凭借的机器的力量,帮我们把这个function找出来。那或
者说,假设你要做影像辨识,那就是找一个function,输入一张图片,然后输出图片里面有什么样的东西。或者是大家都一直在说的Alpha GO,如果
你要做一个可以下围棋machine,其实你需要的也就是找一个function,这个function,输入围棋上19*19的棋盘。告诉机器棋盘上,哪些位置有黑子,
哪些位置有白子。然后机器就会告诉你,接下来下一步应该落子在哪。或者是你要做一个聊天机器人,那你需要的是一个function,这个function的输
入,就是使用者的input,他的输出,就是机器的回应。