标签归档:多类分类

斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”

斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”学习笔记,本次课程主要包括7部分:

1)  Non-linear hypotheses (非线性hypotheses)

2)  Neurons and the brain (神经元和大脑)

3)  Model representation I (模型表示一)

4)  Model representation II (模型表示二)

5)  Examples and intuitions I (例子和直观解释一)

6)  Examples and intuitions II (例子和直观解释二)

7)  Multi-class classification (多类分类问题)

以下是每一部分的详细解读。

1)  Non-linear hypotheses (非线性hypotheses)

非线性分类器:

我们之前谈过线性回归,逻辑回归,当我们遇到一些比较复杂的分类问题时,是否还有其他选择?例如,对于多项式回归:

多项式回归-我爱公开课-52opencourse.com

可以得到如下的非线性分类器:

非线性分类-我爱公开课-52opencourse.com
假设这是一个房价预测问题,不过这一次不再是预测房价(回归问题),而是预测未来6个月是否能售出(分类问题)。如果有100个独立特征,例如:

房价问题特征-我爱公开课——52opecourse.com

那么,当我们任取两个特征作为组合特征时,大约可以得到5000个特征(O(n^2));当我们任取3个特征作为组合特征时,大约可以得到170000(O(n^3))个特征.

这样的问题还有很多,例如在计算机视觉的汽车检测问题中,对于一副汽车图片来说,你可以轻易的辨别出这是一辆汽车,但是在计算机或者相机“眼里”,这只是一堆像素的数字矩阵而已:

计算机视觉汽车检测-我爱公开课-52opencourse.com

所以,对于汽车检测问题,我们需要一堆汽车图片:

汽车图片训练集-我爱公开课——52opencourse.com

和一堆非汽车图片作为训练集:

非汽车图片训练集-我爱公开课-52opencourse.com

训练一个用于汽车检测的分类器,对于一个测试图片,判断是否是汽车:

汽车检测测试-我爱公开课-52opencourse.com

一种方法是从每辆汽车是取两个像素点作为样本的特征,然后通过学习算法来训练分类器:

训练样本-我爱公开课-52opencourse.com

那么这些正负例(汽车 or 非汽车)训练样本可以用图形表示如下:

正负例样本-我爱公开课——52opencourse.com

假设每幅图片有50 * 50 = 2500个像素,那么每个样本有2500个像素点可以选择,如果是是二次项组合特征,大约有3百万个特征组合:

正负例样本—我爱公开课-52opencourse.com

对于这样的有着大量特征的分类问题,除了逻辑回归,是否还有其他的学习算法?接下来,我们将引入神经网络(Neural Networks),一种试图模拟人类大脑的学习算法,这个算法,对于复杂的假设空间和复杂的非线性问题有很好的学习能力。

2)  Neurons and the brain (神经元和大脑)

神经网络:

  • 起源于尝试让机器模仿大脑的算法;
  • 在80年代和90年代早期非常流行,慢慢在90年代后期衰落;
  • 最近得益于计算机硬件能力,又开始流行起来:对于很多应用,神经网络算法是一种“时髦”的技术;

大脑很神奇,可以让我们去听,去看,去触,也可以做数学题,做微积分,做很多神奇的事情,要模仿大脑,似乎需要我们写很多程序来做不同的事情?但是恰恰与此相反,做这些事情仅仅需要一个学习算法。下面是两个例子,是神经科学家做的非常酷的两个实验,这些实验可以说明我们仅需一种学习算法就可以模拟很多事情。

听觉皮层实验:

听觉皮层实验-我爱公开课-52opencourse.com

上图是大脑的一部分,红色的部分是听觉皮层,用来处理耳朵收集的声音信号并让大脑理解。神经科学家做了一个实验,切断耳朵和听觉皮层的联系,并且连接眼睛和听觉皮层,这样从眼睛采集的信号不再传送到视神经而是听觉皮层,这样做得最终结果是听觉皮层将会学习“看"。

体感皮层实验:

体感皮层实验-我爱公开课-52opencourse.com

