From 1d9da0d5da7f206be98b077203a3be6d154f31b9 Mon Sep 17 00:00:00 2001 From: scruel Date: Sun, 21 Jan 2018 23:48:08 +0800 Subject: [PATCH] optimize fix and optimize the derivation of the cost function of week3 --- image/20180120_105744.png | Bin 0 -> 73728 bytes image/20180121_110111.png | Bin 0 -> 76066 bytes index.html | 3 ++- week2.html | 4 ++-- week2.md | 4 ++-- week3.html | 21 ++++++++++----------- week3.md | 23 +++++++++++------------ week4.html | 2 +- week4.md | 2 +- 9 files changed, 29 insertions(+), 30 deletions(-) create mode 100644 image/20180120_105744.png create mode 100644 image/20180121_110111.png diff --git a/image/20180120_105744.png b/image/20180120_105744.png new file mode 100644 index 0000000000000000000000000000000000000000..097b24a104e41941f53a754fcc2368290945a727 GIT binary patch literal 73728 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 z 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 literal 0 HcmV?d00001 diff --git a/image/20180121_110111.png b/image/20180121_110111.png new file mode 100644 index 0000000000000000000000000000000000000000..101a08d37a4f6f2c5ec8de625049530f4403a8d8 GIT binary patch literal 76066 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 -

吴恩达(Andrew Ng)机器学习公开课中文笔记

GitHub 项目首页

 

week1

  1. 引言(Introduction)
  2. 单变量线性回归(Linear Regression with One Variable)

week2

  1. 线性代数回顾(Linear Algebra Review)
  2. 多变量线性回归(Linear Regression with Multiple Variables)
  3. Octave/Matlab 指南(Octave/Matlab Tutorial)

week3

  1. 逻辑回归(Logistic Regression)
  2. 正则化(Regularization)

week4

  1. 神经网络:表达(Neural Networks: Representation)

week5

  1. 神经网络:学习(Neural Networks: Learning)

week6

  1. 机器学习应用的建议(Advice for Applying Machine Learning)
  2. 机器学习系统设计(Machine Learning System Design)

week7

  1. 支持向量机(Support Vector Machines)

week8

  1. 无监督学习(Unsupervised Learning)
  2. 降维(Dimensionality Reduction)

week9

  1. 异常检测(Anomaly Detection)
  2. 推荐系统(Recommender Systems)

week10

  1. 大规模机器学习(Large Scale Machine Learning)

week11

  1. 实战:图像光学识别(Application Example: Photo OCR)

 

 

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

 

知乎文章

By: Scruel

 

+

吴恩达(Andrew Ng)机器学习公开课中文笔记

GitHub 项目首页

 

week1

  1. 引言(Introduction)
  2. 单变量线性回归(Linear Regression with One Variable)

week2

  1. 线性代数回顾(Linear Algebra Review)
  2. 多变量线性回归(Linear Regression with Multiple Variables)
  3. Octave/Matlab 指南(Octave/Matlab Tutorial)

week3

  1. 逻辑回归(Logistic Regression)
  2. 正则化(Regularization)

week4

  1. 神经网络:表达(Neural Networks: Representation)

week5

  1. 神经网络:学习(Neural Networks: Learning)

week6

  1. 机器学习应用的建议(Advice for Applying Machine Learning)
  2. 机器学习系统设计(Machine Learning System Design)

week7

  1. 支持向量机(Support Vector Machines)

week8

  1. 无监督学习(Unsupervised Learning)
  2. 降维(Dimensionality Reduction)

week9

  1. 异常检测(Anomaly Detection)
  2. 推荐系统(Recommender Systems)

week10

  1. 大规模机器学习(Large Scale Machine Learning)

week11

  1. 实战:图像光学识别(Application Example: Photo OCR)

 

 

Creative Commons License

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

 

知乎文章

By: Scruel

 

+

