From ee978f613c6aba6c3f60703b7f256d6b77f63f88 Mon Sep 17 00:00:00 2001 From: scruel Date: Wed, 10 Jan 2018 13:48:45 +0800 Subject: [PATCH] optimize --- week1.html | 6 +++--- week1.md | 49 +++++++++++++++++++++++++------------------------ week2.html | 4 ++-- week2.md | 29 ++++++++++++++++------------- week3.html | 2 +- week3.md | 8 +++++--- week6.md | 2 +- 7 files changed, 53 insertions(+), 47 deletions(-) diff --git a/week1.html b/week1.html index 5434bdf..badb158 100644 --- a/week1.html +++ b/week1.html @@ -332,9 +332,9 @@ header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", Aria -

1. 引言(Introduction)

1.1 Welcome

随着互联网数据不断累积,硬件不断升级迭代,在这个信息爆炸的时代,机器学习已被应用在各行各业中,可谓无处不在。

一些常见的机器学习的应用,例如:

使用到机器学习的一些案例:

当然,还有更多其他的应用场景,总之,机器学习的出现让很多不可能成为了可能。

1.2 什么是机器学习(What is Machine Learning)

  1. 机器学习定义 -这里主要有两种定义:

    • Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.

      这个定义有点不正式但提出的时间最早,来自于一个懂得计算机编程的下棋菜鸟,编程使得计算机通过不断的对弈,不断地计算布局的好坏来“学习”,从而积累经验,这样,这个计算机程序成为了一个厉害的棋手。

    • Tom Mitchell (1998) Well-posed Learning Problem: 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.

      Tom Mitchell 的定义更现代,也有点拗口,视频中介绍了一个例子,即垃圾邮件分类。对于垃圾邮件分类,文中的三个字母分别代表:

      • T(task): 对垃圾邮件分类这个任务。
      • P(Performance): 垃圾邮件分类的准确程度。
      • E(Experience): 用户对于邮件进行是否为垃圾邮件的分类(即帮助机器体验、学习)。
  2. 机器学习算法

    主要有两种机器学习的算法分类

    1. 监督学习
    2. 无监督学习

    两者的区别为是否需要人工参与数据标注。这两部分的内容占比很大,并且很重要,掌握好了可以在以后的应用中节省大把大把的时间~

    还有一些算法也属于机器学习领域,诸如:

    • 半监督学习: 介于监督学习于无监督学习之间
    • 推荐算法: 没错,就是那些个买完之后还推荐同一款商品的某购物平台。
    • 强化学习: 通过观察来学习如何做出动作,每个动作都会对环境有所影响,而环境的反馈又可以引导该学习算法。
    • 迁移学习

1.3 监督学习(Supervised Learning)

监督学习,即为教计算机如何去完成预测任务(有反馈),预先给一定数据量的输入和对应的结果,建模拟合,最后让计算机预测未知数据的结果。

监督学习一般有两种:

  1. 回归问题(Regression)

    回归问题即为预测一系列的连续值

    在房屋价格预测的例子中,给出了一系列的房屋面基数据,根据这些数据来预测任意面积的房屋价格。给出照片-年龄数据集,预测给定照片的年龄。

  2. 分类问题(Classification)

    分类问题即为预测一系列的离散值

    即根据数据预测被预测对象属于哪个分类。

    视频中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。

视频中提到支持向量机这个算法,旨在解决当特征量很大的时候(特征即如癌症例子中的肿块大小,颜色,气味等各种特征),计算机内存一定会不够用的情况。支持向量机能让计算机处理无限多个特征。

1.4 无监督学习(Unsupervised Learning)

相对于监督学习,训练集不会有人为标注的结果(无反馈),我们不会给出结果或无法得知训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。

无监督学习一般分为两种:

  1. 聚类(Clustering)

    • 新闻聚合
    • DNA 个体聚类
    • 天文数据分析
    • 市场细分
    • 社交网络分析
  2. 非聚类(Non-clustering)

    • 鸡尾酒问题

新闻聚合

在例如谷歌新闻这样的网站中,每天后台都会收集成千上万的新闻,然后将这些新闻分组成一个个的新闻专题,这样一个又一个聚类,就是应用了无监督学习的结果。

鸡尾酒问题

在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢~~。

嗯,这块是打打鸡血的,只需要一行代码就解决了问题,就是这么简单!当然,我没复现过 ^_^……

神奇的一行代码: +

1. 引言(Introduction)

1.1 Welcome

随着互联网数据不断累积,硬件不断升级迭代,在这个信息爆炸的时代,机器学习已被应用在各行各业中,可谓无处不在。

一些常见的机器学习的应用,例如:

  • 手写识别
  • 垃圾邮件分类
  • 搜索引擎
  • 图像处理

使用到机器学习的一些案例:

  • 数据挖掘

    • 网页点击流数据分析
  • 人工无法处理的工作(量大)

    • 手写识别
    • 计算机视觉
  • 个人定制

    • 推荐系统
  • 研究大脑

  • ……

1.2 什么是机器学习(What is Machine Learning)

  1. 机器学习定义 +这里主要有两种定义:

    • Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.

      这个定义有点不正式但提出的时间最早,来自于一个懂得计算机编程的下棋菜鸟。他编写了一个程序,但没有显式地编程每一步该怎么走,而是让计算机自己和自己对弈,并不断地计算布局的好坏,来判断什么情况下获胜的概率高,从而积累经验,好似学习,最后,这个计算机程序成为了一个比他自己还厉害的棋手。

    • Tom Mitchell (1998) Well-posed Learning Problem: 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.

      Tom Mitchell 的定义更为现代和正式。在过滤垃圾邮件这个例子中,电子邮件系统会根据用户对电子邮件的标记(是/不是垃圾邮件)不断学习,从而提升过滤垃圾邮件的准确率,定义中的三个字母分别代表:

      • T(Task): 过滤垃圾邮件任务。
      • P(Performance): 电子邮件系统过滤垃圾邮件的准确率。
      • E(Experience): 用户对电子邮件的标记。
  2. 机器学习算法

    主要有两种机器学习的算法分类

    1. 监督学习
    2. 无监督学习

    两者的区别为是否需要人工参与数据结果的标注。这两部分的内容占比很大,并且很重要,掌握好了可以在以后的应用中节省大把大把的时间~

    还有一些算法也属于机器学习领域,诸如:

    • 半监督学习: 介于监督学习于无监督学习之间
    • 推荐算法: 没错,就是那些个买完某商品后还推荐同款的某购物网站所用的算法。
    • 强化学习: 通过观察来学习如何做出动作,每个动作都会对环境有所影响,而环境的反馈又可以引导该学习算法。
    • 迁移学习

1.3 监督学习(Supervised Learning)

监督学习,即为教计算机如何去完成预测任务(有反馈),预先给一定数据量的输入和对应的结果即训练集,建模拟合,最后让计算机预测未知数据的结果。

监督学习一般有两种:

  1. 回归问题(Regression)

    回归问题即为预测一系列的连续值

    在房屋价格预测的例子中,给出了一系列的房屋面基数据,根据这些数据来预测任意面积的房屋价格。给出照片-年龄数据集,预测给定照片的年龄。

  2. 分类问题(Classification)

    分类问题即为预测一系列的离散值

    即根据数据预测被预测对象属于哪个分类。

    视频中举了癌症肿瘤这个例子,针对诊断结果,分别分类为良性或恶性。还例如垃圾邮件分类问题,也同样属于监督学习中的分类问题。

