以下内容作为李宏毅老师机器学习课程的笔记。
李宏毅老师主页
课程主页
Introduction of Machine Learning
本文目录:
AI ML DL的关系
首先介绍了人工智能(Artificial Intelligence)、机器学习(Machine Learning)和深度学习(Deep Learning)之间的关系:
自计算机诞生以来,人工智能一直是计算机科学家们追逐的目标,如何创造出有”智慧的机器”,这个问题一直吸引着科学家们。人工智能的概念在1950’年代就已经被提出来了,早期的人工智能是通过编写规则等手段来实现(这些规则就是人类设定好的机器的天生本能),直到80年代提出了机器学习的方法,从这开始实现人工智能的主要手段从编写规则转变为基于统计的机器学习。而2010’开始火起来的深度学习只是机器学习中的一种方法,并且这种深度学习的方法早就已经出现过很多年了,基于以下几种原因在最近才火起来:
- 计算能力的增强 (GPU加速计算)
- 数据规模的急剧增长
- 深度学习算法的不断创新
总结一下:人工智能是我们追求的目标,机器学习则是目前用来实现这个目标的手段,而深度学习只是机器学习中的一种方法。
基于规则的人工智能
下面介绍了早期实现人工智能的方法的一个例子—基于规则的聊天机器人:
工程师编写规则:当对方的输入中含有”turn off”的时候,聊天机器人你就关掉音乐。
这时候如果你给机器人发送”Please turn off the music” 或者 “Can you turn off the music”,这时候你就能够得到机器人合乎你心意的响应—关掉音乐。
如果你给机器人发送”Please don’t turn off the music”,这时候你就不能够得到机器人合乎你心意的响应了。
当然这只是一个简单的例子,聊天机器人系统中含有的规则比较少,如果编写的规则足够多,也许能够满足你的大多数要求。
从上面我们也可以看到这种实现人工智能的手段的缺点:
- 我们永远不可能考虑到所有的可能情况,将这些可能情况编写成规则
- 编写的规则越多,需要的人力资源也越多,因此不适合小工厂。
接着讲了一个笑话:
高大上的各种人工智能科技产品底下却是一堆的 ‘if’…
机器学习
前面说的是基于规则的人工智能,下面说一下什么是机器学习?
机器学习,顾名思义就是让机器具有学习能力。如下面两幅图所示:
给机器一些音频的数据,在这些已知的数据中,机器知道了有这个音频输入,那么我就输出”Hi”;有那个音频输入,那么我就输出”How are you”;…
机器从这些已知的音频数据经过学习后,当你给机器输入一段未知的音频后,我们希望机器能够输出我们预期的结果。
给机器一些图像的数据,在这些已知的数据中,机器知道了有这个图像输入,那么我就输出”monkey”;有那个图像输入,那么我就输出”cat”;…
机器从这些已知的图像数据经过学习后,当你给机器输入一段未知的图像后,我们希望机器能够输出我们预期的结果。
从上面的描述中,我们发现这个机器学习的过程就像是找一个函数的过程,从给定的数据中利用某些方法找到一个函数,然后将这个函数应用到其他输入,给出输出结果。
这就是机器学习,与早期基于规则的人工智能相比:
- 早期的人工智能规则是人来写的
- 机器学习时代的人工智能”规则”是机器自己学习的
机器学习就是给定计算机一些数据,计算机利用统计学习的方法对这些数据进行建模,然后利用得到的模型对其他的数据进行分析和预测。
机器学习的框架(Framework)
上面简单介绍了什么是机器学习,下面介绍机器学习的框架。
机器学习分三步:
第一步,确定一个函数的集合(可能有成千上万个,甚至无限多个) f1f2…… f 1 f 2 … … ,这里面的每一个函数都能够对一个输入做出相应的输出,如下图,在图像识别中:
第二步,确定一个评价函数集合中每个函数”好坏”的准则,这样就可以从训练数据(Training Data)中去评价每一个函数的好坏。
第三步,运用某种机器学习算法,从函数集合中挑出按照第二步的评价准则最好的函数。由于对函数集合中每一个函数进行好坏评定太费时间,对于无限个函数也无法去全部评定,所以我们使用某种算法去挑选。
最后使用我们机器学习学到的函数 f∗ f ∗ 去进行测试。
上图将整个过程分为了Training和Testing两部分。
如此看来,机器学习如此简单……
学习地图(Learning map)
总览一下学习地图:
supervised learning
回归问题(Regression)
首先看地图的Regression部分,回归问题是指我们从Training Data中学习到的function f f ,对于某一输入,它的输出是一个标量(scalar),也就是数值。
- 分类问题(Classification)
再看Classification,分类问题分为两种: Binary Classification and Multi-class Classification, 即二分类和多分类问题。
二分类问题是指我们从Training Data中学习到的function ,对于某一输入,它的输出是{-1, 1}两个离散值;多分类问题是指我们从Training Data中学习到的function
f
f
,对于某一输入,它的输出是{1, 2, 3,……N}这N个离散值。
二分类问题:垃圾邮件过滤,从一堆已经分好垃圾邮件与非垃圾邮件的训练数据中学习到function , 对于其他的邮件输入, f f 就能输出是否是垃圾邮件。
多分类问题:文档分类,从一堆对文档已经分好类的训练数据中学习到function , 对于其他一篇文档输入, f f 就能输出该文档的所属类别。
做一下总结:
分析一下上面我们谈到的回归问题,二分类问题和多分类问题,在回归问题,训练数据中,每个输入的内容(某两天的PM2.5值)都有相应的输出(明天的PM2.5值)与之对应;在二分类问题,训练数据中,每个输入的内容(一封邮件)都有相应的输出(是否是垃圾邮件);在多分类问题,训练数据中,每个输入的内容(一篇文章)都有相应的输出(文章的分类)。
输入值我们称为feature,而输出值我们称为label。
训练样本中,每一个feature都有相应的label与之相对应,这种学习称为监督学习(supervised learning).
semi-supervised learning
收集大量的含有label的数据是很困难的,所以出现了半监督学习。
训练数据中既包含有label的数据,也包含没有label的数据,但这些没有label的数据都可以归为某一已知的label。如上图,我们的任务是识别cat和dog, 训练数据中有已经labelled的数据cat dog,但那些unlabeled的数据也只能是cat 或 dog
transfer learning
半监督学习也有一些限制,训练集中没有label的数据还只能归为某一已知的label。而迁移学习(Transfer Learning)就没有这种限制了。
训练数据中可以包含与含有labell的数据无关的数据,如上图,我们的任务是识别cat和dog,但训练数据中可以包含的label甚至不只是cat和dog,例如elephant和Haruhi,而且unlabeled的数据可以不是cat 或 dog.
比较一下半监督学习和迁移学习,识别cat和dog的例子:
半监督学习的训练数据中,只能包含cat和dog,只是一些数据有label,一些数据没有label
迁移学习的训练数据中,不止包含cat和dog,有label的也不止cat和dog,没有label的也不止是cat和dog
unsupervised learning
训练数据中没有label.
- 机器阅读(Machine Reading)
如下图,机器阅读,给机器输入大量的文本数据,经过学习之后,向机器学习到的函数 输入apple,能够得到apple的描述(不一定准确).
- 机器绘画(Machine Drawing)
如下图,机器绘画,给机器输入大量的图片数据,经过学习之后,向机器学习到的函数 f f <script type="math/tex" id="MathJax-Element-22">f</script> 输入code描述,能够得到机器的绘画作品(乱七八糟的玩意).
reinforcement learning
强化学习是一种更符合人类学习过程的学习方式。
与监督学习进行比较,监督学习在训练一个聊天机器人的时候,它会从训练数据中学到,如果输入”hello”,那么我就输出”Hi”,像是有个老师在教它一样;而在强化学习中,聊天机器人自己和用户交流,如果用户比较满意,它就只知道这样聊天比较好,如果用户不满意,它就只知道这样聊天不好,它学习到的只是一种好坏程度。
Alpha Go就是一种监督学习+强化学习, 先是通过监督学习从棋谱中学习,然后通过强化学习与自己学习。