作者:古月礻羊米兰_318 | 来源:互联网 | 2023-09-13 15:32
前言
这次学习的主题是深度学习,学习的第一门课程就是吴恩达的Deeplearning.ai项目课程。此系列笔记也是根据该深度学习课程整理而成。
该系列笔记是该课程中重点知识的罗列和自己的一些理解,可供正在学习此课程的同学作为参考,也是方便自己日后复习使用。
学习本课程需要有一点python基础、懂得Numpy库的基础使用,有高中的数学基础、懂得一点点矩阵、向量知识大致就可以了。这些知识可以到吴恩达的机器学习课程学习。
关于本篇笔记:这篇笔记是深度学习课程中第一课《神经网络和深度学习》的第二篇笔记,主要是浅层神经网络和深层神经网络的基础
浅层神经网络
**函数
**函数就是在每个圈里使用的函数,**函数一般都是非线性的。因为z函数已经是一个线性函数,如果**函数还是线性函数,那么隐藏层将没有意义。
所以在一般情况下**函必须要有而且都是非线性函数。
z=WTX+b
选择一个激活函数
以下是四个**函数:
sigmoid activation function :除非在二元分类的输出层,否则不要用。
tanh函数,一般情况下这个函数都比sigmoid函数好。
ReLU函数是最常用的函数,如果不知道用什么函数默认就用这个函数。
带泄漏ReLU函数:当x<0时,斜率略小于0
ReLU函数
修正指的是最小值>0
ReLU函数当x>0时,斜率为1;当x<0时,斜率为0;当x=0时,斜率不存在
ReLU的缺点也就在于x=0时的情况
参数
参数上标[]代表层数:输入层为[0],……[1],[2]……
第一个样本上标(1),接着(1)(2)……
每两个层次之间都是输入与输出的关系。
如果输入层有k个特征或参数输给输出层
那么输出层中每个圈(神经节点)中就有k个w和一个b。
W的维度:有几个特征,w就有几个元素;有几个圈,就有几个w
其实函数Z=W^T X+b就是一个加权的函数
W是权重向量,一般不会初始化为0。因为W的任务是将每个输进来的x进行加权。W的值一般都很小。
b是偏置向量,b的值可以初始化为0.
深层神经网络
L代表层数,第l层。输入层为第0层。
n代表一层中神经单元的个数。
对于深层神经网络的前向传播,和之前类似,只不过复杂一点的向量化。再次强调,向量化的思想非常重要,能够尽量避免for循环,但是在向量化的过程中最要注意的是矩阵的维度。
上图中,抽象出来的公式是:
for l in range(1,L+1):
Z[l]=W[l]A[l−1]+b[l]
A[l]=g[l](Z[l])
其中A^{[0]}=X;X={x_1,x_2,x_3}
为什么需要深层神经网络
原因1: 对于深层神经网络,神经网络前几层研究比较低层次的,之后几层是将低层次的内容组合在一起研究复杂层次的。
比如:语音识别:前几层是声音的声波识别->声音的音位->声音里的字母->单词->短语->句子
从最低层次的不断向上提升层次。
原因2: 是遵循电路原理:浅层次的网络相对于深层次的需要指数级的神经单元才能达到和深层次的同样效果。
当然神经网络不是越深越好,层次的深度和调参数一样,也是需要不断的尝试选择一个最适合的层次。
深层网络的前向后向
正向传播为了传播A,反向传播为了获得dw,db。