epoch

机器学习,或者说神经网络训练中,一个很重要的参数就是epoch。一个epoch就表示网络对整个数据集完成了一次训练。

iteration

迭代次数。即在一个epoch中,分成iteration个小的数据批次即minibatch,进行训练。例如样本总数为N,每个minibatch的batchsize为n,则$iteration = N / n$。

batchsize

关于梯度下降法的概念,Andrew Ng的机器学习公开课中有详细的介绍。这里默认采用MiniBatch Gradient Desecent,BGD和SGD均是其特例。

每迭代一个数据批次batch,则相当于损失函数的值在优化空间中“下降”了一个步长。

Gradient Desecent

极端的情况,当数据集较小,可以全部放入内存,则可以将整个数据集作为一个batch,也就是batchsize=样本总数,此时便是BGD了。整个数据集作为batch,对样本的梯度方向表示更为准确。但是针对目前数据集越来越大的情况,BGD对于内存的要求过高。

另一个极端,batchsize=1,即每送入一个样本,执行一次梯度下降,称之为SGD。这种方法很适合在线学习的形式。但是单个样本的梯度随机性过强,不易收敛到最优值。

中间的,则取一个合适的batchsize,令其既在内存范围内,又能快速收敛。更大的batchsize能够提高并行计算的效率,减小训练震荡,但想要达到同样的精度,需要更多次的epoch。

学习率

学习率,即learning rate,是一个控制反向传播误差更新步长的参数,太大了会导致网络不收敛,太小了则会导致网络收敛过慢。通常设置为0.01或更小,需要进行调参选择。

数据集

增大数据集有两种手法,第一种手法,就是采集好的数据,即CelebFaces数据集的引入。第二种手法,就是将图片多尺度多通道多区域的切分,分别进行训练,再把得到的向量连接起来,得到最后的向量。