吴恩达讲解:经典部分-逻辑回归-反向传播算法

假设有1个样本,其中每个样本中的特征为2个,分别为X1,X2

z=w^Tx+b

a=sigmoid(z )  预测概率

成本函数为L=-(y*loga+(1-y)*log(1-a))

反向更新:

w1:=w1-learn_rate*dw1

w2:=w2-learn_rate*dw2

b:=b-learn_rate*db

其中dw1,dw2,db 分别是L(a,y)的导数

剩下的任务就是求上面三个变量的导数了

过程省略

dw1=x1*dz

dw2=x2*dz

db=dz

其中dz=a-y


接下来,我们利用上面的原理对m个样本进行梯度下降算法

刚开始令所有变量为0

L=0,dw1=0,dw2=0,db=0

for  i   in m:

      z(i)=w^Tx(i)+b

       a(i)=1/(1+e^z(i))

       L+=-(y(i)*loga(i)+(1-y(i))*log(1-a(i)) #累加所有损失和变化量

        dw1+=x1(i)*dz(i)

        dw2+=x2(i)*dz(i)

       db+=dz(i)

L/=m  dw1/=m dw2/=m db/=m  #求每个变量的均值

w1:=w1-learn_rate*dw1  #最后更新每个参数

w2:=w2-learn_rate*dw2

b:=b--learn_rate*db

这只是针对一个样本的例子,如果需要用到多个样本,就需要写两个循环,外循环遍历特征。内循环累加各个变量。


但是如果按照这样for 循环写算法肯定是不行的,一旦数据到达百万千万级的时候,效率会降低

所以 我们可是使用python or matlab进行批量的矩阵计算,这种速度效率比for 循环是高的

进行一个向量化改进:


L=0,dw1=0,dw2=0,db=0      #向量化W=np.zeros((m,1))

for  i   in m:

      z(i)=w^Tx(i)+b

       a(i)=1/(1+e^z(i))

       L+=-(y(i)*loga(i)+(1-y(i))*log(1-a(i)) #累加所有损失和变化量

        dw1+=x1(i)*dz(i)   #向量化 dw+=x(i)*dz(i)

        dw2+=x2(i)*dz(i)

       db+=dz(i)

L/=m  dw1/=m dw2/=m db/=m  #求每个变量的均值  向量化dw/=m

w1:=w1-learn_rate*dw1  #最后更新每个参数

w2:=w2-learn_rate*dw2

b:=b--learn_rate*db






  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值