面试过程中会遇到的机器学习教科书中 7 大经典问题

2023-11-03

如果希望了解机器学习,或者已经决定投身机器学习,你会第一时间找到各种教材进行充电,同时在心中默认:书里讲的是牛人大神的毕生智慧,是正确无误的行动指南,认真学习就能获得快速提升。但实际情况是,你很可能已经在走弯路。

科技发展很快,数据在指数级增长,环境也在指数级改变,因此很多时候教科书会跟不上时代的发展。有时,即便是写教科书的人,也不见得都明白结论背后的“所以然”,因此有些结论就会落后于时代。针对这个问题,第四范式创始人、首席执行官戴文渊近日就在第四范式内部分享上,向大家介绍了机器学习教材中的七个经典问题。本文根据演讲实录整理,略有删减。

有时我们会发现,在实际工作中,应该怎么做和教科书讲的结论相矛盾,这时候要怎么办呢?难道教科书中的结论出错了?事实上,有时确实如此。所以今天我就想和大家分享一下机器学习教材中的一些经典问题,希望对大家今后的工作和学习有所帮助。

 神经网络不宜超过三层

这是最有名错误判断,现在的教科书几乎已经不再有这样的结论,但如果看15年、20年前的机器学习教科书,会有一个很有趣的结论:神经网络不能超过三层。这和我们现在说的深度学习是矛盾的,深度学习现在大家比拼的不是神经网络能不能超过三层,而是能不能做出一百层、一千层或者更多。

那为什么之前的教科书上会写神经网络不能超过三层,这就要从神经网络的历史说起。五十年代有位科学家叫Marvin Minksy,他是一位生物学家,数学又很好,所以他在研究神经元的时候就在想能不能用数学模型去刻画生物的神经元,因此就设计了感知机。感知机就像一个神经细胞,它能像神经细胞一样连起来,形成神经网络,就像大脑的神经网络。其实在60年代开始的时候,是有很深的神经网络,但当时经过大量实验发现,不超过三层的神经网络效果不错,于是大概到80年代时就得出结论:神经网络不宜超过三层。

那为什么现在这条结论又被推翻了呢?实际上这条结论是有前提条件的,即在数据量不大的情况下,神经网络不宜超过三层。而从2005年开始,大家发现随着数据增加,深度神经网络的表现良好,所以慢慢走向深度学习。其实这里真正正确的原理是Valiant引理,它可以理解为“模型复杂度(例如专家系统的规则数量)要和数据量成正比”。数据量越大,模型就越复杂。上个世纪因为数据量小,所以神经网络的层数不能太深,现在数据量大,所以神经网络的层数就要做深。这也解释了为什么当时教科书会有这样的结论,而现在随着深度学习的流行,大家已经不再会认为这句话是对的。

决策树不能超过五层

如果有同学看教科书上介绍决策树,会有一个说法就是决策树要减枝,决策树如果不减枝效果不好。还有教科书会告诉决策树不能超过五层,超过五层的决策树效果不好。这个结论和神经网络结论一样,神经网络不能超过三层也是因为当时数据量不大,决策树不能超过五层也是因为上个世纪数据量不够大,二叉树决策树如果深度是N的话,复杂度大概是2的N次方,所以不超过五层复杂度也就是三十多。如果数据量达到一百万的时候,决策树能达到十几二十层的规模,如果数据量到了一百亿的时候决策树可能要到三十几层。

现在,我们强调更深的决策树,这可能和教科书讲的相矛盾。矛盾的原因是现在整个场景下数据量变大,所以要做更深的决策树。当然,我们也不一定在所有的场景里都有很大数据量,如果遇到了数据量小的场景,我们也要知道决策树是要做浅的。最根本来说,就是看有多少数据,能写出多复杂的模型。

特征选择不能超过一千个

有些教科书会单独开个章节来讲特征选择,告诉我们在拿到数据后,要先删除一些不重要的特征,甚至有的教科书注明,特征数不能超过一千,否则模型效果不好。但其实这个结论也是有前提条件的,如果数据量少,是不能够充分支撑很多特征,但如果数据量大,结论就会不一样。这也就是为什么我们做LogisticRegression会有几十亿个特征,而不是限制在几百个特征。

集成学习获得最好学习效果

