吴恩达机器学习笔记-引言

  • 引言

日常生活中的机器学习算法使用,例如:使用谷歌或必应进行搜索,谷歌和微软使用良好的学习算法排序网页;使用脸书或苹果,其中的图片分类程序可以认识你朋友的照片;电子邮箱使用时,电子邮件垃圾邮件筛选器可以过滤大量的垃圾邮件。许多AI研究者认为,实现做出一个和人类一样聪明的机器的这个目标最好的方法是通过让机器试着模仿人的大脑学习。

智能的机器,即机器可以做很多有趣的事情,如web搜索、照片标记、反垃圾邮件。我们发现,唯一方法是让机器自己学习怎么来解决问题。关于一些机器学习的案例,数据库挖掘,随着海量数据的产生,机器学习被用于挖掘海量数据中有价值的东西。大量的硅谷公司正在收集网页的单击数据,也称为点击流数据,并使用机器学习算法来分析数据,为用户提供更好的服务;随着自动化的出现,我们可以学习医院的电子医疗记录,挖掘一下有用的隐秘信息,更好地理解疾病;在计算生物学方面,生物学家们收集到了大量基因数据序列、DNA序列等等,机器学习算法让我们更好地了解人类基因组;在无人直升机领域,不可能写一段程序让直升机自己飞,唯一的方法就是让计算机自己学习如何驾驶直升机;基于手写识别的应用,可以通过学习读懂你信封,自动选择路径,把这封信寄到数千英里外;此外自然语言处理或计算机视觉,这些语言理解或图像理解都是属于AI领域。大部分的自然语言处理和大部分的计算机视觉,都应用了机器学习;学习算法还广泛用于自定制程序,应用软件会给出一些其他电影或产品或音乐的建议,这是一种学习算法。软件给出个性化推荐的唯一方法是通过学习你的行为,来为你推荐。

  • 什么是机器学习

第一个机器学习的定义来自于Arthur Samuel。他定义机器学习是在进行特定编程的情况下,给予计算机学习能力的领域。Samuel的定义可以回溯到50年代,他编写了一个西洋棋程序。这程序神奇之处在于,编程者自己并不是个下棋高手,通过编程,让西洋棋程序自己跟自己下了上万盘棋。通过观察哪种布局会赢,哪种布局会输,久而久之,这西洋棋程序明白了什么是好的布局,什么样是坏的布局。程序通过学习后,玩西洋棋的水平超过了Samuel。通过大量这些练习,计算机获得无比丰富的经验,于是渐渐成为了比Samuel更厉害的西洋棋手。另一个年代近一点的定义,由卡内基梅隆大学Tom Mitchell提出,Tom定义的机器学习是,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。经验E就是程序上万次的自我练习的经验而任务T就是下棋。性能度量值P就是它在与一些新的对手比赛时,赢得比赛的概率。

目前存在几种不同类型的学习算法。主要的两种类型被我们称之为监督学习和无监督学习。监督学习是指在监督者存在的情况下,教计算机如何去完成任务,而在无监督学习中,让它自己进行学习。学习算法最常用两个类型就是监督学习、无监督学习。

  • 监督学习 

用一个例子介绍什么是监督学习。如下图横轴表示房子的面积,单位是平方英尺,纵轴表示房价,单位是千美元。那基于这组数据,假如有一套750平方英尺房子,现在把房子卖掉,预测一下房价。

                                                           吴恩达机器学习笔记-引言_第1张图片

我们应用学习算法,可以拟合一条直线,根据这条线我们可以推测出,或者我们不用直线拟合这些数据,用二次方程去拟合可能效果会更好。根据二次方程的曲线,我们可以从这个点推测出房价。稍后将讨论如何选择学习算法,如何决定用直线还是二次方程来拟合。以上就是监督学习的例子。可以看出,监督学习指的就是我们给学习算法一个的数据集,这个数据集由“正确答案”组成。在房价的例子中,我们给定数据集中每个样本的实际的售价,然后运用学习算法,算出更多的正确答案用术语来讲,这叫做回归问题。回归这个词的意思是,我们在试着推测出这一系列连续值属性。我们试着推测出一个连续值的结果,即通过拟合,可以预测后面很多房子的价格。

另外一个监督学习的例子。假设说你想通过查看病历来推测乳腺癌良性与否。

                                                       吴恩达机器学习笔记-引言_第2张图片

如图,横轴表示肿瘤的大小,纵轴上1和0表示是或者不是恶性肿瘤。如果是恶性则记为1,不是恶性,或者说良性记为0。在0的位置上有5个良性肿瘤样本,在1的位置有5个恶性肿瘤样本。假设给出肿瘤的大小,那么机器学习的问题就在于,你能否估算出肿瘤是恶性的或是良性的概率。用术语来讲,这是一个分类问题。分类指的是,我们试着推测出离散的输出值:0或1良性或恶性,而事实上在分类问题中,输出可能不止两个值。比如说可能有三种乳腺癌,所以你希望预测离散输出0、1、2、3。0 代表良性,1 表示第1类乳腺癌,2表示第2类癌症,3表示第3类,但这也是分类问题,叫多分类问题。现在我用不同的符号来表示这些数据。负样本和正样本现在我们不全部画X,良性的肿瘤改成用O表示,恶性的继续用X表示。来预测肿瘤的恶性与否。