diff --git a/week2.html b/week2.html index 503d5bc..ef95ddf 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/Matlab 代码: theta = inv(X'*X)*X'*y

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

X': 在 Octave 中表示矩阵 X 的转置,即

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

条件梯度下降正规方程
是否需要选取 需要不需要
是否需要迭代运算需要不需要
特征量大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/Matlab 代码: theta = inv(X'*X)*X'*y

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

X': 在 Octave 中表示矩阵 X 的转置,即

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

条件梯度下降正规方程
是否需要选取 需要不需要
是否需要迭代运算需要不需要
特征量大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 19df81c..7136e43 100644 --- a/week2.md +++ b/week2.md @@ -79,9 +79,9 @@ $$ 除了以上图人工选择并除以一个参数的方式,**均值归一化(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$,就显得过大/过小了。 +对于特征的范围,并不一定需要使得 $-1 \leqslant x \leqslant 1​$,类似于 $1\leqslant x \leqslant 3​$ 等也是可取的,而诸如 $-100 \leqslant x \leqslant 100 ​$,$-0.00001 \leqslant x \leqslant 0.00001​$,就显得过大/过小了。 另外注意,一旦采用特征缩放,我们就需对所有的输入采用特征缩放,包括训练集、测试集、预测输入等。 diff --git a/week3.html b/week3.html index 6a6701a..ad2d20f 100644 --- a/week3.html +++ b/week3.html @@ -332,19 +332,18 @@ 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)

决策边界的概念,可帮助我们更好地理解逻辑回归模型的拟合原理。

在逻辑回归中,有假设函数

为了得出分类的结果,这里和前面一样,规定以 为阈值:

回忆一下 sigmoid 函数的图像:

sigmoid function

观察可得当 时,有 ,即

同线性回归模型的不同点在于:

直观一点来个例子, 是下图模型的假设函数:

根据上面的讨论,要进行分类,那么只要 时,就预测 ,即预测为正向类。

如果取 ,则有 ,当 时,易绘制图中的品红色直线即决策边界,为正向类(以红叉标注的数据)给出 的分类预测结果。

 

上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。

为了拟合下图数据,建模多项式假设函数:

这里取 ,决策边界对应了一个在原点处的单位圆(),如此便可给出分类结果,如图中品红色曲线:

 

当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。

 

简单来说,决策边界就是分类的分界线,分类现在实际就由 (中的 )决定啦。

6.4 代价函数(Cost Function)

那我们怎么知道决策边界是啥样? 多少时能很好的拟合数据?当然,见招拆招,总要来个

如果直接套用线性回归的代价函数:

其中 ,可绘制关于 的图像,如下图

回忆线性回归中的平方损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样将使得梯度下降算法无法确定收敛点是全局最优。

如果此处的损失函数也是一个凸函数,是否也有同样的性质,从而最优化?这类讨论凸函数最优值的问题,被称为凸优化问题(Convex optimization)

当然,损失函数不止平方损失函数一种。

对于逻辑回归,更换平方损失函数为对数损失函数,可由统计学中的最大似然估计方法推出代价函数

则有关于 的图像如下:

如左图,当训练集的结果为 (正样本)时,随着假设函数趋向于 ,代价函数的值会趋于 ,即意味着拟合程度很好。如果假设函数此时趋于 ,则会给出一个很高的代价,拟合程度,算法会根据其迅速纠正 值,右图 同理。

区别于平方损失函数,对数损失函数也是一个凸函数,但没有局部最优值。

6.5 简化的成本函数和梯度下降(Simplified Cost Function and Gradient Descent)

由于懒得分类讨论,对于二元分类问题,我们可把代价函数简化为一个函数: -

,左边式子整体为 ,当 ,则 ,右边式子整体为0,也就和上面的分段函数一样了,而一个式子计算起来更方便。

向量化实现:

 

为了最优化 ,仍使用梯度下降法,算法同线性回归中一致:

解出偏导得:

注意,虽然形式上梯度下降算法同线性回归一样,但其中的假设函不同,即,不过求导后的结果也相同。

向量化实现:

 

逻辑回归中代价函数求导的推导过程:

带入得

-

根据求偏导的性质,没有 的项求偏导即为 ,都消去,则得:

所以有:

- - - - - - -

则可得代价函数的导数:

6.6 进阶优化(Advanced Optimization)

运行梯度下降算法,其能最小化代价函数 并得出 的最优值,在使用梯度下降算法时,如果不需要观察代价函数的收敛情况,则直接计算 的导数项即可,而不需要计算 值。

我们编写代码给出代价函数及其偏导数然后传入梯度下降算法中,接下来算法则会为我们最小化代价函数给出参数的最优解。这类算法被称为最优化算法(Optimization Algorithms),梯度下降算法不是唯一的最小化算法1

一些最优化算法:

  • 梯度下降法(Gradient Descent)

  • 共轭梯度算法(Conjugate gradient)

  • 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)

    • DFP算法
    • 局部优化法(BFGS)
    • 有限内存局部优化法(L-BFGS)
  • 拉格朗日乘数法(Lagrange multiplier)

比较梯度下降算法:一些最优化算法虽然会更为复杂,难以调试,自行实现又困难重重,开源库又效率也不一,哎,做个调包侠还得碰运气。不过这些算法通常效率更高,并无需选择学习速率 (少一个参数少一份痛苦啊!)。

Octave/Matlab 中对这类高级算法做了封装,易于调用。

 

假设有 ,要求参数 的最优值。

下面为 Octave/Matlab 求解最优化问题的代码实例:

  1. 创建一个函数以返回代价函数及其偏导数:
 
  1. costFunction 函数及所需参数传入最优化函数 fminunc,以求解最优化问题:
 

'GradObj', 'on': 启用梯度目标参数(则需要将梯度传入算法)

'MaxIter', 100: 最大迭代次数为 100 次

@xxx: Octave/Matlab 中的函数指针

optTheta: 最优化得到的参数向量

functionVal: 引用函数最后一次的返回值

exitFlag: 标记代价函数是否收敛

注:Octave/Matlab 中可以使用 help fminunc 命令随时查看函数的帮助文档。

  1. 返回结果
 

6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all)

一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。

原理是,转化多类别分类问题为多个二元分类问题,这种方法被称为 One-vs-all。

正式定义:

: 输出 (属于第 个分类)的可能性

: 类别总数,如上图

注意多类别分类问题中 的结果不再只是一个实数而是一个向量,如果类别总数为 ,现在 就是一个 维向量。

对于某个样本实例,需计算所有的 种分类情况得到 ,然后看分为哪个类别时预测输出的值最大,就说它输出属于哪个类别,即

7 正则化(Regularization)

7.1 过拟合问题(The Problem of Overfitting)

对于拟合的表现,可以分为三类情况:

  • 欠拟合(Underfitting)

    无法很好的拟合训练集中的数据,预测值和实际值的误差很大,这类情况被称为欠拟合。拟合模型比较简单(特征选少了)时易出现这类情况。类似于,你上课不好好听,啥都不会,下课也差不多啥都不会。

  • 优良的拟合(Just right)

    不论是训练集数据还是不在训练集中的预测数据,都能给出较为正确的结果。类似于,学霸学神!

  • 过拟合(Overfitting)

    能很好甚至完美拟合训练集中的数据,即 ,但是对于不在训练集中的新数据,预测值和实际值的误差会很大,泛化能力弱,这类情况被称为过拟合。拟合模型过于复杂(特征选多了)时易出现这类情况。类似于,你上课跟着老师做题都会都听懂了,下课遇到新题就懵了不会拓展。