第四个叫做集成学习,这个技术在各种数据挖掘比赛中特别有用,比如近些年KDD  CUP的冠军几乎都是采用集成学习。什么是集成学习?它不是做一个模型,而是做很多(例如一千个)不一样的模型,让每个模型投票,投票的结果就是最终的结果。如果不考虑资源限制情况,这种模式是效果最好的。这也是为什么KDDCUP选手们都选择集成学习的方式,为了追求最后效果,不在乎投入多少,在这种条件下,集成学习就是最好的方式。

但在现实中,企业做机器学习追求的不是用无限的资源做尽可能好的效果,而是如何充分利用有限资源,获得最好效果。假设企业只有两台机器,如何用这两台机器获得最好的效果呢?如果采用集成学习,用两台机器跑五个模型,就要把两台机器分成五份,每个模型只能用0.4台机器去跑,因此跑的数据量就有限。那如果换种方式,不用集成学习,就用一个模型去跑,就能跑5倍的数据。通常5倍的数据量能比集成学习有更好的效果。在工业界比较少会应用集成学习,主要是因为工业界绝大多数的场景都是资源受限,资源受限时最好的方式是想办法放进去更多的数据。集成学习因为跑更多的模型导致只能放更少的数据,通常这种效果都会变差。

正样本和负样本均采样到1:1

第五个叫做均衡采样,绝大多数的教科书都会讲到。它是指如果我们训练一个模型,正样本和负样本很不平均,比如在正样本和负样本1:100的情况下,就需要对正、负样本做均衡采样,把它变成1:1的比例,这样才是最好的。但其实这个结论不一定对,因为统计学习里最根本的一条原理就是训练场景和测试场景的分布要一样,所以这个结论只在一个场景下成立,那就是使用模型的场景中正、负样本是1:1,那这个结论就是对的。

正确的做法是,应用场景是1:100,那训练集合最好也是1:100。均衡采样不一定都是对的,多数情况下不采样反而才是正确的。因为大多时候,我们直接把训练集合和测试集合做随机拆分,或者按照时间拆分,二者的分布就是一致的,那个时候不采样是最好的。当然有时候,我们也会发现做负样本采样会有更好的效果,比如范式在为某股份制银行卡中心做交易反欺诈时,就做了负样本采样,那是因为当我们把所有样本都放进去后,发现计算资源不够,所以只能做采样。正样本与负样本大概是1:1000或者1:10000,如果对正样本做采样,损失信息量会比较大,所以我们选择对负样本采样,比如做1:1000的采样,再把负样本以1000的加权加回去。在资源受限时这么做,会尽可能降低信息量的损失。但如果仅仅是为了把它做均衡而做负样本采样,通常是不对的。和前面几个问题不同,负样本采样并不是因环境改变而结论变化,事实上就不应该做负样本采样。

交叉验证是最好的测试方法

下一个问题叫做交叉验证,是指假设要将一份数据拆分成训练集和测试集,这个时候怎么评估出它的误差?交叉验证是把集合拆成五份,取四份做训练集、一份做测试集,并且每次选择不同的那一份做测试级,最后测出五个结果再做平均,这被认为是最好的测试方法。

交叉验证确实是一个还不错的验证的方法,但在现实应用场景下,它往往不是最合适的一种方式。因为通常来说,我们用机器学习做的事情是预测,绝大多数情况下我们是用现在或者过去的数据做一个模型来预测未来。而拿过去的训练预测未来的最好测试方法不是交叉验证,因为交叉验证是按照交易或者按人拆分的。最合适的是方法其实是按照时间拆分,比如评估的时候选取一个时间点,用在这个时间点之前的数据做训练,预测在这个时间点之后的,这是最接近真实应用场景的评估结果。

交叉验证可能只适用于和时间属性不相关的场景,比如人脸识别,但我们面临更多的应用场景,无论是风险、营销或者反欺诈,都是在用过去的数据训练后预测未来,最合适这样场景的评估方法不是交叉验证,而是按照时间去拆分。

过拟合一定不好

最后一个叫过拟合,这也是一个讨论特别多的话题。以前,通常我们会说如果模型做的太复杂了就会过拟合,如PPT右边所示,而最好的方式应该是图中中间的状态——拟合的刚刚好,图中左边的模型underfitting,没有训练完全。但现在来看,大多数的实际场景都是在拿过去预测未来,过拟合不一定是不好的,还是要看具体场景。如果这个场景是过去见过的情况比较多,新的情况比较少的时候,过拟合反倒是好的。