在其它一些机器学习问题中,可能会遇到不止一种特征。举个例子,我们不仅知道肿瘤的尺寸,还知道对应患者的年龄。在其他机器学习问题中,我们通常有更多的特征,学习算法算法不仅能处理2种3种或5种特征,即使有无限多种特征都可以处理。下图,列举了总共5种不同的特征,坐标轴上的两种和右边的3种,但是在一些学习问题中,你想用无限多种特征,好让你的算法可以利用大量的特征来做推测。那你怎么处理无限多个特征,甚至怎么存储这些特征都存在问题,你电脑的内存肯定不够用。我们以后会讲一个算法,叫支持向量机,里面有一个巧妙的数学技巧,能让计算机处理无限多个特征。

                                                              吴恩达机器学习笔记-引言_第3张图片 

监督学习的基本思想是,我们数据集中的每个样本都有相应的“正确答案”。再根据这些样本作出预测,就像房子和肿瘤的例子中做的那样。还介绍了回归问题,即通过回归来推出一个连续的输出,最后我们介绍了分类问题,其目标是推出一组离散的结果。

  • 无监督学习 

对于监督学习,这个数据集中每条数据都已经有了标签,即是良性或恶性肿瘤。所以,对于监督学习里的每条数据,我们已经清楚地知道,训练集对应的正确答案,是良性或恶性了。在无监督学习中,不同于监督学习的数据的样子,即无监督学习中或者是有相同的标签或者就是没标签,就是一个数据集在哪。针对数据集,无监督学习算法会把这些数据分成不同的簇。所以叫做聚类算法。聚类应用的一个例子就是在谷歌新闻中。谷歌新闻每天都在,收集非常多,非常多的网络的新闻内容。它再将这些新闻分组,组成有关联的新闻。所以谷歌新闻做的就是搜索非常多的新闻事件,自动地把同一主题的新闻聚类到一起。

                               吴恩达机器学习笔记-引言_第4张图片

如上图。一个DNA微观数据的例子。基本思想是输入一组不同个体,对其中的每个个体,你要分析出它们是否有一个特定的基因。技术上,你要分析多少特定基因已经表达。所以这些颜色,红,绿,灰等等颜色,这些颜色展示了相应的程度,即不同的个体是否有着一个特定的基因。你能做的就是运行一个聚类算法,把个体聚类到不同类型的人。

无监督学习,就是有一堆数据,要能自动地找到数据中的结构。就是说你要自动地聚类那些个体到各个类,我没法提前知道有哪些不同的类型,这些类型又是什么。无监督学习或聚类有着大量的应用。它用于组织大型计算机集群,解决什么样的机器易于协同地工作,让你的数据中心工作得更高效。第二种应用就是社交网络的分析,即自动地给出朋友的分组,每组里的人们彼此都熟识。还有市场分割,使用许多公司拥有所有的顾客数据,自动地发现市场分类,并自动地把顾客划分到不同的细分市场中,你才能自动并更有效地销售或不同的细分市场一起进行销售。我们没有提前知道是什么的细分市场,以及分别有哪些我们数据集中的顾客。我们让算法从数据中发现这一切。最后,无监督学习也可用于天文数据分析,这些聚类算法给出了令人惊讶、有趣、有用的理论,解释了星系是如何诞生的。这些都是聚类的例子,聚类只是无监督学习中的一种。

另一个无监督学习的例子,如下图我们放两个麦克风在房间中,因为这些麦克风在两个地方,离说话人的距离不同每个麦克风记录下不同的声音,两份录音被叠加到一起。无监督学习算法会区分出两个音频资源。

                                                              吴恩达机器学习笔记-引言_第5张图片

为了构建这个应用,完成这个音频处理似乎需要你去写大量的代码或链接到一堆的合成器JAVA库,处理音频的库,看上去绝对是个复杂的程序,去完成这个从音频中分离出音频。事实上,这个算法可以在octave就用一行代码来完成。

                   [W,s,v] = svd((revepmat(sum(x.*x,1),size(x,1),1).*x)*x');

Octave是免费的开源软件,使用一个像Octave或Matlab的工具,许多学习算法变得只有几行代码就可实现。在硅谷里,对大量机器学习算法,我们第一步就是建原型,在Octave建软件原型,因为软件在Octave中可以快速地实现这些学习算法。比如支持向量机(SVM)函数和奇异值分解,Octave里已经建好了。使用一种工具像Octave来做第一步的学习算法的原型搭建,在顺利工作后,才移植它到C++或Java或别的语言。这样做通常可以让你的算法运行得比直接用C++实现更快。

总结一下,我们介绍了无监督学习,它是学习策略,交给算法大量的数据,并让算法为我们从数据中找出某种结构。

你可能感兴趣的:(大数据与人工智能,Android)