本次学习笔记主要记录学习深度学习时的各种记录,包括吴恩达老师视频学习、花书。作者能力有限,如有错误等,望联系修改,非常感谢!
神经网络和深度学习(三)- 浅层神经网络
- 一、神经网络概述(Neural Network networks)
- 二、神经网络的表示(Neural Network Representation)
- 三、计算一个神经网络的输出(Computing a Neural Network's output)
- 四、多样本向量化(Vectorizing across multiple examples)
- 五、向量化实现的解释(Justification for vectorized implementation)
- 六、激活函数(Activation functions)
- 七、为什么需要非线性激活函数(Why need a nonlinear activation function)
- 八、激活函数的导数(Derivatives of activation functions)
- 九、神经网路的梯度下降(Gradient descent for neural networks)
- (选)十、直观理解反向传播(Backpropagation intuition)
- 十一、随机初始化(Random+Initialization)
第一版 2022-05-14 初稿
一、神经网络概述(Neural Network networks)
快速过一遍如何实现神经网络:
逻辑回归模型与公式建立联系
输入特征x,参数w和b,计算z,由z可计算a,再计算出loss function L(a,y)。
如图第3个,首先计算第一层网络中的各个节点相关的数z1,接着计算 a1,在计算下一层网络同理;我们会使用符号 [m]表示第m层网络中节点相关的数,这些节点的集合被称为第m层网络。这样可以保证 [m]不会和我们之前用来表示单个的训练样本的 (i)(即我们使用表示第i个训练样本)混淆。
二、神经网络的表示(Neural Network Representation)
首先我们观察只有一个隐藏层的神经网络,其由输入层、隐藏层、输出层组成,输入层表示为a[0],隐藏层表示为a[1],我们称上述神经网络为双层神经网路,输入层不算入。
隐藏层和输出层有两个相关的参数w和b。
三、计算一个神经网络的输出(Computing a Neural Network’s output)
圆圈代表回归计算的两个步骤,首先第一步计算z,然后计算激活函数a。图后方神经网络便是按此步骤一步一步计算的。
for循环对此过于复杂,因此w矩阵和x矩阵相乘并加上b矩阵。
四、多样本向量化(Vectorizing across multiple examples)
对于输入的特征向量x,可以用它们生成一个a[2]=yhat。
五、向量化实现的解释(Justification for vectorized implementation)
六、激活函数(Activation functions)
可选择隐藏层用一个激活函数。在神经网络的正向传播中,用的是sigmoid函数,即激活函数,a=1/(1+e-z),同样可以使用g(z)函数,可以是非线性函数。tanh函数或叫双曲正切函数总比激活函数表现得好。
Relu函数比上述两个函数快的多,因为其斜率接近0时,减慢学习速度的效应。
1.sigmoid函数,除非用在二元分类的输出层,不然绝对不用。
2.tanh函数几乎在所有场合更优越
3.默认激活函数relu函数
4.leaker relu函数
如果不知道哪个好用,可先试着在保留的交叉验证集上跑跑。
七、为什么需要非线性激活函数(Why need a nonlinear activation function)
这隐藏层不能用线性激活函数,唯一可用线性激活函数的是输出层。
八、激活函数的导数(Derivatives of activation functions)
d/dz(g(z))=g(x)在z处的斜率。
九、神经网路的梯度下降(Gradient descent for neural networks)
np.sum(axis=1,keepdims=True),水平相加求和,keepdims打开是防止python直接输出这些古怪的秩为1的数组,确保输出为矩阵,维度(n,1)。
(选)十、直观理解反向传播(Backpropagation intuition)
十一、随机初始化(Random+Initialization)
若将神经网络各参数全部初始化为0,再使用梯度下降将无效。
b可以初始0,但w不能。导致a[1]_1和a[1]_2是一样的。
如果w很大,很可能在一开始训练时就落在z很大的区域,导致激活函数接近饱和,减慢了学习速度。
1
- 深度学习-吴恩达 ↩︎