想要你的深度神经网络起很好的效果,你还需要规划好你的参数以及超参数,那么什么是超参数呢?我们看一下模型里的参数 W W W和 b b b,在学习算法中还有其它参数,需要输入到学习算法中,比如学习率 α \alpha α,因为我们需要设置 α \alpha α来决定你的参数如何进化,或者还有梯度下降法循环的次数,在你的算法中也许也有其它想要设置的参数,比如隐层数L,或是隐层单元数,还可以选择激活函数,在隐层中用修正线性单元还是tanh,或者是sigmoid函数。
算法中的这些数字都需要你来设置,这些数字实际上控制了最后参数 W W W和 b b b的值,所以它们被称作超参数。因为这些超参数,比如 α \alpha α是学习率,循环的次数,隐层的数量等都是能够控制 W W W和 b b b的,所以这些东西称为超参数。因为这些超参数某种程度上决定了最终得到的 W W W和 b b b。实际上深度学习有很多不同的超参数,之后也会过一下其它的超参数,比如momentum,再比如mini batch的大小,几种不同的正则化参数等等。
正因为深度学习有这么多的超参数,和机器学习时代的早期相比,我会保持一致,把学习率 α \alpha α称为一个超参数而不是参数。可能在早期的机器学习中,还没有那么多超参数,很多人以前都很随便,以前就把 α \alpha α作为参数,但是技术上讲 α \alpha α是一个控制实际参数的参数,秉承前后一致的原则,我们应该把 α \alpha α这类参数、循环的次数等称为超参数。所以当你自己着手训练自己的深度神经网络时,你会发现超参数的选择有很多可能性,所以你得尝试不同的值。
今天的深度学习应用领域还是很经验性的过程,通常你有个想法,比如你可能大致知道,一个最好的学习率值,可能说 α \alpha α等于0.01最好,然后实际试一下,训练一下看看效果如何,然后基于尝试的结果你会发现你觉得学习率的设定再提高到0.05会比较好。如果你不确定什么值是最好的,可以先试试一个学习率 α \alpha α,再看看损失函数J的值有没有下降,然后可以试试大一些的值,然后发现损失函数的值增加并发散了,然后试一下其它的数,看结果是否下降的很快,或者收敛到在更高的位置,可以尝试不同的 α \alpha α并观察损失函数的变化。
超参数有很多,当开始开发新应用时,预先很难确切知道超参数的最优值应该是什么。所以通常你必须尝试很多不同的值,并走这个循环,试试各种参数,实现模型并观察是否成功,然后再迭代。