美文网首页
关键概念

关键概念

作者: 轻骑兵1390 | 来源:发表于2020-08-20 09:05 被阅读0次

    1.激活函数

    主要的激活函数(Activation Functions)包括:

    • sigmoid a = \frac{1}{1+e^{-z}}
    • tanh a =\frac{e^{z} - e^{-z}}{e^{z} + e^{-z}}
    • ReLU a = max(0, z)
    • leaking ReLu a = max(0.01z, z)

    上述所有的关系中, 输出均为a, 输入均为z.

    上述函数的导数, 记所有的激活函数均为a = g(z), 那么其导数为g^\prime(z)

    • sigmoid, g^\prime(z) = a(1-a)
    • tanh, g^\prime(z) = 1 - a^2
    • ReLU
      g^\prime(z) = \left\{ \begin{matrix} 0 & when & z<0\\ 1 & when & z \geq 0 \end{matrix}\right.

    2. 正则化(Regularization)

    正则化用来避免过拟合.
    \begin{aligned} J(w,b) &= \underbrace{\frac{1}{m}\sum_{i=1}^m \mathcal{L}(\hat{y}^{(i)}, {y}^{(i)})}_{\overline{J}(w,b)} + \boxed{\frac{\lambda}{2m}||w||^2} \end{aligned}
    上述方框中的内容称为L2正则化. m为样本个数. \lambda为正则化参数.
    对于\mathbf{w}向量, 正则化部分可以表示为:
    ||w||^2 = \sum_{j=1}^{n_x}w_j^2 = \mathbf{w}^T\mathbf{w}
    对于\mathbf{W}矩阵:
    ||w||^2 = \sum_{i,j}(\mathbf{W}_{ij})^2
    在求导过程中
    \frac{dJ}{d\mathbf{W}} = \frac{d\overline{J}}{d\mathbf{W}} + \frac{\lambda}{m}\mathbf{W}
    迭代过程中就可以得到:
    \begin{aligned} \mathbf{W} &\leftarrow \mathbf{W} - \alpha \frac{dJ}{d\mathbf{W}} \\ &\leftarrow \mathbf{W} - \alpha(\frac{d\overline{J}}{d\mathbf{W}} + \frac{\lambda}{m}\mathbf{W})\\ &\leftarrow \underbrace{(1-\frac{\alpha\lambda}{m})}_{<1} \cdot \mathbf{W} - \alpha\frac{d\overline{J}}{d\mathbf{W}} \end{aligned}
    因此每次迭代过程中, \mathbf{W}总是在缩小, 因此避免了权重过大.

    3. Dropout

    每一次迭代的时候随机失效(disable)一些节点. 注意是在训练过程中, 每次迭代的时候.

    4. mini-batch

    假如有100,000个样本, 每次训练的时候使用1,000个样本.

    • 第1次迭代, 使用1-1,000个样本.
    • 第2次迭代, 使用1001-2,000个样本.
      ...

    5. momentum

    避免梯度来回抖动, 用低通滤波减少抖动, 加强同一方向的梯度

    for iteration i
      compute dw, db
      Vdw = beta * Vdw + (1-beta) * dw
      Vdb = beta * Vdb + (1-beta) * db
      // Update
      W = W - alpha * Vdw
      b = b - alpha * Vdb
    

    6. RMSProp

    同样避免抖动, 加强同一方向的梯度.

    for iteration i
      compute dw, db
      dw2 = dw * dw
      db2 = db * db
      Sdw = beta * Sdw + (1-beta) * dw2
      Sdb = beta * Sdb + (1-beta) * db2
      // update
      W = W - alpha * dW / sqrt(Sdw)
      b = b - alpha * db / sqrt(Sdb)
    

    7. Adam

    初始化

    Vdw = 0, Sdw = 0, Vdb = 0, Sdb = 0
    

    迭代优化

    for iteration i
      compute dw, db
      Vdw = beta1 * Vdw + (1-beata1) * dw
      Vdb = beta1 * Vdb + (1-beata1) * db
    
      dw2 = dw * dw
      db2 = db * db
      Sdw = beta2 * Sdw + (1-beta2) * dw2
      Sdb = beta2 * Sdb + (1-beta2) * db2
    
      Vdw_corrected = Vdw / (1-beta1^t)
      Vdb_corrected = Vdb / (1-beta1^t)
      Sdw_corrected = Sdw / (1-beta2^t)
      Sdb_corrected = Sdb / (1-beta2^t)
    
      //update
      W = W - alpha * Vdw_corrected / (sqrt(Sdw_correct) + eplison)
      b = b - alpha * Vdb_corrected / (sqrt(Sdb_correct) + eplison)
    

    beta1 = 0.9, beta2 = 0.999, eplison = 10e-8

    7. 全连接层

    一个层级中的每个节点都与上个层级中的每个节点相连。

    相关文章

      网友评论

          本文标题:关键概念

          本文链接:https://www.haomeiwen.com/subject/dftsjktx.html