上图的红色区域是体感皮层,主要身体的触觉,与听觉皮层实验相似,如果我们做相似的实验,那么体感皮层也将学会”看“。

上述两个实验统称为神经重布线实验(neuro-rewiring experiments), 这些实验给我们的感觉就是同样的一块儿脑组织既可以处理视觉,也可以处理听觉,还可以处理触觉,也许就存在一种学习算法来处理视觉信号,听觉信号和触觉信号。如果我们能近似模拟或实现大脑的这种学习算法,我们就能获得绝大部分大脑可以完成的功能,因为大脑可以自己去处理不同类型的数据。以下是一些模拟大脑传感器的例子:

大脑传感器-我爱公开课—52opencourse.com

包括:用舌头去“看”;回声定位或者声纳定位;触觉皮带-方向感(向小鸟一样感知方向);给青蛙植入第三只眼。

这些都是很酷的例子,也许人类的AI之梦并不遥远了!

3)  Model representation I (模型表示一)

大脑中的神经元:

神经网络的目标就是模拟大脑中的神经元或网络,因此在介绍hypotheses的表示之前,先让我们来看一看大脑中神经元:

大脑中的神经元-我爱公开课-52opencourse.com

注:关于这一块儿,由于不太熟悉,即使听Andrew Ng 老师的课也有很多糊涂的地方,于是Google了一下神经网络,发现了一个非常不错的介绍神经网络的材料《神经网络入门(连载)》,以下转载自该连载中对于大脑中的神经元的描述,我觉得非常清楚:

在人的生命的最初9个月内,这些细胞以每分钟25,000个的惊人速度被创建出来。神经细胞和人身上任何其他类型细胞十分不同,每个神经细胞都长着一根像 电线一样的称为轴突(axon)的东西,它的长度有时伸展到几厘米[译注],用来将信号传递给其他的神经细胞。神经细胞的结构如图1 所示。它由一个细胞体(soma)、一些树突(dendrite) 、和一根可以很长的轴突组成。神经细胞体是一颗星状球形物,里面有一个核(nucleus)。树突由细胞体向各个方向长出,本身可有分支,是用来接收信号 的。轴突也有许多的分支。轴突通过分支的末梢(terminal)和其他神经细胞的树突相接触,形成所谓的突触(Synapse,图中未画出),一个神经 细胞通过轴突和突触把产生的信号送到其他的神经细胞。

每个神经细胞通过它的树突和大约10,000个其他的神经细胞相连。这就使得你的头脑中所有神经细胞之间连接总计可能有l,000,000,000,000,000个。这比100兆个现代电话交换机的连线数目还多。所以毫不奇怪为什么我们有时会产生头疼毛病!

神经细胞利用电-化学过程交换信号。输入信号来自另一些神经细胞。这些神经细胞的轴突末梢(也就是终端)和本神经细胞的树突相遇形成突触 (synapse),信号就从树突上的突触进入本细胞。信号在大脑中实际怎样传输是一个相当复杂的过程,但就我们而言,重要的是把它看成和现代的计算机一 样,利用一系列的0和1来进行操作。就是说,大脑的神经细胞也只有两种状态:兴奋(fire)和不兴奋(即抑制)。发射信号的强度不变,变化的仅仅是频 率。神经细胞利用一种我们还不知道的方法,把所有从树突上突触进来的信号进行相加,如果全部信号的总和超过某个阀值,就会激发神经细胞进入兴奋 (fire)状态,这时就会有一个电信号通过轴突发送出去给其他神经细胞。如果信号总和没有达到阀值,神经细胞就不会兴奋起来。这样的解释有点过分简单 化,但已能满足我们的目的。

注意对于我们的这幅图来说,比较关键的是树突(dendrite)是输入(input wires),轴突(axon)是输出(output wires).

现在我们模拟大脑中的神经元结构建立一个简单的模型-Logistic unit:
神经元模型-我爱公开课-52opencourse.com

其中x_1, x_2, x_3称为输入(来自与其他神经元的输入信号), x_0称为偏置单元(bias unit), \theta称为权重或参数, h_\theta(x)称为激活函数(activation function), 这里的激活函数用了sigmoid(logistic) function:

