禅与奶罩识别艺术(下)

  过拟合/欠拟合

之前介绍了卷积提取边缘特征的基本原理,但这还远远不足以从图片中识别出奶罩,因为并不是所有奶罩都像柏木由纪的那么简单朴实,而是存在很多种不同的款式,这不是单从边缘就能识别出来的。

要提取如此复杂的特征,需要很多不同的卷积核。巧妇难为无米之炊,没有足量的训练样本,再好的卷积也出不来。训练样本当然是越多越好,有道是“熟识奶罩三百款,不会解扣也会穿”。人工神经网络虽然不具备真正的人格,但有一点却是相通的,那就是“贪”。

但不管是训练样本的累积,还是计算能力的上限,资源总是有限的。所以我们始终只能从有限多个样本中,提取一小撮特征,这是一个以有涯求无涯的过程。

训练样本不足就会产生一个问题,叫作“少见多怪”。比如我们看上面几张图里的奶罩,大多是有肩带的,那么自然地,神经网络会把“肩带”当作一个特征。

如果一个物体没有类似肩带的结构,被认作奶罩的概率便会下降。

引入过多不必要的特征,导致模型泛化能力(Generalization)下降,这一问题叫作“过拟合”(Overfitting)。比如下图,坐标上有10个点,蓝色拟合曲线逐一穿过,看起来像一个完美的拟合,似乎我们已经看透了这一分布规律的本质。

但是如果有第11个点,它真的会继续落在蓝线上吗?而且一旦没有,那么拟合曲线就面临严重的威胁,需要很大的调整才能满足“穿过所有点”。如果有第12个点呢?

这种过拟合的预测对于新数据的作用有限,实际上一个比较稳妥的拟合是线性关系,我们有很大把握预测,第11个乃至以后的数据,都会落在蓝色直线附近。

过拟合就好比背过了历年的考试题(包括所有数字),但是一见到新题目(数字变了)就不会做了。以前有个傻子卖咸鸭蛋的小品,里面傻子说“五毛钱俩,一块钱不卖”,这就是钻进了“五毛钱俩”的牛角尖而产生的笑话。过拟合的神经网络,就像一个认死理的人,实则是愚痴的。

所幸,人工智能还没有发展出情态,否则恐怕就“贪、嗔、痴”三毒俱全了。我想,如果真的有那一天,机器人也会发展出宗教吧(遁入智瞳)。

反过来的情况叫“欠拟合”(Underfitting),就是没有学习到真正的规律,听风就是雨。比如下图这个把眼罩当成奶罩的惨案,买家确实没有把“肩带”当作特征,“形状”也确实有点类似,但是她把最基本的“大小”因素忽略了。

在实际应用当中,“过拟合”是更加常见的问题。

  脱掉

如何遏制过拟合?方法有很多,比如 L1、L2 正则化(Regularization)是在代价函数(Cost Function)上动手脚。

本文要介绍的方法,叫作Dropout。其原意是辍学,中文资料里基本也都保留了原词,“脱掉”是我自己想的翻译。你问我怎么想的,我也不知道,只是管不住我这手。

Dropout不修改代价函数,而是直接调整神经网络的结构,是一种更加彻底的革命。

人工神经元都是与特征相关的,而有的特征(比如肩带)会造成过拟合。那么只要脱掉肩带所对应的的神经元,不就可以避免了吗?

理是这么个理,但是我们并不知道,具体哪些神经元对应哪些特征。如果我们都知道的话,也就不用训练了,直接求解就行了。

考虑下面这个简单的神经网络,其隐藏层(中间那层)有6个神经元。神经元与特征并非一一对应的,可能3个神经元共同表征1个特征,比如从上数第2、3、5个。假设我们抛掉了这三个神经元,用其余的网络进行计算,就可以在一定程度上降低过拟合。

