关键概念

2020-08-20  本文已影响0人  轻骑兵1390

1.激活函数

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

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

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

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个样本.

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. 全连接层

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

上一篇 下一篇

猜你喜欢

热点阅读