神经网络
- 输入层+隐藏层+输出层
- 隐藏层有不同的种类
神经网络的术语
n [ i ] : n^{[i]}: n[i]:第i层的神经元个数
z [ i ] , w [ i ] , b [ i ] z^{[i]},w^{[i]},b^{[i]} z[i],w[i],b[i]:第i层的参数
a [ i ] : a^{[i]}: a[i]:第i层的激活函数
神经网络的原理
前向传播
z [ l + 1 ] = W [ l + 1 ] A [ l ] + b [ l + 1 ] z^{[l+1]}=W^{[l+1]}A^{[l]}+b^{[l+1]} z[l+1]=W[l+1]A[l]+b[l+1]
其中:
- 矩阵 A [ l ] A^{[l]} A[l]是第 l l l层的输出矩阵(等价于第 l + 1 l+1 l+1层的输入矩阵),规模大小为( n [ l ] n^{[l]} n[l]x m m m)
- 矩阵 W W W是第 l l l层的权重矩阵,规模大小为( n [ l + 1 ] n^{[l+1]} n[l+1]x n [ l ] n^{[l]} n[l])
矩阵A的实际含义是:列是样本,行是特征
矩阵W的实际含义是:看作当前层神经元的权重向量(这是一个行向量)组成的列向量
反向传播
提示:
J ( w , b ) J(w,b) J(w,b)等价于 J ( y , a [ l + 1 ] ) J(y,a^{[l+1]}) J(y,a[l+1])
利用链式法则求导,每次反向传播 z [ l + 1 ] z^{[l+1]} z[l+1]
推导过程如下
超参数和参数
- 参数:w,b
- 超参数:学习率, λ \lambda λ,神经元的个数,神经网络的层数,不同的层等,正则化方法
正则化
L2-正则化
公式与线性回归一致,只不过对矩阵 W W W求范数,需要计算 W W W中所有权重的和np.sum
Dropout正则化(反向随机失活)
随机丢弃一些神经元(输出结果置0)
表现在代码上就是生成随机矩阵作为掩码与输出矩阵相乘