Andrew NG Coursera教程学习笔记-Week1

Introduction

什么是Machine Learning

Andrew给出了几种定义如下:
Arthur Samuel给了一个较老的定义:

He defined machine learning as the field of study that gives computers the ability to learn without being explicitly programmed.

also Tom Mitchell 给了一个较新的定义

He says, a computer program is said to learn from experience E, with respect to some task T, and some performance measure P, if its performance on T as measured by P improves with experience E.

这里机器学习就是指一个计算机程序可以通过学习经验E,然后去执行任务T,并通过表现P来判定学得好坏,最后这个程序可以不断的进化改进P来执行T通过学习E

有哪些类型的机器学习

总体上来说,机器学习分为以下两种:

  • 监督式机器学习(supervised machine learning): 即我们需要一个数据集,并且在这个数据集中含有正确的答案。比如课堂上举例关于房价的预测模型,其训练集中必须含有房价这个正确的答案。
  • 无监督机器学习(unsupervised machine learning): 在下一节讲到了无监督学习,无监督学习一般不会有明确的分类标签,只是告诉模型我这里有一些数据,你看看能分成几类,可以怎么分类。(常见的聚类算法就是用于无监督学习)

机器学习要解决的问题,可以分为两种类型:

  • 回归问题:输出结果是一个连续值,比如预测房价
  • 分类问题:输出结果非连续,比如预测是和否之类的问题。

此小节还提到一个问题,即现实工程中,我们可能有无穷多的属性,而这些属性可以通过数学技巧来解决其存储问题。不过并没有细讲。

这里我的问题是真的需要无穷多的属性吗?通过有限的属性,比如几千个属性值不可以吗?

无监督学习

Andrew给出了什么是无监督学习的定义,无监督学习首先是没有所谓的正确答案的,它只是有一堆数据,输入给这些无监督学习的算法,然后让算法将这些数据分类。Andrew还给出了几个例子,比如Google News就是通过将网上的新闻通过无监督学习算法进行自动分类,从而可以使得相同story的新闻聚合。还比如有一堆用户的数据,可以让聚合算法自动聚类,将客户分类(这里我感觉可以用于推荐,聚合不同类型的客户,然后推荐此类客户近期购买过的其它类型的产品);另外还有一种是非聚类算法(non-clustering algorithm)

最后,Andrew还推荐了Octave,因为使用Octave或者Matlab可以快速实验原型,可以快速的几行代码就写出算法的原型。这里还涉及到了一个概念叫奇异值分解(singular value decomposition),就是课程讲的鸡尾酒算法的数学表达吧?

  • clustering: 算法自动分类,但我们事先并不知道分的什么类型,也就是我们不知道分类的标签是什么
  • non-clustering: 比如将不同声源的声音分离

Model and Cost Function

Model Representation

针对训练集的数据,用如下符号来标记一些东西:
m: 训练集的样本数
x: 输入,variables/features x(i)表示第i行的输入
y: 输出的结果,所谓right answer y(i) 表示第i个样本的输出
(x, y)来表示一个样本
h: 算法函数 hypothesis. h maps from x to y. 就是一个映射函数,可以通过给定的X输出Y

# ɵ refers to theta
# 实际就是一个一元线性函数
h(x) = ɵ0 + ɵ1x

我们通常把这种线性函数叫做linear regression with one variable 或者 univariate linear regression

本质上,所有机器学习算法其实都是一个映射函数,通过训练,找到合适的参数,从而可以实现这样一种映射,即给定一组输入值,可以输出一个值,而这个输出值就是我们的预测值

cost function

如下公式就是一个cost function,实际是一个类平方差的公式,关于平方差请参考文章《统计基础一》,但是平方差的计算并不会除2,这里之所以乘以1/2,是为了后续做梯度下降(gradient descent)方便

cost function

这个cost function最终是要测度h(x)与y之间的距离,我们也叫这个cost function为square error function. square error function对于线性回归问题是非常通用的cost function,当然还有一些其它的cost function,但是square error function更常用。

Cost Function Intuition1

