Neural Networks and Deep Learning coursera总结

第一周

众所周知,开学第一周是不需要听课的,里面全是基础概念和大体框架,但是对于什么都不知道的学生而言,这毫无用处,随着后面的学习,一开始的框架都变形了

讲了一些基础知识,如果之前看过 Andrew Ng的机器学习那门课,那么这一周没有内容

首先 神经网络是这门课的基础。即整体操作围绕着 输入——神经元——输出

生物上 考虑实际的神经元,从上一个神经元接收信息,经过传递,向下一个神经元发送神经递质

计算机里面,这门课,将接收和传递认为是神经元的第一功能(线性回归),发送神经递质认为是神经元第二功能(**函数)

将计算机的行为反馈到生物上,那么解释就变成了,第一步 神经元对所有信息进行处理,第二步判断处理的信息是否需要发送

由于神经元构成神经网络,神经元一开始都是相同的,通过后面的激素等调节,分化成不同位置不同功能的神经元,(通过不同数据,分化成不同的参数)

给出一些现在的例子

输入 输出 应用 使用
房屋的参数 房屋价格 房地产 NN
广告,用户信息 是否点击广告 在线广告投送 NN
图片 类别 图片标记 CNN
语音 文字 语音识别 RNN

英语

汉语 同声传译 RNNs
图片,雷达信息 车辆控制 自动驾驶

RNNs

 

这门课程一直正在处理标准神经网络 standard NN

实际的项目过程是 想法-代码-实例 三者相互联系(项目迭代)

稍作说明为什么深度学习突然热门(计算力,数据,算法)

采访了 Geoffrey-Hinton

 

第二周

带你初步使用神经网络

为了让你仍对这门课有充足的激情,所以我们先做一个简单的项目,如何判断一张照片是否为猫片

过程  数据-算法-测试

数据:输入图片,图片都是彩色图,其存储是RGB三个通道混合,而我们特征量X是一个列向量,因而需要把图片m*n*3转换成(m*n*3)*1,我们用python里的numpy,里面有一个shape和reshape

算法:讲述神经网络的基础(如果上过 机器学习,那么不需要看了,直接跳到jupyterlab实验室进行作业)

输入X      _______       A=WX+b   _______   Y=sigmoid(A)    此时我们完成了前向

W,b是我们没有的参数,是我们需要训练的,所以我们还要对参数进行修改,为了更加贴合结果,J_cost  =  sum (y  - Y)^2       y数据输入的结果(标准答案/真值),Y我们训练的结果

W = W - learning_rate * dW           ______________    b = b - learning_rate * db  

dW表示 dJ/dW,即代价函数对参量W的偏导,d某  同理

回顾微积分里面的等W,我们将次过程化成图,以J(a,b,c)=3(a+bc)为例,

Neural Networks and Deep Learning coursera总结

W = W - learning_rate * dW  只需要我们从后面向前面走一遍即可全部求出,不需要依次独立计算    后向

为了让代码跑的更快,我们就要减少loop循环,(逻辑上是需要循环,但是当所有东西都展示后,数据内部可以更快的计算——矩阵算法)

尝试着将代码向量化

考验数学功底的时刻到了,如果导数都求不好,你可能都敲不出公式,即使边上给你导数表

这周采访 Pieter Abbeel

 

第三周

带你修改**函数

正如第一周所说的,**函数我们可以稍微修改一下,

sigmoidNeural Networks and Deep Learning coursera总结

Neural Networks and Deep Learning coursera总结

可以尝试 tanh,relu

tanh Neural Networks and Deep Learning coursera总结

Neural Networks and Deep Learning coursera总结

ReLUNeural Networks and Deep Learning coursera总结

leaky ReLUNeural Networks and Deep Learning coursera总结

解释为什么需要一个**函数

a1=W1*X+b1   a2=W2*a1+b2=W2*(W1*X+b1)+b2=W1*W2*X+W2*b1+b2=W*X+b

至于哪一个**函数(非线性函数)好用,不知道,都试一遍,经验上

对于二元分类 y=0,y=1选用 sigmoid  对于其他用tanh

**函数用线性函数尽可能处理回归问题

会想你的神经元,同一层中,通过了同样的数据,同样的计算,那么必然的到的是同样的结果,而现实是我们的神经元大体相似,个体相异,这就需要我们初始随机化,这样就可以打破对称性

np.random.randn

这周实验相当于改了一个**函数,没了

 

第四周

带你搭建一个深层网络,3层

解释深层和浅层,就是一个层多,一个层少

举个例子就是计算Y=X1 XOR X2 XOR X3 XOR X4

深层 log2(N)  

Neural Networks and Deep Learning coursera总结

 

浅层

Neural Networks and Deep Learning coursera总结

 

形象的描述一下为什么深层有时候可以更好的模拟出结果

比如一张图像,经过第一层很细小的划分,可以得到很多图像边缘,第二层将图像边缘进行拼接,拼接后可能出现小的特征,如眼睛,耳朵,第三层将小特征拼接,得到一个大图,可能是一张脸