对于神经网络学习 Maxwell 方程的思考——泛化能力

  • 导言
  • 1. 模型
  • 2. 数据
  • 3. 逐渐减少训练样本
    • 3.1. 1615个训练样本
    • 3.2. 155个训练样本
    • 3.3. 27个训练样本
  • 4. 逐渐增加训练样本
    • 4.1. 1个训练样本
    • 4.2. 2个训练样本
    • 4.3. 均匀分布
    • 4.4. 边缘分布
  • 5. 均匀分布 VS 随机分布
    • 5.1. 均匀分布
    • 5.2. 随机分布
  • 6. 结论

导言

最近在光学上兴起了 用神经网络学习 Maxwell 方程。最近试了试 Marin 他们提出的方法,对于一个 8 层膜正入射透射光谱,用 5万个样本作为训练集,使用 50 层 残差全链接网络。但是发现在某些区域,神经网络的预测结果也和实际结果不同。这说明 5万个样本作为训练集训练可能不够,应该有一个方法来确定如何选取训练集中的样本,使得数据集样本数最少,每个点都发挥它的最大作用。下面我们对 2 层膜正入射光谱,用 1万个样本作为训练集,使用 5 层全链接网络学习。

1. 模型

所使用的神经网络模型如何所示

input = tf.keras.Input(shape=(2), name='Input')
out1 = tf.keras.layers.Dense(500,activation='relu')(input)
out1 = tf.keras.layers.BatchNormalization()(out1)
out2 = tf.keras.layers.Dense(200,activation='relu')(out1)
out2 = tf.keras.layers.BatchNormalization()(out2)
out3 = tf.keras.layers.Dense(200,activation='relu')(out2)
out3 = tf.keras.layers.BatchNormalization()(out3)
output = tf.keras.layers.Dense(200,activation='linear')(out3)
model = tf.keras.Model(inputs=input, outputs=output)

2. 数据

总数据在下面的区域内均匀产生
d1:0.1∼1d_{1}:0.1 \sim 1d1​:0.1∼1
d2:0.1∼1d_{2}:0.1 \sim 1d2​:0.1∼1

但最终只选取 (y−0.55)2+(x−0.55)2=0.04(y-0.55)^{2}+(x-0.55)^{2}=0.04(y−0.55)2+(x−0.55)2=0.04 这个圆内的数据作为数据集。

3. 逐渐减少训练样本

训练时 Loss 随周期下降如下图所示

最后几个周期 LossLossLoss 如下图所示

3.1. 1615个训练样本

仅仅使用圆圈内的数据集(一共 1615个样本),最终在参数空间
d1:0.1∼1d_{1}:0.1 \sim 1d1​:0.1∼1
d2:0.1∼1d_{2}:0.1 \sim 1d2​:0.1∼1
中的 LossLossLoss 如下图所示

其中黑色的点是 使用作为训练集的数据样本。蓝色区域为神经网络预测结果很好的区域,红色区域为预测结果很糟糕的区域(这里使用 LossLossLoss 0.01作为界限)

3.2. 155个训练样本

下面的结果是只使用 155 个圆圈内的数据点作为训练样本时的结果。

从上图中我们可以看到减少了训练样本后,撑开的空间仍然可以包含圆形区域。

3.3. 27个训练样本


进一步减少训练数据会出现一个问题。样本数量太少导致,描述的区域可能不是一个圆形的区域,这使得圆形边缘数据量很少的区域变成红色。当样本数量较少时(在高维度时常常会面临的一个问题),随机生成数据将不再是一个合理的选择,如何生成数据使用尽可能少的点撑起的空间能覆盖整个圆呢?

4. 逐渐增加训练样本

4.1. 1个训练样本

当只有一个训练样本时,得到的结果如下图所示。可以看到一个样本只能撑起其周围的一小片区域。

4.2. 2个训练样本

对于两个相隔较远的训练样本来说,它们各自撑起了其周围的一小片区域。

