这篇blog是阅读prince Chapter3&4 之后的一些感想与困惑的解答

Terminology

shallow neural networks: hidden layer层数为1的神经网络

deep neural networks: hidden layer层数大于1的神经网络

shallow nn和deep nn 都属于MLP(multiple linear perceptron).

feed forward network: 信息只向前流动,没有循环. 从input->output是单向的。没有 RNN/LSTM 那种 feedback,没有自循环。
e.g. CNN,ResNet, MLP都是FFN

fully connected network: 相邻两层的每个神经元都相连的nn

universal approximation theorem

定理内容:一个含有足够多hidden units的single hidden layer neural network可以近似任意连续函数

single hidden layer nn 的输入输出可以写成(假设x,y,h都是只有一个神经元) y=aRelu(wx+b)+cy = a \cdot Relu(wx+b) + c 可以看作从 bw-\frac{b}{w} 开始的一个折线函数。 随着hidden layer的神经元数量的增加,我们可以增加多段折线。比如说,我们现在在hidden layer 里面增加一个神经元,那么输入输出可以写成 y=a1Relu(w1x+b1)+c1+a2Relu(w2x+b2)+c2y = a_1 \cdot Relu(w_1x+b_1) + c_1+ a_2 \cdot Relu(w_2x+b_2) + c_2, 假设 b1w1<b2w2-\frac{b_1}{w_1} < -\frac{b_2}{w_2}, 那么我们就在 (b1w1,b2w2)(-\frac{b_1}{w_1} , -\frac{b_2}{w_2}) 构造了一个 a1w1x+a1b1+c1+c2a_1w_1x+a_1b_1+c_1+c_2 的折线, 在 (b2w2,)(-\frac{b_2}{w_2}, \infty) 构造了一个 (a1w1+a2w2)x+a1b1+a2b2+c1+c2(a_1w_1+a_2w_2)x+a_1b_1+a_2b_2+c_1+c_2 的折线。 当我们不断增加神经元的时候,我们用 bw-\frac{b}{w} 控制折线的区间范围,用 aca和c 控制折线的斜率和截距, 这样我们就获得了一个分段函数来拟合原函数。

那么随着hidden layer神经元数量趋向于无穷的时候,我们可以构造出无穷多段折线,从而近似任意连续函数。

why deep neural network

现代模型通常不会在单个hidden layer使用很多神经元,而是增加hidden layer的层数。换句话说,就是不增加神经网络的宽度,而是增加深度。

shallow nn和 deep nn 都能拟合任意函数,但是deep nn的效率更高。换句话说,shallow nn需要指数级的神经元才能达到deep nn线性数量的神经元的拟合效果。

在shallow nn中, 每增加一个神经元,线性分段区域增加了一个,但是在deep nn中,每增加一层hidden layer,线性分段区域都翻了一倍。

小问题: Consider a deep neural network with a single input, a single output, and K hidden layers, each of which contains D hidden units. Show that this network will have a total of 3D+1+(K1)D(D+1)3D + 1 + (K − 1)D(D + 1) parameters. (提示: 对于每个神经元,都需要一个weight和一个bias)