概述
在深度学习领域,我们会经常看到某个模型刷榜的新闻。某个神经网络算法任务的重大突破,第一靠数据集,第二靠模型结构。
图像领域的突破,ImageNet数据集功不可没,这就是数据集的重要性,因为它记录了目标函数的信息。 但是我们从上一节中得知,数据集是有缺陷的,它不能完整地记录目标函数的信息,会遗失一部分。数据集的好坏就在于它对于目标函数信息保存率的高低。
训练阶段的任务就是要利用数据集中的信息(数据集函数),还原出目标函数。由于各种限制,我们只会得到一个与目标函数近似的函数。
好的模型,其对应的函数形式更接近目标函数,从而能够更好地弥补数据集的缺陷,获得更好的结果。
直观展示
2个点
引用上一个节的例子,该数据集有2个点,该数据集的信息保存率很低。
数据集对其函数形式进行不同的假设:
直线形式 抛物线形式通过调整参数,我们可以得到无数条抛物线,且都可以完美模拟数据集函数
还存在很多其它的函数形式,函数形式本身也是无限的。其它函数形式也可以完美模拟数据集函数
3个点
直线形式 多项式形式5个点
直线形式 多项式形式随着数据点的增多,函数形式正在向直线逼近,但仍然有无限多的可能。
总结
从数据中无法获得目标函数形式的信息,它存在无限多的可能。
设计神经网络的结构
数据集中的信息是不足的,我们需要从其它地方获得额外信息,用它来指导神经网络的结构设计,从而弥补信息的不足。
特殊结构
在各种深度学习的任务中,好的模型都使用了高度特化的结构。如:
- 图像任务:二维CNN
- 文本任务:Embedding、一维CNN、RNN、CRF、Transformer等
很多特化的结构都是参考了目标函数的处理过程而设计出来的。比如CNN,是模拟了视觉神经的组织结构的。 虽然目标函数的具体形式是未知的,但是人们往往可以得到其部分信息,通过模拟目标函数的处理过程,获得更好的结果。
结构设计
神经网络的结构是算法的骨架,直接决定算法的最终潜力。骨架没有设计好,无论怎么训练,最终也只会差强人意。
不恰当的结构 恰当的结构神经网络的结构是无法通过训练得到的,通常情况下是需要人为设计的。 也有通过算法进行架构搜索的,也就是尝试各种不同的架构,根据最终的训练效果选择一个最好的,需要耗费非常巨大的算力,只适合极少数的财力雄厚的机构。
要人工设计出好的神经网络结构,需要:
- 对任务所对应的目标函数有一定的了解或合理的猜想;
- 熟悉神经网络中常见的结构,并理解其原理;
- 利用这些结构组装成与目标函数类似的结构。
总结
- 数据集无法提供足够的信息,需要通过神经网络的结构弥补信息的缺失
- 而神经网络结构的信息,来自于对目标函数处理过程的认识和模拟
问题
不是说神经网络可以模拟任意函数吗,为什么还要去设计它的结构呢?
参考软件
更多内容及可交互版本,请参考App:
神经网络与深度学习可从App Store, Mac App Store, Google Play下载。
网友评论