Cousera笔记(1):通过逻辑回归认识神经网络,含吴恩达deep learning第一次编程作业及答案

理论部分

在cousera这个课中(需要科学上网),吴恩达通过Logistic Regression来介绍神经网络的前向传播和反向传播过程,感觉比较形象,适合深度学习入门。并且这个课不用付费也可以免费观看所有课程和做作业,只不过部分作业不能提交,更多详情查看cousera

在这里插入图片描述
已知现在有参数 x 1 , w 1 , x 2 , w 2 , b x_1, w_1, x_2, w_2, b x1,w1,x2,w2,b,通过计算图的方式,以此前向地初始化所有计算公式,比如已知初始参数可以得到z,然后a可以通过 σ ( z ) \sigma(z) σ(z)得到,其中 σ ( z ) = 1 / ( 1 + e − z ) \sigma(z) = 1/(1+e^{-z}) σ(z)=1/(1+ez)求得a之后可以获得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)==(yloga+(1y)log(1a))

当正向完成之后,可以反向传播修改梯度,使其最优化。

依次计算 L ( a , y ) L(a,y) L(a,y)关于每一级(层)的参数的求导,求导公式不在此推导.
比如: d a = d L d b = − y a + 1 − y 1 − a da=\frac{dL}{db}=-\frac{y}{a}+\frac{1-y}{1-a} da=dbdL=ay+1a1y
d z = d L d z = d a d z d L d a = a − y dz=\frac{dL}{dz}=\frac{da}{dz} \frac{dL}{da}=a-y dz=dzdL=dzdadadL=ay
同理可以求得 d w i = x i d z dw_i=x_idz dwi=xidz
d b = d z db=dz db=dz

因此,可以梯度下降地更新参数:

w − α d w w-\alpha dw wαdw

b − α d b b-\alpha db bαdb

其中这个 α \alpha α是学习率learning_rate。

当更新一次参数后,即完成了一次包含前向传播和后向传播的神经网络,虽然他很简单。

另外,这只是针对一个L(a,y)的。对于所有的训练集m,需要求平均.

于是对于所有的m个训练集:

总代价函数 J ( w , b ) J(w,b) J(w,b)等于每个代价函数 L ( a , y ) L(a,y) L(a,y)之和的平均:
J ( w , b ) = 1 m Σ i = 1 m L ( a ( i ) , y ( i ) ) J(w,b) = \frac{1}{m} \Sigma_{i=1}^{m} L(a^{(i)}, y^{(i)}) J(w,b)=m1Σi=1mL(a(i),y(i))
d w = 1 m X d z T dw=\frac{1}{m}Xdz^T dw=m1XdzT
d b = 1 m Σ i = 1 m d z ( i ) db=\frac{1}{m}\Sigma_{i=1}^mdz^{(i)} db=m1Σi=1mdz(i)

作业部分

第一个作业

第一次编程作业出现在第二周(第一周是选择题),一共两个,第一个名叫Python Basics With Numpy 主要是用来熟悉基本函数。

np.exp()生成sigmoid函数 σ ( x ) \sigma(x) σ(x)

在这里插入图片描述

第二个还是sigmoid

在这里插入图片描述

然后是sigmoid gradient,根据提示公式很容易写出来

在这里插入图片描述

然后是reshape

在这里插入图片描述
在这里插入图片描述

normalize

在这里插入图片描述

然后是softmax函数,其实现公式是 s o f t m a x ( x ) = e x Σ e x softmax(x)=\frac{e^x}{\Sigma e^x } softmaxx)=Σexex

在这里插入图片描述

实现一个loss function

在这里插入图片描述

另一个Loss function

在这里插入图片描述然后就可以全对了, 这个作业可以提交,下一个就要收费才能提交
在这里插入图片描述

第二个作业

第二个叫Logistic regression with a Neural Network Mindset 大意就是用神经网络思维来实现逻辑回归, 这个稍微复杂一点,但理解了课上将的那几个公式,直接套用就行首先导入包
在这里插入图片描述

获取一个训练集的参数

在这里插入图片描述

查看flatten之后的结果

在这里插入图片描述这里有个技巧,想要flatten一个matrix就直接reshape(shape[0],-1).T 或者reshape(bcd, a)(如果他的shape是abcd的话)

重点,实现逻辑回归学习算法

在这里插入图片描述

1.实现sigmoid:

这里跟之前第一个python练习相同
在这里插入图片描述

初始化参数

在这里插入图片描述

前向和反向传播

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

通过获得参数预测结果

在这里插入图片描述

混合所有函数实现model

用之前所有的函数,来进行初始化,优化,预测,计算得分
在这里插入图片描述后面还有一些已经写好的函数,可以用来查看性能,比如学习率曲线
在这里插入图片描述不同学习率比较
在这里插入图片描述这个作业就不能提交了,需要充值(cousera:打钱!)

总的来说,把这个课和作业做了基本概念都能懂,比网上那些动不动几百的入门课强太多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值