逻辑回归(Logistic Regression)和梯度下降(Gradient Descent)

1 逻辑回归

逻辑回归是一个用于二分类(binary classification)的算法,以在二分类问题中,我们的目标就是习得一个分类器,它以图片的特征向量作为输入,然后预测输出结果 y 为 1 还是 0

逻辑回归的公式定义如下:

 

损失函数:

 

代价函数:

 

1.1逻辑回归模型

对于二元分类问题来讲,给定一个输入特征向量X,它可能对应一张图片,你想识别这

张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你只

能称之为y^,也就是你对实际值 y 的估计X是一个nx维的向量(相当于有nx个特征的特征向量)。我们用w来表示逻辑回归的参数,这也是一个 nx维向量(因为w实际上是特征权重,维度与特征向量相同),参数里面还有b,这是一个实数(表示偏差)。所以给出输入x以及参数wb之后,我们怎样产生输出预测值y^,一件你可以尝试却不可行的事是让y^ = wT + b

下图是 sigmoid 函数的图像,如果我把水平轴作为z轴,那么关于z sigmoid 函数是这样的,它是平滑地从 0 走向 1,让我在这里标记纵轴,这是 0,曲线与纵轴相交的截距是 0.5,这就是关于z sigmoid 函数的图像。我们通常都使用z来表示wT + b的值,关于 sigmoid 函数的公式和图像:

     

1.2逻辑回归的代价函数(成本函数)

为了训练逻辑回归模型的参数参数w和参数b我们,需要一个代价函数,通过训练代价函数来得到参数w和参数b

损失函数又叫做误差函数,用来衡量算法的运行情况,Loss function:L(y^ , y),这个L称为的损失函数,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者它们平方差的一半,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数,在逻辑回归中用到的损失函数是:

损失函数是在单个训练样本中定义的,它衡量的是算法在单个训练样本中表现如何,为了衡量算法在全部训练样本上的表现如何,我们需要定义一个算法的代价函数,算法的代价函数是对m个样本的损失函数求和然后除以m:

 

损失函数只适用于像这样的单个训练样本,而代价函数是参数的总代价,所以在训练逻辑回归模型时候,我们需要找到合适的wb,来让代价函数 J 的总代价降到最低。

2 梯度下降法(Gradient Descent

代价函数(成本函数)J(w, b)是在水平轴wb上的曲面,因此曲面的高度就是J(w, b)在某一点的函数值。我们所做的就是找到使得代价函数(成本函数)J(w, b)函数值是最小值,对应的参数wb

(1)我们以如图的小红点的坐标来初始化参数wb,我们以如图的小红点的坐标来初始化参数wb

 

(2)朝最陡的下坡方向走一步,不断地迭代,如图,走到了如图中第二个小红点处.

 

我们可能停在这里也有可能继续朝最陡的下坡方向再走一步,如图,经过两次迭代走到第三个小红点处。

 

(3)直到走到全局最优解或者接近全局最优解的地方

通过以上的三个步骤我们可以找到全局最优解,也就是代价函数(成本函数)J(w, b)个凸函数的最小值点。

3 逻辑回归中的梯度下降(Logistic Regression Gradient Descent

假设样本只有两个特征x1x2,为了计算z,我们需要输入参数w1w2 b,除此之外还有特征值x1x2。因此z的计算公式为: z = w1x1 + w2x2 + b

逻辑回归的公式定义如下:

 

损失函数:

 

代价函数:

 

在只考虑单个样本的情况,单个样本的代价函数定义如下:其中a是逻辑回归的输出,y是样本的标签值

 

梯度下降法,wb的修正量可以表达如下:

 

使用导数反向传播:

da 来表示dL(a,y)/da

 

dz来表示代价函数L关于z 的导数dL/dz:

 

计算wb变化对代价函数L的影响:

3.1关于单个样本的梯度下降算法,你所需要做的就是如下的事情:

(1)使用公式dz = (a y)计算dz

(2)使用dw1 = x1*dz计算dw1dw2 = x2*dz计算dw2db= dz 来计算db

(3): 更新w1 = w1adw1,更新w2 = w2adw2,更新b =badb

3.2 m 个样本的梯度下降(Gradient Descent on m Examples)

损失函数J(w, b)的定义,a(i)是训练样本的预测值,(z(i))=(wTx+b)

 

 

 

posted @   zhang-X  阅读(2726)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示