一、训练一个网络的步骤:

1、定义一个网络架构

2、如何评估一个网络架构的好坏

3、真正训练出好的网络架构

4、在训练集上测试网络的好坏,如果不好,说明网络没有训练好

5、在测试集上测试网络的好坏,如果不好,说明出现过拟合现象

如何正确训练DNN

二、结果不好,并不意味着一定是overfitting

在下图左侧的training Data中,20层的网络误差比56层小,并不是说明20层的网络性能好,也可能是因为50层的网络并没有训练好。

在下图右侧的Testing Data中,20层的网络误差比56层小,并不是说明20层的网络性能好,56层的网络出现过拟合现象,也可能是因为50层的网络并没有训练好。

如何正确训练DNN

三、如果你的模型在Training Data的效果不好,可以采取以下策略

如何正确训练DNN

如何正确训练DNN

(1)检查你的Loss function

Loss function:希望预估出来的结果和实际结果越接近越好,测量方法很多,如:欧氏距离、Square Error、Cross Entropy

如何正确训练DNN

举例:Loss Function可能对于结果有很大的差别

如何正确训练DNN

为什么会有这种差别:Square Error的值落差很小,不利于模型选择最佳梯度,模型会默认你的结果已经很接近标准结果。而Cross Entropy的值落差很大,有助于模型选择最佳梯度,找到最优解。

如何正确训练DNN

(2)使用mini-batch

不要一次性拿60000张图片,以小单位来计算,一次拿1000张的total loss,来算最佳梯度,算完60000张后是一个epoch。如果epoch=20,随意一共是60*20=1200个interation,

下面是一次看60000张(update一次)和mini-batch(update20次)(不稳定)思想的图像表示:

如何正确训练DNN

如何正确训练DNN

如何正确训练DNN

设置mini-batch的小技巧:每个epoch中mini-batch的选择最好不一样。

如何正确训练DNN

(3)设置新的New activation function(**函数)

如何正确训练DNN

如何正确训练DNN

一直困扰的一个问题就是:vanishing Gradient problem(梯度消散问题)

如何正确训练DNN

如何正确训练DNN

刚开始有人提出用RBM解决这个问题,后来又有人提出ReLU


如何正确训练DNN

如何正确训练DNN

如何正确训练DNN

如何正确训练DNN

如何正确训练DNN

ReLU有一些变形:

如何正确训练DNN

如何正确训练DNN

如何正确训练DNN

相关文章:

  • 2021-04-28
  • 2021-09-18
  • 2021-12-29
  • 2021-12-18
  • 2022-01-23
  • 2021-08-06
  • 2021-11-08
  • 2021-11-01
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-28
相关资源
相似解决方案