视频中提到支持向量机这个算法,旨在解决当特征量很大的时候(特征即如癌症例子中的肿块大小,颜色,气味等各种特征),计算机内存一定会不够用的情况。支持向量机能让计算机处理无限多个特征。

1.4 无监督学习(Unsupervised Learning)

相对于监督学习,训练集不会有人为标注的结果(无反馈),我们不会给出结果或无法得知训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。

无监督学习一般分为两种:

  1. 聚类(Clustering)

    • 新闻聚合
    • DNA 个体聚类
    • 天文数据分析
    • 市场细分
    • 社交网络分析
  2. 非聚类(Non-clustering)

    • 鸡尾酒问题

新闻聚合

在例如谷歌新闻这样的网站中,每天后台都会收集成千上万的新闻,然后将这些新闻分组成一个个的新闻专题,这样一个又一个聚类,就是应用了无监督学习的结果。

鸡尾酒问题

在鸡尾酒会上,大家说话声音彼此重叠,几乎很难分辨出面前的人说了什么。我们很难对于这个问题进行数据标注,而这里的通过机器学习的无监督学习算法,就可以将说话者的声音同背景音乐分离出来,看视频,效果还不错呢~~。

嗯,这块是打打鸡血的,只需要一行代码就解决了问题,就是这么简单!当然,我没复现过 ^_^……