打个比方,如果期末考试题就是平时的作业,那我们把平时的作业都背一遍就是最好的方式,而这就是过拟合。如果期末考试不考平时作业,全是新题,那么这个时候就不能只背平时的作业,还要充分理解这门课的知识,掌握如何推理解题的技巧。所以过拟合好坏与否,完全取决于场景。如果应用场景依靠死记硬背就能搞定,那过拟合反倒是好的。实际上在我们的设计里面,很多时候我们会倾向于往过拟合靠一点,可能做新题会差一点,但是对于死记硬背的送分题会做的非常好。在拿过去预测未来的应用场景下,有的时候过拟合不一定不好,要根据实际情况来看。

今天与大家分享了教科书中的几个经典问题。其实在实际工业应用中,我们不会完全按照教科书中的方式去实践。我们也会设计很深的模型、很深的决策树、很多的特征、会过拟合一点,我们更强调按时间拆分,不强调均衡采样。面对教科书中的结论,我们需要学会的是根据实际场景做出相应灵活判断。

本文由第四范式微信公众号授权转载,特此感谢!

来源 | 第四范式

作者 I 戴文渊

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试过程中会遇到的机器学习教科书中 7 大经典问题 的相关文章

  • 那个当年的三本学渣,为啥最后进了大厂?

    自我介绍 我是一名普通的三本大学生 自学开发 相继经历了接外包 创业 合伙人跑路等一系列事情 从一开始对于计算机的一无所知到现在拿到了一线互联网企业的special offer 磕磕碰碰 一路走来 可谓辛酸苦辣 大一小白 我就读的专业偏计算
  • 计算机专业学生就业信息调研

    IT行业一直是国家优先发展的重点行业 也是国内外人才需求量最大的行业之一 尤其是近几年 很多跨国公司陆续在中国成立软件研发中心 为计算机专业的高层次人才提供高质量的就业机会 这给计算机科学与技术专业的毕业生提供了极好机遇 也使这一专业的报考
  • 新人毕业,老人跳槽:5位同学简历中的问题

    新人毕业 老人跳槽 2位同学简历中的15个问题 又是凤凰花开 新人毕业 老人跳槽的季节了 最近 有2位同学有跳槽的意向 趁着晚上和周末 写写简历 这2位同学 很看得起我 让我帮忙看看简历 我反复看了简历 发现了不少问题 下面主要列出一些 排
  • AI 培训之坑,了解一下?

    今天阅读微信公众号的文章 又刷到了一篇AI程序员平均年薪多少多少 Python前景多好多好的文章 我立刻猜到 这肯定又是某家培训给自己的AI课程打的广告 如今各种公众号类似的文章实在太多了 感觉给没转行又想入坑的人画了很大一张饼 我本人就是
  • 职场年度最励志文章:纽约华人女教师直指人心的23条金句

    多年的工作经历让我深刻理解这23句职场的肺腑之言 也许对于一个初出茅庐的大学毕业生 这些内容显得高屋建瓴 并不能被深刻理解 推荐这篇文章 不在于要你记住多少 而是希望透过别人经验的这面镜子 审视自己 如果有什么忠告 只有一句话 去经历 你就
  • 程序员MM一年的工作总结

    11月8号就是 工作 一周年纪念日了 是该对这过去的一年做个总结了 当初来这个公司因为它是第一个递橄榄枝给我的地方 为了尽量少的减少毕业和工作之间的空档时间 就接受了 我在这一年中改变很大 这样的改变是综合的 1 技术 这里所说的技术应该算
  • 迷宫游戏,测试你适合做的工作

    迷宫的道路是联通的 从起点出发的向各个方向均能到达不同的出口 按照箭头起始方向从起点开始进入迷宫 当遇到岔路口时 按照自己的直觉选择前进的方向 最终抵达迷宫出口 各出口相对应的字母将解释你的性格特点和适合从事的工作 注意了 这里的字母是按照
  • 求职宝典:职场新人赶紧卸掉“假成熟”

    你看得出我几岁吗 你没看错 这句话不是护肤品广告 而是众多职场中人的心声 职场中有个有趣现象 年长的羡慕年轻人的朝气与活力 不乏扮嫩一族 而新人们则竭力扮老 想使自己显得更成熟稳重些 在职场中更有分量 但 成熟 过度不一定是好事 入职太成熟
  • 超5星难度【微软Core allocation】Coding赛题 - 解题思路&优秀代码分享,邀你来“找茬儿”

    6月23日英雄会平台发布了一道难度为超5星的微软比赛题目 截止活动结束共有300多名编程爱好者参与线上答题 而最终通过者仅有7人 通过率仅为2 为什么成绩如此出人意料 是因为原题的英文描述难以理解 还是题目本身的难度太高让很多人望而生畏知难
  • 面试过程中会遇到的机器学习教科书中 7 大经典问题

    如果希望了解机器学习 或者已经决定投身机器学习 你会第一时间找到各种教材进行充电 同时在心中默认 书里讲的是牛人大神的毕生智慧 是正确无误的行动指南 认真学习就能获得快速提升 但实际情况是 你很可能已经在走弯路 科技发展很快 数据在指数级增
  • 用python画个佩奇来瞧瞧

    闲来无事 用turtle画了个小猪佩奇 代码其实很简单的 就是烦了点 没必要每行代码都发出来 给大家看几个主要的函数好了 另外我给绝大多数代码都加上了注释 相同的代码我就不加了 首先需要初始化画笔的一些属性 包括颜色 画笔的画画速度等 de
  • 进IT名企大厂,95%应届生不知道的最短路径

    据央视新闻报道 2022年高校毕业生将达到1076万人 据称是史上最难就业季 毕业生就业压力暴增 加之随着今年疫情的不确定爆发 不少企业减少了校园招聘 留学生扎堆回国 可以说是将 就业难 进行到底了 但在此情况下 互联网大厂 IT名企却在逆
  • 毕业季:我和未来有个对话

    2013年迎来新中国建国以来人数最多的大学毕业生 699万 史上最难就业季 成为一个全社会关注的热点话题 由中央电视台综合频道与唯众传媒联合打造的关注青年人成长的首档青年电视公开课节目 开讲啦 邀请四位跨界嘉宾来开讲 并且和青年人一起和未来
  • AI技术进阶的75道面试题

    本文转载自AI科技大本营 整理 AI科技大本营 出品 AI科技大本营 公众号id rgznai100 导语 正值求职 跳槽季 无论你是换工作还是找实习 没有真本事都是万万不行的 可是如何高效率复习呢 之前我们给大家推荐了一份 Python
  • 南大和中大“合体”拯救手残党:基于GAN的PI-REC重构网络,终于有救了

    对于喜欢画画的你来说 总是画得七零八落 不堪入目 但现在 有一种方法可以让你像专业人士那样 让你的糟糕画作变成一副完美的作品 南京大学和中山大学的三位研究人员发布的最新论文中 提出了一种具有边缘和色域的渐进式图像重构网络 PI REC 这是
  • 一个好玩的编程小游戏—— 母牛生小牛

    题目 母牛从3 7岁初每年会生产1头小母牛 10岁后死亡 10岁任然存活 假设初始有一头刚出生的母牛 请问第n年有多少头母牛 年从第一年开始计数 注 第三年初会出生 第一头母牛 故第三年有两头母牛 第五年初 第三年出生的母牛会生产 故第五年
  • 一个好玩的小游戏——麻神之战

    题目 一种新的麻将 只留下一种花色 并且除去了一些特殊和牌方式 例如七对子等 规则如下 共有36张牌 每张牌是1 9 每个数字4张牌 你手里有其中的14张牌 如果这14张牌满足如下条件 即算作和牌 14张牌中有2张相同数字的牌 称为雀头 除
  • 原动力×云原生正发声 降本增效大讲堂

    原动力 云原生正发声 降本增效大讲堂课程活动链接 原动力 云原生正发声 降本增效大讲堂 提升IT资源利用率 实现降本增效 已经成为企业关注重点 2021 年 CNCF FinOps Kubernetes Report 指出 迁移至 Kube
  • 一个女孩的就业之路(同济大学BBS上两年不沉的帖子)

    文章很长 有机会见到这篇文章的童鞋 希望能耐心看完 其他不多说 我是2005年毕业的 偶尔来这里看看 不常灌水 今天来随意写下一些 如果对各位有任何的帮助 是我衷心所愿 1 考研与就业 2004年的暑假 我和大多数人一样 艰难的抉择 究竟是
  • 笔试面试常考数据结构-单链表常用操作编程实现

    单链表是笔试以及面试手写代码中常考的数据结构之一 下面实现了单链表的常见操作 创建单链表 删除节点 打印单链表 包括正向打印以及逆向打印 反转单链表 找出单链表的倒数第K个节点 合并两个有序单链表等操作 代码 C cpp view plai

随机推荐