点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

前言

在阅读了一篇MNIST的教程(或10篇)并了解了一些Tensorflow / Keras最佳实践后,你可能会认为将神经网络应用于预测任务是一种“即插即用”操作。

不幸的是,事情往往并非那么容易。在实践中,即使是训练一个简单的网络结构(不用没有GAN或一些花哨的结构)来对你的数据进行预测,也是一项富有挑战的任务。

因此,当你在代码编辑器敲下 import tensorflow as tf 或引入其他DL框架的语句前,可以先了解以下10个问题,这将有助于你解决在工程实际中遇到的深度神经网络相关问题。

1.你的数据量够吗?

当前深度学习技术的流行可以归因于其惊人的大量的参数拟合能力(虽然这种能力目前还不可以完全解释),以至于它可以对从未“见过”的数据进行准确的预测。但是网络的这种能力并非唾手可得,你需要“喂”给网络和其参数数量同等量级的数据来得到所谓的“泛化性”。如果你花费了好几日仅从网络上收集到5K多张图片,那么你将面临无法过拟合你的小数据集的挑战。

也许你可以使用“迁移学习”来抢救一下。迁移学习的动机在于使用在某一项任务上训练出来的模型来解决另一项任务(译者注:这两种任务通常具有一定的相似性。例如用人脸检测的网络进行面部属性的识别)。这是因为网络的层次结构表明这两个模型倾向于在网络的第一个“特征提取”层中执行相似的操作。这表明了“借用”在其他任务上训练的网络参数的想法的可行性。

现有的大量的预训练模型使得迁移学习在计算机视觉这样的任务中是非常易行(译者注:根据我的经验,迁移学习在医疗图像上似乎效果并不明显)。在其他领域也可以采用相同的原则。实际上是从你训练的另一个网络进行迁移学习。一般来说,如果你的预测任务非常特殊,且相关数据很少(例如,预测癌症患者的心率),请尝试提出另一个类似但更为常见的任务(例如,预测一般人群的心率) ,数据更容易收集。首先训练一般模型,然后用原始数据微调网络。

2.将你的输入数据规范化

输入规范化是一个重要的课题,并且在技术上,它对于保证稳定的学习过程以及更快地收敛到局部最小值至关重要。你需要牢记于心的是,输入规范化要比应用你喜欢的数据缩放变换要多得多。为了不至于对你的数据太陌生,你可以尝试使用这个机会来对你的数据进行适当的探索性分析。这个过程虽然简单,但是它对提高任意一个模型的性能都非常有效。你可以通过查看你的数据中的统计信息来对数据有更深入的见解。你的数据中有异常值吗?你的数据中有错误的标签吗?你数据的类别平衡吗?等等。

3.网络结构的设置应与你的任务匹配

大多数用于分类任务的DL教程适用于单标签的情况(互斥标签 - 只有一个标签可以是真实的),这些教程中的网络大都使用softmax + categorical cross entropy的配置。这样的配置是如此常见,以至许多人多忽略了这样一个事实,即每个网络都不必以softmax层结束。让我们回想一下softmax函数的作用,正如它的名字所表示的含义一样,用一种类似平滑最大值的方式处理数值。这也就意味着在大多数情况下,它会将单个类别“标记”为具有最高概率的类别。在两种常见情况下,这种行为可能很糟糕:多标签分类(你希望允许多个类获得高概率),当你将预测的数据不一定属于之前的任何一个类别(在这种情况下,softmax将给出很高的概率,因为它只查看带预测类与其他类别相比的可能性)。在这些情况下的替代方案是使用sigmoid(按单独的类别计算)以获得最终层的激活函数,同时使用二元交叉熵作为损失函数。

4.逐渐提升模型的容量

微调网络超参数这一不可避免的过程可能会让你后悔选择深度学习作为你项目的解决方案。。“超参数”是用于控制学习算法行为的一组设置的通用术语。在DL中,超参数包括模型的深度和宽度,正则化的量,学习率以及许多其他用于训练网络的参数。超参数的问题在于它们是参数,你无法从训练集中学习它们(译者注:目前AutoML之类的研究就是为了解决超参数的调参问题)。这通常使训练过程变得繁琐,因为最佳值的搜索空间可能很大,并且每次迭代都需要很长时间。
我可以给出的一个策略,使这种超参数的搜索不那么可怕。从最小的合理网络(深度和宽度都很小)开始,只有在需要时才逐渐提升模型的容量。根据经验,对于每个架构,我首先尝试适应我的数据的一小部分(比如说10%),然后是我的整个数据。如果我无法将数据与我的网络匹配(即,在给定足够的训练时间的情况下达到零训练误差),则意味着我必须增加容量 - 我使用一些启发式选择来扩大网络的宽度或深度,然后重复。这种方法背后的想法是Occam的剃刀原则,这对你以后任务中的过拟合问题很有帮助。

5.使用正确的数据增强类型

