
三层的神经网络,只要节点数足够多,就可以逼近很复杂的函数。对于同一问题,相比浅层网络,深度网络需要的节点数较少,模型复杂度较低。

模型训练相关
loss function:如何评价模型的好坏。
深度神经网络的训练一般从一个随机的初始化开始,希望模型朝着好的方向发展,所谓好的方向,就是极小化由损失函数定义的“模型的输出和目标之间的差距”。
gradient computation:更新模型参数。
深度神经网络里有很多层,常见的方法是通过参数求导的链式法则计算导数,通过更新模型把梯度加或者减到模型上。
[1]stochastic gradient descent:每次随机采样一个样本,计算梯度。实现方法有很多,如基于动量的SGD、Adam等。
[2]mini-batch gradient descent:每次采样一小批样本,对这批样本计算损失,对参数进行求导,然后更新参数。
[3]batch gradient descent:所有的数据一起拿来计算梯度。
parameter initialization:参数如果初始化不好,模型训练会出现“参数溢出”或者“损失函数不可计算”。一般选用一些0均值的随机的或均匀的初始化,或者高斯的初始化。参数的初始值,一般要限定在某个特定的范围内,和每一层节点数目、相邻两层的节点数目有关。
regularization:防止过拟合,在测试数据上表现更好。
[1]数据增强,图像翻转或加噪音,生成很多图像,增多数据量
[2]drop-out/ drop-connect,随机扔掉一些深度模型里的节点或者边,使得训练过程带有某种随机性,更加鲁棒
[3]batch normalization,对一个mini-batch里的数据,模型每一层的输出值,做一些批量的归一化,使得训练过程更鲁棒,收敛加快
[4]weight decay,类似惯性,每次更新参数时不希望参数变化过大,希望和前面一步模型的参数比较接近
[5]early stopping,训练集还没有收敛时,就停下来了,防止过拟合
网友评论