g(z) = \frac{1}{1+e^{-z}}

将多个神经元组织在一起,我们就有了神经网络,例如如下的三层结构的神经网络:

神经网络模型-我爱公开课-52opencourse.com

image

第一层称为输入层,第二层是隐藏层,第三层是输出层,注意输入层和隐藏层都存在一个偏置(bias unit). 其中:

a^{j}_i = j层第i个单元的激活函数

\Theta^{(j)} = 从第j层映射到第j+1层的控制函数的权重矩阵

对于上图,我们有如下的公式表示:

神经网络数学表示-我爱公开课-52opencourse.com

如果神经网络在第j层有s_j个单元,在第j+1层有s_{j+1}个单元,那么权重矩阵\Theta^{(j)}的纬度是s_{j+1} \times (s_j + 1)

4)  Model representation II (模型表示二)

前馈网络:向量化实现

上一节我们讲到的神经网络称为前馈网络,也称前向网络,这种网络只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到到达输出层,层间没有向后的反馈信号,因此被称为前馈网络。感知机( perceptron)与BP神经网络就属于前馈网络。我们已经给出了这个神经网络的模型表示,但是不够简洁,下面我们来向量化这个模型(具体的过程推荐看视频,以下仅给出总结):

前馈网络向量化实现-我爱公开课-52opencourse.com

其他的网络结构:

除了上述的前馈网络外,神经网络还有其他的一些网络结构,譬如:
神经网络其他结构-我爱公开课-52opencourse.com

其中第一层仍是输入层,最后一层第四层数输出层,中间两层是隐藏层。

5)  Examples and intuitions I (例子和直观解释一)

本节和下一节的例子均是“逻辑代数”中的逻辑函数,因此有必要在这里交代一点逻辑代数的背景,以下文字摘录自清华大学出版社的《电子技术基础》6.2节,电子书链接来自Google book,同时会在例子的介绍中引用该书中的一些基本定义:

逻辑代数是描述客观事物逻辑关系的数学方法,它首先是由英国数学家乔治*布尔提出,因此也称为布尔代数,而后克劳德*香农将逻辑代数应用到继电器开关电路的设计中,所以又称为开关代数。和普通代数一样,在逻辑代数中用字母表示变量与函数,但变量与函数的取值只有0和1两种可能。这里的0和1已不再表示数量的大小,只代表两种不同的逻辑状态。我们把这种二值变量称为逻辑变量,简称为变量,这种二值函数称为逻辑函数,简称为函数。

非线性分类器例子-异或(XOR)/同或(XNOR)

我们的目标是利用神经网络实现一个逻辑代数中的同或运算,因此首先介绍一下同或运算和异或运算:

同或逻辑和异或逻辑是只有两个逻辑变量的逻辑函数。如果当两个逻辑变量A和B相同时,逻辑函数F等于1,否则F等于0,这种逻辑关系称为同或。反之,如果当两个逻辑变量A和B相异时,逻辑函数F等于1,否则F等于0,这种逻辑关系称为异或。

下图是一个同或预算的示例,其中x_1, x_2是二值变量(0, 1):

神经网络同或运算-我爱公开课-52opencouse.com

可以将其对应到一个非线性分类器,如下图所示:

同或逻辑非线性分类器-我爱公开课-52opencourse.com

同或逻辑和异或逻辑互补:

同或运算and异或运算-我爱公开课-52opencourse.com

同或运算和异或运算是逻辑代数中的复合运算,因此下面我们先介绍三种最基本的逻辑运算(与逻辑运算、或逻辑运算、非逻辑运算),同时分别介绍其对应的神经网络实现,最后将这几种基本的逻辑运算组合,形成最终的同或逻辑运算的神经网络。

与(AND)逻辑运算示例:

相信大家对于与(AND)运算很熟悉,其基本的表达式如下:

与逻辑运算表达式-我爱公开课-52oencourse.com

我们可以用一个简单的神经网络(一个神经元)表示与逻辑运算:

与逻辑运算神经元模型-我爱公开课-52opencourse.com