神奇的一行代码: [W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');

编程语言建议

在机器学习刚开始时,推荐使用 Octave 类的工程计算编程软件,因为在 C++ 或 Java 等编程语言中,编写对应的代码需要用到复杂的库以及要写大量的冗余代码,比较耗费时间,建议可以在学习过后再考虑使用其他语言来构建系统。 -另外,在做原型搭建的时候也应该先考虑使用类似于 Octave 这种便于计算的编程软件,当其已经可以工作后,才将模型移植到其他的高级编程语言中。

注:Octave 与 MATLAB 语法相近,由于 MATLAB 为商业软件,课程中使用开源且免费的 Octave。

机器学习领域的发展迅速,也可使用 Tensorflow 等开源机器学习框架学习,这些框架十分友好,易于编写及应用机器学习算法。

2 单变量线性回归(Linear Regression with One Variable)

2.1 模型表示(Model Representation)

  1. 房价预测训练集

    Size in ()Price ($) in 1000's()
    2104460
    1416232
    1534315
    852178
    ......

房价预测训练集中,同时给出了输入 和输出结果 ,即给出了人为标注的”正确结果“,且预测的量是连续的,属于监督学习中的回归问题。

  1. 问题解决模型

其中 代表结果函数,也称为假设(hypothesis) 。这个函数 根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 的映射。

,为其中一种可行的表达式。

: 特征/输入变量。

上式中, 为参数, 的变化才决定了输出结果,不同以往,这里的 被我们视作已知(不论是数据集还是预测前的输入),所以怎样解得 以更好地拟合数据,成了求解该问题的最终问题。

单变量,即只有一个特征(如例子中房屋的面积这个特征)。

2.2 损失函数(Cost Function)

我们的目的在于求解预测结果 最接近于实际结果 的取值,则问题可表达为求解 的最小值

: 训练集中的样本总数

: 目标变量/输出变量

: 训练集中的实例

: 训练集中的第 个样本实例

上图展示了当 取不同值时, 对数据集的拟合情况,蓝色虚线部分代表建模误差(预测结果与实际结果之间的误差),我们的目标就是最小化所有误差之和。

为了求解最小值,引入损失函数(Cost Function)概念,用于度量建模误差。考虑到要计算最小值,应用二次函数对求和式建模,即应用统计学中的平方损失函数(最小二乘法):

系数 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉

讨论到这里,我们的问题就转化成了求解 的最小值

 

2.3 损失函数 - 直观理解1(Cost Function - Intuition I)

根据上节视频,列出如下定义:

  • 假设函数(Hypothesis):
  • 参数(Parameters):
  • 损失函数(Cost Function):
  • 目标(Goal):

为了直观理解损失函数到底是在做什么,先假设 ,并假设训练集有三个数据,分别为,这样在平面坐标系中绘制出 ,并分析 的变化。

右图 随着 的变化而变化,可见 时,,取得最小值,对应于左图青色直线,即函数 拟合程度最好的情况。

2.4 损失函数 - 直观理解2(Cost Function - Intuition II)

注:该部分由于涉及到了多变量成像,可能较难理解,要求只需要理解上节内容即可,该节如果不能较好理解可跳过。

给定数据集:

参数在 不恒为 时损失函数 关于 的3-D图像,图像中的高度为损失函数的值。

由于3-D图形不便于标注,所以将3-D图形转换为轮廓图(contour plot),下面用轮廓图(下图中的右图)来作直观理解,其中相同颜色的一个圈代表着同一高度(同一 值)。

时:

大概在 时:

上图中最中心的点(红点),近乎为图像中的最低点,也即损失函数的最小值,此时对应 对数据的拟合情况如左图所示,嗯,一看就拟合的很不错,预测应该比较精准啦。

2.5 梯度下降(Gradient Descent)

在特征量很大的情况下,即便是借用计算机来生成图像,人工的方法也很难读出 的最小值,并且大多数情况无法进行可视化,故引入梯度下降(Gradient Descent)方法,让计算机自动找出最小化损失函数时对应的 值。

梯度下降背后的思想是:开始时,我们随机选择一个参数组合即起始点,计算损失函数,然后寻找下一个能使得损失函数下降最多的参数组合。不断迭代,直到找到一个局部最小值(local minimum),由于下降的情况只考虑当前参数组合周围的情况,所以无法确定当前的局部最小值是否就是全局最小值(global minimum),不同的初始参数组合,可能会产生不同的局部最小值。

下图根据不同的起始点,产生了两个不同的局部最小值。

视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围下一步往哪走下山比较快,然后就迈出那一步,一直重复,直到我们到达山下的某一处陆地

梯度下降公式:

: 第 个特征参数

”:=“: 赋值操作符

: 学习速率(learning rate),

: 的偏导

公式中,学习速率决定了参数值变化的速率即”走多少距离“,而偏导这部分决定了下降的方向即”下一步往哪里“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”陆地“。

这里非常重要的一个点是,在计算时要批量更新 ,否则结果上会有所出入,原因不做细究。

2.6 梯度下降直观理解(Gradient Descent Intuition)

该节探讨 的梯度下降更新过程,即 ,注意到这里为了数学定义上的精确性,用的是 ,如果不熟悉微积分学,就把它视作之前的 即可。

把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 在初始点处有正斜率,也就是说它有正导数,则根据梯度下降公式 ,向左边移动。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。

当然如果 值开始就在极小值点处时,梯度下降算法将什么也不做()。

不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。

另外,对于学习速率 ,需要选取一个合适的值才能使得梯度下降算法运行良好。

  • 学习速率过小:

    收敛的太慢,需要更多次的迭代。

  • 学习速率过大:

    可能越过最低点,甚至导致无法收敛。

学习速率只需选定即可,不需要在运行梯度下降算法的时候进行动态改变,随着斜率越来越接近于0,损失函数的变化幅度会越来越小,直到收敛到局部极小值。

如图,品红色点为初始点,损失函数随着迭代的进行,变化的幅度越来越小。

最后,梯度下降不止可以用于线性回归中的损失函数,还通用于最小化其他的损失函数。

2.7 线性回归中的梯度下降(Gradient Descent For Linear Regression)

线性回归模型

梯度下降算法

直接将线性回归模型公式带入梯度下降公式可得出公式

对于 时,给出偏导计算公式的推导过程如下:

所以当 时:

所以当 时:

 

上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集 更新。

由于线性回归函数呈现碗状,且只有一个全局的最优值,所以函数一定总会收敛到全局最小值(学习速率不可过大)。同时,函数 被称为凸二次函数,而线性回归函数求解最小值问题属于凸函数优化问题

另外,使用循环求解,代码较为冗余,后面会讲到如何使用向量化(Vectorization)来简化代码并优化计算,使梯度下降运行的更快更好。

3 Linear Algebra Review

这部分,学过线性代数的可以复习一下,比较基础。笔记整理暂留。

3.1 Matrices and Vectors

Octave/Matlab 代码:

 

执行结果:

 

3.2 Addition and Scalar Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.3 Matrix Vector Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.4 Matrix Matrix Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.5 Matrix Multiplication Properties

Octave/Matlab 代码:

 

执行结果:

 

3.6 Inverse and Transpose

Octave/Matlab 代码:

 

执行结果:

 
+另外,在做原型搭建的时候也应该先考虑使用类似于 Octave 这种便于计算的编程软件,当其已经可以工作后,才将模型移植到其他的高级编程语言中。

注:Octave 与 MATLAB 语法相近,由于 MATLAB 为商业软件,课程中使用开源且免费的 Octave。

机器学习领域发展迅速,现在也可使用 Tensorflow 等开源机器学习框架编写机器学习代码,这些框架十分友好,易于编写及应用。

2 单变量线性回归(Linear Regression with One Variable)

2.1 模型表示(Model Representation)

  1. 房价预测训练集

    Size in ()Price ($) in 1000's()
    2104460
    1416232
    1534315
    852178
    ......

房价预测训练集中,同时给出了输入 和输出结果 ,即给出了人为标注的”正确结果“,且预测的量是连续的,属于监督学习中的回归问题。

  1. 问题解决模型

其中 代表结果函数,也称为假设(hypothesis) 。这个函数 根据输入(房屋的面积),给出预测结果输出(房屋的价格),即是一个 的映射。

,为其中一种可行的表达式。

: 特征/输入变量。

上式中, 为参数, 的变化才决定了输出结果,不同以往,这里的 被我们视作已知(不论是数据集还是预测时的输入),所以怎样解得 以更好地拟合数据,成了求解该问题的最终问题。

单变量,即只有一个特征(如例子中房屋的面积这个特征)。

2.2 损失函数(Cost Function)

我们的目的在于求解预测结果 最接近于实际结果 的取值,则问题可表达为求解 的最小值

: 训练集中的样本总数

: 目标变量/输出变量

: 训练集中的实例

: 训练集中的第 个样本实例

上图展示了当 取不同值时, 对数据集的拟合情况,蓝色虚线部分代表建模误差(预测结果与实际结果之间的误差),我们的目标就是最小化所有误差之和。

为了求解最小值,引入损失函数(Cost Function)概念,用于度量建模误差。考虑到要计算最小值,应用二次函数对求和式建模,即应用统计学中的平方损失函数(最小二乘法):

系数 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉

讨论到这里,我们的问题就转化成了求解 的最小值

 

2.3 损失函数 - 直观理解1(Cost Function - Intuition I)

根据上节视频,列出如下定义:

为了直观理解损失函数到底是在做什么,先假设 ,并假设训练集有三个数据,分别为,这样在平面坐标系中绘制出 ,并分析 的变化。

右图 随着 的变化而变化,可见 时,,取得最小值,对应于左图青色直线,即函数 拟合程度最好的情况。

2.4 损失函数 - 直观理解2(Cost Function - Intuition II)

注:该部分由于涉及到了多变量成像,可能较难理解,要求只需要理解上节内容即可,该节如果不能较好理解可跳过。

给定数据集:

参数在 不恒为 时损失函数 关于 的3-D图像,图像中的高度为损失函数的值。

由于3-D图形不便于标注,所以将3-D图形转换为轮廓图(contour plot),下面用轮廓图(下图中的右图)来作直观理解,其中相同颜色的一个圈代表着同一高度(同一 值)。

时:

大概在 时:

上图中最中心的点(红点),近乎为图像中的最低点,也即损失函数的最小值,此时对应 对数据的拟合情况如左图所示,嗯,一看就拟合的很不错,预测应该比较精准啦。

2.5 梯度下降(Gradient Descent)

在特征量很大的情况下,即便是借用计算机来生成图像,人工的方法也很难读出 的最小值,并且大多数情况无法进行可视化,故引入梯度下降(Gradient Descent)方法,让计算机自动找出最小化损失函数时对应的 值。

梯度下降背后的思想是:开始时,我们随机选择一个参数组合即起始点,计算损失函数,然后寻找下一个能使得损失函数下降最多的参数组合。不断迭代,直到找到一个局部最小值(local minimum),由于下降的情况只考虑当前参数组合周围的情况,所以无法确定当前的局部最小值是否就是全局最小值(global minimum),不同的初始参数组合,可能会产生不同的局部最小值。

下图根据不同的起始点,产生了两个不同的局部最小值。

视频中举了下山的例子,即我们在山顶上的某个位置,为了下山,就不断地看一下周围下一步往哪走下山比较快,然后就迈出那一步,一直重复,直到我们到达山下的某一处陆地

梯度下降公式:

: 第 个特征参数

”:=“: 赋值操作符

: 学习速率(learning rate),

: 的偏导

公式中,学习速率决定了参数值变化的速率即”走多少距离“,而偏导这部分决定了下降的方向即”下一步往哪里“走(当然实际上的走多少距离是由偏导值给出的,学习速率起到调整后决定的作用),收敛处的局部最小值又叫做极小值,即”陆地“。

注意,在计算时要批量更新 ,即如上图中的左图所示,否则结果上会有所出入,原因不做细究。

2.6 梯度下降直观理解(Gradient Descent Intuition)

该节探讨 的梯度下降更新过程,即 ,此处为了数学定义上的精确性,用的是 ,如果不熟悉微积分学,就把它视作之前的 即可。

把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 在初始点处有正斜率,也就是说它有正导数,则根据梯度下降公式 , 右边的结果是一个正值,即 向左边移动。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。

初始 值(初始点)是任意的,若初始点恰好就在极小值点处,梯度下降算法将什么也不做()。

不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。

 

对于学习速率 ,需要选取一个合适的值才能使得梯度下降算法运行良好。

学习速率只需选定即可,不需要在运行梯度下降算法的时候进行动态改变,随着斜率越来越接近于0,损失函数的变化幅度会越来越小,直到收敛到局部极小值。

如图,品红色点为初始点,损失函数随着迭代的进行,变化的幅度越来越小。

最后,梯度下降不止可以用于线性回归中的损失函数,还通用于最小化其他的损失函数。

2.7 线性回归中的梯度下降(Gradient Descent For Linear Regression)

线性回归模型

梯度下降算法

直接将线性回归模型公式带入梯度下降公式可得出公式

对于 时,给出偏导计算公式的推导过程如下:

所以当 时:

所以当 时:

 

上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集 更新。

由于线性回归函数呈现碗状,且只有一个全局的最优值,所以函数一定总会收敛到全局最小值(学习速率不可过大)。同时,函数 被称为凸二次函数,而线性回归函数求解最小值问题属于凸函数优化问题

另外,使用循环求解,代码较为冗余,后面会讲到如何使用向量化(Vectorization)来简化代码并优化计算,使梯度下降运行的更快更好。

3 Linear Algebra Review

这部分,学过线性代数的可以复习一下,比较基础。笔记整理暂留。

3.1 Matrices and Vectors

Octave/Matlab 代码:

 

执行结果:

 

3.2 Addition and Scalar Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.3 Matrix Vector Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.4 Matrix Matrix Multiplication

Octave/Matlab 代码:

 

执行结果:

 

3.5 Matrix Multiplication Properties

Octave/Matlab 代码:

 

执行结果:

 

3.6 Inverse and Transpose

Octave/Matlab 代码:

 

执行结果:

 
\ No newline at end of file diff --git a/week1.md b/week1.md index d665327..3c25be8 100644 --- a/week1.md +++ b/week1.md @@ -24,8 +24,7 @@ - 个人定制 - 推荐系统 - 研究大脑 - -当然,还有更多其他的应用场景,总之,机器学习的出现让很多不可能成为了可能。 +- …… ## 1.2 什么是机器学习(What is Machine Learning) 1. 机器学习定义 @@ -33,15 +32,15 @@ - Arthur Samuel (1959). Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed. - 这个定义有点不正式但提出的时间最早,来自于一个懂得计算机编程的下棋菜鸟,编程使得计算机通过不断的对弈,不断地计算布局的好坏来“学习”,从而积累经验,这样,这个计算机程序成为了一个厉害的棋手。 + 这个定义有点不正式但提出的时间最早,来自于一个懂得计算机编程的下棋菜鸟。他编写了一个程序,但没有显式地编程每一步该怎么走,而是让计算机自己和自己对弈,并不断地计算布局的好坏,来判断什么情况下获胜的概率高,从而积累经验,好似学习,最后,这个计算机程序成为了一个比他自己还厉害的棋手。 - Tom Mitchell (1998) Well-posed Learning Problem: 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**. - Tom Mitchell 的定义更现代,也有点拗口,视频中介绍了一个例子,即垃圾邮件分类。对于垃圾邮件分类,文中的三个字母分别代表: + Tom Mitchell 的定义更为现代和正式。在过滤垃圾邮件这个例子中,电子邮件系统会根据用户对电子邮件的标记(是/不是垃圾邮件)不断学习,从而提升过滤垃圾邮件的准确率,定义中的三个字母分别代表: - - T(task): 对垃圾邮件分类这个任务。 - - P(Performance): 垃圾邮件分类的准确程度。 - - E(Experience): 用户对于邮件进行是否为垃圾邮件的分类(即帮助机器体验、学习)。 + - T(Task): 过滤垃圾邮件任务。 + - P(Performance): 电子邮件系统过滤垃圾邮件的准确率。 + - E(Experience): 用户对电子邮件的标记。 2. 机器学习算法 @@ -50,18 +49,18 @@ 1. 监督学习 2. 无监督学习 - 两者的区别为**是否需要人工参与数据标注**。这两部分的内容占比很大,并且很重要,掌握好了可以在以后的应用中节省大把大把的时间~ + 两者的区别为**是否需要人工参与数据结果的标注**。这两部分的内容占比很大,并且很重要,掌握好了可以在以后的应用中节省大把大把的时间~ 还有一些算法也属于机器学习领域,诸如: - 半监督学习: 介于监督学习于无监督学习之间 - - 推荐算法: 没错,就是那些个买完之后还推荐同一款商品的某购物平台。 + - 推荐算法: 没错,就是那些个买完某商品后还推荐同款的某购物网站所用的算法。 - 强化学习: 通过观察来学习如何做出动作,每个动作都会对环境有所影响,而环境的反馈又可以引导该学习算法。 - 迁移学习 ## 1.3 监督学习(Supervised Learning) -监督学习,即为教计算机如何去完成预测任务(有反馈),预先给一定数据量的输入和对应的结果,建模拟合,最后让计算机预测未知数据的结果。 +监督学习,即为教计算机如何去完成预测任务(有反馈),预先给一定数据量的输入**和对应的结果**即训练集,建模拟合,最后让计算机预测未知数据的结果。 监督学习一般有两种: @@ -88,7 +87,7 @@ ## 1.4 无监督学习(Unsupervised Learning) -相对于监督学习,训练集不会有人为标注的结果(无反馈),我们不会给出结果或无法得知训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。 +相对于监督学习,训练集不会有人为标注的结果(无反馈),我们**不会给出**结果或**无法得知**训练集的结果是什么样,而是单纯由计算机通过无监督学习算法自行分析,从而“得出结果”。计算机可能会把特定的数据集归为几个不同的簇,故叫做聚类算法。 无监督学习一般分为两种: 1. 聚类(Clustering) @@ -121,8 +120,8 @@ 另外,在做**原型搭建**的时候也应该先考虑使用类似于 Octave 这种便于计算的编程软件,当其已经可以工作后,才将模型移植到其他的高级编程语言中。 > 注:Octave 与 MATLAB 语法相近,由于 MATLAB 为商业软件,课程中使用开源且免费的 Octave。 - -机器学习领域的发展迅速,也可使用 Tensorflow 等开源机器学习框架学习,这些框架十分友好,易于编写及应用机器学习算法。 +> +> 机器学习领域发展迅速,现在也可使用 Tensorflow 等开源机器学习框架编写机器学习代码,这些框架十分友好,易于编写及应用。 # 2 单变量线性回归(Linear Regression with One Variable) @@ -151,7 +150,7 @@ $h_\theta(x)=\theta_0+\theta_1x$,为其中一种可行的表达式。 > $x$: 特征/输入变量。 -上式中,$\theta$ 为参数,$\theta$ 的变化才决定了输出结果,不同以往,这里的 $x$ 被我们**视作已知**(不论是数据集还是预测前的输入),所以怎样解得 $\theta$ 以更好地拟合数据,成了求解该问题的最终问题。 +上式中,$\theta$ 为参数,$\theta$ 的变化才决定了输出结果,不同以往,这里的 $x$ 被我们**视作已知**(不论是数据集还是预测时的输入),所以怎样解得 $\theta$ 以更好地拟合数据,成了求解该问题的最终问题。 单变量,即只有一个特征(如例子中房屋的面积这个特征)。 @@ -175,7 +174,7 @@ $h_\theta(x)=\theta_0+\theta_1x$,为其中一种可行的表达式。 $$J(\theta_0,\theta_1)=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(\hat{y}_{i}-y_{i} \right)^2=\dfrac{1}{2m}\displaystyle\sum_{i=1}^m\left(h_\theta(x_{i})-y_{i}\right)^2$$ -> 系数 $\frac{1}{2}​$ 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉 $\frac{1}{2}​$ 。 +> 系数 $\frac{1}{2}$ 存在与否都不会影响结果,这里是为了在应用梯度下降时便于求解,平方的导数会抵消掉 $\frac{1}{2}$ 。 讨论到这里,我们的问题就转化成了**求解 $J\left( \theta_0, \theta_1 \right)$ 的最小值**。 @@ -248,29 +247,31 @@ $\begin{align*} & \text{repeat until convergence:} \; \lbrace \newline \; &{{\th ![](image/20180106_101659.png) -这里非常重要的一个点是,在计算时**要批量更新 $\theta$ 值**,否则结果上会有所出入,原因不做细究。 +注意,在计算时要**批量更新 $\theta$ 值**,即如上图中的左图所示,否则结果上会有所出入,原因不做细究。 ## 2.6 梯度下降直观理解(Gradient Descent Intuition) -该节探讨 $\theta_1$ 的梯度下降更新过程,即 $\theta_1 := \theta_1 - \alpha\frac{d}{d\theta_1}J\left(\theta_1\right)$,注意到这里为了数学定义上的精确性,用的是 $\frac{d}{d\theta_1}J\left(\theta_1\right)$,如果不熟悉微积分学,就把它视作之前的 $\frac{\partial}{\partial\theta}$ 即可。 +该节探讨 $\theta_1$ 的梯度下降更新过程,即 $\theta_1 := \theta_1 - \alpha\frac{d}{d\theta_1}J\left(\theta_1\right)$,此处为了数学定义上的精确性,用的是 $\frac{d}{d\theta_1}J\left(\theta_1\right)$,如果不熟悉微积分学,就把它视作之前的 $\frac{\partial}{\partial\theta}$ 即可。 ![](image/20180106_184926.png) -把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 $J\left(\theta\right)$ 在初始点处有**正斜率**,也就是说它有**正导数**,则根据梯度下降公式 ,${{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$ 即 $\theta_1$ 会**向左边移动**。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。 +把红点定为初始点,切于初始点的红色直线的斜率,表示了函数 $J\left(\theta\right)$ 在初始点处有**正斜率**,也就是说它有**正导数**,则根据梯度下降公式 ,${{\theta }_{j}}:={{\theta }_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J\left( \theta_0, \theta_1 \right)$ 右边的结果是一个正值,即 $\theta_1$ 会**向左边移动**。这样不断重复,直到收敛(达到局部最小值,即斜率为0)。 -当然如果 $\theta$ 值开始就在极小值点处时,梯度下降算法将什么也不做($\theta_1 := \theta_1 - \alpha*0$)。 +初始 $\theta$ 值(初始点)是任意的,若初始点恰好就在极小值点处,梯度下降算法将什么也不做($\theta_1 := \theta_1 - \alpha*0$)。 > 不熟悉斜率的话,就当斜率的值等于图中三角形的高度除以水平长度好啦,精确地求斜率的方法是求导。 -另外,对于学习速率 $\alpha$ ,需要选取一个合适的值才能使得梯度下降算法运行良好。 -- 学习速率过小: + +对于学习速率 $\alpha$,需要选取一个合适的值才能使得梯度下降算法运行良好。 + +- 学习速率过小图示: ![](image/20180106_190944.png) 收敛的太慢,需要更多次的迭代。 -- 学习速率过大: +- 学习速率过大图示: ![](image/20180106_191023.png) @@ -316,9 +317,9 @@ $\frac{\partial}{\partial\theta_1} J(\theta)=\frac{1}{m}\sum\limits_{i=1}^{m}{{\ -上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用所有的数据集 $\left(\sum\limits_{i=1}^{m}\right)$ 更新。 +上文中所提到的梯度下降,都为批量梯度下降(Batch Gradient Descent),即每次计算都使用**所有**的数据集 $\left(\sum\limits_{i=1}^{m}\right)$ 更新。 -由于线性回归函数呈现**碗状**,且**只有一个**全局的最优值,所以函数**一定总会**收敛到全局最小值(学习速率不可过大)。同时,函数 $J$ 被称为凸二次函数,而线性回归函数求解最小值问题属于**凸函数优化问题**。 +由于线性回归函数呈现**碗状**,且**只有一个**全局的最优值,所以函数**一定总会**收敛到全局最小值(学习速率不可过大)。同时,函数 $J​$ 被称为凸二次函数,而线性回归函数求解最小值问题属于**凸函数优化问题**。 ![](image/24e9420f16fdd758ccb7097788f879e7.png) diff --git a/week2.html b/week2.html index 2be2a6e..d23b07f 100644 --- a/week2.html +++ b/week2.html @@ -220,8 +220,8 @@ header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", Aria -

4 多变量线性回归(Linear Regression with Multiple Variables)

4.1 多特征(Multiple Features)

对于一个要度量的对象,一般来说会有不同维度的多个特征。比如之前的房屋价格预测例子中,除了房屋的面积大小,可能还有房屋的年限、房屋的层数等等其他特征:

这里由于特征不再只有一个,引入一些新的记号

: 特征的总数

: 代表特征矩阵中第 行,也就是第 个训练实例。

: 代表特征矩阵中第 行的第 个特征,也就是第 个训练实例的第 个特征。

参照上图,则有

多变量假设函数 表示为:

对于 ,和单特征中一样,我们将其看作基础数值。例如,房价的基础价格。

参数向量的维度为 ,在特征向量中添加 后,其维度也变为 , 则运用线性代数,可对 简化。

: 矩阵的转置

: 为了计算方便我们会假设

4.2 多变量梯度下降(Gradient Descent for Multiple Variables)

多变量损失函数类似于单变量损失函数,

,其中

前文提到梯度下降对于最小化损失函数的通用性,则多变量梯度下降公式即

对其求导:

可展开为:

当然,同单变量梯度下降一样,计算时需要同时更新所有参数。

同时更新参数的向量化(Vectorization)实现:

4.3 梯度下降实践1-特征值缩放(Gradient Descent in Practice I - Feature Scaling)

在应用梯度下降算法实践时,由于各特征值的范围不一,可能会导致损失函数收敛过慢。

以房价预测问题为例,这里选取房屋面积大小和房间数量这两个特征。

下图中,左图是以原始数据绘制的损失函数轮廓图,右图为采用特征缩放(都除以最大值)后图像。左图中呈现的图像较扁,相对于使用特征缩放方法的右图,梯度下降算法需要更多次的迭代。

 

为了优化梯度下降的收敛速度,采用特征缩放的技巧,使各特征值的范围尽量一致

除了以上图人工选择并除以一个参数的方式,均值归一化(Mean normalization)方法更为便捷,可采用它来对所有特征值统一缩放:

使 $

对于特征的范围,并不一定需要使得 ,类似于 等也是可取的,而诸如 ,就显得过大/过小了。

另外注意,一旦采用特征缩放,我们就需对所有的输入采用特征缩放,包括训练集、测试集、预测输入等。

4.4 梯度下降实践2-学习速率(Gradient Descent in Practice II - Learning Rate)

通常,有两种方法来确定函数是否收敛

对于梯度下降,一般采用多次迭代收敛法来得出最小化损失函数的参数值,自动化测试收敛法(如设定 为阈值)则几乎不会被使用。

我们可以通过绘制损失函数关于迭代次数的图像,可视化梯度下降的执行过程,借助直观的图形来发现损失函数趋向于多少时能趋于收敛,依据图像变化情况,确定诸如学习速率的取值,迭代次数的大小等问题。

对于学习速率 ,一般上图展现的为适中情况,下图中,左图可能表明 过大,损失函数无法收敛,右图可能表明 过小,损失函数收敛的太慢。当然, 足够小时,损失函数在每轮迭代后一定会减少。

通过不断改变 值,绘制并观察图像,并以此来确定合适的学习速率。 尝试时可取

4.5 特征和多项式回归(Features and Polynomial Regression)

在特征选取时,我们也可以自己归纳总结,定义一个新的特征,用来取代或拆分旧的一个或多个特征。比如,对于房屋面积特征来说,我们可以将其拆分为长度和宽度两个特征,反之,我们也可以合并长度和宽度这两个特征为面积这一个特征。

线性回归只能以直线来对数据进行拟合,有时候需要使用曲线来对数据进行拟合,即多项式回归(Polynomial Regression)

比如一个二次方模型:

或者三次方模型:

或者平方根模型:

在使用多项式回归时,要记住非常有必要进行特征缩放,比如 的范围为 1-1000,那么 的范围则为 1- 1000000。

4.6 正规方程(Normal Equation)

对于一些线性回归问题来说,正规方程法给出了一个更好的解决问题的方式。

正规方程法,即令 ,通过解析函数的方式直接计算得出参数向量的值 ,Octave 中为 theta = inv(X'*X)*X'*y

: 矩阵 的逆,在 Octave 中,inv 函数计算矩阵的逆,类似的还有 pinv 函数。

下表列出了正规方程法与梯度下降算法的对比

条件梯度下降正规方程
是否需要选取 需要不需要
是否需要迭代运算需要不需要
特征量大1适用,不适用, 复杂度
适用范围2各类模型只适用线性模型,且矩阵需可逆

的推导过程

展开上式可得

注意到 都为标量,实际上是等价的,则

 

接下来对 求偏导,根据矩阵的求导法则:

 

所以有:

, 则有

4.7 不可逆性正规方程(Normal Equation Noninvertibility)

(本部分内容为选讲)

正规方程无法应用于不可逆的矩阵,发生这种问题的概率很小,通常由于

如果发现 的结果不可逆,可尝试:

对于这类不可逆的矩阵,我们称之为奇异矩阵退化矩阵

这种情况下,如果还想使用正规方程法,在Octave中,可以选用 pinv 函数,pinv 区别于 invpinv 函数被称为伪逆函数,在矩阵不可逆的时候,使用这个函数仍可正确地计算出 的值。

5 Octave/Matlab Tutorial

复习时可直接倍速回顾视频,笔记整理暂留。

5.1 Basic Operations

5.2 Moving Data Around

5.3 Computing on Data

5.4 Plotting Data

5.5 Control Statements_ for, while, if statement

5.6 Vectorization

5.x 常用函数整理


-
1 一般来说,当 超过 10000 时,对于正规方程而言,特征量较大。
+

4 多变量线性回归(Linear Regression with Multiple Variables)

4.1 多特征(Multiple Features)

对于一个要度量的对象,一般来说会有不同维度的多个特征。比如之前的房屋价格预测例子中,除了房屋的面积大小,可能还有房屋的年限、房屋的层数等等其他特征:

这里由于特征不再只有一个,引入一些新的记号

: 特征的总数

: 代表特征矩阵中第 行,也就是第 个训练实例。

: 代表特征矩阵中第 行的第 个特征,也就是第 个训练实例的第 个特征。

参照上图,则有

多变量假设函数 表示为:

对于 ,和单特征中一样,我们将其看作基础数值。例如,房价的基础价格。

参数向量的维度为 ,在特征向量中添加 后,其维度也变为 , 则运用线性代数,可对 简化。

: 矩阵的转置

: 为了计算方便我们会假设

4.2 多变量梯度下降(Gradient Descent for Multiple Variables)

多变量损失函数类似于单变量损失函数,

,其中

前文提到梯度下降对于最小化损失函数的通用性,则多变量梯度下降公式即

对其求导:

可展开为:

当然,同单变量梯度下降一样,计算时需要同时更新所有参数。

,则得到同时更新参数的向量化(Vectorization)实现:

4.3 梯度下降实践1-特征值缩放(Gradient Descent in Practice I - Feature Scaling)

在应用梯度下降算法实践时,由于各特征值的范围不一,可能会影响损失函数收敛速度。

以房价预测问题为例,这里选取房屋面积大小和房间数量这两个特征。

下图中,左图是以原始数据绘制的损失函数轮廓图,右图为采用特征缩放(都除以最大值)后图像。左图中呈现的图像较扁,相对于使用特征缩放方法的右图,梯度下降算法需要更多次的迭代。

 

为了优化梯度下降的收敛速度,采用特征缩放的技巧,使各特征值的范围尽量一致

除了以上图人工选择并除以一个参数的方式,均值归一化(Mean normalization)方法更为便捷,可采用它来对所有特征值统一缩放:

使

对于特征的范围,并不一定需要使得 ,类似于 等也是可取的,而诸如 ,就显得过大/过小了。

另外注意,一旦采用特征缩放,我们就需对所有的输入采用特征缩放,包括训练集、测试集、预测输入等。

4.4 梯度下降实践2-学习速率(Gradient Descent in Practice II - Learning Rate)

通常,有两种方法来确定函数是否收敛

  • 多次迭代收敛法

    • 无法确定需要多少次迭代
    • 较易绘制关于迭代次数的图像
    • 根据图像易预测所需的迭代次数
  • 自动化测试收敛法(比较阈值)

    • 不易选取阈值
    • 损失函数近乎直线时无法确定收敛情况

对于梯度下降,一般采用多次迭代收敛法来得出最小化损失函数的参数值,自动化测试收敛法(如设定 为阈值)则几乎不会被使用。

我们可以通过绘制损失函数关于迭代次数的图像,可视化梯度下降的执行过程,借助直观的图形来发现损失函数趋向于多少时能趋于收敛,依据图像变化情况,确定诸如学习速率的取值,迭代次数的大小等问题。

对于学习速率 ,一般上图展现的为适中情况,下图中,左图可能表明 过大,损失函数无法收敛,右图可能表明 过小,损失函数收敛的太慢。当然, 足够小时,损失函数在每轮迭代后一定会减少。

通过不断改变 值,绘制并观察图像,并以此来确定合适的学习速率。 尝试时可取

4.5 特征和多项式回归(Features and Polynomial Regression)

在特征选取时,我们也可以自己归纳总结,定义一个新的特征,用来取代或拆分旧的一个或多个特征。比如,对于房屋面积特征来说,我们可以将其拆分为长度和宽度两个特征,反之,我们也可以合并长度和宽度这两个特征为面积这一个特征。

线性回归只能以直线来对数据进行拟合,有时候需要使用曲线来对数据进行拟合,即多项式回归(Polynomial Regression)

比如一个二次方模型:

或者三次方模型:

或者平方根模型:

在使用多项式回归时,要记住非常有必要进行特征缩放,比如 的范围为 1-1000,那么 的范围则为 1- 1000000。

4.6 正规方程(Normal Equation)

对于一些线性回归问题来说,正规方程法给出了一个更好的解决问题的方式。

正规方程法,即令 ,通过解析函数的方式直接计算得出参数向量的值 ,Octave 中为 theta = inv(X'*X)*X'*y

: 矩阵 的逆,在 Octave 中,inv 函数用于计算矩阵的逆,类似的还有 pinv 函数。

下表列出了正规方程法与梯度下降算法的对比

条件梯度下降正规方程
是否需要选取 需要不需要
是否需要迭代运算需要不需要
特征量大1适用,不适用, 复杂度
适用范围2各类模型只适用线性模型,且矩阵需可逆

正规方程法的推导过程

展开上式可得

注意到 都为标量,实际上是等价的,则

 

接下来对 求偏导,根据矩阵的求导法则:

 

所以有:

, 则有

4.7 不可逆性正规方程(Normal Equation Noninvertibility)

(本部分内容为选讲)

正规方程无法应用于不可逆的矩阵,发生这种问题的概率很小,通常由于

  • 特征之间线性相关

    比如同时包含英寸的尺寸和米为单位的尺寸两个特征,它们是线性相关的

  • 特征数量大于训练集的数量

如果发现 的结果不可逆,可尝试:

  • 减少多余/重复特征
  • 增加训练集数量
  • 使用正则化(后文)

对于这类不可逆的矩阵,我们称之为奇异矩阵退化矩阵

这种情况下,如果还想使用正规方程法,在Octave中,可以选用 pinv 函数,pinv 区别于 invpinv 函数被称为伪逆函数,在矩阵不可逆的时候,使用这个函数仍可正确地计算出 的值。

5 Octave/Matlab Tutorial

复习时可直接倍速回顾视频,笔记整理暂留。

5.1 Basic Operations

5.2 Moving Data Around

5.3 Computing on Data

5.4 Plotting Data

5.5 Control Statements_ for, while, if statement

5.6 Vectorization

5.x 常用函数整理


+
1 一般来说,当 超过 10000 时,对于正规方程而言,特征量较大。
2 梯度下降算法的普适性好,而对于特定的线性回归模型,正规方程是很好的替代品。
\ No newline at end of file diff --git a/week2.md b/week2.md index 4b7635f..fa479eb 100644 --- a/week2.md +++ b/week2.md @@ -50,11 +50,14 @@ $\begin{aligned} & \text{repeat until convergence:} \; \lbrace \newline \; & \th 当然,同单变量梯度下降一样,计算时需要**同时更新**所有参数。 -同时更新参数的向量化(Vectorization)实现: $\theta = \theta - \alpha \frac{1}{m}(X^T(X\theta-y))$ +$h_\theta\left(x\right)= \theta^T x$,则得到同时更新参数的向量化(Vectorization)实现: +$$ +\theta = \theta - \alpha \frac{1}{m}(X^T(X\theta-y)) +$$ ## 4.3 梯度下降实践1-特征值缩放(Gradient Descent in Practice I - Feature Scaling) -在应用梯度下降算法实践时,由于各特征值的范围不一,可能会导致损失函数收敛过慢。 +在应用梯度下降算法实践时,由于各特征值的范围不一,可能会影响损失函数收敛速度。 以房价预测问题为例,这里选取房屋面积大小和房间数量这两个特征。 @@ -68,7 +71,7 @@ $\begin{aligned} & \text{repeat until convergence:} \; \lbrace \newline \; & \th 除了以上图人工选择并除以一个参数的方式,**均值归一化(Mean normalization)**方法更为便捷,可采用它来对所有特征值统一缩放: - $x_i=\frac{x_i-average(x)}{maximum(x)-minimum(x)}, 使得 $ $x_i \in (-1,1)$$ + $x_i=\frac{x_i-average(x)}{maximum(x)-minimum(x)}, 使得 $ $x_i \in (-1,1)$ 对于特征的范围,并不一定需要使得 $-1 \leqslant x \leqslant 1$,类似于 $1\leqslant x \leqslant 3$ 等也是可取的,而诸如 $-100 \leqslant x \leqslant 100 $,$-0.00001 \leqslant x \leqslant 0.00001$,就显得过大/过小了。 @@ -120,7 +123,7 @@ $\begin{aligned} & \text{repeat until convergence:} \; \lbrace \newline \; & \th 正规方程法,即令 $\frac{\partial}{\partial{\theta_{j}}}J\left( {\theta_{j}} \right)=0$ ,通过解析函数的方式直接计算得出参数向量的值 $\theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y$ ,Octave 中为 `theta = inv(X'*X)*X'*y`。 -> ${X}^{-1}$: 矩阵 $X$ 的逆,在 Octave 中,`inv` 函数计算矩阵的逆,类似的还有 `pinv` 函数。 +> ${X}^{-1}$: 矩阵 $X$ 的逆,在 Octave 中,`inv` 函数用于计算矩阵的逆,类似的还有 `pinv` 函数。 下表列出了正规方程法与梯度下降算法的对比 @@ -134,34 +137,34 @@ $\begin{aligned} & \text{repeat until convergence:} \; \lbrace \newline \; & \th [^1]: 一般来说,当 $n$ 超过 10000 时,对于正规方程而言,特征量较大。 [^2]: 梯度下降算法的普适性好,而对于特定的线性回归模型,正规方程是很好的替代品。 -**$\theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y$ 的推导过程**: +**正规方程法的推导过程**: -$\begin{aligned} & J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}\newline \; & =\frac{1}{2m}||X\theta-y||^2 \newline \; & =\frac{1}{2m}(X\theta-y)^T(X\theta-y) &\newline \end{aligned}$ +​ $\begin{aligned} & J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {h_{\theta}}\left( {x^{(i)}} \right)-{y^{(i)}} \right)}^{2}}}\newline \; & =\frac{1}{2m}||X\theta-y||^2 \newline \; & =\frac{1}{2m}(X\theta-y)^T(X\theta-y) &\newline \end{aligned}$ 展开上式可得 -$J(\theta )= \frac{1}{2m}\left( {{\theta }^{T}}{{X}^{T}}X\theta -{{\theta}^{T}}{{X}^{T}}y-{{y}^{T}}X\theta + {{y}^{T}}y \right)$ +​ $J(\theta )= \frac{1}{2m}\left( {{\theta }^{T}}{{X}^{T}}X\theta -{{\theta}^{T}}{{X}^{T}}y-{{y}^{T}}X\theta + {{y}^{T}}y \right)$ 注意到 ${{\theta}^{T}}{{X}^{T}}y$ 与 ${{y}^{T}}X\theta$ 都为标量,实际上是等价的,则 -$J(\theta) = \frac{1}{2m}[X^TX\theta-2\theta^TX^Ty+y^Ty]$ +​ $J(\theta) = \frac{1}{2m}[X^TX\theta-2\theta^TX^Ty+y^Ty]$ 接下来对$J(\theta )$ 求偏导,根据矩阵的求导法则: -$\frac{dX^TAX}{dX}=(A+A^\mathrm{T})X$ +​ $\frac{dX^TAX}{dX}=(A+A^\mathrm{T})X$ -$\frac{dX^TA}{dX}={A}$ +​ $\frac{dX^TA}{dX}={A}$ 所以有: -$\frac{\partial J\left( \theta \right)}{\partial \theta }=\frac{1}{2m}\left(2{{X}^{T}}X\theta -2{{X}^{T}}y \right)$ +​ $\frac{\partial J\left( \theta \right)}{\partial \theta }=\frac{1}{2m}\left(2{{X}^{T}}X\theta -2{{X}^{T}}y \right)$ -​ $={{X}^{T}}X\theta -{{X}^{T}}y$ +​ $={{X}^{T}}X\theta -{{X}^{T}}y$ 令$\frac{\partial J\left( \theta \right)}{\partial \theta }=0$, 则有 $$ @@ -193,7 +196,7 @@ $$ 这种情况下,如果还想使用正规方程法,在Octave中,可以选用 `pinv` 函数,`pinv` 区别于 `inv`,`pinv` 函数被称为伪逆函数,在矩阵不可逆的时候,使用这个函数仍可正确地计算出 $\theta$ 的值。 -# 5 Octave Matlab Tutorial +# 5 Octave/Matlab Tutorial 复习时可直接倍速回顾视频,笔记整理暂留。 diff --git a/week3.html b/week3.html index 94a5fe9..a96d7b8 100644 --- a/week3.html +++ b/week3.html @@ -220,6 +220,6 @@ header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", Aria -

6 逻辑回归(Logistic Regression)

6.1 分类(Classification)

在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。

  • 垃圾邮件判断
  • 金融欺诈判断
  • 肿瘤诊断

肿瘤诊断问题:

肿瘤诊断问题是一个二元分类问题(binary class problems),则定义 ,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项

在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定

,预测为 ,即正向类;

,预测为 ,即负向类。

即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果

 

接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果。

不仅如此,线性回归算法的值域为 ,则当线性回归函数给出诸如 等很大/很小(负数)的数值时,结果 ,这显得非常怪异。

 

区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即

6.2 假设函数表示(Hypothesis Representation)

为了使 ,引入逻辑回归模型,定义假设函数

对比线性回归函数 表示逻辑函数(logistic function),复合起来,则为线性回归函数。

一个常用的逻辑函数是 S 形函数,叫做 sigmoid 函数(如下图),其公式为

sigmoid function

应用 sigmoid 函数,则逻辑回归模型:

的作用是,根据输入 ,参数 计算得出”输出 “的可能性(estimated probability),概率学中表示为:

 

以肿瘤诊断为例, 表示病人有 的概率得了恶性肿瘤。

6.3 Decision Boundary

6.4 Cost Function

6.5 Simplified Cost Function and Gradient Descent

6.6 Advanced Optimization

6.7 Multiclass Classification_ One-vs-all

7 Regularization

7.1 The Problem of Overfitting

7.2 Cost Function

7.3 Regularized Linear Regression

7.4 Regularized Logistic Regression

+

6 逻辑回归(Logistic Regression)

6.1 分类(Classification)

在分类问题中,预测的结果是离散值(结果是否属于某一类),逻辑回归算法(Logistic Regression)被用于解决这类分类问题。

  • 垃圾邮件判断
  • 金融欺诈判断
  • 肿瘤诊断

肿瘤诊断问题:

肿瘤诊断问题是一个二元分类问题(binary class problems),则定义 ,其中 0 表示负向类(negative class),代表恶性肿瘤("-"),1 为正向类(positive class),代表良性肿瘤("+")。如图,定义最右边的样本为偏差项

在未加入偏差项时,线性回归算法给出了品红色的拟合直线,若规定

,预测为 ,即正向类;

,预测为 ,即负向类。

即以 0.5 为阈值(threshold),则我们就可以根据线性回归结果,得到相对正确的分类结果

 

接下来加入偏差项,线性回归算法给出了靛青色的拟合直线,如果阈值仍然为 0.5,可以看到算法在某些情况下会给出完全错误的结果。

不仅如此,线性回归算法的值域为 ,则当线性回归函数给出诸如 等很大/很小(负数)的数值时,结果 ,这显得非常怪异。

 

区别于线性回归算法,逻辑回归算法是一个分类算法,其输出值永远在 0 到 1 之间,即

6.2 假设函数表示(Hypothesis Representation)

为了使 ,引入逻辑回归模型,定义假设函数

对比线性回归函数 表示逻辑函数(logistic function),复合起来,则为线性回归函数。

一个常用的逻辑函数是 S 形函数,叫做 sigmoid 函数(如下图),其公式为

sigmoid function

应用 sigmoid 函数,则逻辑回归模型:

逻辑回归模型中, 的作用是,根据输入 以及参数 ,计算得出”输出 “的可能性(estimated probability),概率学中表示为:

 

以肿瘤诊断为例, 表示病人有 的概率得了恶性肿瘤。

6.3 决策边界(Decision Boundary)

 

6.4 Cost Function

6.5 Simplified Cost Function and Gradient Descent

6.6 Advanced Optimization

6.7 Multiclass Classification_ One-vs-all

7 Regularization

7.1 The Problem of Overfitting

7.2 Cost Function

7.3 Regularized Linear Regression

7.4 Regularized Logistic Regression

\ No newline at end of file diff --git a/week3.md b/week3.md index 53ff831..121b66b 100644 --- a/week3.md +++ b/week3.md @@ -42,13 +42,13 @@ h_\theta \left( x \right)=g\left(\theta^{T}X \right) $$ 对比线性回归函数 $h_\theta \left( x \right)=\theta^{T}X$,$g$ 表示逻辑函数([logistic function][1]),复合起来,则为线性回归函数。 -一个常用的逻辑函数是 S 形函数,叫做 **[sigmoid 函数][2]**(如下图),其公式为 $g\left( z \right)=\frac{1}{1+{{e}^{-z}}}$。 +一个常用的逻辑函数是 S 形函数,叫做 [sigmoid 函数][2](如下图),其公式为 $g\left( z \right)=\frac{1}{1+{{e}^{-z}}}$。 ![sigmoid function](image/2413fbec8ff9fa1f19aaf78265b8a33b_Logistic_function.png) 应用 sigmoid 函数,则逻辑回归模型:$$h_{\theta}(x)=g(\theta^Tx) =\frac{1}{1+e^{-\theta^Tx}}$$ -$h_\theta \left( x \right)$ 的作用是,根据输入 $x$,参数 $\theta$ 计算得出”输出 $y=1$“的可能性(estimated probability),概率学中表示为: +逻辑回归模型中,$h_\theta \left( x \right)$ 的作用是,根据输入 $x$ 以及参数 $\theta$,计算得出”输出 $y=1$“的可能性(estimated probability),概率学中表示为: $\begin{align*}& h_\theta(x) = P(y=1 | x ; \theta) = 1 - P(y=0 | x ; \theta) \newline & P(y = 0 | x;\theta) + P(y = 1 | x ; \theta) = 1\end{align*}$ @@ -59,7 +59,9 @@ $\begin{align*}& h_\theta(x) = P(y=1 | x ; \theta) = 1 - P(y=0 | x ; \theta) \ne [1]: https://en.wikipedia.org/wiki/Logistic_function [2]: https://en.wikipedia.org/wiki/Sigmoid_function -## 6.3 Decision Boundary +## 6.3 决策边界(Decision Boundary) + + ## 6.4 Cost Function diff --git a/week6.md b/week6.md index 461cde4..702966f 100644 --- a/week6.md +++ b/week6.md @@ -8,7 +8,7 @@ ## 10.3 Model Selection and Train/Validation/Test Sets -##10.4 Diagnosing Bias vs. Variance +## 10.4 Diagnosing Bias vs. Variance ## 10.5 Regularization and Bias/Variance