2.1 深度学习的实用层面

别等时光非礼了梦想. 提交于 2019-11-28 01:03:11

1. 训练集,验证集,测试集

  当数据量较小时,可以分别占60%, 20%, 20%,当数据集规模很大时,验证集和测试集所占比例可以很小。

2.偏差和方差

 2.1判断

  我们可以根据训练集误差,判断数据拟合情况,判断是否有偏差问题。之后根据验证集误差,判断方差是否过高。

 2.2 解决

  针对高偏差(欠拟合):使用更复杂网络,花费更多时间训练算法或者是用优化算法,(或者采用新架构)

  针对高方差(过拟合):采用更多数据,正则化,(新架构)

3.正则化

3.1 正则化预防过拟合的原因

  正则化参数λ变大时,W变小,Z变小,激活函数会相对呈线性,整个神经网络会计算离线性网络近的值(神经网络会变简单,所以避免了过拟合)。

3.2 正则化方法

  L2

  L1

  dropout

  在不便引入新的数据时将图片翻转或剪裁(数据扩增),

  early stopping。绘制验证集误差

4.梯度消失与梯度爆炸

 

 

5. 作业

  1. 初始化参数:不同的初始化参数导致不同结果

  将所有W初始化为0 ,这将导致"break symmetry", 例子中识别准确率50%

  所有参数随机初始化并将规模*10,导致梯度下降缓慢,迭代次数过多,识别准确率83%

  He初始化(推荐激活函数为relu的层使用),在随机初始化的规模设为sqrt(2./layers_dims[l-1]),识别准确率99%

  Xavier initialization :sqrt(1./layers_dims[l-1])  

  2.正则化

  2.1 L2正则化

  正向:$$J_{regularized} = \small \underbrace{-\frac{1}{m} \sum\limits_{i = 1}^{m} \large{(}\small y^{(i)}\log\left(a^{[L](i)}\right) + (1-y^{(i)})\log\left(1- a^{[L](i)}\right) \large{)} }_\text{cross-entropy cost} + \underbrace{\frac{1}{m} \frac{\lambda}{2} \sum\limits_l\sum\limits_k\sum\limits_j W_{k,j}^{[l]2} }_\text{L2 regularization cost} \tag{2}$$

  反向:$\frac{d}{dW} ( \frac{1}{2}\frac{\lambda}{m}  W^2) = \frac{\lambda}{m} W$

  2.2 dropout步骤:

  正向:1. 随机初始化D矩阵 

      2.将D转换为0/1矩阵

      3.将 $A^{[1]}$ 转换为 $A^{[1]} * D^{[1]}$

      4.将 $A^{[1]}$ 除以 `keep_prob`

  反向:1. dAl = dAl * Dl

      2. dAl = dAl / keep_prob

 3.梯度检测

  梯度检测的步骤:

  1.初始化:将梯度和参数化成向量

  2.针对每一个参数循环

     计算$J^{+}_i$

1.Set $\theta^{+}$ to `np.copy(parameters_values)`
2. Set $\theta^{+}_i$ to $\theta^{+}_i + \varepsilon$
3. Calculate $J^{+}_i$ using to `forward_propagation_n(x, y, vector_to_dictionary(`$\theta^{+}$ `))

    计算$J^{-}_i$

    计算梯度

  3.得到一个梯度序列,与原梯度对比

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!