Chinese, Computer Science, Technology
Machine Learning Chinese NLP :::: Logistic Regression Simplified Cost Function & Gradient Descent
Logistic Regression Simplified Cost Function & Gradient Descent
在这段视频中我们将寻找一个更简洁的方法来表示代价函数
来代替之前的做法
然后我们将学会怎么去应用梯度下降法
来找到逻辑回归的参数
所以,在这个视频的结尾
你将会知道如何去实现一个可应用的逻辑回归函数
这个是逻辑回归的代价函数
完整的代价函数是通过 将m个训练样本的代价函数求和获得的
每一个代价函数代表在不同的样本y上的预测误差
这个函数是我们之前的单个训练样本的代价函数
需要提醒一下
在分类问题中,我们的训练集
所有的标签y的取值只包括0和1两种可能
这个是y的数学定义
由于y只能是0或者1
在这段视频中我们将寻找一个更简洁的方法来表示代价函数
值得一提的是,与其写出上述的代价函数(罚函数)
以两种情况的形式,分别是y=1和y=0的情况
不如我给你们展示一种如何将两行的公式
压缩到一个公式
这会有利于于简化罚函数的形式以及
梯度下降的推导
具体而言,我们能像下面这样表述罚函数
我们说,H(x),y相关的罚函数
我会把这个罚函数写成
-y*logh(x)-(1-y)*log(1-h(x))
-y*logh(x)-(1-y)*log(1-h(x))
我将迅速像你展示这个表达式,这个公式
是之前罚函数的等同表达式,或者说更加精简的表达式
用以表述我们关于罚函数的定义。
我们来看这是为什么。
我们知道只有两种可能的情况。
Y必须为零或1。
让我们假设 Y 等于1。
如果 y 等于 1,这就是说罚函数值等于,
如果 y 等于 1,这就是说罚函数值等于,
那么1减去 y 将等于 0,对吧?
因此, 如果 y 等于 1, 则1减去 y 是1减去 1, 因此是0。
所以第二项乘以0就消失了。
所以我们这里只有第一项了,就是-y*logh(x)
因为y=1,所以罚函数就等于 -log h(x)
如果 y = 1, 这个等式正是我们之前罚函数表达式的第一种情况。
另一个例子是 y = 0。
如果是这样的话,那我们的罚函数就告诉我们
如果 y 等于 0, 那么第一项就等于零。
而1减去 y, 如果 y 等于零(1-y)将等于 1,
因为1减去 y 变成1减去 0, 这是等于1。
所以代价函数被简化成了这里的最后一项,对吧
因为这里的第一项乘以0,所以它消失了
所以,这个式子只剩下最后一项,即 -log(1-h(x))
你可以证明这一项确实符合我们给出的这个式子
当 y 等于0的时候
所以这个新的代价函数的定义是更为简洁的形式
包括了 y=1 和 y=0 这两种情况
并且用了一种只有一行,更加方便的形式
因此,我们可以将我们逻辑回归的代价函数写成这样
因此,我们可以将我们逻辑回归的代价函数写成这样
它是 m 分之一乘以这些代价函数的和
将之前我们得到的代价函数定义替换进式子里 最终我们得到了这个式子
将之前我们得到的代价函数定义替换进式子里⏎最终我们得到了这个式子
我们把负号提取到式子外面
关于为什么我们要选择这个特殊的函数作为代价函数
尽管看起来我们可以选择其他的代价函数
在这节课上我没有时间来深入了解这一点
使用最大似然估计法 从统计数据中可以得出这个代价函数
使用最大似然估计法⏎从统计数据中可以得出这个代价函数
这是统计学中的一种思想
即如何有效地为不同模型找到参数数据
这个代价函数有一个十分优秀的属性——凸性
所以这个代价函数
是几乎每个人在逻辑回归模型中都会使用的
如果你不懂的话 我是指如果你不明白什么是最大似然估计的话
我是指如果你不明白什么是最大似然估计的话,不用担心
但这只是一个更深层次的理由
在选择这个特殊的代价函数的理由 我有时间的话会在这个课上讲解
给出这个代价函数,是为了拟合参数
我们接下来要做的事情是 尝试找到使 J 函数最小化的参数 θ
所以,如果我们要尝试最小化函数 J 它会给我们一个 θ 的数据集
最后,如果给我们一个新的包含特征 x 集合的例子
我们能够得到拟合给出训练集的 θ 并输出像这样的预测函数
在这里提醒一下,我输出的预测函数可以这样理解
即 y 等于1的可能性
在给出输入 x 并且参数为 θ 的情况下
你可以把这个看作我的假设函数 预测 y 等于1的概率
你可以把这个看作我的假设函数 预测 y 等于1的概率
所以接下来要做的就是 如何计算使函数 J 最小化的参数 θ
所以接下来要做的就是 如何计算使函数 J 最小化的参数 θ
即我们能够得到拟合我们训练集的参数
我们最小化代价函数的方法是梯度下降法
这是我们的代价函数 如果我们想要把它最小化为 θ 的函数
梯度下降法是我们常用的方法
我们反复更新参数 θ
令 θ 等于 θ 减去 学习速率 α 乘这一项的导数
如果你懂微积分,你可以比较轻松地计算这一项的导数
并且如果你可以化简它你会得到和我一样的答案
但即使你不会微积分也不必担心
如果你真的计算了
那你会得到写在这里的这个方程
这是从 i 从1到m项 预测误差和 xi 的第j项乘积之和
所以,如果你将这个偏导数项插回这里
之后我们可以把我们的梯度下降法写成以下这样
我做的就是 把前一页幻灯片的导数项插在这里
所以.我们需要弄清楚
所以,如果你有n个特征 你会有一个向量参数 θ
这个向量参数 θ 包括 θ1,θ2…θn
在你更新时,需要同步更新全部 θ 值
在你更新时,需要同步更新全部 θ 值
现在,如果你采取这个更新规则
并将其与我们做的线性回归进行比较
你有可能惊奇地发现
这个方程就是我们我们在线性回归时用的
事实上,如果你看了之前的视频
如果你看了线性回归的梯度下降更新规则
会发现它和我在蓝框里写的式子一摸一样
所以,线性回归和逻辑回归 是不同的算法吗?
当然不同,观察逻辑回归的式子
预测函数 hθ 的定义改变了
关于线性回归 我们有 hθ 等于 θ 的转置乘 X
在逻辑回归中,hθ 的定义改变了
现在 hθ 等于 1加上e的-θ 转置乘X次幂分之一
所以,即使这个更新规则表面上看起来一样
但是因为 hθ 的定义改变了
所以这个和线性回归的梯度下降法确实不同
在前面的视频中 我们曾经讲过关于线性规划的梯度下降法
我们曾讲过怎样观测梯度下降
以便确定它是收敛的
对于逻辑回归,我通常使用相同的函数
来观测梯度下降以便确定它正确得收敛
当然我们希望
你可以想出如何将这项技术 应用到逻辑回归中
当使用梯度下降法实现逻辑回归时
我们有所有这些不同的参数值
从 θ1 到 θn 这些 我们需要使用这个表达式进行更新的参数值
我们可以采用一个for循环
for循环 i 从0到 n,或者 i 从1到 n+1
因此依次更新这些参数值中的每一个
当然比采用for循环更理想的方法是
我们可以采用向量化实现方法
所以一次向量化实现方法 可以更新全部的n+1个参数
所以一次向量化实现方法 可以更新全部的n+1个参数
检查你自己的理解程度 你可以查看你是否能够指出
如何用这个算法做向量化实现
所以,你现在知道 如何实现逻辑回归的梯度下降法
最后,这还有一个我们之前讨论过的概念
在线性回归中的特征值缩放
我们看到在线性回归中 特征值缩放是如何帮助梯度下降法更快收敛
要使其最小化 我们需要用一个算法
特征值缩放同样适用于 逻辑回归中的梯度下降法
逻辑回归的实际学习算法
当我们有特征值范围差异巨大时
应用特征值缩放同样可以使 逻辑回归的梯度下降法更快收敛
就是如此,你现在知道了如何实现逻辑回归
这是一个十分强大
并且可能是世界上应用最广泛的分类算法
而你现在知道如何让它为你自己工作
Sorry, the comment form is closed at this time.