machine-learning
  • Welcome
  • 动手学深度学习
    • 1. 前言
    • 2. 预备知识
    • 3. 线性神经网络
    • 4. 多层感知机
    • 5. 深度学习计算
    • 6. 卷积神经网络
    • 7. 现代卷积神经网络
    • 8. 循环神经网络
    • 9. 现代循环神经网络
    • 10. 注意力机制
    • 11. 优化算法
    • 12. 计算性能
    • 13. 计算机视觉
    • 14. 自然语言处理:预训练
    • 15. 自然语言处理:应用
    • 16. 附录:深度学习工具
  • 百面机器学习
    • 1. 特征工程
    • 2. 模型评估
    • 3. 经典算法
    • 4. 降维
    • 5. 非监督学习
    • 6. 概率图模型
    • 7. 优化算法
    • 8. 采样
    • 9. 前向神经网络
    • 10. 循环神经网络
    • 11. 强化学习
    • 12. 集成学习
    • 13. 生成式对抗网络
    • 14. 人工智能的热门应用
  • 百面深度学习
    • 1. 卷积神经网络 CNN
    • 2. 循环神经网络 RNN
    • 3. 图神经网络 GNN
    • 4. 生成模型
    • 5. 生成式对抗网络 GAN
    • 6. 强化学习 RL
    • 7. 元学习
    • 8. 自动化机器学习 AutoML
    • 9. 计算机视觉 CV
    • 10. 自然语言处理 NLP
    • 11. 推荐系统
    • 12. 计算广告
    • 13. 视频处理
    • 14. 计算机听觉
    • 15. 自动驾驶
  • 统计学习方法
  • 推荐系统实践
    • 1. 推荐系统
    • 2. 特征工程
    • 3. Embedding
    • 4. 精排
    • 5. 召回
    • 6. 粗排/重排
    • 7. 多任务/多场景
    • 8. 冷启动
    • 9. 评估调试
    • 10. 自我修养
  • 深度学习推荐系统
    • 1. 推荐系统
    • 2. 进化之路
    • 3. 深度学习的应用
    • 4. Embedding
    • 5. 多角度审视
    • 6. 工程实现
    • 7. 评估方法
    • 8. 前沿实践
    • 9. 知识框架
  • 强化学习的数学原理
    • 1. 基础概念
    • 2. 贝尔曼公式
    • 3. 贝尔曼最优公式
    • 4. 值迭代与策略迭代
    • 5. 蒙特卡洛方法
    • 6. 随机近似与随机梯度下降
    • 7. 时序差分方法
    • 8. 值函数近似
    • 9. 策略梯度方法
    • 10. Actor-Critic方法
Powered by GitBook
On this page
  • 9.1 多层感知机 MLP 与 布尔函数 ***
  • 1. 表示 XOR,最少需要几个 hidden layer?**
  • 2. 1 隐层,至少需要多少节点,能够实现 n 元输入的任意布尔函数?***
  • 3. 多隐层,至少需要多少节点 / 层,能够实现 n 元输入的任意布尔函数?***
  • 9.2 深度神经网络中的激活函数 ***
  • 9.3 MLP 的反向传播算法 ****
  • 1. MSE, cross entropy 损失函数 **
  • 2. 推导各层参数更新的梯度计算公式 ****
  • 3. MSE 和 cross entropy 分别适合什么场景 ***
  • 9.4 NN 训练技巧 ***
  • 1. 能否将全部参数初始化为 0?*
  • 2. 为什么 Dropout 可以抑制过拟合?***
  • 3. Batch Normalization ***
  • 9.5 深度卷积网络 CNN ***
  • 9.6 深度残差网络 ResNet ***
  1. 百面机器学习

9. 前向神经网络

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

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

  • 1层(2+2+1)

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

    • Z=−Z1−Z2+1Z=-Z_1-Z_2+1Z=−Z1​−Z2​+1

  • 通用近似定理

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

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

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

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

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

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

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

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

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

  • 层数:ceil(2log⁡2N)ceil(2\log_2N)ceil(2log2​N) 二分思想

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

  • 常用 activation function 及其导函数

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

    • Tanh f(z)=tanh⁡(z)=ez−e−zez+e−zf(z)=\tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}f(z)=tanh(z)=ez+e−zez−e−z​,导函数 f′(z)=1−(f(z))2f'(z)=1-(f(z))^2f′(z)=1−(f(z))2

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

  • 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}f(z)={z,az,​z>0z<0​

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

    • Random ReLU,正则化作用

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

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

  • 回归:J(W,b)=[1m∑i=1m12∣∣y(i)−Lw,b(x(i))∣∣2]+λ2∑i=1N−1∑j=1sl∑l=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)})^2J(W,b)=[m1​∑i=1m​21​∣∣y(i)−Lw,b​(x(i))∣∣2]+2λ​∑i=1N−1​∑j=1sl​​∑l=1sl​+1​(Wij(l)​)2

  • 二分类:J(W,b)=−[1m∑i=1m{y(i)log⁡o(i)+(1−y(i))log⁡(1−o(i))}]+λ2∑i=1N−1∑j=1sl∑l=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)})^2J(W,b)=−[m1​∑i=1m​{y(i)logo(i)+(1−y(i))log(1−o(i))}]+2λ​∑i=1N−1​∑j=1sl​​∑l=1sl​+1​(Wij(l)​)2

  • 多分类:J(W,b)=−[1m∑i=1m∑k=1nyk(i)log⁡ok(i)]+λ2∑i=1N−1∑j=1sl∑l=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)})^2J(W,b)=−[m1​∑i=1m​∑k=1n​yk(i)​logok(i)​]+2λ​∑i=1N−1​∑j=1sl​​∑l=1sl​+1​(Wij(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)})∂zi(l)​∂​J(W,b)=δi(l)​=(∑j=1sl​+1​Wij(l)​δj(l+1)​)f′(zi(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)}∂Wij(l)​∂​J(W,b)=δi(l+1)​xj(l+1)​

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

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

  • cross entropy:代价 J(W,b)=−∑k=1nyklog⁡f(zk(L))J(W,b)=-\sum_{k=1}^n y_k\log f(z_k^{(L)})J(W,b)=−∑k=1n​yk​logf(zk(L)​)

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

    • f 取 softmax 时,f′(x)=f(x)(1−f(x))f'(x)=f(x)(1-f(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δ(L)=f(zk(L)​)−1=ak~(L)​−1

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

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

  • cross entropy:二分类 / 多分类

  • 为什么 sigmoid / softmax 不适合 MSE

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

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

9.4 NN 训练技巧 ***

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

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

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

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

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

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

3. Batch Normalization ***

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

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

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

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

9.5 深度卷积网络 CNN ***

  • 本质特征

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

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

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

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

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

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

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

  • 文本分类任务

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

    • 结构

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

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

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

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

9.6 深度残差网络 ResNet ***

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

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

Previous8. 采样Next10. 循环神经网络

Last updated 3 years ago