其中激活函数h_\Theta(x)可以用如下公式表示:
与逻辑运算神经网络hypothese表达式——我爱公开课-52opencourse.com

这里的激活函数是sigmoid(logistic) function,其图形表示如下:

激活函数-gmoid function-我爱公开课——52opencourse.com

对于g(z)来说,当z>=4.0时,g(z)约等于1;当z<=-4.0时,g(z)约等于-1. 对于上述激活函数,将二值(0, 1)变量x_1, x_2代入,我们得到如下的对应表:

与逻辑真值表-我爱公开课——52opencourse.com

可以看出,这里的神经网络激活函数h_\Theta(x)近似等于与逻辑运算。

或(OR)逻辑运算示例:

同理,我们也给出一个简单的神经网络模型来模拟或(OR)逻辑运算:

或逻辑运算神经网络模型-我爱公开课-52opencourse.com

将二值(0, 1)变量x_1, x_2代入,得到如下的或逻辑运算对应表:

或逻辑运算对应表-我爱公开课——52opencourse.com

6)  Examples and intuitions II (例子和直观解释二)

继续上一节的例子,我们介绍第三个基本的逻辑运算:非(NOT)逻辑运算

用一个简单的神经网络模型来模拟非(NOT)逻辑运算:

非逻辑运算-我爱公开课——52opencourse.com

得到的对应表如下:
非逻辑运算真值表-我爱公开课-52opencourse.com

非逻辑运算仅针对一个输入值,我们来表示一个略微复杂的逻辑表达式:

复杂逻辑表达式-我爱公开课-52opencourse.com

这个表达式等于1的前提是”当且仅当x1=x2=0".

可以用神经网络模拟如下:
两个非逻辑运算的神经网络模型-我爱公开课-52opencourse.com

好了,有了上述三个基本逻辑运算的基础和相关的神经网络模型表示,我们可以将其组合为一个略微复杂的”同或(XNOR)逻辑运算的神经网络“:

同或逻辑运算神经网络图-我爱公开课-52opencourse.com

对于这个神经网络,这里稍作一点解释,同或运算的表达式如下:

F = A \odot B = AB + \overline{A}\overline{B}

上图中第二层隐藏网络a1和a2分别代表了A And B和Not A And Not B,a1和a2又做了一次或逻辑运算就得到了同或逻辑运算。该神经网络对应的输出与同或运算的真值表相同:

同或运算真值表-我爱公开课——52opencourse.com

第6节的手写数字识别(分类)的演示请读者自行观看视频,此处略。

7)  Multi-class classification (多类分类问题)

逻辑回归的笔记中,我们谈到了多类分类问题,而神经网络同样可以应用于多类分类问题,只不过在表达上略有区别。首先来看一个机器视觉中分类的例子:

机器视觉分类问题-我爱公开课-52opencourse.com

对于一个输入图片,需要识别其属于行人、轿车、摩托车或者卡车中的一个类型,这是一个多类分类的问题。用神经网络表示如下:

机器视觉神经网络分类模型-我爱公开课-52opencourse.com

其中输出h_\Theta(x)是一个4维向量,如下表示:

神经网络输出多分类问题表示-我爱公开课——52opencourse.com

当向量的某个元素为1,其他为0时,代表分类结果为某个为1元素所对应的类别。这与之前逻辑回归中的多类分类表示不同,在逻辑回归中,输出y属于类似于{1, 2, 3,4}中的某个值,而非一个向量。因此,如果要训练一个多类分类问题的神经网络模型,训练集是这样的:

多类分类问题神经网络模型训练集-我爱公开课——52opencourse.com

特别注意y^{(i)}是一个向量。

本章到此结束,下一讲将会将神经网络的学习问题。转载请注明出处"我爱公开课”,谢谢。

参考资料:

第八课“神经网络的表示”的课件资料下载链接,视频可以在Coursera机器学习课程上观看或下载: https://class.coursera.org/ml
PPT   PDF

http://en.wikipedia.org/wiki/Neural_network

http://en.wikipedia.org/wiki/Artificial_neural_network

神经网络编程入门

神经网络入门连载

http://library.thinkquest.org/29483/neural_index.shtml