实际上这里的[2, 3, 5]只是猜测,我们要做的是,把所有能脱掉的3神经元组合,全都脱一遍,对剩余部分分别进行计算,最后再求平均。诚然,每一个经过Dropout的不完整神经网络,还是有可能过拟合,但是各自的过拟合情况是不同的,通过求平均就可以抵消。

本质上,Dropout消解了神经网络对某一部分神经元的依赖性。6个神经元dropout其中3个,此时dropout率即是 0.5

  实践

实践是检验罩杯的唯一标准,但是对于广大新手而言,直接处理彩色图片的难度还是偏高,而且本站的计算能力暂时还很有限。所以这里改用手写数字识别项目作为案例,搭建简单的卷积神经网络,并且对比Dropout的效果。

该项目是Kaggle的入门级比赛,且用到了著名的MNIST手写数字数据集。MNIST可谓是深度学习界的Hello World。

首先导入依赖库和数据集,并进行预处理,以便神经网络模型使用。

此为静态代码展示,在线编辑->运行Python代码,搭建神经网络,请访问:链接

然后构建、训练模型。这里采用一个最简单的卷积神经网络结构:

  • 卷积层(8个5x5卷积核,ReLU激活函数)
  • 池化层(2x2最大池化)
  • 全连接层(16个神经元,ReLU激活函数)
  • 输出层(10个神经元,SoftMax激活函数)

为节省计算开销和减少等待时间,训练的迭代次数已设为1,所以得到的各项结果参数当然偏低,这并非所用的方法有问题。

  • 无Dropout,验证精度为: 0.6090

  Dropout

作为对比,我们搭建另外一个架构类似、但包含Dropout层的神经网络。Dropout的位置是最大池化层之后、全连接层之前

此处代码留空,请访问链接, 完成在线练习。

如果正确地添加了Dropout,则得到的验证精度(val_acc)应为0.7390。而其他的指数,如训练精度(acc)却大致相等。可见,Dropout的作用是消解过拟合,提高模型泛化能力。

PS. 如果要给本文配一个BGM,我希望是杜德伟的《脱掉》

====================================分割线================================

本文作者:AI研习社

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-08-31 11:05:35

禅与奶罩识别艺术(下)的相关文章

禅与奶罩识别艺术(上)

在昨天的卷积:如何成为一个很厉害的神经网络 - 知乎专栏中,热心网友提出了这样的问题: 该文在卷积神经网络的构成上讲解的比较直观,但是没有深入地探讨数学原理.本文将详细介绍卷积滤波器的具体机理,当然不要担心数学问题,只要能熟练掌握百以内加减法和九九乘法表就可以. 之前在微博上关于神经网络的探讨中,话题走向奇怪地走向了奶子(计划通り),并且王司图也做出了召唤柏木由纪的承诺,所以这次就以柏木由纪的照片为例,讲解图像处理的基本法.   01. 暗中观察 现在我们谈的"人工智能"都是弱人工智能

人脸识别-linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error:

问题描述 linux下qt中opencv打开摄像头HIGHGUI ERROR:OpenCV Error: 我在Ubuntu下用qt结合opencv做一个人眼状态识别的程序,qt做界面,程序在vs控制台环境下已经可以运行,但是qt下出错.错误信息 如下: HIGHGUI ERROR: V4L/V4L2: VIDIOC_S_CROP OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/mkc/op

漫话中文自动分词和语义识别(下):句法结构和语义结构

转自:http://www.matrix67.com/blog/archives/4870 这篇文章是漫话中文分词算法的续篇.在这里,我们将紧接着上一篇文章的内容继续探讨下去:如果计算机可以对一句话进行自动分词,它还能进一步整理句子的结构,甚至理解句子的意思吗?这两篇文章的关系十分紧密,因此,我把前一篇文章改名为了<漫话中文自动分词和语义识别(上)>,这篇文章自然就是它的下篇.我已经在很多不同的地方做过与这个话题有关的演讲了,在这里我想把它们写下来,和更多的人一同分享. 什么叫做句法结构呢?让

识别-讨论下中文按拼音排序的问题

