浅层神经网络
- 神经网络概述
一个完整的神经网络由N多个神经元之间形成的复杂连接,但对于每个神经元仅执行简单的线性计算。
- 神经网络的表示
𝑎 ^ [0]可以用来表示输入层的激活值
𝑎 ^ [1]可以用来表示隐藏层的激活值
𝑥表示输入特征,𝑎表示每个神经元的输出,𝑊表示特征的权重,上标表示神经网络的层数(隐藏层为 1),下标表示该层的第几个神经元。这是神经网络的符号惯例。
惯例1:当我们计算网络的层数时,输入层是不算入总层数内,所以隐藏层是第一层,输出层是第二层。
惯例2:将输入层称为第零层,所以在技术上,这仍然是一个三层的神经网络,因为这里有输入层、隐藏层,还有输出层。
-
计算一个神经网络的输出
-
多样本向量化
-
向量化实现的解释
-
激活函数
sigmoid函数
双曲正切函数(tanh)
修正线性单元的函数(ReLu)
sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
ReLu激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者Leaky ReLu。
- 为什么需要非线性激活函数?
事实证明,如果你使用线性激活函数或者没有使用一个激活函数,那么无论你的神经网络有多少层一直在做的只是计算线性函数,所以不如直接去掉全部隐藏层。在我们的简明案例中,事实证明如果你在隐藏层用线性激活函数,在输出层用sigmoid 函数,那么这个模型的复杂度和没有任何隐藏层的标准 Logistic 回归是一样的。
只有一个地方可以使用线性激活函数------𝑔(𝑧) = 𝑧,就是你在做机器学习中的回归问题。
-
激活函数的导数
-
神经网络的梯度下降
-
随机初始化