在深度学习领域,我们会经常看到某个模型刷榜的新闻。某个神经网络算法任务的重大突破,第一靠数据集,第二靠模型结构。
图像领域的突破,ImageNet 数据集功不可没,这就是数据集的重要性,因为它记录了目标函数的信息。 但是我们从上一节中得知,数据集是有缺陷的,它不能完整地记录目标函数的信息,会遗失一部分。数据集的好坏就在于它对于目标函数信息保存率的高低。
训练阶段的任务就是要利用数据集中的信息(数据集函数),还原出目标函数。由于各种限制,我们只会得到一个与目标函数近似的函数。
好的模型,其对应的函数形式更接近目标函数,从而能够更好地弥补数据集的缺陷,获得更好的结果。
引用上一个节的例子,该数据集有 2 个点,该数据集的信息保存率很低。
数据集
对其函数形式进行不同的假设:
直线形式
3抛物线形式
通过调整参数,我们可以得到无数条抛物线,且都可以完美模拟数据集函数
还存在很多其它的函数形式,函数形式本身也是无限的。其它函数形式也可以完美模拟数据集函数
直线形式
3多项式形式
直线形式
25多项式形式
随着数据点的增多,函数形式正在向直线逼近,但仍然有无限多的可能。
从数据中无法获得目标函数形式的信息,它存在无限多的可能。
数据集中的信息是不足的,我们需要从其它地方获得额外信息,用它来指导神经网络的结构设计,从而弥补信息的不足。
在各种深度学习的任务中,好的模型都使用了高度特化的结构。如:
很多特化的结构都是参考了目标函数的处理过程而设计出来的。比如 CNN,是模拟了视觉神经的组织结构的。 虽然目标函数的具体形式是未知的,但是人们往往可以得到其部分信息,通过模拟目标函数的处理过程,获得更好的结果。
神经网络的结构是算法的骨架,直接决定算法的最终潜力。骨架没有设计好,无论怎么训练,最终也只会差强人意。
12不恰当的结构
100恰当的结构
神经网络的结构是无法通过训练得到的,通常情况下是需要人为设计的。
也有通过算法进行架构搜索的,也就是尝试各种不同的架构,根据最终的训练效果选择一个最好的,需要耗费非常巨大的算力,只适合极少数的财力雄厚的机构。
要人工设计出好的神经网络结构,需要: