吴恩达《机器学习》课程学习笔记(一)—— 绪论

吴恩达《机器学习》课程学习笔记(一)—— 绪论

前言

吴恩达教授(Andrew Ng)的《机器学习》课程目前流传着两个版本,一个是早期的斯坦福大学的公开课(CS299),这个版本录制于吴恩达教授在斯坦福大学任教时期,课时较长,理论内容也更为深入;另一个是目前Coursera上更新的网课,课时较短,配有较多programming exercise。一般认为,Coursera版本更加适合快速入门,斯坦福版本适合进阶深究。

“吴恩达《机器学习》课程学习笔记”这个系列,是用来记录学习Coursera版本过程中的内容的。限于我仍是机器学习的初学者,在笔记过程中难免会出现思路、方法的不周之处。如果对笔记中的公式、内容有疑问,请先到Coursera查看吴恩达教授的讲义。

本文的定位主要是归纳总结,以学习时的思路展开,以吴恩达教授的课程内容为主体。

 

一、什么是机器学习(Machine Learning)?

什么是机器学习?这个问题目前还没有明确,统一的回答。课程中列举了两种定义:

1.Arthur Samuel提出的定义:

“The field of study that gives computers the ability to learn without being explicitly programmed.”

Arthur Samuel认为,机器学习致力于让计算机在没有明确地编程的情况下有能力进行学习。这是一种老旧、不正式的定义。(他曾让电脑自己进行双方博弈,判断哪种棋局赢面更大。通过这样的方法,最终得到了一个厉害的下棋程序。)

2.Tom Mitchell提出的定义:

“A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”

Tom Mitchell认为,从“以某种任务T为目标,以P为性能指标的经验E中”进行学习的计算机程序,它在“以任务T为目标,P为性能指标”的情况下,表现会随着“经验E”的增长而变得更好。Andrew Ng认为这是一个和现在比较相符的定义(尽管他开玩笑Tom Mitchell是为了押韵才这样表述)。

以下跳棋为例,

E=玩多局游戏得到的经验

T=跳棋取胜的目标

P=程序赢得游戏的可能性

 

习题1.1 Suppose your email program watches which emails you do or do not mark as spam, and based on that learns how to better filter spam. What is the task T in this setting?

  • Classifying emails as spam or not spam. –T
  • Watching you label emails as spam or not spam.- E
  • The number(or fraction) of emails correctly classified as spam/not spam.- P

 

目前,机器学习的算法主要分为有监督学习和无监督学习两种。下章介绍的是有监督学习。

二、监督学习(Supervised Learning)

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.

在监督学习中,我们已经得到了一个数据集,并且已经知道正确的输出是什么样子,而且预设输入和输出之间一定存在某种联系。

监督学习的问题被分为“回归(regression)”“分类(classification)”两类。

  • 在回归问题中,我们尝试预测出连续的输出。换句话说,我们是尝试将变量映射到某一个连续函数上。
  • 在分类问题中,我们尝试预测出离散的输出。换句话说,我们是尝试将变量映射到某一些离散分类里。

例2.1 你想要卖一栋房子,现在你有一些真实市场交易的(面积,价格)关系,你需要根据这些估计出你的房子的售价。因为价格关于面积的函数是连续的,所以这是一个回归问题。

在例子中,如果你进行的是线性回归,那么面积为750的房子,得到的是150k的价格,但是,线性模型似乎与实际数据的拟合度不是特别好。如果采用二次函数进行拟合,可以看到拟合度更高了,得到了200k的价格。这样看来,回归问题的模型选取是十分重要的。

 

例2.2 我们得到了一些乳腺癌关于(肿瘤尺寸,良性/恶性)的真实数据,现在要根据某一肿瘤的尺寸,来判断是否是良性的。在这个例子里,输出是Yes or Not, 是一个分类问题。

你可以用一个二维坐标系来表示数据,但更简洁的方法是使用数轴+标记来表示。

显然这个例子只是简单的模型,实际问题中的变量要复杂的多,比如肿瘤性质划分更细:良性、I类、II类、III类等;以及肿瘤的样本特征:厚薄、大小、形状等;甚至患者的年龄等。分类算法要做的是划一条线把他们分离开来。

 

 

习题2.1 You’re running a company, and you want to develop learning algorithms to address each of two problems.

  • Problems1: You have a large inventory of identical items. You want to predict how many of these items will sell over next 3 months.
  • Problems2: You’d like software to examine individual customer accounts, and for each account decide if it has been hacked/compromised.

Should you treat these as classification or as regression problems?

三、无监督学习(Unsupervised Learning)

Unsupervised learning, allows us to approach problems with little or no idea what our results should look like. We can derive structure from data where we don’t necessarily know the effect of the variables.

无监督学习,使我们能够处理那些对结果了解甚少、甚至根本不了解的问题。我们可以在不知道变量的具体影响的情况下,从数据中提取出结构(structure)。

我们可以根据数据中的变量关系对数据进行聚类(clustering),来提取出数据的结构。

无监督学习不能从预测的结果中得到反馈(没有性能测度),也就是说,没有老师来纠正你。

例3.1 我们进入谷歌新闻,可以看到BP油井事故的专题,有华尔街日报、CNN、卫报。在这个例子中,谷歌通过搜索成千上万条新闻,再自动将数据集聚类,把相关内容显示到一起。

 

例3.2 基因测定问题。在这个例子中,你得到了一系列的个体,用不同颜色标记了它们特定基因序列的拥有程度。现在通过聚类算法,你能把这些个体归入不同的类里。

例3.3 类似的还有如下问题:依照处理的问题不同,把计算机集群聚类,放置在一起优化效率;依照社交网络如Facebook上的互动,通过聚类判断他们是否属于同一个社交圈;根据大量的客户信息,将客户归入不同的细分市场,有针对性的推送广告;在天文学上,通过聚类得出了有意思的星系成型理论。

例3.4 鸡尾酒会问题也是一个典型问题。在喧闹的鸡尾酒会上,大脑的集中一个人的听觉能力关注特定的刺激,同时过滤掉范围内的其它刺激。

现在我们把模型简化一下,假定有两个人用不同的语言在从一数到十,两个麦克风在收录。那么对麦克风而言,传输给它们的都是两个说话者的叠加。但依照聚类算法,我们可以将使得两个麦克风分别关注一个谈话者,从而将他们的说话信息分离出来。

四、编程环境推荐

看起来,鸡尾酒会问题算法的实现不是一个简单的事情。但是在Octave编程环境(免费的开源软件)下,问题可以用一行代码解决:

实际上在硅谷,很多机器学习算法都是先用Octave建立模型,实现之后再迁移到C++/Java并投入生产。当然,C++/Java来实现算法,需要调用很多的库。

因此在课程的学习中,Andrew Ng推荐通过Octave或者MATLAB来进行学习(“Ask you to trust me once”),这会让学习速度快得多。

 

下一篇将要学习的是单变量线性回归问题。



4 Comments

请问DeepLearning.ai上的课怎么样?和cs299上的有何关系呢?

Reply

DeepLearning.ai上的课是不是包括“神经网络和深度学习”、“改善深层神经网络:超参数调试、正则化以及优化”、“结构化机器学习项目”、“卷积神经网络”、“序列模型”这几门课呢?
我暂时还没学到,只学了慕课上的机器学习这门课,CS299也并未学习,所以无法有效地回答你,只能谈谈学完这门课的感受,仅作参考:

慕课上的机器学习是面向各种人群的(甚至还会默认读者对线性代数和概率论没有太多了解),这门课学完以后应该能达到的水平是:“对其中提及的算法有一些感性的认识以及基础的数学理解,知道算法对应的基本应用场景”。也就是说,这只是一个开头,远远不够。
由于CS299面向的是斯坦福本校的学生,对于理论的探讨应该会好些。

Reply

学完吴恩达老师的课程之后,还怎么样去学习机器学习呢、

Reply

下面仅仅是个人看法:
之后有两条路可以走:做广义的机器学习、专门做深度学习。
如果打算做广义的机器学习,那么可以多学一下统计学相关的课程,可以先用李航的《统计学习方法》来了解一下,再进一步找资源;
如果打算只做深度学习,那么可以把deeplearning.ai的“深度学习”专项课程的几门课给学完,大致上了解CNN、RNN前几年的发展情况和基本模型。学完之后已经有了基本的调参调包能力,此时就可以上手自己的课题进行前沿探究了。

Reply

Leave a Reply

Your email address will not be published.

*
*
*

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert