【Andrew Ng Deep Learning个人学习笔记】 2、神经网络基础(2)

本文深入探讨了逻辑回归算法的原理,通过计算图详细解释了单个及多个训练样本下梯度下降算法的实现过程,包括计算导数、反向传播及参数更新等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算图(Computation Graph)

举例:
  J(a,b,c)=3(a+bc)  ⟹  {u=bcv=a+uJ=3vJ(a,b,c)=3(a+bc)\implies\begin{cases} u=bc \\ v=a+u \\ J=3v \end{cases}J(a,b,c)=3(a+bc)u=bcv=a+uJ=3v
那么这个函数的计算图为:
J(a, b, c)的计算图
  
  

逻辑回归梯度下降算法(Gradient descent algorithm)

单个训练样本(One training sample):
   z=wT+bz=w^T+bz=wT+b
   y^=a=σ(z)\hat{y}=a=\sigma(z)y^=a=σ(z)
   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)+(1y)log(1a))
  计算图(Computaion Graph):
Logistic regression computation graph
  计算导数(Derivative):
   dl(a,y)da=−ya+1−y1−a\frac{dl(a,y)}{da}=-\frac{y}{a}+\frac{1-y}{1-a}dadl(a,y)=ay+1a1y
   dl(a,y)dz=dlda⋅dadz\frac{dl(a,y)}{dz}=\frac{dl}{da}\cdot\frac{da}{dz}dzdl(a,y)=dadldzda
       =(−ya+1−y1−a)a(1−a)=(-\frac{y}{a}+\frac{1-y}{1-a})a(1-a)=(ay+1a1y)a(1a)
       =a−y=a-y=ay
   dl(a,y)dw1=x1(a−y)\frac{dl(a,y)}{dw_1}=x_1(a-y)dw1dl(a,y)=x1(ay)
   dl(a,y)dw2=x2(a−y)\frac{dl(a,y)}{dw_2}=x_2(a-y)dw2dl(a,y)=x2(ay)
   dl(a,y)db=a−y\frac{dl(a,y)}{db}=a-ydbdl(a,y)=ay
  
  这实际上是把逻辑回归看作单层的神经网络,用反向传播算法(Back Propagation Algorithm)计算出各个参数的导数,以便下一步用梯度下降算法计算出代价最小的参数。
  
多个训练样本(m training samples):
  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)=m1i=1ml(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)
  ∂J(w,b)∂w1=1m∑i=1m∂l(a(i),y(i))∂w1\frac{∂J(w,b)}{∂w_1}=\frac{1}{m}\sum_{i=1}^{m}\frac{∂l(a^{(i)},y^{(i)})}{∂w_1}w1J(w,b)=m1i=1mw1l(a(i),y(i))
  ∂J(w,b)∂b=1m∑i=1m∂l(a(i),y(i))∂b\frac{∂J(w,b)}{∂b}=\frac{1}{m}\sum_{i=1}^{m}\frac{∂l(a^{(i)},y^{(i)})}{∂b}bJ(w,b)=m1i=1mbl(a(i),y(i))
  
逻辑回归算法(Logistic regression algorithm)
  Repeat{
      J=0;dw1=0;dw2=0;db=0J=0;dw_1=0;dw_2=0;db=0J=0;dw1=0;dw2=0;db=0
     For i in range(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)+(1y(i))log(1a(i))
       dz(i)=a(i)−y(i)dz^{(i)}=a^{(i)}-y^{(i)}dz(i)=a(i)y(i)
       dw1(i)+=x1(i)dz(i)dw_1^{(i)}+=x_1^{(i)}dz^{(i)}dw1(i)+=x1(i)dz(i)
       dw2(i)+=x2(i)dz(i)dw_2^{(i)}+=x_2^{(i)}dz^{(i)}dw2(i)+=x2(i)dz(i)
       db+=dz(i)db +=dz^{(i)}db+=dz(i)
     J/=mJ/=mJ/=m
     dw1/=mdw_1/=mdw1/=m
     dw2/=mdw_2/=mdw2/=m
     db/=mdb/=mdb/=m
     
     w1=w1−αdw1w_1=w_1-\alpha dw_1w1=w1αdw1
     w2=w2−αdw2w_2=w_2-\alpha dw_2w2=w2αdw2
     b=w1−αdbb=w_1-\alpha dbb=w1αdb
  }
  
  未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值