9. 前向神经网络

9.1 多层感知机 MLP 与 布尔函数 ***

1. 表示 XOR,最少需要几个 hidden layer?**

  • 1层(2+2+1)

    • Z1=max(0,X+Y1), Z2=max(0,XY+1)Z_1=max(0,X+Y-1),\ Z_2=max(0,-X-Y+1)

    • Z=Z1Z2+1Z=-Z_1-Z_2+1

  • 通用近似定理

    • 至少一层 “挤压” 性质的 激活函数 隐含层

    • 当给到足够数量的隐含单元时,可以以任意精度近似

    • 有限维空间 => 有限维空间 的 波莱尔可测函数

2. 1 隐层,至少需要多少节点,能够实现 n 元输入的任意布尔函数?***

  • 析取范式(Disjunctive Normal Form, DNF)=> 卡诺图,相邻区域可规约

  • 最大不可规约的 n 元析取范式(卡诺图):2(n1)2^{(n-1)}

3. 多隐层,至少需要多少节点 / 层,能够实现 n 元输入的任意布尔函数?***

  • XOR 需要 3 个节点(包含输出)

  • n 元 XOR 函数 节点数:3(n1)3(n-1)

  • 层数:ceil(2log2N)ceil(2\log_2N) 二分思想

9.2 深度神经网络中的激活函数 ***

  • 常用 activation function 及其导函数

    • Sigmoid f(z)=11+exp(z)f(z)=\frac{1}{1+\exp(-z)},导函数 f(z)=f(z)(1f(z))f'(z)=f(z)(1-f(z))

    • Tanh f(z)=tanh(z)=ezezez+ezf(z)=\tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}},导函数 f(z)=1(f(z))2f'(z)=1-(f(z))^2

    • ReLU f(z)=max(0,z)f(z)=max(0,z),导函数 f(z)={1,z>00,z0f'(z)=\begin{cases}1,&z>0 \\0,&z\le 0\end{cases}

  • Sigmoid、Tanh 梯度消失:当 z 很大或很小时,梯度趋近于 0

  • ReLU 优点

    • 计算简单

    • 非饱和性 解决 梯度消失问题,提供相对宽的 激活边界

    • 单侧抑制,提供网络 稀疏 表达能力

  • ReLU 局限:神经元死亡

    • Leaky ReLU f(z)={z,z>0az,z<0f(z)=\begin{cases}z,&z>0 \\ az,&z<0\end{cases}

    • Parametric ReLU,将负轴斜率 a 作为网络可学习参数,不需要人工选择

    • Random ReLU,正则化作用

9.3 MLP 的反向传播算法 ****

1. MSE, cross entropy 损失函数 **

  • 回归:J(W,b)=[1mi=1m12y(i)Lw,b(x(i))2]+λ2i=1N1j=1sll=1sl+1(Wij(l))2J(W,b)=[\frac1m\sum_{i=1}^m \frac12||y^{(i)}-L_{w,b}(x^{(i)})||^2]+\frac\lambda2\sum_{i=1}^{N-1}\sum_{j=1}^{s_l}\sum_{l=1}^{s_l+1}(W_{ij}^{(l)})^2

  • 二分类:J(W,b)=[1mi=1m{y(i)logo(i)+(1y(i))log(1o(i))}]+λ2i=1N1j=1sll=1sl+1(Wij(l))2J(W,b)=-[\frac1m\sum_{i=1}^m \{y^{(i)}\log o^{(i)}+(1-y^{(i)})\log(1-o^{(i)})\}]+\frac\lambda2\sum_{i=1}^{N-1}\sum_{j=1}^{s_l}\sum_{l=1}^{s_l+1}(W_{ij}^{(l)})^2

  • 多分类:J(W,b)=[1mi=1mk=1nyk(i)logok(i)]+λ2i=1N1j=1sll=1sl+1(Wij(l))2J(W,b)=-[\frac1m\sum_{i=1}^m\sum_{k=1}^n y_k^{(i)}\log o_k^{(i)}]+\frac\lambda2\sum_{i=1}^{N-1}\sum_{j=1}^{s_l}\sum_{l=1}^{s_l+1}(W_{ij}^{(l)})^2

2. 推导各层参数更新的梯度计算公式 ****

  • 残差量递推公式:zi(l)J(W,b)=δi(l)=(j=1sl+1Wij(l)δj(l+1))f(zi(l))\frac{\partial}{\partial z_i^{(l)}}J(W,b)=\delta_i^{(l)}=(\sum_{j=1}^{s_l+1}W_{ij}^{(l)}\delta_j^{(l+1)})f'(z_i^{(l)})

    • Wij(l)J(W,b)=δi(l+1)xj(l+1)\frac{\partial}{\partial W_{ij}^{(l)}}J(W,b)=\delta_i^{(l+1)}x_j^{(l+1)}

    • bi(l)J(W,b)=δi(l+1)\frac{\partial}{\partial b_{i}^{(l)}}J(W,b)=\delta_i^{(l+1)}

  • MSE:代价 J(W,b)=12yf(zj(L))2J(W,b)=\frac12 ||y-f(z_j^{(L)})||^2,残差 δ(L)=(ya(L))f(z(L))\delta^{(L)}=-(y-a^{(L)})f'(z^{(L)})

  • cross entropy:代价 J(W,b)=k=1nyklogf(zk(L))J(W,b)=-\sum_{k=1}^n y_k\log f(z_k^{(L)})

    • 只有一个类别为1,则 J(W,b)=logak~(L)J(W,b)=-\log a_{\tilde{k}}^{(L)},残差 δ(L)=f(zk~(L))f(zk~(L))\delta^{(L)}=-\frac{f'(z_{\tilde{k}}^{(L)})}{f(z_{\tilde{k}}^{(L)})}

    • f 取 softmax 时,f(x)=f(x)(1f(x))f'(x)=f(x)(1-f(x)),因此 δ(L)=f(zk(L))1=ak~(L)1\delta^{(L)}=f(z_k^{(L)})-1=a_{\tilde{k}}^{(L)}-1

3. MSE 和 cross entropy 分别适合什么场景 ***

  • MSE:连续输出,不含 sigmoid / softmax

  • cross entropy:二分类 / 多分类

  • 为什么 sigmoid / softmax 不适合 MSE

    • 如果 z(L)z^{(L)} 的绝对值较大,梯度趋于饱和,即 f(z(L))f'(z^{(L)}) 绝对值非常小,学习缓慢

    • 当使用 cross entropy 时,残差为 δ(L)=ak~(L)1\delta^{(L)}=a_{\tilde{k}}^{(L)}-1,导数是线性的,不存在学习过慢问题

9.4 NN 训练技巧 ***

1. 能否将全部参数初始化为 0?*

  • 不能,前向传播、反向传播 的取值都是完全相同的,bias 可以简单地设为 0

2. 为什么 Dropout 可以抑制过拟合?***

  • 随机固定部分参数,轻量级 Bagging 集成近似

  • 减弱神经元之间的联合适应性,减少过拟合风险,增强泛化能力

  • 预测阶段:每个神经元的系数要预先乘以 p

3. Batch Normalization ***

  • 动机:隐层参数变化,后一层输入变化,网络每次迭代需要拟合不同分布,增大 复杂度 和 过拟合风险

  • 原理:对数据的分布进行额外的约束,增强泛化能力,但降低拟合能力,引入变换重构 γ,β\gamma, \beta

  • 公式:(1) μB\mu_B; (2) σB2\sigma_B^2; (3) x^ixiμBσB2+ϵ\hat x_i\leftarrow\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}; (4) yiγx^i+βBNγ,β(xi)y_i\leftarrow\gamma\hat x_i+\beta \equiv BN_{\gamma,\beta}(x_i)

  • CNN:参数共享机制,一起被归一化

9.5 深度卷积网络 CNN ***

  • 本质特征

    • 稀疏交互(Sparse Interaction):局部区域,而不是稠密连接,物理意义是 局部特征=>复杂抽象特征

    • 参数共享(Parameter Sharing):学习一组参数集合,降低存储,物理意义是 平移等变性

  • 池化操作(本质是降采样)

    • mean pooling:抑制 邻域大小受限 造成估计值 方差增大 的现象,保留背景

    • max pooling:抑制 网络参数误差 造成估计值 均值偏移 的现象,提取纹理

    • 特殊池化:相邻重叠区域的池化,空间金字塔池化

    • 作用:降低参数量,保持 平移/伸缩/旋转 操作的 不变性

  • 文本分类任务

    • 优势:自动地对 N-gram 特征进行组合和筛选,获得不同抽象层次的语义信息

    • 结构

      • 输入层:N×K×2N\times K\times 2,N单词,K向量维度,固定的 word embedding + 网络训练

      • 卷积层:定义不同大小的滑动窗口,ci=f(wxi:i+h1+b)c_i=f(w\cdot x_{i:i+h-1}+b)

      • 池化层:1-Max, K-Max, mean pool,将不同长度的句子,得到定长向量表示

      • 输出层:任务相关,如 softmax 多分类

9.6 深度残差网络 ResNet ***

  • 梯度消失问题:参数和导数的连乘,误差消失或膨胀

  • 模块输出:H(x)=F(x)+xH(x)=F(x)+x,于是 F(x)F(x) 只需要拟合残差 H~(x)x\tilde H(x)-x

Last updated