Logistic Regression
Last updated
Was this helpful?
Last updated
Was this helpful?
在这节视频中 我们来复习一下逻辑回归 使用这种学习算法会得到的输出标签 y y在监督学习问题中全是0 或者1 因此这是一种针对二分类问题的算法 给定的输入特征向量 x 和一幅图片对应 我们希望识别这是否是一张猫的图片 因此我们想要一种算法能够输出一个预测值 我们称之为 y帽 (yhat) 这代表对真实标签 Y 的估计 形式上讲 yhat 是当给定输入特征x时 预测标签 y 为1的概率 换种说法就是当x是一张图片 就像我们在上一个视频看到的 你想要yhat告诉你这是一张猫图的概率 你想要yhat告诉你这是一张猫图的概率 因此就像我在之前视频中说的 x是一个n_x维的向量 约定逻辑回归的参数是 w w 也是一个n_x维的向量 另外 参数b是一个实数 因此给定了一个输入x 以及参数 w 和 b 那么如何产生输出 yhat 呢? 有一种方法可以试试 尽管它不怎么奏效 就是让 yhat 等于 w.Tx+b 这是输入x的一个线性函数输出 事实上 如果使用线性回归 就是这样操作的 但是这对于二分类并不是一个好的算法 因为你希望 yhat 能够输出 y 为1的概率 因此 yhat 的值应该在0和1之间 而这种算法很难实现这个要求 因为w.Tx+b可能会比1大很多或者是一个负数 这对于概率就失去了意义 因此 yhat 值要在0和1之间 所以 让逻辑回归中的输出 yhat 等于对这个值应用sigmoid函数的结果 sigmoid函数是这样的 如果水平轴的标签为z 那么函数sigmoid(z)是这样的 它从0平滑地升高到1 让我给轴标上标签 这是0 然后它会在0.5处和竖直轴交叉 因此这就是sigmoid(z)函数 这里用z表示 (w.Tx+b) 因此这就是sigmoid(z)函数 这里用z表示 (w.Tx+b) 这是sigmoid函数的公式 当z是一个实数 sigmoid(z)就等于 1 / ( 1+e^(-z) ) 注意这几件事 如果z非常大 e^(-z)就会接近0 所以sigmoid(z)就大约等于 1 / (1+ 一个接近0的数字) 因为 e^(很大的数的相反数) 会非常接近0 因此这项会接近1 事实上 如果你看左边的图 如果z非常大 那么sigmoid(z)非常接近1 相反地 如果z非常小 或者他是一个非常大的负值 sigmoid(z)会变成(1+ e^(-z) ) 这项会变成很大的数 而这一项 思考一下 1/(1+ 很大的数) 而这一项 思考一下 1/(1+ 很大的数) sigmoid(z) 就会接近0 因此 当z变成一个很大的负数 sigmoid(z)的值就会非常接近0 因此当你实现逻辑回归时 你的目标是尽力学习到参数w和b 因此yhat就能很好地估计y等于1的概率 在下个知识点之前 还有一点需要强调 当进行神经网络编程时 我们通常会将参数w和参数b分开看待 这里的b对应一个偏置量 在其他的一些课程中 可能看到其他符号 用不同的方式处理参数 在一些课程中 定义了一个额外的特征 x0 并让x0等于1 因此x的维度就变成了 n_x+1 之后 定义yhat等于sigmoid(θ.T *x) 在这种符号约定中 有一个向量参数θ θ0 θ1 θ2 一直到θ_nx θ0取代了参数b 这是一个实数 而从θ1到θ_nx是代替了参数w 而事实上 当实现神经网络时 将b和w当做相互独立的参数会更加简单 因此 在这门课程中 我们不会使用红笔写的这种符号表示 如果你没有在其他课程中看到过这种符号表示 不用担心 这部分只是为了向那些看过这种符号的人明确说明 我们不会在这节课中使用这种符号 但如果你之前没有看过这种符号表示 这儿讲的就不重要了 你没必要担心它 因此 你现在已经知道逻辑回归是什么样子了 接下来为了改变参数w和b 需要定义一个代价函数 我们将在下一节课来讲解⏎GTC字幕组翻译
在之前的视频中 我们学习了逻辑回归模型 为了优化逻辑回归模型的参数W和B 需要定义一个代价函数 现在 就来了解一下可以优化逻辑回归的代价函数 先来回顾一下 我们之前的讲义中用过的这个方程式 将输出值y ̂设为S(W*X^t+b) 将此处的S(z)设定为x+b 所以 为了了解你的模型参数 这里有一组用于优化m参数的示例 你会很自然想找出参数W和B 至少在获得优化集合和输出值时 对于优化集合的假定 我们只提出y ̂(i)将接近 从优化集合中获得的实标y_i 为了更详细地描述上诉方程式 我们已经提及y ̂已经在之前 为优化示例x和其他示例进行了设置 我们使用上标 圆括号标注索引 区分示例 对优化示例(i) 也就是y ̂(i) 的假定 将通过S函数应用到WX' 输入值(i) 优化示例+V Z(i)也可以如此设定 Z(i)等于WX'+b 所以本课中 我们就使用这个标记法则 上标括号指的是数据 X Y Z 以及其他字母与i-th优化示例相关联 也与i-th示例相关 这是括弧里上标i的意义 现在 我们来学习损失函数或 误差函数可以用来检测算法运行情况 如在算法输出时定义损失 y ̂和实标Y有可能是一个或半个平方误差 你可以如此操作 但一般在逻辑回归里不进行此操作 因为当研究参数时 我们讨论的优化问题将会变成非凸问题 所以 优化问题会产生多个局部最优解 梯度下降算法也就无法找到全局最优解 如果你暂时不理解以上知识点 不用担心 接下来的视频中会详细讲解 但有一点请记住 函数L被称为损失函数 需要进行设定 才能在实标为y时对输出值y ̂进行检测 平方误差整体是个合理的选择 除了无法让梯度下降算法良好运行 所以 在逻辑回归中 我们会设定 一个不同的损失函数充当平方误差 这样能产生一个凸象最优问题 将使之后的优化变得更容易 所以 实际要使用的逻辑回归 是我写在屏幕右上方的损失函数 [公式]-ly log (y^)+(1-y)log(1-y^) [公式] 这里说明下为什么这个损失函数有意义 请记住 如果使用平方误差 平方误差需要尽可能的小 在此逻辑回归损失函数里 我们也要让这个数值尽可能小 为了帮助理解 我们举两个例子 第一个 我们假定Y=1 [公式] L (y^, y) -log(y ̂) 如果y等于1 第二项1-y等于0 所以如果y=1,-logy ̂就必须尽可能大 因此log y ̂数值必须大 这也就是要求y ̂的数值必须大 但是y ̂是S函数 它无法大于1 这也就是说y等于1时 y ̂值要尽可能的大 但却不能大过1 所以y ̂值要无限接近1 另一个例子是 如果y等于0 损失函数中的第一项也等于0 因为y等于0 第二项设定损失函数 所以损失是-log1-y ̂ 所以在学习过程中 你需要把损失函数值变小 这意味着log1-y ̂的值要大 又因为有负号 可以总结出类似的原因 就是损失函数会使y ̂尽可能变小 因为y ̂的数值在0~1之间 如果y等于0 损失函数将作用于参数使y ̂无限趋近于0 目前有很多函数有拉斐拉效应 也就是 如果y等于1 y ̂值要变大 如果y等于0 y ̂值要变小 就像这边绿色的内容 关于这个损失函数 有一段非正式的解释之后 另一段视频将更详细地解释 为什么在逻辑回归中 这个特定函数更适用 最后 这个损失函数被单一的优化示例所定义 它将检测单一优化示例的运行情况 接下来,我要设定代价函数 来检测优化组的整体运行情况 所以 运用于参数W和B的代价函数J 是取m平均值 损失函数的总和运用于优化示例 这里的y ̂ 你的逻辑回归算法预计的输出值 用一组特定的W和B参数 所以 展开后 这个等于-1/m 在设定的损失函数中i等于1 所以 这就是y(i)logy ̂ (i)+1 y(i) y ̂(i) 我想我可以在这里添加括号 这样减号可以在最外面 所以我要用的术语是 损失函数适用于像这样单一的优化示例 损失函数反映的是你的参数成本 所以 在优化你的逻辑回归模型时 我们要试着去找参数W和B 以此来缩小J的整体成本 所以 你刚看到的就是设置逻辑回归算法 优化示例的损失函数 以及算法参数的总体损失函数 逻辑回归可被视为一个非常小的神经网络 在下一个视频中我们会提及相关内容 大家对神经网络也就会有初步的认识 接下来请大家观看下一个视频 逻辑回归是一个很小的神经网络 GTC字幕组翻译