深度学习-多层神经网络
符号表示
\(l:层数 \\ n^{[l]}:第l层的节点单元数 \\ a^{[l]}:第l层的激活函数\)
正向传播和反向传播
$正向传播: \ 对于第l层: \ 输入:a^{[l-1]} \ 输出:a{[l]},中间(z{[l]})(对应权重w{[l]},偏置b{[l]}) \ z^{[l]} = w{[l]}a{[l-1]}+b{[l]}\ a{[l]} = g{[l]}(z{[l]}) \ 对应向量运算:\ Z^{[l]} = W{[l]}A{[l-1]}+b{[l]}\ A{[l]} = g{[l]}(Z{[l]}) $ \(反向传播:\\ 对于第l层: 输入:da^{[l]} \\ 输出:da^{[l-1]},dW^{[l]},db^{[l]} \\ dz^{[l]} = da^{[l]}*g^{[l]'}(z^{[l]}) \\ dw^{[l]} = dz^{[l]}a^{[l-1]}\\ db^{[l]} = dz^{[l]} \\ da^{[l-1]} = w^{[l]T}dz^{[l]} \\ 向量运算:\\ dZ^{[l]} = dA^{[l]} * g^{[l]'}(Z^{[l]}) \\ dW^{[l]} = \frac{1}{m}dZ^{[l]}A^{[l-1]T} \\ db^{[l]} = \frac{1}{m}np.sum(dZ^{[l]},axis=1,keepdims=True) \\ dA^{[l-1]} = W^{[l]T}dZ^{[l]}\)
为什么需要更深层的网络
- 通过增加深度,以一种从简单到复杂的金字塔状表示方法,前几层学习一些低层次的简单特征,而后几层就能把简单的特征结合起来来探测更加复杂的东西
- 例如,要计算\(y=x_1 XOR x_2XORx_3\cdots XORx_n\),如果使用深度解决,则复杂度为\(O(\log n)\),而如果不用深度,则对单层中的神经元复杂度为\(O(2^n)\)
参数和超参数
参数:\(W^{[1]},b^{[1]},W^{[2]},b^{[2]},\cdots\)
超参数:学习率、迭代情况、隐藏层数、隐藏层单元数、激活函数的选择...
之所以叫做超参数,是因为这些参数的选择会影响参数的值