问题描述 讨论下中文按拼音排序的问题 最近在做一个项目,需要根据电影名称的拼音进行排序,举个"栗子"(电影名捏造的): 功夫, 功夫熊猫, 美国梦, 重量级选手, 重庆的山, The Beautiful Life 期待的排序结果为:重庆的山 - 功夫 - 功夫熊猫 - The Beautiful Life - 重量级选手 好了,我们先看下Windows7是怎么排序的. win7的排序结果为:The Beautiful Life - 功夫 - 功夫熊猫 - 美国梦 - 重量级选手 - 重

《Mastering Opencv ...读书笔记系列》车牌识别(I)

一.ANPR简介:   Automatic Number Plate Recognition (ANPR),,是一种使用Optical Character Recognition (OCR)和其他分割.检测方法来读取汽车注册牌照的算法.最好的ANPR算法结果是由红外线照相机拍摄图片得到的.因为车牌的特殊材质,夜间会有逆反射效果,看不清车牌.但是现在我们不使用IR图片,我们使用常规图片,这样就增加了我们检测错误和识别错误的等级,以显示我们的算法有多牛逼[老外的意思,有逆反射的图片我没试过].下面给

如何判断人脸识别是否准确?SeetaFace助你一臂之力|AI科技评论

对不同的人进行区分是很多智能系统的必备能力.所谓的人脸识别技术也是为了实现此目的开发出来的,通过对人脸的光学成像来感知人.识别人.经过几十年的研发积累,特别是近年来深度学习技术的涌现,人脸识别取得了长足的进步,在安防.金融.教育.社保等领域得到了越来越多的应用,也成为计算机视觉领域最为成功的分支领域之一. 然而,人脸识别并非是完全成熟的技术,离公众期望的全面应用尚有距离,仍然需要学术界.工业界的共同努力.为此,整个人脸识别社区需要有基准(Baseline)系统,而且基准系统的水平显然会极大影响着

什么是SeetaFace开源人脸识别引擎?

雷锋网按:本文作者VIPL_Face 区分不同的人是很多智能系统的必备能力.为实现此目的,一种可能的技术手段是通过对人脸的光学成像来感知人.识别人,即所谓的人脸识别技术.经过几十年的研发积累,特别是近年来深度学习技术的涌现,人脸识别取得了长足的进步,在安防.金融.教育.社保等领域得到了越来越多的应用,成为计算机视觉领域最为成功的分支领域之一. 然而,人脸识别并非完全成熟的技术,离公众期望的全面应用尚有距离,还需要学术界.工业界的共同努力.为此,整个人脸识别社区需要有基准(Baseline)系统,

浅析Unix系统下的web服务器的配置安全

中介交易 SEO诊断 淘宝客 云主机 技术大厅 Internet日益普及的今天,PC安全不但要求防治计算机病毒,而且要提高系统抵抗黑客非法入侵的能力,还要提高对远程数据传输的保密性,避免在传输途中遭受非法窃取.本文仅仅浅析在构造 Web服务器时可能出现的一些情况,希望能引起重视.         一. 安全漏洞         Web服务器上的漏洞可以从以下几方面考虑:         1.在Web服务器上你不让人访问的秘密文件.目录或重要数据.         2.从远程用户向服务器发送信息时

网易人脸识别系统即日起公测 招募6000名试用用户

网易自主研发的人脸识别系统终于揭开神秘面纱.网易邮件事业部宣布,与网易邮箱结合的网易人脸识别应用即日起公测,目前国际互联网尚无在用户安全方面运用人脸识别系统的先例,网易邮箱此举填补了互联网领域的空白.公测阶段,网易邮箱公开招募6000名网易邮箱用户优先试用. 网友可以登录http://u.163.com/faceauth或在网易免费邮箱的官方微博上申请.网易邮箱将根据用户反馈来优化技术,预计今年8月在邮箱内正式推出这一应用.届时,人脸识别相当于网易邮箱的又一道安全锁,用户选择开通后,可进一步提高