http://home.agh.edu.pl/~vlsi/AI/xor_t/en/main.htm

http://en.wikipedia.org/wiki/NOR_logic

http://en.wikipedia.org/wiki/Logic_gate

清华大学出版社的《电子技术基础》,google book

Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”

斯坦福大学机器学习第六课"逻辑回归“学习笔记,本次课程主要包括7部分:

1) Classification(分类)

2) Hypothesis Representation

3) Decision boundary(决策边界)

4) Cost function(代价函数,成本函数)

5) Simplified cost function and gradient descent(简化版代价函数及梯度下降算法)

6) Advanced optimization(其他优化算法)

7) Multi-class classification: One-vs-all(多类分类问题)

以下是每一部分的详细解读。

1) Classification(分类)

分类问题举例:

  1. 邮件:垃圾邮件/非垃圾邮件?
  2. 在线交易:是否欺诈(是/否)?
  3. 肿瘤:恶性/良性?

以上问题可以称之为二分类问题,可以用如下形式定义:

二分类问题-我爱公开课-52opencourse.com

其中0称之为负例,1称之为正例。

对于多分类问题,可以如下定义因变量y:

y \in \{0, 1, 2, 3, ..., n\}

如果分类器用的是回归模型,并且已经训练好了一个模型,可以设置一个阈值:

  • 如果h_\theta(x) \geq 0.5,则预测y=1,既y属于正例;
  • 如果h_\theta(x) < 0.5,则预测y=0,既y属于负例;

如果是线性回归模型,对于肿瘤这个二分类问题,图形表示如下:

线性回归二分类问题-我爱公开课-52opencourse.com

但是对于二分类问题来说,线性回归模型的Hypothesis输出值h_\theta(x)可以大于1也可以小于0。

这个时候我们引出逻辑回归,逻辑回归的Hypothesis输出介于0与1之间,既:

0 \leq h_\theta(x) \leq 1

注: 以下引自李航博士《统计学习方法》1.8节关于分类问题的一点描述:

分类是监督学习的一个核心问题,在监督学习中,当输出变量Y取有限个离散值时,预测问题便成为分类问题。这时,输入变量X可以是离散的,也可以是连续的。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器(classifier)。分类器对新的输入进行输出的预测(prediction),称为分类(classification).

2) Hypothesis Representation

逻辑回归模型:

上一节谈到,我们需要将Hypothesis的输出界定在0和1之间,既:

0 \leq h_\theta(x) \leq 1

但是线性回归无法做到,这里我们引入一个函数g, 令逻辑回归的Hypothesis表示为:

h_\theta(x) = g(\theta^T x)

这里g称为Sigmoid function或者Logistic function, 具体表达式为:

g(z) = \frac{1}{1+e^{-z}}

Sigmoid 函数在有个很漂亮的“S"形,如下图所示(引自维基百科):

Sigmoid function-我爱公开课-52opencourse.com

综合上述两式,我们得到逻辑回归模型的数学表达式:

h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}}

其中\theta是参数。
Hypothesis输出的直观解释:

h_\theta(x) = 对于给定的输入x,y=1时估计的概率

例如,对于肿瘤(恶性/良性),如果输入变量(特征)是肿瘤的大小:

肿瘤分类例子-我爱公开课-52opencourse.com

这里Hypothesis表示的是”病人的肿瘤有70%的可能是恶性的“。

较正式的说法可以如下表示:

给定输入x,参数化的\theta(参数空间), y=1时的概率。

数学上可以如下表示:

h_\theta(x) = P(y=1| x;\theta)

对于因变量y=0或1这样的二分类问题:

P(y=0|x;\theta) + P(y=1|x;\theta) = 1

P(y=0|x;\theta) = 1 - P(y=1|x;\theta)

3) Decision boundary(决策边界)

如上节所述,逻辑回归模型可以如下表示:

逻辑回归模型表达式-我爱公开课-52opencourse.com

假设给定的阈值是0.5,当h_\theta(x) \geq 0.5时, y = 1;

h_\theta(x) < 0.5时,y = 0;