线性模型中的拟合情况(左图欠拟合,右图过拟合): +

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)

决策边界的概念,可帮助我们更好地理解逻辑回归模型的拟合原理。

在逻辑回归中,有假设函数

为了得出分类的结果,这里和前面一样,规定以 为阈值:

回忆一下 sigmoid 函数的图像:

sigmoid function

观察可得当 时,有 ,即

同线性回归模型的不同点在于:

直观一点来个例子, 是下图模型的假设函数:

根据上面的讨论,要进行分类,那么只要 时,就预测 ,即预测为正向类。

如果取 ,则有 ,当 时,易绘制图中的品红色直线即决策边界,为正向类(以红叉标注的数据)给出 的分类预测结果。

 

上面讨论了逻辑回归模型中线性拟合的例子,下面则是一个多项式拟合的例子,和线性回归中的情况也是类似的。

为了拟合下图数据,建模多项式假设函数:

这里取 ,决策边界对应了一个在原点处的单位圆(),如此便可给出分类结果,如图中品红色曲线:

 

当然,通过一些更为复杂的多项式,还能拟合那些图像显得非常怪异的数据,使得决策边界形似碗状、爱心状等等。

 

简单来说,决策边界就是分类的分界线,分类现在实际就由 (中的 )决定啦。

6.4 代价函数(Cost Function)

那我们怎么知道决策边界是啥样? 多少时能很好的拟合数据?当然,见招拆招,总要来个

如果直接套用线性回归的代价函数:

其中 ,可绘制关于 的图像,如下图

回忆线性回归中的平方损失函数,其是一个二次凸函数(碗状),二次凸函数的重要性质是只有一个局部最小点即全局最小点。上图中有许多局部最小点,这样将使得梯度下降算法无法确定收敛点是全局最优。

如果此处的损失函数也是一个凸函数,是否也有同样的性质,从而最优化?这类讨论凸函数最优值的问题,被称为凸优化问题(Convex optimization)

当然,损失函数不止平方损失函数一种。

对于逻辑回归,更换平方损失函数为对数损失函数,可由统计学中的最大似然估计方法推出代价函数

则有关于 的图像如下:

如左图,当训练集的结果为 (正样本)时,随着假设函数趋向于 ,代价函数的值会趋于 ,即意味着拟合程度很好。如果假设函数此时趋于 ,则会给出一个很高的代价,拟合程度,算法会根据其迅速纠正 值,右图 同理。

区别于平方损失函数,对数损失函数也是一个凸函数,但没有局部最优值。

6.5 简化的成本函数和梯度下降(Simplified Cost Function and Gradient Descent)

由于懒得分类讨论,对于二元分类问题,我们可把代价函数简化为一个函数: +

,左边式子整体为 ,当 ,则 ,右边式子整体为0,也就和上面的分段函数一样了,而一个式子计算起来更方便。

向量化实现:

 

为了最优化 ,仍使用梯度下降法,算法同线性回归中一致:

解出偏导得:

注意,虽然形式上梯度下降算法同线性回归一样,但其中的假设函不同,即,不过求导后的结果也相同。

向量化实现:

 

逻辑回归中代价函数求导的推导过程:

忆及 ,将 带入得

+

根据求偏导的性质,没有 的项求偏导即为 ,都消去,则得:

所以有:

+ + + + + +

则可得代价函数的导数:

6.6 进阶优化(Advanced Optimization)

运行梯度下降算法,其能最小化代价函数 并得出 的最优值,在使用梯度下降算法时,如果不需要观察代价函数的收敛情况,则直接计算 的导数项即可,而不需要计算 值。

我们编写代码给出代价函数及其偏导数然后传入梯度下降算法中,接下来算法则会为我们最小化代价函数给出参数的最优解。这类算法被称为最优化算法(Optimization Algorithms),梯度下降算法不是唯一的最小化算法1

一些最优化算法:

  • 梯度下降法(Gradient Descent)

  • 共轭梯度算法(Conjugate gradient)

  • 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)

    • DFP算法
    • 局部优化法(BFGS)
    • 有限内存局部优化法(L-BFGS)
  • 拉格朗日乘数法(Lagrange multiplier)

比较梯度下降算法:一些最优化算法虽然会更为复杂,难以调试,自行实现又困难重重,开源库又效率也不一,哎,做个调包侠还得碰运气。不过这些算法通常效率更高,并无需选择学习速率 (少一个参数少一份痛苦啊!)。

Octave/Matlab 中对这类高级算法做了封装,易于调用。

 

假设有 ,要求参数 的最优值。

下面为 Octave/Matlab 求解最优化问题的代码实例:

  1. 创建一个函数以返回代价函数及其偏导数:
 
  1. costFunction 函数及所需参数传入最优化函数 fminunc,以求解最优化问题:
 

'GradObj', 'on': 启用梯度目标参数(则需要将梯度传入算法)

'MaxIter', 100: 最大迭代次数为 100 次

@xxx: Octave/Matlab 中的函数指针

optTheta: 最优化得到的参数向量

functionVal: 引用函数最后一次的返回值

exitFlag: 标记代价函数是否收敛

注:Octave/Matlab 中可以使用 help fminunc 命令随时查看函数的帮助文档。

  1. 返回结果
 

6.7 多类别分类: 一对多(Multiclass Classification: One-vs-all)

一直在讨论二元分类问题,这里谈谈多类别分类问题(比如天气预报)。

原理是,转化多类别分类问题为多个二元分类问题,这种方法被称为 One-vs-all。

正式定义:

: 输出 (属于第 个分类)的可能性

: 类别总数,如上图

