禅与奶罩识别艺术(下)

简介:

  过拟合/欠拟合

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

禅与奶罩识别艺术(下)

禅与奶罩识别艺术(下)

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

禅与奶罩识别艺术(下)

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

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

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

禅与奶罩识别艺术(下)

引入过多不必要的特征,导致模型泛化能力(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研习社
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
15天前
|
人工智能 机器人 人机交互
哥大华人开发人脸机器人,照镜子自主模仿人类表情超逼真
【4月更文挑战第3天】哥伦比亚大学研究人员开发了一款名为Emo的机器人,能观察并模仿人类面部表情,实现更自然的人机交互。Emo配备26个面部执行器和高分辨率摄像头,通过“自我建模”学习模仿表情,并能预测人类表情变化。这一创新有望改善人机理解和响应情绪的能力,应用于教育、医疗等领域,但也引发了关于情感依赖和伦理问题的讨论。
26 4
哥大华人开发人脸机器人,照镜子自主模仿人类表情超逼真
|
2月前
|
机器学习/深度学习 人工智能 算法
姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)-1
姿态识别+康复训练矫正+代码+部署(AI 健身教练来分析深蹲等姿态)-1
112 1
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
让梦境绘入现实--AIGC人像绘画
在光怪陆离的梦境中,我们可以摆脱客观事实的约束,对自己的外在形象进行天马行空的畅想,有人化身威风凛凛的将军驰骋疆场,又有人化身亭亭玉立的公主正襟危坐,然而这些翩若惊鸿婉若游龙的美好瞬间却总是会随着一声闹钟的响声化为泡影。难道梦境中的自己总是不能被带回到现实之中吗?AIGC技术的快速发展使得这一点成为可能。
373 1
|
11月前
|
人工智能 安全 机器人
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
研究者意外发现DALL-E 2在用自创语言生成图像:全文黑话,人类都看不懂
|
12月前
|
算法 JavaScript 前端开发
日拱算法:什么是“情感丰富的文字”?
本篇带来算法题:“情感丰富的文字”
|
机器学习/深度学习 人工智能 自然语言处理
响铃:当AI翻译能识别“语境”,我们的“地球村”梦想就不远了
响铃:当AI翻译能识别“语境”,我们的“地球村”梦想就不远了
180 0
响铃:当AI翻译能识别“语境”,我们的“地球村”梦想就不远了
|
机器学习/深度学习 人工智能 自然语言处理