前向传播-单样本神经网络的输出
第一层的传播过程如下:
第二层的传播过程如下:
对其向量化:
x(3,1):3个特征,一个样本,为一个列向量
:根据输入的行维度确定W的列维度,本层神经元的个数确定行维度
(4,1):根据本层神经元个数的个数确定行维度,列维度始终为1
的维度都为(4,1)
是一个标量,也可理解为(1,1)
输入层
我们把输入矩阵X记为a[0]。通常我们只计算隐藏层输出和输出层的输出,输入层是不用计算的。故把输入层层数上标记为0,即a[0],也因此把这种单隐藏层神经网络成为两层神经网络
隐藏层
把隐藏层输出记为 a[1]。用下标表示第几个神经元(下标从1开始)。例如 表示隐藏层第1个神经元, 表示隐藏层第2个神经元……这样,隐藏层的4个神经元就可以将其输出 a[1] 写成矩阵的形式
前向传播-多样本神经网络的输出:
假设输入样本有m个,多样本的向量化过程如下图所示 ,其过程是对单样本中的输入向量做了“列扩展”,即把每个样本作为一列放入输入矩阵中,由此我们很容易得到的维度都不变(这一点在上面关于维度的说明已有解释),第一层的输出(这里用]表示)的维度变成了(4,m),每一列即为每个样本产生的输出;第二层的输出(这里用表示)的维度变成了(1,m),每一列即为每个样本产生的输出。
下面是关于m个样本前向传播的for循环形式和向量化形式。
反向传播-神经网络的梯度下降 :
激活函数
函数:除了输出层是个二分类问题,几乎不使用
函数:此函数适用非常优秀,几乎所有的场合
函数选择
对于分类问题,输出层的激活函数一般会选择sigmoid函数。但是对于隐藏层的激活函数,tanh函数的表现会比sigmoid函数好一些。实际应用中,通常会会选择使用ReLU或者Leaky ReLU函数,保证梯度下降速度不会太小。