再次回顾sigmoid function的图形,也就是g(z)的图形:

sigomoid function g(x) -我爱公开课-52opencourse.com

g(z) \geq 0.5时, z \geq 0;

对于h_\theta(x) = g(\theta^Tx) \geq 0.5, 则\theta^Tx \geq 0, 此时意味着预估y=1;

反之,当预测y = 0时,\theta^Tx < 0;

我们可以认为\theta^Tx = 0是一个决策边界,当它大于0或小于0时,逻辑回归模型分别预测不同的分类结果。例如,

h_\theta(x) = g(\theta_0 + \theta_1 x_1 + \theta_2 x_2)

\theta_0, \theta_1, \theta_2分别取-3, 1, 1,

则当-3 + x_1 + x_2 \geq 0时, y = 1; 则x_1 + x_2 = 3是一个决策边界,图形表示如下:

决策边界-我爱公开课-52opencourse.com

上述只是一个线性的决策边界,当h_\theta(x)更复杂的时候,我们可以得到非线性的决策边界,例如:

非线性的决策边界1-我爱公开课-52opencourse.com

这里当x^{2}_{1} + x^{2}_{2} \geq 1时,y=1,决策边界是一个圆形,如下图所示:

非线性决策边界2-我爱公开课-52opencourse.com

更复杂的例子,请参考官方PPT,这里就不再举例了。

4) Cost function(代价函数,成本函数)

逻辑回归概览:

逻辑回归是一种有监督的学习方法,因此有训练集:

训练集-我爱公开课-52opencourse.com

对于这m个训练样本来说,每个样本都包含n+1个特征:

训练样本-我爱公开课-52opencourse.com

其中x \in R^{n+1}, x_0 = 1, y \in \{0, 1\}.

Hypothesis可表示为:

h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}}

与线性回归相似,我们的问题是如何选择合适的参数\theta?

Cost Function:

线性回归的Cost  Function定义为:

J(\theta) = \frac{1}{m}\sum_{i=1}^m{\frac{1}{2}(h_\theta(x^{(i)}) - y^{(i)})^2}

这里可以把\frac{1}{2}(h_\theta(x^{(i)}) - y^{(i)})^2简写为Cost(h_\theta(x^{(i)}, y),更简化的表达式为:

Cost(h_\theta(x), y) = \frac{1}{2}(h_\theta(x) - y)^2

如果和线性回归相似,这里取 h_\theta(x) = \frac{1}{1+e^{-\theta^Tx}},会存在一个问题,也就是逻辑回归的Cost Function是“非凸”的,如下图所示:

非凸函数-我爱公开课-52opencourse.com

我们知道,线性回归的Cost Function是凸函数,具有碗状的形状,而凸函数具有良好的性质:对于凸函数来说局部最小值点即为全局最小值点,因此只要能求得这类函数的一个最小值点,该点一定为全局最小值点。

凸函数-我爱公开课-52opencouse.com

因此,上述的Cost Function对于逻辑回归是不可行的,我们需要其他形式的Cost Function来保证逻辑回归的成本函数是凸函数。

这里补充一段李航博士《统计学习方法》里关于Cost Function或者损失函数(loss function)的说明,大家就可以理解Cost Function不限于一种方式,而是有多种方式可选,以下摘自书中的1.3.2小节:

监督学习问题是在假设空间F中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度。损失函数是f(X)和Y的非负实值函数,记作L(Y, f(X)).

统计学习中常用的损失函数有以下几种:

(1) 0-1损失函数(0-1 loss function):

L(Y,f(X)) = \left\{ \begin{array}{ll} 1, & Y \neq f(X)\\0, & Y = f(X)\end{array}\right.

(2) 平方损失函数(quadratic loss function)

L(Y,f(X)) = (Y - f(X))^2

(3) 绝对损失函数(absolute loss function)

L(Y,f(X)) = |Y - f(X)|

(4) 对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likelihood loss function)

L(Y,P(Y|X)) = -logP(Y|X)

损失函数越小,模型就越好。

逻辑回归的Cost Function:

基于上节的描述和补充,这里我们选择对数似然损失函数作为逻辑回归的Cost Function:

逻辑回归之对数似然损失函数-我爱公开课-52opencourse.com

直观的来解释这个Cost Function,首先看当y=1的情况:

对数似然损失函数解释1-我爱公开课-52opencouse.com

直观来看, 如果y = 1, h_\theta(x)=1,则Cost = 0,也就是预测的值和真实的值完全相等的时候Cost =0;

但是,当h_\theta(x) \to 0时, Cost \to \infty

直观来看,由于预测的结果南辕北辙:

如果h_\theta(x) = 0, 也就是预测P(y = 1|x; \theta) = 0,也就是y=1的概率是0,但是实际上y = 1

因此对于这个学习算法给予一个很大的Cost的惩罚。

同理对于y=0的情况也适用:

对数似然损失函数解释2-我爱公开课-52opencourse.com

5) Simplified cost function and gradient descent(简化版代价函数及梯度下降算法)

逻辑回归的Cost Function可以表示为:

逻辑回归代价函数-我爱公开课-52opencourse.com

由于y 只能等于0或1,所以可以将逻辑回归中的Cost function的两个公式合并,具体推导如下:

逻辑回归代价函数推导-我爱公开课-52opencourse.com

故逻辑回归的Cost function可简化为:

逻辑回归代价函数简化公式-我爱公开课-52opencourse.com

对于这个公式,这里稍微补充一点,注意中括号中的公式正是对逻辑回归进行最大似然估计中的最大似然函数,对于最大似然函数求最大值,从而得到参数(\theta???????????????????????????Cost function?????</p>
<p>!min_\theta J(\theta)</p>
<p>???????x???????h_\theta(x)????????</p>
<p><img src=

?????????????????????????" />\theta???J(\theta):</p>
<p><img src=

??????" />J(\theta)????????????</p>
<p><img src=

?" />J(\theta)?????????????</p>
<p><img src=

?????????????????????????????" />h_\theta(x)??????</p>
<p><strong>6) Advanced optimization(??????)</strong></p>
<p>?????</p>
<p>????\theta?????????????</p>
<p><img src=

??????????????????

  • Conjugate gradient method(?????)
  • Quasi-Newton method(????)
  • BFGS method
  • L-BFGS(Limited-memory BFGS)

????????????????????????????????

??????????????

??????????????

????????-???????????????????????????????????52nlp??????????????????????????????????????????????

???????????Quasi-Newton Method??LBFGS???????????????????????????????????????????????????????????????????????????????????????????
1) Numerical Methods for Unconstrained Optimization and Nonlinear Equations?J.E. Dennis Jr. Robert B. Schnabel?
2) Numerical Optimization?Jorge Nocedal Stephen J. Wright?

7) Multi-class classification: One-vs-all(??????)

?????????

??????/??? ???????????????????

????(medical diagrams): ??????????

????????????

????????????

??????-?????-52opencourse.com

???????????

??????-?????-52opencourse.com

One-vs-all(one-vs-rest):

????????????????????????????????????????????????????

?????-one-vs-all-?????-52opencourse.com

????????????????????

one-vs-rest-?????-?????-52opencourse.com

??-One-vs-all?????

?????? i ??????????????" />h^{(i)}_\theta(x)$$,并且预测 y = i时的概率;

对于一个新的输入变量x, 分别对每一个类进行预测,取概率最大的那个类作为分类结果:

多分类问题预测-我爱公开课-52opencourse.com

参考资料:

第六课“逻辑回归”的课件资料下载链接,视频可以在Coursera机器学习课程上观看或下载: https://class.coursera.org/ml
PPT   PDF

李航博士《统计学习方法

http://en.wikipedia.org/wiki/Sigmoid_function

http://en.wikipedia.org/wiki/Logistic_function

无约束最优化

http://en.wikipedia.org/wiki/Loss_function

http://en.wikipedia.org/wiki/Conjugate_gradient_method

http://en.wikipedia.org/wiki/Quasi-Newton_method

http://en.wikipedia.org/wiki/BFGS_method

http://en.wikipedia.org/wiki/Limited-memory_BFGS