今天学习了部分的Andrew ng的logistic regression,现在来做一个简单的记录。
- 对于logistic的正向回归传播过程比较 简单。根据公式,比如输入样本 x x x有两个特征值( x 1 x_1 x1, x 2 x_2 x2),相应的权重 w w w有两个维度,( w 1 w_1 w1, w 2 w_2 w2),可以通过利用公式:
z = w 1 x 1 + w 2 x 2 + b \ z= w_1x_1+w_2x_2+b\, z=w1x1+w2x2+b
反应出来,然后利用sigmoid(),求得 y ( h a t ) y(hat) y(hat),最后求出loss function:
L ( a , y ) = − [ y log ( a ) + ( 1 − y ) log ( 1 − a ) ] \ L(a,y)=-[y\log(a)+(1-y)\log(1-a)]\, L(a,y)=−[ylog(a)+(1−y)log(1−a)] - 计算该逻辑回归的反向传播过程(求偏导数)
python code(命名):“da”
d a = d L d a = − y a + 1 − y 1 − a da= \frac{dL}{da}=-\frac{y}{a}+\frac{1-y}{1-a} da=dadL=−ay+1−a1−y
python code(命名):"dz" d z = d L d z = d L d a d a d z = − ( y a + 1 − y 1 − a ) ∗ a ( 1 − a ) dz= \frac{dL}{dz}= \frac{dL}{da}\frac{da}{dz}=-(\frac{y}{a}+\frac{1-y}{1-a})*a(1-a) dz=dzdL=dadLdzda=−(ay+1−a1−y)∗a(1−a)对于这个地方其实我没有太明白,因为参考原来的课件上说,sigmoid函数的一阶导数可以用其自生表示,所以得到:
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) = a ( 1 − a ) = a − y \sigma'(z)=\sigma(z)(1-\sigma(z))=a(1-a)=a-y σ′(z)=σ(z)(1−σ(z))=a(1−a)=a−y
更新:对于上面这个公式我弄明白了(傻啊~ ^^ ~), 就是单纯的求导问题,导函数 σ ′ ( z ) \sigma'(z) σ′(z)为:
σ ′ ( z ) = e − x ( 1 + e − x ) 2 = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z)=\frac{e^{-x}}{(1+e^{-x})^2}=\sigma(z)(1-\sigma(z)) σ′(z)=(1+e−x)2e−x=σ(z)(1−σ(z))
-通过上一步发计算,我们可以得到 d z dz dz 的值,然后直接对 w 1 w_1 w1、 w 2 w_2 w2、 b b b进行求导
d w 1 = d L d w 1 = d L d z d z d w 1 = x 1 d z = x 1 ( a − y ) dw_1=\frac{dL}{dw_1}=\frac{dL}{dz}\frac{dz}{dw_1}=x_1dz=x_1(a-y) dw1=dw1dL=dzdLdw1dz=x1dz=x1(a−y)
d w 2 = d L d w 2 = d L d z d z d w 2 = x 2 d z = x 2 ( a − y ) dw_2=\frac{dL}{dw_2}=\frac{dL}{dz}\frac{dz}{dw_2}=x_2dz=x_2(a-y) dw2=dw2dL=dzdLdw2dz=x2dz=x2(a−y)
d b = d L d b = d L d z d z d b = 1 d z = a − y db=\frac{dL}{db}=\frac{dL}{dz}\frac{dz}{db}=1dz=a-y db=dbdL=dzdLdbdz=1dz=a−y
所以梯度下降法可表示为:
w 1 : = w 1 − a d w 1 w_1:=w_1-adw_1 w1:=w1−adw1
w 2 = w 2 − a d w 2 w_2=w_2-adw_2 w2=w2−adw2
b : = b − a d b b:=b-adb b:=b−adb