许多人错误地认为数据增加是“获取更多数据”的一种手段。实际上,数据增加应该被认为是规则化的一种形式 ,一种向模型引入正确类型的不变性的方法。让我们这样想:当你使用大量的epoch训练模型时,你本质上就是在多次遍历整个训练集。执行数据增强意味着每次向模型展示训练数据时,都会以略微增强的方式显示它。你应该使用此方法来告诉网络你不关心的各种排列,例如,那些可能会大大改变图像的像素表示但不影响标签的排列。如果图像模糊,您是否希望网络识别图像?如果它们顺时针旋转90度?如果它们是镜像的?根据你对任务的了解来选择数据增强的类型。

6.回归或是分类

分类和回归任务间的区别非常明确:如果输出变量采用类别标签,那么你应该解决分类任务,如果需要得到连续的值,则应该解决回归任务。对吗?好吧,这这么说不能算错。事实上,许多人报告称,在连续数值的预测任务中,通过先执行分类任务(例如,将[0,10]分成10个不同的类:[0,1),[1,2),……),再使用回归模型进行微调预测连续值可以获得的更好结果。这本身并不是一个问题,而是一个重要的提醒:DL仍然是一个经验主义比固有的理论主义更有效的领域。这意味着,只要有多种方法可以解决你的任务(大多数情况下,请考虑一下),你绝对应该考虑尝试多个选项。你可能会感到惊喜,即使训练结果糟糕,你仍可以获得更多经验。

7.考虑正确的损失函数

你是否考虑过,为什么你想要使用“非标准”损失函数?它实际上比你想象的要常见得多,尽管它在教程中经常被忽略。一个经典的例子是当你处理一个不平衡的类别场景时(如果你在第二步进行了探索性的数据分析你就会发现类别的不平衡),比如有的类别它的标签数目特别多,这会出现问题。如果你没有考虑到类别不平衡问题,你可能会发现自己的网络适合大多数类,但对少数类的表现非常糟糕。解决这个问题的一个简单方法是明确地“告诉”网络更加重视少数群体中的训练数据,加大该类数据训练时错误权重。这基本上相当于对少数群体进行过度抽样。这种做法在ML中的很常见,同样在DL中也非常有用,而且说实话,我总是惊讶于它能够提高实际应用程序的准确性。更高级的程序员可以通过将不同的权重不仅放在不同的类别上,还可以放在不同类型的错误上,将加权损失函数传递到到下一个层级,以平衡目标的召回精度。有时候我们需要创造力。

8.模型评估

另一件经常被忽视的事情是,评估指标和用于优化过程的损失函数不同。“正确”的业务流程应该是首先考虑最合适的评价标准来评估算法的性能。例如,这是将用于选择最佳超参数集的度量标准,然后才会弄清楚最合适的损失函数是什么。在许多场景下,出于数字或计算上的原因,你最终会使用不同的损失函数。例如,你可能正在进行时间序列预测任务,你选择的度量标准是您的预测与实际标签间的皮尔森相关性,但是使用MSE作为代替,因为针对小批量的皮尔森优化是一致的。因此,记住这一点:使用(甚至非常推荐!)不同的指标来训练和评估模型。

9.阅读文献

是否有一些问题是正在着手处理而我还未提及的?你极有可能不是第一个遇到这个问题的人,不要尝试去造轮子!即使是一个简单的实验也会耗费你的时间,你应该去借鉴其他人解决该问题的方案。我的建议就是不要害怕实践,并在网上(或arxiv)搜索与你正在考虑的问题相关的文献。从长远来看,这将节省你的时间,即使你不混迹在学术界,也可以对新的idea开放包容。

10.得到乐趣

开个玩笑啦~其实我只有9件事要告诉你,10只是为了和《10 Things I Hate About You (1999)》这部喜剧呼应一下(译者注:Gal Yona这位小哥还蛮有幽默感的)。欢迎大家在留言区踊跃发言,分享你的想法。

好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

下载1:Pytorch常用函数手册

在「小白学视觉」公众号后台回复:pytorch常用函数手册即可下载含有200余个Pytorch常用函数的使用方式,帮助快速入门深度学习。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等52个视觉实战项目,助力快速学习计算机视觉。

下载3:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