为了简化问题,先假设ɵ0 = 0,J(ɵ0, ɵ1) -> J(ɵ1)
h(x)是关于x的函数;而J(ɵ1)是关于ɵ1的函数,即这个函数的横坐标是ɵ1。
课程假定有三个样本(1, 1), (2, 2), (3, 3),这时,如果ɵ1=1,那么h(x) = x,根据J(ɵ1)的公式,可以计算如下
J(ɵ1) = (1/2*3) * ( (1-1)**2 + (2-2)**2 + (3-3)**2) = 0
假设ɵ1= 2,计算如下:
J(ɵ1) = (1/6) * ((2-1)**2 + (4-2)**2 + (6- 3)**2) = (1/6) * 14 ≈ 2.33
以此类推,最终的J(ɵ)函数的图形如下:


J(ɵ)

我们知道这个平方差函数是用来测度h(x)的预测值和实际样本的y的距离,因此距离越小说明我们选取的参数越准确,因此,我们的目标是寻找J(ɵ)的最小值,这个时候的ɵ值就可以产生最优的h(x)算法。
实际运用时,我们可以通过程序自动寻找这个最小值。

Cost Function Intuition2

这一小节主要讲了当ɵ0 != 0时的情况,这时cost function就成了J(ɵ0, ɵ1),由于有两个variables,因此其函数表示就成了三维的图像,如下:


J(ɵ0, ɵ1)

这里有个问题,为啥不把ɵ0, ɵ1的0点放在一起?是为了展示的图形更直观?

但通常我们使用contour plot来表示J(ɵ0, ɵ1),这个contour plot实际是上边那个3-D的平面投影,同一个等高线对应相同的函数值。contour plot如下图:


contour plot

从这个图可以看出中心点那个值是J(ɵ0, ɵ1)的最小值,也就是说这个时候的h(x)最接近实际情况。

Parameter Learning

Gradient Decent

我们在寻找特定的θ0和θ1并使得J(θ0, θ1)可以获得最小值时,我们就需要gradient decent function(梯度下降函数)。首先来直观看下如何寻找θ0, θ1使得J(θ0, θ1)最小:

gradient decent

这个过程非常像我们站在山上往山下走,一直走到最低处。但是这里可能存在这样的情况:即当我们的初始点不同时,可能最后下降到不同的低点(这里可以看Andrew的视频,讲得非常清楚),所以我们说局部最小值 (local minimum value)。

这里有个问题,就是有没有数学方法可以找到全局最小值呢?

走的过程是分步走的,每走一步都会停下来看看往哪个方向走可以下降得更快,然后再往那个方向走下一步。我们是通过导数(derivative)来判断方向的,导数就是函数曲线在某一个点的切线的斜率(The slope of the tangent is the derivative at that point),我们就是根据这个斜率来判断哪个方向可以最陡下降(steepest descent)。
先来看看梯度下降的公式


gradient decent term

这个公式中的𝑎就是所谓的learning rate,它来决定步子迈多大。
梯度下降的过程就是不断迭代梯度下降的公式,直到收敛(convergence), 即达到最低点。这里需要注意的是,每次迭代,θ0和θ1必须同时计算,如下图所示:


θ update

Gradient Descent Intuition

gradient decent

从图中我们可以看到上方的图表明,其导数为正时,θ会减一个正数(这个数的大小显然跟𝑎有关),因此θ值会向左移动,因此向local minimum value收敛。下边的图类似,只是θ会向右移动收敛。

gradient decent2

上边的坐标图表明当𝑎很小时,收敛的非常慢,因为迈的步子小啊
下边的坐标图说明当𝑎很大时,会导致收敛失败,因为会导致离最小值点越来越远
所以,当收敛时间非常长或者收敛失败时,说明我们的𝑎设置的不合适。

gradient decent

这幅图说明了当我们采用一个固定的𝑎时,收敛的step也会越来越小(因为斜率越来越小),直到最终收敛,所以最终我们是可以收敛成功的。

Gradient Descent For Linear Regression

要进行梯度下降,就需要迭代地计算θ0和θ1,根据前面的课程我们知道需要知道J(θ)导数才能计算,这个涉及到微积分的知识,暂且不表,先看下求导后的公式:


gradient decent equation

注意:θ1与θ0是不同的,这是求导后的结果
求导的过程如下:


derivation

梯度下降的过程就是寻找J(θ)最小值的过程,针对线性回归这种特殊情况,J(θ)实际上是一个二次的凸函数(convex quadratic function),因此只有一个最小值,即我们找到的这个局部最小值一定是全局最小值。

另外,还涉及到一个概念叫batch gradient decent, 这是由于我们每次迭代的时候,都需要针对所有的样本进行计算再求和,因此我们说是batch。Andrew还提到了某些其它的方式可以不用全部的样本进行计算,每次只需要样本的一个子集即可,后续课程再讲。

另外,线性代数还有一个叫做normal equations的方法可以不需要迭代的方法来找到最小值,这个也是以后会涉及到。

Linear Algebra Review

Matrices and Vectors

矩阵请参考线性代数之矩阵
向量vector即n x 1的矩阵,即只有一个column的矩阵。
向量通常使用小写字母表示,而matrix通常使用大写字母表示
在表示向量的元素的时候,其下标可以从0开始,也可以从1开始,从0开始就是0-indexed vector,而从1开始就是1-indexed vector。
另外,

"Scalar" means that an object is a single value, not a vector or matrix.
ℝ refers to the set of scalar real numbers.
ℝ𝕟 refers to the set of n-dimensional vectors of real numbers.

Addition and Scalar Multiplication

本节相对简单,主要是矩阵加减运算以及标量与矩阵相乘。不再赘述
需要注意的是,在矩阵的加减运算时,两个矩阵必须是相同的维数。

Matrix Vector Multiplication

本节主要讲了Matrix和Vector的乘

矩阵与向量的乘本质上就是对多元方程式的计算,可以想象矩阵的每一行都是一个样例的特征(每个特征值都是对应一个变量值x, y, z...),而向量就是方程的θ0, θ1, ....θn,通过相乘,实际上就可以计算出对应的h(x)结果。需要注意的是,在构筑的时候,常数项也需要构筑一列,即把变量当做1

假设我们有房价的尺寸数据[123; 234; 555; 666], h(x) = 40 + 2x
那么我们在使用矩阵计算时,需要构筑如下矩阵

A = [1, 123; 1, 234; 1, 555; 1, 666]
v = [40; 2]
h(x) = A * v

通过这种方式不仅代码会变得简单,而且计算时会更加有效率

另外,矩阵的乘是有顺序的,且前一个矩阵的column必须与后一个矩阵的row相等。
比如一个3 x 2矩阵只能跟一个2 x n矩阵相乘,结果为3 x n矩阵
最后关于矩阵的乘,可以参考线性代数之矩阵

Matrix-Matrix Multiplication

矩阵乘有的时候是比较绕的,我觉得Andrew讲解的非常好,基本上我们需要把第二个矩阵分解成向量,然后用第一个矩阵分别于这些向量相乘,得到一个新的向量,最终再把所有的结果向量组合在一起就是最终结果。
矩阵和矩阵乘主要用于有多个假设h(x)的时候,这个时候第二个矩阵的每个向量都对应一个假设。
这块看Andrew的视频会非常清楚,不再赘述,需要注意的是
矩阵是有顺序的,而且第一个矩阵的列数必须与第二个矩阵的行数相等
A x B, 如果A为m, n矩阵, 那么B就必须为n,x矩阵,结果是m, x矩阵

Matrix Multiplication Properties

此小节主要介绍了矩阵乘法的几个属性:

  • 非community属性:community属性指乘号两边的变量可以交换顺序,即ab = ba,但是对于矩阵而言,通常是非community的,即AB != BA
  • associative属性:指当有多个乘数的时候,先计算前边的乘和先计算后边的乘是一样的,即a * b * c = a * (b * c) = (a * b) * c,而矩阵是associative的,即A * (B * C) = (A * B) * C
    之后Andrew引入了单位矩阵的概念(identity matrix),单位矩阵与方形矩阵相乘的时候是community的,即I * A = A * I,关于单位矩阵,可以参考线性代数之矩阵

Inverse and Transpose

此小节主要讲了什么是逆矩阵(inverse matrix), 以及什么是转置矩阵(transpose of matrix)。
逆矩阵的计算比较复杂,涉及到行列式和余子式的概念,Andrew没有在课程上讲,可以参考线性代数之矩阵以及线性代数之逆矩阵。Andrew演示了通过octave来自动计算逆矩阵的方式。需要注意的是,并不是所有的square matrix都有逆矩阵,如果矩阵是奇异的singular或者退化的degenerate时,是没有逆矩阵的。

矩阵的转置,简单来说就是把行转为列,如下:


matrix

transpose

即一个m x n matrix转置后变为n x m matrix,且满足


transpose
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342