Small Batch vs Large Batch
速度上或许我们会认为Large batch会更慢,但GPU的并行运算就导致当batch的数量不是特别多时,时间几乎与batch=1相同;总的时间large更占优势,比如60000个,batch=1和batch=100比较,单次的时间几乎相同,但前者要运行600000次,而后者运行60次,后者运行时间更少;前者的梯度下降会有很多noisy,但最终精确度更好,因为更多noisy就不会卡在一个地方,比如一个梯度为0,另一个梯度就会非0,此时就可以继续走下去,而batch很大时就不会有这种纠错的”noisy“。
Momentum
将动量加上,这样就最大程度上避免了鞍点和极小值点的被卡住,当恰好在临界点时能通过自带动量(惯性)往前继续走,运动方向应是梯度与原先运动方向的矢量和方向。
learning rate adapts dynamically
这里我们可以看到当gt比较和缓(小)时,σt对应也小,(η/σt变大)那对应步伐就要迈大。
这是一个没有论文根据的神奇方法,跟上面类似。
这里的σ是统计数据,所以warm up开始时先探索一番,搜集一些情报,再往下走。
loss
x通过network->y->softmax->y`,此时与y^比较(损失)
softmax将y变成[-1,1]间的数,便于比较
*Minimizing cross-entropy is equivalent to maximizing likelihood.
cross-entropy比mean square error更好,后者容易陷入临界点走不出来。
batch Normalization
这里暂时有点懵,日后补上