当着两个训练样本在参数空间中相隔较近时,两个区域会合成一个较大的区域。

由此我们可以猜想,最简单的使用最少的点撑开最大区域的方法为各个点均匀分布在参数空间中,且点与其最邻近的点之间的距离为 d=0.1d=0.1d=0.1

4.3. 均匀分布

由此,我们可以均匀的分布各个点撑开一片区域,如下图所示。

4.4. 边缘分布

仅仅在边缘处分布数据点,并不能撑起一片区域,除非其他地方的点足够多,可以将中间区域通过泛化来填充掉。但是从本文的第一章图可以看出即使有如此多的点,向四周泛化能力依旧有限。

这告诉告诉我们只靠边界上的点并不能将中心的区域撑开。

5. 均匀分布 VS 随机分布

当点数足够多时,随机分布的效果和均匀分布的效果相当。但是当点数很少时,随机分布和均匀分布不在相同。特别是当参数空间维度足够高时,均匀分布和随机分布的效果需要进行详细讨论。例如:5万个训练样本对于一个 8 层膜的问题来说,也不过一个维度上平均只有 4 个数据点。

5.1. 均匀分布

下面,我们分别展示了 16 个数据点和 100 个数据点均匀分布时的情况。

对于 16 个数据点来说,对于上述两层膜问题来说并不能很好的撑开我们关心的区域,会存在红色拟合效果并不好的区域。


对于 100 个均匀分布的数据点来说,可以很好的撑开我们关心的区域。

5.2. 随机分布

下面是 100 个随机分布的数据点的结果

可以看到对于 100 个数据点来说,随机分布会出现有些地方并不能很好的撑开的情况。

6. 结论

在数据量较少时,均匀分布和随机分布并不等价。此时均匀分布的效果要比随机分布好。

对于高维问题来说,例如: 对于8层薄膜来说,5万个训练样本也仅仅相当于平均一个维度上只有 4 个数据点。故最好的方法为将5万个训练样本均匀分布而不是随机分布。对于一个20层薄膜来说,一个维度上4个数据点,那么训练样本数量将会达到 420≈10124^{20} \approx 10^{12}420≈1012 的量级。故对于高维问题来说,训练时使用的样本数量偏少是一个普遍存在的问题。使得我们需要思考如何在数据量较少的前提下,充分利用每一个数据且能检测该样本数量是否能很好的描述这个问题,撑开我们关心的区域。

在样本数量较少时,对于高维度问题来说,均匀分布可以截取一个平面来检测是否有没有撑开的区域,样本数量是否足够在我们关心的区域达到我们需要的精度。但是当样本数量较少时,随机分布不能给我们提供一种合理的方法进行检测。

当样本数量很多时,随机分布和均匀分布等价,即所有点均匀的分布在我们关心的参数空间中。

对于神经网络学习 Maxwell 方程的思考——泛化能力相关推荐

  1. 论文学习1----理解深度学习需要重新思考泛化Understanding deep learning requires rethinking generalization

    --论文地址:Understanding deep learning requires rethinking generalization 1.有关新闻 1.1 新闻一: 参考1:机器之心 尽管深度人 ...

  2. 卷积神经网络学习路线(五)| 卷积神经网络参数设置,提高泛化能力?

    前言 这是卷积神经网络学习路线的第五篇文章,主要为大家介绍一下卷积神经网络的参数设置,调参技巧以及被广泛应用在了哪些领域,希望可以帮助到大家. 卷积神经网络的参数设置 这个举个例子来说是最好的,因为直 ...

  3. 如何提高强化学习算法模型的泛化能力?

    深度强化学习实验室 官网:http://www.neurondance.com/ 来源:https://zhuanlan.zhihu.com/p/328287119 作者:网易伏羲实验室 编辑:Dee ...

  4. 集成学习算法的思想、通过集成学习提高整体泛化能力的前提条件、如何得到独立的分类器Bagging、Boosting、Stacking算法

    集成学习算法 Ensemble learning algorithm 目的:让机器学习的效果更好,单个的分类器如果表现的好,那么能不能通过使用多个分类器使得分类效果更好呢?或者如果单个分类器分类效果不 ...

  5. 如何提高卷积神经网络模型的泛化能力

    如何提高卷积神经网络模型的泛化能力 在做工程的时候如何提高自己训练出来的模型的泛化能力是一项具有挑战性同时也是一件充满"玄学"的事情.回想我这一年半载训练的那么几个任务的调参来讲, ...

  6. 思考深度学习的泛化能力

      深度神经网络往往带有大量的参数,但依然表现出很强的泛化能力(指训练好的模型在未见过的数据上的表现).深度神经网络为何会拥有如此强的泛化能力?2016年.2017年的两篇论文引起了广泛思考. 神经网 ...

  7. 神经网络的泛化能力、学习速率

    神经网络的泛化能力 在实际中,为了保证神经网络具有较强的泛化能力,就必须首先掌握哪些因素会影响神经网络的泛化能力,以及神经网络的泛化能力是如何受到他们影响的.主要有以下几个方面: 1.         ...

  8. 斯坦福马腾宇:用显式正则器提升深度神经网络的泛化能力

    2019年12月30日,在"智源论坛·海外学者学术报告会"上,斯坦福大学计算机科学和统计学助理教授马腾宇博士做了<为深度模型设计显式正则器>的主题演讲.马腾宇,本科就读 ...

  9. 董彬教授:用深度神经网络学习偏微分方程及其数值求解的离散格式

    2019年10月31日下午,在北京智源大会的"人工智能的数理基础专题论坛"上,北京大学副教授.智源学者董彬做了题为<Learning and Learning to Solv ...

  10. 【AI初识境】如何增加深度学习模型的泛化能力​​​​​​​

    文章首发于微信公众号<有三AI> [AI初识境]如何增加深度学习模型的泛化能力 这是专栏<AI初识境>的第9篇文章.所谓初识,就是对相关技术有基本了解,掌握了基本的使用方法. ...

最新文章

  1. C++项目中的extern C {}
  2. 华为发布《AR洞察与应用实践白皮书》,提出用5G点燃AR,用AR照亮5G
  3. Hibernate中的实体映射
  4. docker 查看容器占用磁盘大小
  5. 四位科研牛人介绍的文献阅读经验
  6. asp.net的一个不错日期控件
  7. DBHelper 使用的是存储过程
  8. Ios tab Bar 使用方法
  9. python编程从入门到实践pdf_Python编程入门研读笔记(二)
  10. hive 指定字段插入数据_Hive插入数据的几种常用方法
  11. 给宝宝的固态硬盘装机教程
  12. 提供多种版本- MSI Code条形码字体具有可扩充性条形码控件MSI Plessey
  13. 使用Scrapy爬取图书网站信息
  14. 安卓手机管理_安卓手机会越用越卡?关闭这几个功能,还可以用三年
  15. 计算机win7开超级性能模式,win7系统设置最高性能的操作方法
  16. CTF.show-mx密码2
  17. OpenGl法向量计算
  18. PCB如何添加矢量图形logo
  19. 15_Pandas计算元素的数量和频率(出现的次数)
  20. Excel中如何添加Power Pivot

热门文章

  1. PyG 中Message Passing机制详解
  2. 电工电子学学习笔记---稳压管部分
  3. 理解openssl协议:x509、crt、cer、key、csr、ssl、tls 这些都是什么鬼? 如何给自己网站颁发证书?
  4. detecting current sdk tools version
  5. 结构方程模型自由度和卡方值为0(零)怎么办?
  6. “木兰”致歉背后的思考,为什么物联网也能用Python
  7. JavaEye论坛热点推荐-2009年1月
  8. 《Linux内核设计与实现》读书笔记(八)- 中断下半部的处理
  9. H3C防火墙基础配置1-登录配置、安全域配置
  10. 3GPP 资源 使用、查找 教程