Cousera笔记(1):通过逻辑回归认识神经网络,含吴恩达deep learning第一次编程作业及答案
文章目录
理论部分
在cousera这个课中(需要科学上网),吴恩达通过Logistic Regression来介绍神经网络的前向传播和反向传播过程,感觉比较形象,适合深度学习入门。并且这个课不用付费也可以免费观看所有课程和做作业,只不过部分作业不能提交,更多详情查看cousera
已知现在有参数,通过计算图的方式,以此前向地初始化所有计算公式,比如已知初始参数可以得到z,然后a可以通过得到,其中求得a之后可以获得Loss function
当正向完成之后,可以反向传播修改梯度,使其最优化。
依次计算关于每一级(层)的参数的求导,求导公式不在此推导.
比如:
同理可以求得
因此,可以梯度下降地更新参数:
其中这个是学习率learning_rate。
当更新一次参数后,即完成了一次包含前向传播和后向传播的神经网络,虽然他很简单。
另外,这只是针对一个L(a,y)的。对于所有的训练集m,需要求平均.
于是对于所有的m个训练集:
总代价函数等于每个代价函数之和的平均:
作业部分
第一个作业
第一次编程作业出现在第二周(第一周是选择题),一共两个,第一个名叫Python Basics With Numpy 主要是用来熟悉基本函数。
np.exp()生成sigmoid函数
第二个还是sigmoid
然后是sigmoid gradient,根据提示公式很容易写出来
然后是reshape
normalize
然后是softmax函数,其实现公式是
实现一个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:打钱!)
总的来说,把这个课和作业做了基本概念都能懂,比网上那些动不动几百的入门课强太多。