注意多类别分类问题中 的结果不再只是一个实数而是一个向量,如果类别总数为 ,现在 就是一个 维向量。

对于某个样本实例,需计算所有的 种分类情况得到 ,然后看分为哪个类别时预测输出的值最大,就说它输出属于哪个类别,即

7 正则化(Regularization)

7.1 过拟合问题(The Problem of Overfitting)

对于拟合的表现,可以分为三类情况:

  • 欠拟合(Underfitting)

    无法很好的拟合训练集中的数据,预测值和实际值的误差很大,这类情况被称为欠拟合。拟合模型比较简单(特征选少了)时易出现这类情况。类似于,你上课不好好听,啥都不会,下课也差不多啥都不会。

  • 优良的拟合(Just right)

    不论是训练集数据还是不在训练集中的预测数据,都能给出较为正确的结果。类似于,学霸学神!

  • 过拟合(Overfitting)

    能很好甚至完美拟合训练集中的数据,即 ,但是对于不在训练集中的新数据,预测值和实际值的误差会很大,泛化能力弱,这类情况被称为过拟合。拟合模型过于复杂(特征选多了)时易出现这类情况。类似于,你上课跟着老师做题都会都听懂了,下课遇到新题就懵了不会拓展。

线性模型中的拟合情况(左图欠拟合,右图过拟合):

逻辑分类模型中的拟合情况:

 

为了度量拟合表现,引入:

  • 偏差(bias)

    指模型的预测值与真实值的偏离程度。偏差越大,预测值偏离真实值越厉害。偏差低意味着能较好地反应训练集中的数据情况。

  • 方差(Variance)

    指模型预测值的离散程度或者变化范围。方差越大,数据的分布越分散,函数波动越大,泛化能力越差。方差低意味着拟合曲线的稳定性高,波动小。

据此,我们有对同一数据的各类拟合情况如下图: -

据上图,高偏差意味着欠拟合,高方差意味着过拟合。

我们应尽量使得拟合模型处于低方差(较好地拟合数据)状态且同时处于低偏差(较好地预测新值)的状态。

避免过拟合的方法有:

  • 减少特征的数量

    • 手动选取需保留的特征
    • 使用模型选择算法来选取合适的特征(如 PCA 算法)
    • 减少特征的方式易丢失有用的特征信息
  • 正则化(Regularization)

    • 可保留所有参数(许多有用的特征都能轻微影响结果)
    • 减少/惩罚各参数大小(magnitude),以减轻各参数对模型的影响程度
    • 当有很多参数对于模型只有轻微影响时,正则化方法的表现很好

7.2 代价函数(Cost Function)

很多时候由于特征数量过多,过拟合时我们很难选出要保留的特征,这时候应用正则化方法则是很好的选择。

上文中, 这样一个复杂的多项式较易过拟合,在不减少特征的情况下,如果能消除类似于 等复杂部分,那复杂函数就变得简单了

为了保留各个参数的信息,不修改假设函数,改而修改代价函数:

上式中,我们在代价函数中增加了 的惩罚项(penalty term) ,如果要最小化代价函数,那么势必需要极大地减小 ,从而使得假设函数中的 这两项的参数非常小,就相当于没有了,假设函数也就“变得”简单了,从而在保留各参数的情况下避免了过拟合问题。

 

根据上面的讨论,有时也无法决定要减少哪个参数,故统一惩罚除了 外的所有参数。

代价函数:

: 正则化参数(Regularization Parameter),

: 不惩罚基础参数

: 正则化项

正则化参数类似于学习速率,也需要我们自行对其选择一个合适的值。

  • 过大

    • 导致模型欠拟合(假设可能会变成近乎 的直线 )
    • 无法正常去过拟问题
    • 梯度下降可能无法收敛
  • 过小

    • 无法避免过拟合(等于没有)

正则化符合奥卡姆剃刀(Occam's razor)原理。在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。可以假设复杂的模型有较大的先验概率,简单的模型有较小的先验概率。

正则化是结构风险最小化策略的实现,是去过拟合问题的典型方法,虽然看起来多了个一参数多了一重麻烦,后文会介绍自动选取正则化参数的方法。模型越复杂,正则化参数值就越大。比如,正则化项可以是模型参数向量的范数。

7.3 线性回归正则化(Regularized Linear Regression)

应用正则化的线性回归梯度下降算法:

也可以移项得到更新表达式的另一种表示形式

: 正则化项

 

应用正则化的正规方程法2

: 正则化项

: 第一行第一列为 维单位矩阵

Matlab/Octave 代码:

 

 

前文提到正则化可以解决正规方程法中不可逆的问题,即增加了 正则化项后,可以保证 可逆(invertible),即便 不可逆(non-invertible)。

7.4 逻辑回归正则化(Regularized Logistic Regression)

为逻辑回归的代价函数添加正则化项:

前文已经证明过逻辑回归和线性回归的代价函数的求导结果是一样的,此处通过给正则化项添加常数 ,则其求导结果也就一样了。

从而有应用正则化的逻辑回归梯度下降算法:

 


+

据上图,高偏差意味着欠拟合,高方差意味着过拟合。

我们应尽量使得拟合模型处于低方差(较好地拟合数据)状态且同时处于低偏差(较好地预测新值)的状态。

避免过拟合的方法有:

  • 减少特征的数量

    • 手动选取需保留的特征
    • 使用模型选择算法来选取合适的特征(如 PCA 算法)
    • 减少特征的方式易丢失有用的特征信息
  • 正则化(Regularization)

    • 可保留所有参数(许多有用的特征都能轻微影响结果)
    • 减少/惩罚各参数大小(magnitude),以减轻各参数对模型的影响程度
    • 当有很多参数对于模型只有轻微影响时,正则化方法的表现很好

7.2 代价函数(Cost Function)

很多时候由于特征数量过多,过拟合时我们很难选出要保留的特征,这时候应用正则化方法则是很好的选择。

上文中, 这样一个复杂的多项式较易过拟合,在不减少特征的情况下,如果能消除类似于 等复杂部分,那复杂函数就变得简单了

为了保留各个参数的信息,不修改假设函数,改而修改代价函数:

上式中,我们在代价函数中增加了 的惩罚项(penalty term) ,如果要最小化代价函数,那么势必需要极大地减小 ,从而使得假设函数中的 这两项的参数非常小,就相当于没有了,假设函数也就“变得”简单了,从而在保留各参数的情况下避免了过拟合问题。

 

根据上面的讨论,有时也无法决定要减少哪个参数,故统一惩罚除了 外的所有参数。

代价函数:

: 正则化参数(Regularization Parameter),

: 不惩罚基础参数

: 正则化项

正则化参数类似于学习速率,也需要我们自行对其选择一个合适的值。

  • 过大

    • 导致模型欠拟合(假设可能会变成近乎 的直线 )
    • 无法正常去过拟问题
    • 梯度下降可能无法收敛
  • 过小

    • 无法避免过拟合(等于没有)

正则化符合奥卡姆剃刀(Occam's razor)原理。在所有可能选择的模型中,能够很好地解释已知数据并且十分简单才是最好的模型,也就是应该选择的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。可以假设复杂的模型有较大的先验概率,简单的模型有较小的先验概率。

正则化是结构风险最小化策略的实现,是去过拟合问题的典型方法,虽然看起来多了个一参数多了一重麻烦,后文会介绍自动选取正则化参数的方法。模型越复杂,正则化参数值就越大。比如,正则化项可以是模型参数向量的范数。

7.3 线性回归正则化(Regularized Linear Regression)

应用正则化的线性回归梯度下降算法:

也可以移项得到更新表达式的另一种表示形式

: 正则化项

 

应用正则化的正规方程法2

: 正则化项

: 第一行第一列为 维单位矩阵

Matlab/Octave 代码:

 

 

前文提到正则化可以解决正规方程法中不可逆的问题,即增加了 正则化项后,可以保证 可逆(invertible),即便 不可逆(non-invertible)。

7.4 逻辑回归正则化(Regularized Logistic Regression)

为逻辑回归的代价函数添加正则化项:

前文已经证明过逻辑回归和线性回归的代价函数的求导结果是一样的,此处通过给正则化项添加常数 ,则其求导结果也就一样了。

从而有应用正则化的逻辑回归梯度下降算法:

 

diff --git a/week3.md b/week3.md index 27b368f..cef75bf 100644 --- a/week3.md +++ b/week3.md @@ -173,29 +173,28 @@ $J(\theta) = - \frac{1}{m} \displaystyle \sum_{i=1}^m [y^{(i)}\log (h_\theta (x^ 令 $f(\theta) = {{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)$ -将 $h_\theta(x^{(i)}) = g\left(\theta^{T}x^{(i)} \right)=\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} $ 带入得 +忆及 $z=\Theta^Tx^{(i)}$,将 $h_\theta(x^{(i)}) = g(z) =\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} $ 带入得 $f(\theta)={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)$ -$=-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^T}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^T}{{x}^{(i)}}}} \right)$ +$=-{{y}^{(i)}}\log \left( 1+{{e}^{-z}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{z}} \right)$ 根据求偏导的性质,没有 $\theta_j$ 的项求偏导即为 $0$,都消去,则得: -$\frac{\partial }{\partial {\theta_{j}}}\left( \theta^Tx^{(i)} \right)=x^{(i)}_j$ +$\frac{\partial z}{\partial {\theta_{j}}}=\frac{\partial }{\partial {\theta_{j}}}\left( \theta^Tx^{(i)} \right)=x^{(i)}_j$ 所以有: -$\frac{\partial }{\partial {\theta_{j}}}f\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^{T}}{{x}^{(i)}}}} \right)]$ +$\frac{\partial }{\partial {\theta_{j}}}f\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-{{y}^{(i)}}\log \left( 1+{{e}^{-z}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{z}} \right)]$ -$=-{{y}^{(i)}}\frac{\frac{\partial }{\partial {\theta_{j}}}\left( \theta^Tx^{(i)} \right)\cdot{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{\frac{\partial }{\partial {\theta_{j}}}\left( \theta^Tx^{(i)} \right)\cdot{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}$ +$=-{{y}^{(i)}}\frac{\frac{\partial }{\partial {\theta_{j}}}\left(-z \right) e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{\frac{\partial }{\partial {\theta_{j}}}\left(z \right){e^{z}}}{1+e^{z}}$ -$=-{{y}^{(i)}}\frac{-x_{j}^{(i)}{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}$ -$={{y}^{(i)}}\frac{x_j^{(i)}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}$ -$={\frac{{{y}^{(i)}}x_j^{(i)}-x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}+{{y}^{(i)}}x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}$ -$={\frac{{{y}^{(i)}}\left( 1\text{+}{{e}^{{\theta^T}{{x}^{(i)}}}} \right)-{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}x_j^{(i)}}$ -$={({{y}^{(i)}}-\frac{{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}$ -$={({{y}^{(i)}}-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}$ +$=-{{y}^{(i)}}\frac{-x^{(i)}_je^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{x^{(i)}_j}{1+e^{-z}}$ +$=\left({{y}^{(i)}}\frac{e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{1}{1+e^{-z}}\right)x^{(i)}_j$ +$=\left({{y}^{(i)}}\frac{e^{-z}}{1+e^{-z}}-\left( 1-{{y}^{(i)}} \right)\frac{1}{1+e^{-z}}\right)x^{(i)}_j$ +$=\left(\frac{{{y}^{(i)}}(e^{-z}+1)-1}{1+e^{-z}}\right)x^{(i)}_j$ +$={({{y}^{(i)}}-\frac{1}{1+{{e}^{-z}}})x_j^{(i)}}$ $={\left({{y}^{(i)}}-{h_\theta}\left( {{x}^{(i)}} \right)\right)x_j^{(i)}}$ -$={\left({h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}\right)x_j^{(i)}}$ +$=-{\left({h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}\right)x_j^{(i)}}$ 则可得代价函数的导数: diff --git a/week4.html b/week4.html index 2d3a99e..1146d10 100644 --- a/week4.html +++ b/week4.html @@ -220,6 +220,6 @@ header, .context-menu, .megamenu-content, footer { font-family: "Segoe UI", Aria -

8 神经网络:表达(Neural Networks: Representation)

8.1 非线性假设(Non-linear Hypotheses)

理论上我们可以用多项式函数去近似任意函数(泰勒极数(Taylor series)),从而可得到任意问题的拟合曲线。

在实际处理时,特征量通常会很多,如果再构造高阶多项式等,特征数量将会急剧增加,这使得回归模型的复杂度太高,可见并不合适。神经网络无需构造高阶多项式,在特征量很大时也可以处理的很好。

那特征能有多大呢?下面是一个计算机视觉中的例子:

如上图,如果选取一小块 像素的灰度图片(一个像素只有亮度一个值),选择每个像素点作为特征,则特征总量 (换成 RGB(一个像素有三个值),则 ),如果将其两两组合作为新特征,则特征数量将为

8.2 神经网络和大脑(Neurons and the Brain)

脑科学家通过对动物实验,发现大脑中专用于处理听觉信号的脑皮层也能处理其他诸如视觉等信号,即如果切断其与耳朵的联系,将其与眼睛相连,则这块负责听觉的脑皮层区域也能接受并处理视觉信号,从而学会“看”。脑科学家通过这类换源实验,就推论假设大脑的学习算法只有一种(“one learning algorithm” hypothesis)。那么如果能找出这种学习算法并应用于计算机中,那梦想中和人一样的人工智能就成真了。

神经网络就源于模拟人类大脑,但其需要的计算量很大。随着计算机硬件性能的提高,神经网络逐渐从衰落变为流行,如今已广泛地被应用在各行各业中。

下图是根据研究做的一些应用(有兴趣可回顾视频):

BrainPort 系统:帮助失明人士通过摄像头以及舌尖感官“看”东西

触觉皮带:在朝北时蜂鸣器会发出声响,可使人拥有方向感(声音信号转换为方向信号)。

8.3 模型表示1(Model Representation I)

既然神经网络模仿的是大脑神经元,那就先看一下大脑的神经元长什么样吧:

来源: http://blog.csdn.net/zzwu/article/details/574931

想象一下印刷厂中流水线的工人(机器人也算哦),每个工人都有特定的任务,比如装订,塑封,贴防伪标识等等,工人们看到书本并处理完自己的任务后,就回放回传送带,紧接着传送带就传给下一个环节的工人,如此不断重复从而完成一个又一个环节,直到一本书印制完成。

那么类比一下,把上图中的细胞核(nucleus)类比成工人,轴突(axon)类比传送带,树突(dendrite)则比类比成工人的双眼。一个又一个细胞体,从树突接收需要处理的信息,对其进行处理后,再经由轴突通过电信号把处理完的信息传递出去,直到理解信息的内容。当然啦,我们大脑的实际上还要更为复杂,而且一个人的神经元数目就比地球上所有流水线的工人之和还要多呢~

人工神经网络中,树突对应输入(input),细胞核对应激活单元(activation unit),轴突对应输出(output)

我们一般把神经网络划分为三部分(注意,不是只有三层!),即输入层(input layer),隐藏层(hidden layer)和输出层(output layer)。

图中的一个圈表示神经网络中的一个激活单元,输入层对应输入单元,隐藏层对应中间单元,输出层则对应输出单元。中间激活单元应用激活函数(activation_function)处理数据。

下面列出一些已有概念在神经网络中的别称:

  • : 偏置单元(bias unit),=1
  • : 权重(weight),即参数。
  • 激活函数: ,即逻辑函数等。
  • 输入层: 对应于训练集中的特征
  • 输出层: 对应于训练集中的结果

: 第 层的第 个激活单元

: 从第 层映射到第 层时的权重矩阵。

: 从第 层的第 个单元映射到第 层的第 个单元的权重

: 第 层的激活单元数目(不包含偏置单元)

注意:

  • 符号较多,记不住可随时回顾!
  • 每个单元会作用于下一层的所有单元(矩阵乘法运算)。
  • 如果第 层有 个单元,第 层有 个单元, 是一个 维的权重矩阵。即每一层的权重矩阵大小都是非固定的。
  • 其中, 来自于偏置单元,这样意味着输出层不包含偏置单元,输入层和隐藏层需要增加偏置单元。

 

依据本节所给模型,有:

8.4 模型表示2(Model Representation II)

对第 层的所有激活单元应用激活函数,从而得到第 层激活单元的值:

对第 层的所有激活单元应用激活函数,从而得到输出:

上面的计算过程被称为前向传播(Forward propagation),即从输入层开始,一层一层地向下计算并传递结果。

 

再回顾一下逻辑回归:

是不是除了符号表示,其他都完全一样?其实神经网络就好似回归模型,只不过输入变成了中间单元 。从输入 开始,下一层的每个激活单元都包含了上一层的所有信息(单元值),通过最优化算法不断迭代计算,激活单元能得出关于输入 的更多信息,这就好像是在给假设函数加多项式。中间层的这些单元好似升级版的初始特征,从而能给出更好的预测。

 

向量化实现

定义

则有

预测结果即

 

即有

,通过该式即可计算神经网络中每一层的值。

扩展到所有样本实例:

,这时 是一个 维矩阵。

: 训练集中的样本实例数量

: 第二层神经网络中激活单元的数量

 

当然,神经网络不仅限于三层,每层的激活单元数量也并不固定:

8.5 例子和直观理解1(Examples and Intuitions I)

为了更好的理解神经网络,举例单层神经网络进行逻辑运算的例子。

下面的例子中, 为二进制数。

逻辑与(AND)运算(都为真值则结果才为真)神经网络:

回顾 sigmoid 函数图像,根据输入则有上图中右边的表格,即 。这样就实现了一个能够进行与运算的神经网络。

sigmoid function

 

再举一例,逻辑或(OR)运算(有一个真值则结果就为真)神经网络:

 

8.6 例子和直观理解2(Examples and Intuitions II)

下面逐步构建复杂一点的神经网络

如上图,我们分别构建了三个单层神经网络,将这三个网络组合起来,可得到一个新的神经网络,其可完成逻辑运算中的异或(XNOR)操作:

这里的组合即为

可见,特征值能不断升级,并抽取出更多信息,直到计算出结果。而如此不断组合,我们就可以逐渐构造出越来越复杂、强大的神经网络,比如用于手写识别的神经网络。

任何布尔函数都可由两层神经网络准确表达,但所需的中间单元的数量随输入呈指数级增长;

任何连续函数都可由两层神经网络以任意精度逼近;

任何函数都可由三层神经网络以任意程度逼近。

8.7 多类别分类(Multiclass Classification)

之前讨论的都是预测结果为单值情况下的神经网络,要实现多类别分类,其实只要修改一下输出层,让输出层包含多个输出单元即可。

举一个 4 分类问题的实例:

有四种分类情况,那么就让输出层包含 4 个输出单元即可,则 为 4 维向量。

神经网络中的多分类算法算是对 one-vs-all 思想的扩展,定义预测结果一共有 4 种情况:

如果预测结果

那么表示 ,即分为第 3 类,对应于图中的摩托车(Motorcycle)。

总结一下,要分为 类,就在输出层放置 个输出单元,对于单个样本实例, 则是一个 维结果向量,最后依据结果向量,得出属于哪个类

 

+

8 神经网络:表达(Neural Networks: Representation)

8.1 非线性假设(Non-linear Hypotheses)

理论上我们可以用多项式函数去近似任意函数(泰勒极数(Taylor series)),从而可得到任意问题的拟合曲线。

在实际处理时,特征量通常会很多,如果再构造高阶多项式等,特征数量将会急剧增加,这使得回归模型的复杂度太高,可见并不合适。神经网络无需构造高阶多项式,在特征量很大时也可以处理的很好。

那特征能有多大呢?下面是一个计算机视觉中的例子:

如上图,如果选取一小块 像素的灰度图片(一个像素只有亮度一个值),选择每个像素点作为特征,则特征总量 (换成 RGB(一个像素有三个值),则 ),如果将其两两组合作为新特征,则特征数量将为

8.2 神经网络和大脑(Neurons and the Brain)

脑科学家通过对动物实验,发现大脑中专用于处理听觉信号的脑皮层也能处理其他诸如视觉等信号,即如果切断其与耳朵的联系,将其与眼睛相连,则这块负责听觉的脑皮层区域也能接受并处理视觉信号,从而学会“看”。脑科学家通过这类换源实验,就推论假设大脑的学习算法只有一种(“one learning algorithm” hypothesis)。那么如果能找出这种学习算法并应用于计算机中,那梦想中和人一样的人工智能就成真了。

神经网络就源于模拟人类大脑,但其需要的计算量很大。随着计算机硬件性能的提高,神经网络逐渐从衰落变为流行,如今已广泛地被应用在各行各业中。

下图是根据研究做的一些应用(有兴趣可回顾视频):

BrainPort 系统:帮助失明人士通过摄像头以及舌尖感官“看”东西

触觉皮带:在朝北时蜂鸣器会发出声响,可使人拥有方向感(声音信号转换为方向信号)。

8.3 模型表示1(Model Representation I)

既然神经网络模仿的是大脑神经元,那就先看一下大脑的神经元长什么样吧:

来源: http://blog.csdn.net/zzwu/article/details/574931

想象一下印刷厂中流水线的工人(机器人也算哦),每个工人都有特定的任务,比如装订,塑封,贴防伪标识等等,工人们看到书本并处理完自己的任务后,就回放回传送带,紧接着传送带就传给下一个环节的工人,如此不断重复从而完成一个又一个环节,直到一本书印制完成。

那么类比一下,把上图中的细胞核(nucleus)类比成工人,轴突(axon)类比传送带,树突(dendrite)则比类比成工人的双眼。一个又一个细胞体,从树突接收需要处理的信息,对其进行处理后,再经由轴突通过电信号把处理完的信息传递出去,直到理解信息的内容。当然啦,我们大脑的实际上还要更为复杂,而且一个人的神经元数目就比地球上所有流水线的工人之和还要多呢~

人工神经网络中,树突对应输入(input),细胞核对应激活单元(activation unit),轴突对应输出(output)

我们一般把神经网络划分为三部分(注意,不是只有三层!),即输入层(input layer),隐藏层(hidden layer)和输出层(output layer)。

图中的一个圈表示神经网络中的一个激活单元,输入层对应输入单元,隐藏层对应中间单元,输出层则对应输出单元。中间激活单元应用激活函数(activation_function)处理数据。

下面列出一些已有概念在神经网络中的别称:

  • : 偏置单元(bias unit),=1
  • : 权重(weight),即参数。
  • 激活函数: ,即逻辑函数等。
  • 输入层: 对应于训练集中的特征
  • 输出层: 对应于训练集中的结果

: 第 层的第 个激活单元

: 从第 层映射到第 层时的权重矩阵。

: 从第 层的第 个单元映射到第 层的第 个单元的权重

: 第 层的激活单元数目(不包含偏置单元)

注意:

  • 符号较多,记不住可随时回顾!
  • 每个单元会作用于下一层的所有单元(矩阵乘法运算)。
  • 如果第 层有 个单元,第 层有 个单元, 是一个 维的权重矩阵。即每一层的权重矩阵大小都是非固定的。
  • 其中, 来自于偏置单元,这样意味着输出层不包含偏置单元,输入层和隐藏层需要增加偏置单元。

 

依据本节所给模型,有:

8.4 模型表示2(Model Representation II)

对第 层的所有激活单元应用激活函数,从而得到第 层激活单元的值:

对第 层的所有激活单元应用激活函数,从而得到输出:

上面的计算过程被称为前向传播(Forward propagation),即从输入层开始,一层一层地向下计算并传递结果。

 

再回顾一下逻辑回归:

是不是除了符号表示,其他都完全一样?其实神经网络就好似回归模型,只不过输入变成了中间单元 。从输入 开始,下一层的每个激活单元都包含了上一层的所有信息(单元值),通过最优化算法不断迭代计算,激活单元能得出关于输入 的更多信息,这就好像是在给假设函数加多项式。隐藏层的这些单元好似升级版的初始特征,从而能给出更好的预测。

 

向量化实现

定义

则有

预测结果即

 

即有

,通过该式即可计算神经网络中每一层的值。

扩展到所有样本实例:

,这时 是一个 维矩阵。

: 训练集中的样本实例数量

: 第二层神经网络中激活单元的数量

 

当然,神经网络不仅限于三层,每层的激活单元数量也并不固定:

8.5 例子和直观理解1(Examples and Intuitions I)

为了更好的理解神经网络,举例单层神经网络进行逻辑运算的例子。

下面的例子中, 为二进制数。

逻辑与(AND)运算(都为真值则结果才为真)神经网络:

回顾 sigmoid 函数图像,根据输入则有上图中右边的表格,即 。这样就实现了一个能够进行与运算的神经网络。

sigmoid function

 

再举一例,逻辑或(OR)运算(有一个真值则结果就为真)神经网络:

 

8.6 例子和直观理解2(Examples and Intuitions II)

下面逐步构建复杂一点的神经网络

如上图,我们分别构建了三个单层神经网络,将这三个网络组合起来,可得到一个新的神经网络,其可完成逻辑运算中的异或(XNOR)操作:

这里的组合即为

可见,特征值能不断升级,并抽取出更多信息,直到计算出结果。而如此不断组合,我们就可以逐渐构造出越来越复杂、强大的神经网络,比如用于手写识别的神经网络。

任何布尔函数都可由两层神经网络准确表达,但所需的中间单元的数量随输入呈指数级增长;

任何连续函数都可由两层神经网络以任意精度逼近;

任何函数都可由三层神经网络以任意程度逼近。

8.7 多类别分类(Multiclass Classification)

之前讨论的都是预测结果为单值情况下的神经网络,要实现多类别分类,其实只要修改一下输出层,让输出层包含多个输出单元即可。

举一个 4 分类问题的实例:

有四种分类情况,那么就让输出层包含 4 个输出单元即可,则 为 4 维向量。

神经网络中的多分类算法算是对 one-vs-all 思想的扩展,定义预测结果一共有 4 种情况:

如果预测结果

那么表示 ,即分为第 3 类,对应于图中的摩托车(Motorcycle)。

总结一下,要分为 类,就在输出层放置 个输出单元,对于单个样本实例, 则是一个 维结果向量,最后依据结果向量,得出属于哪个类

 

\ No newline at end of file diff --git a/week4.md b/week4.md index 96753b8..cdfbd4f 100644 --- a/week4.md +++ b/week4.md @@ -100,7 +100,7 @@ $h_\Theta(x) = a_1^{(3)} = g(\Theta_{10}^{(2)}a_0^{(2)} + \Theta_{11}^{(2)}a_1^{ ${h_\theta}\left( x \right)=g\left( {\theta_0}+{\theta_1}{x_1}+{\theta_{2}}{x_{2}}+{\theta_{3}}x_3 \right)$ -是不是除了符号表示,其他都完全一样?其实神经网络就好似回归模型,只不过输入变成了中间单元 $a_1^{(j)}, a_2^{(j)}, \dots, a_n^{(j)}$。从输入 $x$ 开始,下一层的每个激活单元都包含了上一层的所有信息(单元值),通过最优化算法不断迭代计算,激活单元能得出关于输入 $x$ 的更多信息,这就好像是在给假设函数加多项式。中间层的这些单元好似升级版的初始特征,从而能给出更好的预测。 +是不是除了符号表示,其他都完全一样?其实神经网络就好似回归模型,只不过输入变成了中间单元 $a_1^{(j)}, a_2^{(j)}, \dots, a_n^{(j)}$。从输入 $x$ 开始,下一层的每个激活单元都包含了上一层的所有信息(单元值),通过最优化算法不断迭代计算,激活单元能得出关于输入 $x$ 的更多信息,这就好像是在给假设函数加多项式。隐藏层的这些单元好似升级版的初始特征,从而能给出更好的预测。