关于机器学习、深度神经网络的一些认识与结论

iteration vs epoch

  • iteraton:迭代次数,表达的是样本内部,当分类精度达到饱和或者叫分类精度收敛时,迭代停止,最终执行的迭代次数是不定的。

  • epoch:表达的是样本间,进行一次epoch,对全体样本进行一次学习与训练。当然样本与样本都是相同,也即使用相同样本进行的训练。epoch的次数是固定的,除非发生early stopping

反映在代码中:

while epoch < epochs:       # for j in range(epochs):
    epoch += 1 
    for mini_batch_index in range(n_train_batches):
        iter = (epoch-1)*n_train_batches + mini_batch_index
                            # 迭代次数以mini_batch为单位

关于validation_data

机器学习(监督学习)有关的数据形式:

  • training data

  • test data

  • validation data

Instead of using the test_data to prevent overfitting, we will use the validation_data.

也即我们使用validation_data避免过拟合,而不是使用test_data。

我们不仅通过validation data的使用避免过拟合,更一般地,我们使用validation data进行超参的选择

validation data 与 early stopping

我们在validation data上所做的工作和在test data上做的工作是一样的,那就是在每次epoch(一次epoch,表示对全部数据进行一次训练,当然在对全部数据进行训练时也可采用**S**tochastic **G**radient **D**escent的学习方法)结束之时,计算这次的分类精度。一旦在validation data上的分类精度出现了饱和的情况(也即增高不显著),我们就停止训练。这种策略就叫做early stopping。

当然在实际中,我们也并非立刻就能知道何时发生精确率的饱和现象。我们将继续对模型的训练,直到我们有足够的自信确定精确率发生饱和。

你可能感兴趣的:(关于机器学习、深度神经网络的一些认识与结论)