构建神经网络前你需要先考虑这10件事相关推荐

  1. 35岁前必做10件事 让你少奋斗8年挣足钱

    35岁前必做10件事 让你少奋斗8年挣足钱(转)中财网 (2010-03-27 16:04:01) 转载 标签: 就业 求职 乘数 钱经 李彦宏 美国 杂谈 分类:转载 男人.女人都要过三十五岁这堵墙 ...

  2. 其利断金前一句是什么_过来人的忠告:女孩结婚前务必要想清楚这4件事,再结婚不晚...

    在结婚之前,人们对婚姻充满的好奇和憧憬,恋爱的时候,他们以为只要有爱,一切就够了.他们坚信有爱便可以包容一切,爱可以让生活遍地开花.婚姻不过是让恋爱变得名正言顺,有了婚姻,爱就有了归属,它会让爱变得更 ...

  3. 女孩做妻子前应知道的10件事

    女孩做妻子前应知道的10件事 一段时间的甜蜜恋爱期过后,你和心爱的他终于要踏上期盼已久的红地毯.你发誓一定要做个最幸福的小女人,要成一个永远让丈夫着迷的好妻子.从一个女孩的身份转变为一个妻子的身份前, ...

  4. 提醒!手机卡注销前,一定要做的四件事!

    现在更换手机卡的情况对小伙伴们来说都是家常便饭的事情了,但是很多小伙伴在手机换号的时候,经常忘记解绑以前手机号绑定的一些业务,为此产生了很多不必要的麻烦,今天的这篇文章就是要告诫大家换号之前一定要做的 ...

  5. 程序员面试前只因为做了这几件事,成功征服了一系列大厂面试官。

    这篇文章适用于所有需要就业的小伙伴,不管你是名校毕业,还是双非出身,我相信这篇文章能给你带来一点点的小的收获! 我们先来了解这篇文章的主要脉络: 一份引人注目的简历 求职的各个关键时间点 投递简历的正 ...

  6. linux离线安装ftp_安装Kali Linux之后要做的前10件事

    Kali Linux是基于Debian的发行版,由全球领先的信息安全培训公司之一 Offensive Security专门开发和维护,用于高级渗透测试和安全性. 它通常被称为黑客的理想操作系统,它是对 ...

  7. 白领是升职还是创业揭秘35岁前要做的10件事

    男人.女人都要过三十五岁这堵墙 三十五岁,是一个具有典型意识色彩的年龄-- 改革开放初,干部年轻化标准,界定在35岁以下. 如今,公务员考试的年龄也限制在35岁. 超过35岁,不孕概念增加三成 ,有了 ...

  8. 程序员35岁前需要完成的10件事

    作为一名程序员要在 35 岁前完成哪些事情呢?这因目标而异,但下面这些项目应该具有非常高的通用性: 1.精通一门最常用的语言 2.了解一个最常用平台的基本机制,比如:内存管理.线程机制等 3.UML ...

  9. 魔兽世界暗影国服服务器未响应是什么意思,进入《魔兽世界》暗影国度前,你需要知道这几件事...

    作为久违的大版本更新,魔兽世界"暗影国度"即将在今年晚些时候正式与玩家见面.暴雪在每一个大版本来临时都会对游戏本体进行一番彻头彻尾的改造,本意大概是为了增加游戏的趣味性,让玩家不至 ...

最新文章

  1. 20分钟教你搞懂Git!
  2. 清华校友斩获ACM博士论文奖!相关研究为自动驾驶新算法奠定基础
  3. 一个对象的属性_【前端冷知识】如何判断一个对象的某个属性是可写的?
  4. 徐坤用话剧震了我们一道
  5. 小米9android q测试版,基于Android Q的MIUI来了 小米9尝鲜
  6. 【WCF】WCF简介
  7. oracle多表groupby,Oracle中group by用法
  8. three DragControls(拖拽整个模型)
  9. MVC学习三:Razor视图引擎
  10. The Robustness of Deep Networks A geometrical perspective论文解读
  11. 的大小name转为小写_linux 进程 -- ps -ef|grep process_name
  12. 【渝粤题库】陕西师范大学165111 薪酬管理 作业(高起专)
  13. 【个人博客网页模板】
  14. android 7.0 壁纸设置,android7.0怎么换锁屏壁纸
  15. 什么是实体关系图(ERD)?
  16. 破局数据库“卡脖子”:专精特新“小巨人”偶数科技迎风成长
  17. latex 中表格怎么指定编号_有没有大侠知道怎么改latex模板里的表格标题设置呢?就是把表格编号和标题名称改到一行。。...
  18. 天下大事,必作于细。
  19. 记一次程序包XXX不存在解决过程
  20. 三、Linux文件管理

热门文章

  1. Python持续点火,跟进还是观望?
  2. AI一分钟|特斯拉宣布裁员9%;Facebook启动隐私设计实验室;百度Apollo与宝马拜腾联姻...
  3. 亏本也要抢市场!谷歌亚马逊一路死磕到CES,争夺语音入口之路,谁都不是吃素的
  4. 资源 |“从蒙圈到入坑”,推荐新一波ML、DL、RL以及数学基础等干货资源
  5. 华为 Java 编程军规 !
  6. 沈向洋博士:三十年科研路,我踩过的七个坑
  7. NLP入门 | 通俗讲解Subword Models
  8. 研究生招生多次被“放鸽子”:给学生几点诚信方面的建议
  9. 靠数学“拿了”两次诺贝尔奖,彭罗斯从“铺地砖”帮忙发现2011年化学奖的秘密...
  10. 你动、蒙娜丽莎跟着一起动,OpenCV这么用,表情口型造假更难防了