一、训练一个网络的步骤:
1、定义一个网络架构
2、如何评估一个网络架构的好坏
3、真正训练出好的网络架构
4、在训练集上测试网络的好坏,如果不好,说明网络没有训练好
5、在测试集上测试网络的好坏,如果不好,说明出现过拟合现象
二、结果不好,并不意味着一定是overfitting
在下图左侧的training Data中,20层的网络误差比56层小,并不是说明20层的网络性能好,也可能是因为50层的网络并没有训练好。
在下图右侧的Testing Data中,20层的网络误差比56层小,并不是说明20层的网络性能好,56层的网络出现过拟合现象,也可能是因为50层的网络并没有训练好。
三、如果你的模型在Training Data的效果不好,可以采取以下策略
(1)检查你的Loss function
Loss function:希望预估出来的结果和实际结果越接近越好,测量方法很多,如:欧氏距离、Square Error、Cross Entropy
举例:Loss Function可能对于结果有很大的差别
为什么会有这种差别:Square Error的值落差很小,不利于模型选择最佳梯度,模型会默认你的结果已经很接近标准结果。而Cross Entropy的值落差很大,有助于模型选择最佳梯度,找到最优解。
(2)使用mini-batch
不要一次性拿60000张图片,以小单位来计算,一次拿1000张的total loss,来算最佳梯度,算完60000张后是一个epoch。如果epoch=20,随意一共是60*20=1200个interation,
下面是一次看60000张(update一次)和mini-batch(update20次)(不稳定)思想的图像表示:
设置mini-batch的小技巧:每个epoch中mini-batch的选择最好不一样。
(3)设置新的New activation function(激活函数)
一直困扰的一个问题就是:vanishing Gradient problem(梯度消散问题)
刚开始有人提出用RBM解决这个问题,后来又有人提出ReLU
ReLU有一些变形: