(三)Logistic回归的梯度下降
创始人
2024-01-29 22:29:47

一、单个样本的Logistic回归的梯度下降法

在本节中,我们学习如何计算偏导数来实现Logistic回归的梯度下降法。
我们将使用导数流程图来计算梯度。
首先回顾一下Logistic回归的公式

z=wTx+bz = w^Tx+bz=wTx+b

y^=a=σ(z)=11+e−z\widehat{y}=a = \sigma(z) = \frac 1 {1+e^{-z}}y​=a=σ(z)=1+e−z1​

L(a,y)=−(ylog(a)+(1−y)log(1−a))L(a,y)=-(ylog(a) +(1-y)log(1-a))L(a,y)=−(ylog(a)+(1−y)log(1−a))

现在只考虑单个样本的情况
L(a,y)=−(ylog(a)+(1−y)log(1−a))L(a,y)=-(ylog(a) +(1-y)log(1-a))L(a,y)=−(ylog(a)+(1−y)log(1−a)),为Logistic的损失函数,a是Logistic回归的输出,y是样本的基本真值标签值。

现在写出该样本的偏导数流程图
假设样本只有两个,特征x1和x2,为了计算z,我们需要输出参数w1,w2和b,还有样本特征x1,x2,因此用来计算z的偏导数公式,z=w1∗x1+w2∗x2+bz=w1*x1+w2*x2+bz=w1∗x1+w2∗x2+b,y^=a=σ(z)\hat y = a = \sigma(z)y^​=a=σ(z)是偏导数流程图的下一步,最后计算L(a,y).
在这里插入图片描述

因此,在逻辑回归中,我们需要做的是变换参数w和b的值,来最小化损失函数。
在这里插入图片描述

接下来我们讨论怎样向后计算偏导数,想要计算损失函数L(a,y)L(a,y)L(a,y)的导数,首先我们要向前一步,先计算损失函数的导数dL(a,y)da\frac {dL(a,y)} {d a}dadL(a,y)​,即L关于变量a的导数,在代码中,我们用da来表示这个变量。如果你熟悉微积分的话,这个da的结果为dL(a,y)da=da=−ya+1−y1−a\frac { dL(a,y)} {da} = d a = \frac {-y} a+\frac {1-y} {1-a}dadL(a,y)​=da=a−y​+1−a1−y​,损失函数的导数计算公式就是这样,计算关于变量a的导数,就是这个式子。

现在计算出da,最终结果关于变量a的导数,现在可以在向后一步,计算dz,dz是代码中的变量名,dz是损失函数关于z的导数,dz=dLdz=dL(a,y)dz=a−ydz = \frac {dL} {dz} = \frac {dL(a,y)} {dz} = a-ydz=dzdL​=dzdL(a,y)​=a−y;其中dLdz=dL(a,y)da∗dadz\frac {dL} {dz} = \frac {dL(a,y)} {da}* \frac {da} {dz}dzdL​=dadL(a,y)​∗dzda​,其中dadz=a∗(1−a)\frac {da} {dz} = a*(1-a)dzda​=a∗(1−a),这个推导的过程,即“链式法则”。
在这里插入图片描述

现在后向传播的最后一步,计算看看w和b需要如何变化,特别的关于w1的导数dLdw1=dw1=x1∗dz\frac {dL} {dw1} = dw1 = x1 *dzdw1dL​=dw1=x1∗dz,同样的dLdw2=dw2=x2∗dz\frac {dL} {dw2} = dw2 = x2 *dzdw2dL​=dw2=x2∗dz,dLdb=db=dz\frac {dL} {db} = db = dzdbdL​=db=dz。

因此关于单个样本的梯度下降法,你说需要做的就是这些事情。使用上面的公式计算dz、dw1、dw2、db。
更新w1=w1−α∗dw1;w2=w1−α∗dw2;b=b−α∗dbw1= w1 - α*dw1;w2= w1 - α*dw2;b = b - α*dbw1=w1−α∗dw1;w2=w1−α∗dw2;b=b−α∗db。这是单个样本实例的一次梯度更新的步骤。

详细的推导过程

z=wTx+bz = w^Tx+bz=wTx+b

y^=a=σ(z)=11+e−z\widehat{y}=a = \sigma(z) = \frac 1 {1+e^{-z}}y​=a=σ(z)=1+e−z1​

L(a,y)=−(ylog(a)+(1−y)log(1−a))L(a,y)=-(ylog(a) +(1-y)log(1-a))L(a,y)=−(ylog(a)+(1−y)log(1−a))
在这里插入图片描述

∂L(a,y)da=−ya+(1−y1−a)\frac {\partial L(a,y)} {da} = -\frac y a + (\frac {1-y} {1-a})da∂L(a,y)​=−ay​+(1−a1−y​)

=a−ya(1−a)=\frac {a-y} {a(1-a)}=a(1−a)a−y​,其中∂L(a,y)da\frac {\partial L(a,y)} {da}da∂L(a,y)​就是L(a,y)关于a的偏导数。

∂L(a,y)dz=∂L(a,y)dadadz\frac {\partial L(a,y)} {dz} = \frac {\partial L(a,y)} {da} \frac {da} {dz}dz∂L(a,y)​=da∂L(a,y)​dzda​,其中

dadz=e−z(1+e−z)2\frac {da} {dz} =\frac {e^{-z}} {(1+e^{-z})^2}dzda​=(1+e−z)2e−z​

=1+e−z−1(1+e−z)2=\frac {1+e^{-z} - 1} {(1+e^{-z})^2}=(1+e−z)21+e−z−1​

=11+e−z−1(1+e−z)2=\frac 1 {1+e^{-z}} - \frac 1 {(1+e^{-z})^2}=1+e−z1​−(1+e−z)21​

=a−a2=a(1−a)=a - a^2 = a(1-a)=a−a2=a(1−a)

因此,推导出,∂L(a,y)dz=a−y\frac {\partial L(a,y)} {dz} = a - ydz∂L(a,y)​=a−y,代码中用dz表示。

∂L(a,y)dw1=∂L(a,y)da∗dadz∗dzdw1=dw1=x1∗dz\frac {\partial L(a,y)} {dw1} = \frac {\partial L(a,y)} {da} *\frac {da} {dz}* \frac {dz} {dw1} = dw1 = x1*dzdw1∂L(a,y)​=da∂L(a,y)​∗dzda​∗dw1dz​=dw1=x1∗dz,代码中,用dw1表示

∂L(a,y)dw2=∂L(a,y)da∗dadz∗dzdw2=dw2=x2∗dz\frac {\partial L(a,y)} {dw2} = \frac {\partial L(a,y)} {da} *\frac {da} {dz}* \frac {dz} {dw2} = dw2 = x2*dzdw2∂L(a,y)​=da∂L(a,y)​∗dzda​∗dw2dz​=dw2=x2∗dz,代码中,用dw2表示

∂L(a,y)db=∂L(a,y)da∗dadz∗dzdb=db=dz\frac {\partial L(a,y)} {db} = \frac {\partial L(a,y)} {da} *\frac {da} {dz}* \frac {dz} {db} = db = dzdb∂L(a,y)​=da∂L(a,y)​∗dzda​∗dbdz​=db=dz,代码中,用db表示

对参数w和b进行更新,其中α是学习率
w1=w1−α∗dw1w1= w1 - α*dw1w1=w1−α∗dw1
w2=w1−α∗dw2w2= w1 - α*dw2w2=w1−α∗dw2
b=b−α∗dbb = b - α*dbb=b−α∗db

二、m个样本的Logistic回归的梯度下降法

首先,我们需要记住关于成本函数J(w,b)的定义
J(w,b)=1m∑i=1mL(a(i),y(i))J(w,b) = \frac 1 m \sum_{i=1}^m{L(a^{(i)},y^{(i)})}J(w,b)=m1​∑i=1m​L(a(i),y(i))
a(i)=y^(i)=σ(z(i))=σ(wTx(i)+b)a^{(i)} = \hat{y}^{(i)} = \sigma(z^{(i)}) = \sigma{(w^Tx^{(i)}+b)}a(i)=y^​(i)=σ(z(i))=σ(wTx(i)+b)
全局成本函数是一个求和,实际上是1到m项,损失函数和的平均。
它表明全局成本函数对w1的导数,也同样是各项损失函数对w1导数的平均。
∂∂w1J(w,b)=1m∑i=1m∂∂w1L(a(i),y(i))\frac {\partial} {\partial w1} J(w,b) = \frac 1 m \sum_{i = 1}^m\frac {\partial} {\partial w1} L(a^{(i)},y^{(i)})∂w1∂​J(w,b)=m1​∑i=1m​∂w1∂​L(a(i),y(i)),其中∂∂w1L(a(i),y(i))=dw1(i)=(x(i),y(i))\frac {\partial} {\partial w1} L(a^{(i)},y^{(i)}) = dw1^{(i)} = (x^{(i)},y^{(i)})∂w1∂​L(a(i),y(i))=dw1(i)=(x(i),y(i)),即对单个训练样本进行计算,所以真正需要做的是计算这些导数,如我们之前的训练样本上做的,并且求平均,会得到全局梯度值,你可以将它直接应用到梯度下降算法中。
让我们将其使用到一个具体的算法中。
J = 0;dw1 = 0;dw2 = 0;db = 0
For i = 1 to m
        z(i)=wTx(i)+bz^{(i)} = w^Tx^{(i)} + bz(i)=wTx(i)+b
        a(i)=σ(z(i))a^{(i)} = \sigma(z^{(i)})a(i)=σ(z(i))
        J+=−[y(i)loga(i)+(1−y(i))log(1−a(i))]J+=-[y^{(i)}loga^{(i)}+(1-y^{(i)})log(1-a^{(i)})]J+=−[y(i)loga(i)+(1−y(i))log(1−a(i))]
        dz(i)=a(i)−y(i)dz^{(i)} = a^{(i)} - y^{(i)}dz(i)=a(i)−y(i)
        dw1+=x1(i)dz(i)dw1+=x1^{(i)}dz^{(i)}dw1+=x1(i)dz(i) 目前特征2个,n=2
        dw2+=x2(i)dz(i)dw2+=x2^{(i)}dz^{(i)}dw2+=x2(i)dz(i)
        db+=dz(i)db +=dz^{(i)}db+=dz(i)
J/=m
dw1/=m
dw2/=m
db/=m
其中,
dw1=∂J∂w1dw1 = \frac {\partial J} {\partial w1}dw1=∂w1∂J​
w1:=w1−αdw1w1:= w1 - \alpha dw1w1:=w1−αdw1
w2:=w2−αdw2w2:= w2 - \alpha dw2w2:=w2−αdw2
b:=b−αdbb:= b - \alpha dbb:=b−αdb
上述代码只应用了一次梯度下降法,因此,你需要重复上述内容很多次,以应用多次梯度下降。
上述计算中有两个缺点,即我们需要编写两个for循环,第一个for循环是遍历m个训练样本的小循环,第二个for循环是遍历所有特征的for循环,这个例子中,我们有两个特征,所以n等于2,n_x等于2,但是如果你有更多特征,你就需要一个for循环,来遍历所有的n个特征,当你应用深度学习算法,你会发现,在代码中显式的使用for循环,会使算法效率很低。同时在深度学习领域,会有越来越大的数据集,所以能够应用你的算法,完全不用显式for循环的话,会是重要的,会帮助你处理更大的数据集,有一门向量化技术,帮助你的代码,摆脱这些显式的for循环。在深度学习的早期,向量化技术有时候用来加速运算是非常棒的,在深度学习时代,用向量化来摆脱for循环已经变得相当重要。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
函授本科是什么 自考本科还是函... 很多小伙伴在选择学历提升方式的时候,可能会感到很迷茫,不知道报考自考本科还是函授本科,两者有什么区别...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
安徒生童话有哪些 安徒生童话的... 从德国汉堡港乘轮船渡波罗的海抵丹麦王国,就到了安徒生的祖邦。安徒生(1805-1875)以童话作品闻...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...