欢迎
欢迎来到这门关于机器学习的免费网络课程,机器学习是近年来最激动人心的技术之一,在这门课中,你不仅可以了解机器学习的原理,更有机会进行实践操作,并且亲自运用所学的算法。
每天你都可能在不知不觉中使用了各种各样的机器学习算法,比如,当你每一次使用像诸如Google或Bing的搜索引擎时,它们运作得如此之好的原因之一便是由Google或微软实现的一种学习算法可以“学会”如何对网页进行排名;每当你使用Facebook或Apple的照片处理应用时,它们都能自动识别出你朋友的照片,这也是机器学习的一种;每当你阅读电子邮件时,你的垃圾邮件过滤器帮你免受大量垃圾邮件的困扰,这也是通过一种学习算法实现的。还有一个让我兴奋的理由,是一个关于人工智能的梦想,有朝一日我们能创造出像你我一样聪明的机器,尽管我们离这个目标仍有很长的距离。许多的人工智能专家相信,实现这一目标最好的途径是通过学习算法,来模拟人类大脑的学习方式,关于这点我也会在这门课程中有所提及。在这门课中你将会掌握机器学习的前沿原理,但是如果你并不知道如何将所学的理论知识用到你的实际问题上时,仅仅了解其中的算法和数学是不够的,因此我们也将花费大量时间来让大家进行编程练习来帮助你实现所学的算法并体验到它们究竟是怎么运作的。
话说为什么机器学习在当今如此流行呢?
机器学习发源于人工智能领域,我们希望能够创造出具有智慧的机器,我们通过编程来让机器完成一些基础的工作,比如如何找到从A到B的最短路径,大多数情况下,我们并不知道如何显式地编写人工智能程序,来做一些更有趣的任务,比如网页搜索、标记照片和拦截垃圾邮件等,人们意识到唯一能够达成这些目标的方法就是让机器自己学会如何去做。机器学习已经发展成为计算机的一项新能力,并且与工业界和基础科学界有着紧密的联系。身处机器学习领域,我常常会在短短一周中与形形色色的人打交道,如直升机飞行员、生物学家、还有许多计算机系统专家,比如我在斯坦福的同事们,同时平均每周我还会数次收到来自硅谷的业界人士的email,咨询我是否有兴趣将机器学习算法应用到他们所遇到的实际问题中,这些例子都彰显了机器学习所能处理的问题范围之广。在硅谷,机器学习引导着大量的课题,如自主机器人、计算生物学等,机器学习的实例还有很,比如数据库挖掘。
机器学习变得如此流行的原因之一便是网络和自动化的爆炸性增长,这意味着我们掌握了比以往多得多的数据集,举例来说当今有数不胜数的硅谷企业,在收集有关网络点击的数据 (Clickstream Data) 并试图在这些数据上运用机器学习的算法来更好的理解和服务用户,这在硅谷已经成为了一项巨大的产业。我们现在拥有了电子医疗记录,如果我们能够将这些记录转变为医学知识,那我们就能对各种疾病了解的更深入,同时计算生物学也在电子自动化的辅助下快速发展,生物学家收集了大量有关基因序列以及DNA序列的数据,通过对其应用机器学习的算法来帮助我们跟深入地理解人类基因组及其对我们人类的意义,几乎工程界的所有领域都在使用机器学习算法来分析日益增长的海量数据集。
有些机器应用我们并不能够通过手工编程来实现,比如说我个人对自动直升机有着许多年的研究,想要写出一个能让直升机自主飞行的程序几乎是不可能的任务,唯一可行的解决方案就是让一台计算机能够自主地学会如何让直升机飞行,再比如手写识别,如今将大量的邮件按地址分类寄送到全美甚至全球的代价大大降低,其中重要的理由之一便是每当你写下这样一封信时,一个机器学习的算法 已经学会如何读懂你的笔迹并自动地,将你的信件发往它的目的地,所以邮寄跨越上万里的信件的费用也很低。你也许曾经接触过自然语言处理和计算机视觉,事实上这些领域都是试图通过人工智能来理解人类的语言和图像,如今大多数的自然语言处理和计算机视觉都是对机器学习的一种应用。机器学习算法也在用户自定制化程序(self-customizing program)中有着广泛的应用,每当你使用亚马逊、Netflix或iTunes Genius的服务时,都会收到它们为你量身推荐的电影或产品,这就是通过学习算法来实现的,可以相信这些应用都有着上千万的用户,而针对这些海量的用户编写千万个不同的程序显然是不可能的,唯一有效的解决方案就是开发出能够自我学习定制出符合你喜好的并据此进行推荐的软件。
最后 机器学习算法已经被应用于探究人类的学习方式并试图理解人类的大脑,我们也将会了解到研究者是如何运用机器学习的工具,来一步步实现人工智能的梦想。
就在几个月前我的一位学生给我看了一篇文章,文中列举了当今12个最主要的IT技能,这些技术可以让信息技术行业的招聘官无法拒绝你,虽然这是一篇略显老旧的文章,但所有技能中最重要的便是机器学习,在斯坦福向我咨询有没有即将毕业的研究机器学习学生的雇主远远多于我们这儿每年毕业的机器学习的学生,因而我觉得对机器学习这一技能的需求仍有着巨大的缺口,而现在正是学习它的绝佳机会,我希望你们能在这门课中收获良多。
在接下来的视频中,我将更正式地定义什么是机器学习,也会讨论机器学习主要面对的几类问题和相关算法,你也会学习一些主要的机器学习术语并对不同的算法和其适用的场景有初步的了解
【教育无边界字幕组】翻译:cheerzzh 校对:小白_远游 审核:所罗门捷列夫
机器学习是什么
机器学习是什么?在本视频中,我们会尝试着进行定义,同时 让你懂得何时会使用机器学习。实际上,即使是在机器学习的专业人士中,也不存在一个被广泛认可的定义来准确定义机器学习是什么或不是什么,现在我将告诉你一些人们尝试定义的示例。
第一个机器学习的定义来自于Arthur Samuel,他定义机器学习为,没有特定编程的情况下,给予计算机学习能力的领域。Samuel的定义可以回溯到50年代,他编写了一个西洋棋程序,这程序神奇之处在于,编程者自己并不是个下棋高手,因为他太菜了,于是就通过编程,让西洋棋程序自己跟自己下了上万盘棋。通过观察哪种布局(棋盘位置)会赢,哪种布局会输,久而久之,这西洋棋程序明白了什么是好的布局,什么样是坏的布局,然后就牛逼大发了,程序通过学习后, 玩西洋棋的水平超过了Samuel。这绝对是令人注目的成果,尽管编写者自己是个菜鸟,但因为计算机有着足够的耐心去下上万盘的棋,没有人有这耐心去下这么多盘棋。通过这些练习,计算机获得无比丰富的经验,于是渐渐成为了比Samuel更厉害的西洋棋手。上述是个有点不正式的定义,也比较古老。
另一个年代近一点的定义,由Tom Mitchell提出,来自卡内基梅隆大学,Tom定义的机器学习是个好的学习问题定义,他说, 一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理 T 时的性能有所提升。我认为他提出的这个定义就是为了压韵。在西洋棋那例子中,经验e就是 程序上万次的自我练习的经验 而任务t就是下棋,性能度量值p呢, 就是它在与一些新的对手比赛时,赢得比赛的概率。
在这些视频中,除了我教你的内容以外,我偶尔会问你一个问题,确保你对内容有所理解,这里有一个。顶部是Tom Mitchell的机器学习的定义,我们假设您的电子邮件程序会观察收到的邮件是否被你标记为垃圾邮件。在这种Email客户端中,你点击“垃圾邮件”按钮报告某些email为垃圾邮件,基于被标记为垃圾的邮件, 您的电子邮件程序能更好地学习如何过滤垃圾邮件。请问,在这个设定中,任务T是什么?几秒钟后,该视频将暂停。当它暂停时, 您可以使用鼠标,选择这四个单选按钮中的一个,让我知道这四个中你所认为正确的选项。[图片]希望你获得了正确的答案,给邮件分类是任务T,事实上,这个定义定义了任务T、性能度量P和一些经验E,因此,观察您将电子邮件标记为垃圾邮件还是非垃圾邮件是经验E,将电子邮件正确分类的分数是性能指标P,有了经验E后,性能指标P将得到提高。
目前存在几种不同类型的学习算法,本课中,我希望教你有关各种不同类型的学习算法,主要的两种类型被称之为监督学习和无监督学习。在接下来的几个视频中,我会给出这些术语的定义,这里简单说两句,监督学习是指,我们将教计算机如何去完成任务,而在无监督学习中,我们打算让它自己进行学习。如果对这两个术语仍一头雾水,请不要担心,在后面的两个视频中,我会具体介绍这两种学习算法, 此外你将听到诸如强化学习和推荐系统等各种术语,这些都是机器学习算法的一员,以后我们都将介绍到,但学习算法最常用两个类型就是监督学习、无监督学习。
我非常注重如何应用学习算法,实际上,就这些内容而言,我不知道还有哪所大学会介绍到。给你讲授学习算法,就好像给你一套工具,相比于提供工具,可能更重要的是教你如何使用这些工具。我喜欢把这比喻成学习当木匠。想象一下,某人教你如何成为一名木匠,说这是锤子,这是螺丝刀,锯子,祝你好运,再见。这种教法不好,你拥有这些工具,但更重要的是,你要学会如何恰当地使用这些工具。会用与不会用的人之间,存在着鸿沟。 尤其是知道如何使用这些机器学习算法的,与那些不知道 如何使用的人。
在硅谷我住的地方,当我走访不同的公司,即使是最顶尖的公司,很多时候我都看到 人们试图将机器学习算法应用于某些问题,他们甚至已经为此花了六个月之久。但当我看着,他们所忙碌的事情时,我想说我本来可以在六个月前就告诉他们,他们应该采取一种学习算法稍加修改进行使用,然后成功的机会绝对会高得多。在本课中,我们要花很多时间来探讨,如果你真的试图开发机器学习系统,选择哪种的类型来构建你的系统,这样做的话,当你运用学习算法时,就不太容易变成那些为寻找一个解决方案花费6个月之久的人们的中一员。 我会花很多时间来教你这些机器学习、人工智能的最佳实践以及如何让它们工作,我们该如何去做和硅谷和世界各地最优秀的人是怎样做的。我希望能帮你成为最优秀的人才,了解如何设计和构建机器学习和人工智能系统。
这就是机器学习,这些都是我希望讲授的主题。在下一个 视频里,我会定义什么是监督学习,什么是无监督学习。此外,探讨何时使用二者。
-补充材料
给出了机器学习的两个定义,Arthur Samuel将其描述为:“不需要明确编程就能给计算机学习能力的研究领域”,这是一个古老而非正式的定义。Tom Mitchell提供了一个更现代的定义:“计算机程序从经验E中学习,如果用P来度量它在任务T中的表现,那么P会随着经验E的提高而提高”
例子:跳棋。
E = 多次跳棋的经验
T = 跳棋的任务
P = 程序将赢得下一场比赛的概率
通常,任何机器学习的问题可以被分为两个大类之一: 监督学习 和 无监督学习
如何使用讨论论坛
点赞
当你进入你的课程讨论论坛,你将在每个帖子下面看到一个“赞”按钮,我们鼓励你给你觉得深刻、有趣或者有帮助的帖子点赞,这是确保其他课程学习者能看到优质帖子的最好的方法,这将增加重要问题得到回答和解决的可能性。
举报
Coursera严厉禁止以下行为:
1、欺凌或威胁其他用户
2、发布垃圾内容或广告
3、发布成人色情内容
4、发布作业解决方案(或者其他违反荣誉准则的)
请在每个帖子右边的菜单向下箭头里找到“报告”这个选项,举报任何侵权或者侮辱、冒犯他人或者其他方式违反Coursera荣誉准则的帖子。
关注
如果你对某个主题帖感兴趣,你可以点击在主题帖子下面的“关注”按钮,你将在任何时候都会受到新的帖子产生的电子邮件通知。
改进你的帖子
在课程讨论社区,你有机会跟世界各地成千上万的志同道合的人进行互动,在这课程里获得他们的注意是一个不错的方法,在任何社交中,某些行为准则是必须,这样有助于形成更愉快和富有成效的交流。在本课程,通过社区进行的互动,以下是一些提示,改编自AHA! 和Chuq Von Rospach & Gene Spafford制定的最初的指南:
1、在现有的论坛和主题帖子下继续讨论相关的话题,非话题的帖子让其他学习者很难找到他们需要的信息,在最适合的论坛下发帖,不要在多个论坛中发布同样的内容。
2、使用论坛页面顶部的过滤器(最新、置顶和未回答)来寻找活跃的、有趣的内容。
3、给有用的和有趣的帖子点赞
4、要有礼貌,如果你不赞同,你可以尊重他人,解释一下你的立场和观点,避免任何攻击性行为。
5、保持讨论的内容话题一致,不要在现有的主题帖子下改变话题,如需要可以发起新主题帖。
6、即使不是以英文为母语的人也要确保你自己能理解,尽量写完整的句子,避免使用缩写词或俚语。
7、如果问一个问题,要提供尽可能多的信息,包括你已经考虑过的,你已经读过的等等。
8、当使用其他人的观点想法语句的时候,要将适当参考在文章中表明引用出处。
9、不要用论坛推销你的产品、服务或业务。
10、通过邀请其他学习者扩展讨论来结帖。例如,你可以说“我想了解其他人的想法”。
11、不要在讨论区发布有关个人信息等其他的帖子。
12、举报垃圾邮件发送者。
要了解更多详情,请参阅Coursera论坛行为准则。
这些提示是根据最初由lllinois大学制定的指导方针改编的。
监督学习
在本视频中,我将介绍一种也许是最常见的机器学习问题。 即监督学习,后面将给出监督学习更正式的定义,现在最好以示例来说明什么是监督学习,之后再给出正式的定义。假设你想预测房价, 之前,某学生从某地收集了数据集,假设你绘制该数据集,看起来是这样的,横坐标即不同房子的面积,单位平方英尺,纵轴上是房价,单位千美元。 假设你朋友有栋750平方英尺大房子,想知道这房子能卖多少好卖掉。 那么,学习算法怎么帮你呢?学习算法可以:绘出一条直线,让直线尽可能匹配到所有数据。 基于此,看上去那个房子应该卖到15万美元。但这不是唯一的学习算法,可能还有更好的,比如不用直线了,可能平方函数会更好,即二次多项式更符合数据集。如果你这样做, 预测结果就应该是20万刀。后面我们会介绍到如何选择是选择直线还是平方函数来拟合。 没有明确的选择,就不知哪个能给你的朋友 更好的卖房建议。这些都是很好的学习算法例子,也是监督学习的例子。监督学习指给出一个算法部分数据集,其中已经有正确答案,比如给定房价数据集,对于里面每个数据,算法都知道对应的正确房价,即这房子实际卖出的价格,算法的任务就是算出更多的正确价格,比如那个你朋友想卖的新房子。
用更学术的来定义,监督学习又叫回归问题,意指要预测一个连续值的输出,即房价。虽然从技术上,一般把房价可以四舍五入,实际是个离散值,但通常我们把它看作实数,一个标量,一个连续值的数。回归意味着要预测连续值。
另一个监督学习的例子,我和一些朋友之前研究的领域,查看病例尝试预测乳腺肿瘤是恶性还是良性。恶性肿瘤有害又危险,良性肿瘤则是少害,显然人们很关注这个。让我们看一个收集好的数据集,假设在数据集中,横轴表示肿瘤的大小,纵轴我打算画上0或1,是或否,即肿瘤是恶性的还是良性的。所以如图所示,可以看到这个大小的肿瘤块是良性的,还有这些大小的都是良性的。不幸地是也看到一些恶性肿瘤,比如这些大小的肿瘤。有5个良性块,在这一块, 还有5个恶性的,它们纵轴值为1。现在假设某人得胸部肿瘤了,大小大概是这么大,对应的机器学习问题就是你能否估算出一个概率, 即肿瘤为恶或为良的概率。专业地说,这是个分类问题。分类就是要预测一个离散值输出,0或1,恶性或良性。事实证明,在分类问题中,输出的值可能超过两种。举个具体例子,胸部肿瘤可能有三种类型,所以要预测离散值0、1、2、3,0就是良性肿瘤,没有癌症,假设总共有三种癌症,1 表示1号癌症,2 是2号癌症,3 就是3号癌症。这同样是个分类问题,因为它的输出的离散值集合,分别对应于无癌,1号,2号,3号癌症。在分类问题中,还有另一种作图方式 来描述数据。用些许不同的符号集合来描绘数据。如果肿瘤大小作为唯一属性被用于预测恶性良性,可以使用不同的符号来表示良性和 恶性,即阴性和阳性,所以不再画十字坐标系, 改用圈圈来代表良性肿瘤,就像这样。 用叉叉代表恶性肿瘤。希望你能明白,我所做的就是,把在上面的数据映射下来,再用圈和叉来分别代表良性和恶性。
在上例中,只使用了一个特征属性,即肿瘤块大小,来预测肿瘤是恶性良性。在其它机器学习问题里,有着不只一个的特征和属性,例如现在不只是知道肿瘤大小,病人年龄和肿瘤大小都知道了,这种情况下, 数据集如表图所示,有些病人的年龄、肿瘤已知,不同的病人会有一点不一样,肿瘤恶性用叉来代表。假设有一朋友得了肿瘤,肿瘤大小和年龄落在此处。依据这个给定的数据集,学习算法画一条直线用分开恶性肿瘤和良性肿瘤,像这样,把两类肿瘤分开,然后你就能判断你朋友的肿瘤,如果它在那边,你朋友的肿瘤更可能是良性的。本例中总共有两个特征,即病人年龄和肿瘤大小。在别的ML问题中,经常会用到更多特征,我朋友研究这个问题时,通常使用这些特征:比如胸部肿瘤的厚度、肿瘤细胞大小和形状的一致性等等。由此我们看到学习算法最有趣的地方之一是能够处理不是3到5个这么少,而是无穷多个的特征。在这张幻灯片中,我已经列举了总共5个不同的特征,但对于某些机器学习,你真正想要的不只是三五个特征,而是无数多个特征、属性,这样才能让你的你的学习算法预测得更准确。那么,你如何处理无限多特征呢?你如何存储无数的东西进电脑里,又要避免内存不足? 我们会介绍一种叫Support Vector Machine的算法,一个简洁的数学方法让电脑可以处理无限多的特征。想像下,我不是这边写两个特征或三个特征,而是写一个无限长的特征表,不停地写特征,似乎是个无限长的特征的表,我们设计出一个算法来处理这个问题。
所以再从头复述一遍。本课中我们介绍监督学习。 其基本思想是,监督学习中对于数据集中的每个数据都有相应的正确答案,算法就是基于这些来做出预测,就像那个房价, 或肿瘤的性质。后面介绍了回归问题,通过回归来预测一个连续值输出,还谈到了分类问题,目标是预测离散值输出。
下面是个小测验题目:假设你有家公司,希望研究相应的学习算法去解决两个问题。第一个问题,假设你有一堆货物的清单,相信一下你有成千上万的货物,你想预测出,未来三个月能卖出多少货物。 第二个问题,你有很多用户,你打算写程序来检查每个用户的帐目,对每个用户的帐目,判断这个帐目是否被黑过。请问这两个问题是分类问题,还是回归问题?当视频暂停时,请用你的鼠标进行选择, 四选一,选择你认为正确的答案。 [图片]好,希望你刚才答对了。问题一是个回归问题,因为如果我有几千件货物,把它当作一个实数,一个连续的值,那么卖出的数量也是连续值。第二个问题是分类问题,把预测的值设为0来表示账目没有被hacked,设为1表示已经被hacked,就像乳腺肿瘤的例子,0表示良性,1表示恶性,所以这个值为0或1,取决于是否被hacked,因为算法能预测出是这两个离散值中的哪个,而且是少量的离散值,所以这个就是个分类问题。
这就是监督学习,下个视频将会介绍无监督学习,学习算法的另一主要类型。
-补充材料
在监督学习中,我们被给予数据集,并且已经知道了正确的输出应该是什么样子,认为输入和输出存在关系。
监督学习问题被归类为“回归”和“分类”问题,在回归问题中,我们试图预测连续输出中的结果,这意味着我们试图将输入变量映射到一个连续的函数,在分类问题中,我们尝试预测在离散输出中的结果,换句话来说,我们试图将输入变量映射成离散的类别。
例子1:给定房地产市场上房屋大小的数据,试着预测它们的价格,价格作为大小的函数是一个连续的输出,所以这是一个回归问题。我们试着输出房屋“卖价高于还是低于要价”,把这个例子改成了分类问题,这里我们把房子按价格分类成两个离散的类别。
例子2:(a)回归-给一个人的照片,我们必须根据给定的图片来预测他们的年龄;(b)分类-给一个肿瘤患者,我们必须预测肿瘤是恶性还是良性
非监督学习
-补充材料
无监督学习允许我们没有想法或几乎不知道结果应该是什么样子来处理问题,我们不一定知道变量的作用,但是可以从数据导出结构,无监督学习不是基于预测结果来反馈的。
例子:
聚类:收集100,0000个不同的基因,找到一种方法自动将这些基因按不同变量(如寿命、地理位置、角色等)进行分组
非聚类:"鸡尾酒会算法"让你在混乱的环境中找到结构(即在鸡尾酒会伤从声音的网状结构中识别出个人的声音和背景音乐)。
助教计划概述
社区助教是成功的,有献身精神的Coursera学习者,他们自愿在已经完成的课程中协助维护讨论社区,他们被Coursera招募来鼓励新手,回答问题,通过发一下深刻的帖子、及时的内容树立榜样,并向Coursera报告平台缺陷和不适当的内容。当你使用讨论区时,请注意,参与者的想法包括助教,并不代表斯坦福大学的观点。助教没有被斯坦福大学聘用,也没有被斯坦福大学评为该课程内容或课程促进方面的专家。
认识你的同学
1、概述
和同学一起学习是这个网络课程重要组成部分,因此,在这么课程的开始,我们喜欢你们花点时间打破僵局,互相了解。你可以已经认识一些同学或者刚刚认识他们,与其他学生交流互动让你的在线学习体验更愉快和吸引人。像这样,尽管它是可选的,但是我们鼓励你参加这个活动。
2、打招呼
告诉大家你的故事!可选地,你被要求给同学们提供一个简短的介绍,如果你不知道介绍什么,你可以通过回答一些问题来与同学们分享信息。
建议话题:
1)你来自哪里?你如果想把这个信息包含在你的帖子里,你也可以把它放在帖子下面的"tags"区域内,举例,将你的国家放在标签部分
2)职业与教育?你的教育背景是什么?你现在做什么?你目前是不是在寻找职业或者更多教育的改变?
3)期望?你为什么决定选这门课?你对这门课程的期望是什么?你想解决什么问题?在课程结束的那一天,你希望生活发生什么变化?
4)其他信息?与我们分享任何其他信息,这可以帮助其他同学在课堂上搜索论坛的时候发现你,你可以分享共同的兴趣爱好,我们有成千上万的学生报名参加这门课,把一些东西放在你的帖子里面将帮助其他人找到你。
去"Meet and Greet"论坛,然后单击"新主题帖"按钮,用你的名字和简单的摘要作为你的帖子的标题,例如:罗伯特·史密斯:搜索职业选择。读一些同学的帖子,挑选至少你感兴趣的两个同学的帖子,并添加友好的评论。
3、更新你的个人资料
单击屏幕右上角的你的名字,通过单击菜单中的个人资料超链接更新个人资料,当人们在论坛找到你的时候,他们可以单击你的名字来查看你的完整的个人资料并了解你的更多信息。
4、时间
这项活动大约需要1小时才能完成。
这些通过论坛与同学互动的指导方针是有lllinois大学制造的