第一个问题:我们今天用到的深度学习模型有多深?
举例回答这个问题比较容易:2015年微软研究院在ImageNet竞赛夺冠的模型中使用了152层网络。现在有的网络甚至达到了上千层,包含几十亿甚至上百亿个参数,是非常庞大的模型。
第二个问题:为什么要做到这么深呢?
其实在机器学习理论里面,我们很早就知道,大致来说,如果你能够提升一个模型的复杂度,那么就可以提升其学习能力。比如说对神经网络这样的模型,我们怎么样提升它的复杂度呢?很明显有两个办法个办法,是把网络加宽;另外一个办法,是把它加深。但是如果从提升复杂度的角度来说,加深会更有用。因为加宽的话其实是增加了基函数的个数;加深的话,不只增加了函数个数,还增加了函数嵌套的层数,从泛函表达上它的能力会更好。所以“加深”对增强模型的复杂度和学习能力更有用。
第三个问题:既然你们早就知道“加深”能够提升学习能力,为什么不早一点去做?
这里很重要的一点是,提升模型的学习能力未必一定是好事!机器学习的目的,是希望从训练样本中学习出能用于未来新数据的“一般规律”;但有时会把训练样本的一些自身“特性”学出来,误以为是一般规律,这就会出错,这种现象称为“过拟合”(overfitting)。过拟合是怎么发生的呢?理论告诉我们,主要是因为模型过于复杂。这就好比我们在解决一个问题的时候,把这个问题想得过于复杂了,反倒会犯错误,这就是过拟合。所以以往大家都不希望用太复杂的模型。机器学习领域设计了很多技术来缓解过拟合,例如决策树剪枝、神经网络提早停止、支持向量机正则化等等。但实际上最简单有效的是什么?就是使用更多的数据。比方说你给我1000个数据,我可能学出来的是特性,不是一般规律;但是从1000万个数据里面学出来的,很可能就是一般规律了。
领取专属 10元无门槛券
私享最新 技术干货