当前位置:   article > 正文

神经网络基础—逻辑回归(Logistic Regression)+案例实现_logistic逻辑回归例子

logistic逻辑回归例子

目录

1 logistic 回归介绍

2 sigmod 函数

3 逻辑回归数的代价函数 (Logistic Regression Cost Function )

4 梯度下降法 (Gradient Descent )

5 计算图

6 逻辑回归的梯度下降法 (Logistic Regression Gradient Descent)

1 logistic 回归介绍

        逻辑回归算法适用于二分类问题。对于二元分类问题来讲,给定一个输入特征向量 X ,它可能对应一张图片,你想识别这张图片识别看它是否是一只猫或者不是一只猫的图片,你想要一个算法能够输出预测,你能称之为y^,也就是你对实际值 y 的估计。用 X 表示一个nx 维的向量(nx相当于有个特征的特征向量)。我们用 w 来表示逻辑回归的参数,这也是一个nx 维向量(因为 w 实际上是特征权重,维度与特征向量相同),参数里面还有 b ,这是一个实数(表示偏差)。所以给出输入 x 以及参数 w 和 b 之后,我们可以这样表示预测值y^=wTx+b

2 sigmod函数

        我们得到的是一个关于输入 x 的线性函数,实际上这是你在做线性回归时所用到的,但是这对于二元分类问题来讲不是一个非常好的算法,因为你想让y^表示实际值 y等于 1 的机率的话,y^应该在 0 到 1 之间。而wTx+b 可能比 1 要大得多,或者甚至为一个负值。对于你想要的在 0 和 1 之间的概率来说它是没有意义的,因此在逻辑回归中,我们的输出应该是y^等于由上面得到的线性函数式子作为自变量的 sigmoid 函数中,公式如上图最下面所示,将线性函数转换为非线性函数。

 z=wTx+b

        上图就是sigmod函数,不难理解:当z趋于正无穷大时,函数值趋于1,当z趋于负无穷时,函数值趋于0,当z等于0时,函数值等于0.5。函数值的范围为0~1之间。

3 逻辑回归的代价函数 (Logistic Regression Cost Function)

        为了让模型通过学习调整参数,你需要给予一个 m 样本的训练集,这会让你在训练集上找到参数 w 和参数 b ,来得到你的输出。损失函数又叫做误差函数,用来衡量算法的运行情况,来衡量预测输出值和实际值有多接近。一般我们用预测值和实际值的平方差或者它们平方差的一半,但是通常在逻辑回归中我们不这么做,因为当我们在学习逻辑回归参数的时候,会发现我们的优化目标不是凸优化,只能找到多个局部最优值,梯度下降法很可能找不到全局最优值,虽然平方差是一个不错的损失函数,但是我们在逻辑回归模型中会定义另外一个损失函数。我们在逻辑回归中用到的损失函数是:

        为什么要用这个函数作为逻辑损失函数?当我们使用平方误差作为损失函数的时候,你会想要让这个误差尽可能地小,对于这个逻辑回归损失函数,我们也想让它尽可能地小,为了更好地理解这个损失函数怎么起作用,我们举两个例子:

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

        根据我们对逻辑回归算法的推导及对单个样本的损失函数的推导和针对算法所选用参数的总代价函数的推导,结果表明逻辑回归可以看做是一个非常小的神经网络

4 梯度下降法 (Gradient Descent )

        梯度下降法,就是利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小

         其中wb是网络中需要改变的参数,α是学习率,????是代价函数对wb梯度。在你训练集上,通过最小化代价函数(成本函数) J(w,b)来训练参数 w 和 b 。

a 初始化w和b

b 朝最陡的下坡方向走一步,不断地迭代

c 直到走到全局最优解或者接近全局最优解的地方

        当初始化右边一个点时,dw>0,因为α>0,此时更新后的w会变小,即w向左移,函数逼近最小值。同样的道理当初始化左边一个点时,w向右移,函数逼近最小值。当有两个参数时也是同样的道理。

5 计算图

        一个神经网络的计算,都是按照前向或反向传播过程组织的。首先我们计算出一个新的网络的输出(前向过程),紧接着进行一个反向传输操作。后者我们用来计算出对应的梯度或导数。计算图解释了为什么我们用这种方式组织这些计算过程。我们先看一个不正式的计算图。

计算各个梯度:

6 逻辑回归的梯度下降法 (Logistic Regression Gradient Descent)

        我们将使用计算图对梯度下降算法进行计算,接下来让我们开始学习逻辑回归的梯度下降算法。假设样本只有两个特征x1和 x2,为了计算 z ,我们需要输入参数w1,w2 和 b ,除此之外还有特征值x1和 x2。因此 z 的计算公式为:

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

损失函数:

代价函数:

        假设现在只考虑单个样本的情况,单个样本的代价函数定义如下:其中 a 是逻辑回归的输出, y 是样本的标签值。现在让我们画出表示这个计算的计算图。梯度下降法, w 和 b 的修正量可以表达如下:

        m 个样本梯度下降法现在你知道带有求和的全局代价函数,实际上是 1 到 m 项各个损失的平均。 所以它表明全局代价函数对w1的微分,也同样是各项损失对w1 微分的平均。python中实现以上思想:
 

        我们利用前五个公式完成了前向和后向传播,也实现了对所有训练样本进行预测和求导,再利用后两个公式,梯度下降更新参数。但多次迭代进行梯度下降,需要 for 循环放在最外层。

7 案例实现

用逻辑回归识别一张猫的图片

github代码:https://github.com/xiaooudong/Logistic-Regression-as-a-Neurral-Network


 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/475841
推荐阅读
相关标签
  

闽ICP备14008679号