这7个小众Python库,才是机器学习工程化的降效神器

别再只盯着某一个方面了, 这7个不太常见的小众资源库, 其实才是能让大家在使用机器学习工程化的时候减少效率低下的问题的神器。

很多人心里头觉得, 机器学习这档子事, 肯定就是那些让人看不懂的深奥数学公式, 还有成千上万个GPU凑在一起搞出来的东西, 再不就是那些只有在博士论文里头才出现的那些特别复杂的模型。

但是你要是听我一个在生产环境里折腾了四年多代码、还管过好几个机器学习系统怎么落地的人说, 我得告诉你你, 现实里要把算法给落地了, 那简直就是到处都是鸡毛蒜皮的麻烦事。

其实, 大多数机器学习方面的问题是非常琐碎的, 也是非常实用的。你需要去面对那些杂乱无章的数据, 还有那些随时都在发生变化的业务模式, 以及计算资源是捉襟见肘的那个状态。同时, 你还需要面临那些项目交付截止期限, 这些期限背后的相关人是不关心你的技术难度到底有多大的。

我在这几年的实践里面, 通过不断地去经历一些事情, 非常明确地得知了一个非常实在的道理, 这个道理就是你要选择对工具, 不仅仅只是为了节省那么一点去编写代码所花费的时间, 它会从根本上、由内而外地改变你对于各种问题去思考时的方式方法的。

今天, 我们不聊那些已经非常普遍的东西或者是属于初始阶段的基础知识, 我想要对你进行深入的分析和解释七个尽管名声不显但实际上具有极高实用价值的库。

这些库能够解决在机器学习领域里面那些确实会使人感到非常烦恼并且难以处理的问题或者情况, 从而使你的系统不仅可以运行起来, 而且能够在用于实际产品制作或者大规模使用的环境里面保持稳健并继续生存下去。

一、 River:让模型在流动的数据中实时进化

在学术的研究工作方面, 我们平时都习惯于做一个假设, 就是把数据当作是静止不动的东西来看待, 好像它们整整齐齐地就存放在数据库里头, 专门在那儿等待着被处理一样。然而在现实的生活环境之中, 所谓的这些个数据其实是一直在不断地流窜和变化的状态, 从来没有停下来过, 这一点是非常明确的情况。

服务器有着实时监控日志, 物联网传感器有回传信号, 金融市场每一秒都在波动, 这些数据的共同特点是随着时间而产生序列结构形成时间序列。传统做法里有个特点叫定期拉取进行离线重训练处理动作实施过程。然而这种具体操作方式在面对瞬息万变环境时状态呈现出来。最终结果往往显现出反应不够敏捷现象产生。

River 这个库就是用来解决这种叫做在线机器学习的状况的, 它的做法是让模型在某一个数据点那里一次只学习一次, 并且在这个数据流动的过程里面去不断地进行迭代。。

必须要问清楚一个点, 那就是为什么River这个东西是完全没办法被取代掉的。

我们可以拿实时垃圾邮件检测这个情况来当个例子, 在这样的工作场景里面, 你是完全没有必要去先攒够了一万封邮件以后, 再去做模型训练这种事情的, 借助于River这个工具, 模型会存在一个持续更新的状态, 也就是说每一封邮件被处理完以后, 这个模型就会变得更加聪明一点, 正是因为他们拥有这种被称为"活着的模型"的动态特性, 这些系统才能够在生产环境下面维持实时的运行效果, 这才是他们在这种环境下去保持存活和正常运作的正确做法。

二、 终结时间序列预测的混乱局面。

时间序列这个方面的事情, 通常都是算法工程师感到痛苦的那个根源。如果你曾经在那个凌晨两点的时刻, 试过把ARIMA模型、模型和NumPy数组强行的拼凑在一块儿, 你就会明白那种被数据格式不兼容所支配的恐惧感。

它的出现, 这就像是在那个处于比较混乱状态的序列数据的领域里面, 给带来了那一套标准的, 类似是交通规则的这样一种东西。那么它, 就为时间的序列的那个预测的操作、分类的操作、异常检测的操作, 提供了一种统一的、能够被组合起来使用的一个应用程序接口的框架这种东西。

它的核心价值, 主要体现在以下这些方面:

在当下, 当各位程序员不用再把大把时间和精力耗费在那些为了把时间戳进行排列组合而不得不去敲写的几百行琐碎的代码上面的时候, 你们才可以真正从这种繁琐的事务中挣脱出来, 从而能够腾出更多的精力去向那所谓的业务逻辑本身进行深入思考。

三、 :给穿上-learn的西装

它的力量是毋庸置疑的, 它是在目前深度学习领域里面最为强大的工具当中的一种。但是在实际的开发过程之中, 它的代码样子往往会显得比较随性一些, 你需要用手工的方式去编写那些非常复杂的训练循环, 你需要去管理每一个批次里面的那种更新动作, 这事情在快速实验阶段非常容易发生错误现象。

这件事做得非常了不起。它把强大的模型进行了包装, 结果变成了适合这种工具直接使用的形式。

那么, 为什么人们会把这种组合的方式, 直接就看作是降维打击这几种事情呢?

这其实就是在说深度学习正在朝着更加成熟的软件工程的方向去靠近。这样一来, 它不仅能够让实验的过程变得更加清晰明了, 而且也能够让模型从原来的实验室环境走到生产使用的环境中去这样的整个过程变得更加容易一些。

四、 modAL这个系统, 它的目标就是让你把每一分钱都实实在在地投入到有实际价值的数据标注工作里面去, 从而确保这些钱花得其所, 真正产生意义。

在工业界那边, 最贵的东西并不是算力, 而是带标签的数据。像给医疗影像进行打标, 或者给法律文件做分类这样的工作, 都是需要花费极其高昂的人力成本才能够完成的。

我们在很多时候花掉了大量的资金去标注几万条数据, 最后才发现问题所在,那就是在这些被标注过的数据里面, 有80%的信息其实都是毫无必要的冗余内容。

modAL引入了所谓的主动学习这个概念, 其核心逻辑就是让模型自己来向人类发出信号, 明确指出究竟是哪一条数据它还没有看懂, 同时又是哪一条数据在最急需得到标注。

主动学习的威力:

大家要知道, 虽然主动学习这件事在理论圈子里头被翻来覆去讨论了好多好多时间, 但是 modAL 这个工具真正把它变成了一个普通的开发者也能够很快速就去上手使用的一款东西, 这一点是非常明确的, 所以我们说, 不要再去盲目地, 也就是没有目的地追求那种非常大的数据数量, 而是要学会让模型以一种聪明的方式来去学习, 这样做才是更加的重要, 这一点是比什么都要关键的, 希望大家能够明白。

五、 告别所谓的黑盒模型, 用成年人讲道理的方式来清楚地解释预测结果。

身为一名干算法工作的工程师, 你的老板或者客户肯定都向你提问过这样一个问题: "为啥这个模型会把给某一个人的贷款申请给拒绝掉? "又或者是问说: "为什么最后算出来的预测结果是A这个选项, 而压根儿不是B那个结果? "。

如果你仅仅只是抛出一张那个特征重要性的排行榜的话, 那这种行为了, 从本质上来说, 其实就等于是在逃避问题本身, 而Alibi这个项目, 它的主要关注点或者说它的核心方向, 是集中在对于模型解释性这一方面的工作上来的, 并且它不仅停留在理论层面, 它还提供了一整套完整的使用工具和方法论, 这样一来, 就使得那些原本非常复杂的模型的决策过程变得清晰可辩, 也就是所谓的那种透明状态了。

像Alibi这种事物能够为你提供援助, 从而帮助你解决那些让你感到头疼的艰难问题。

现在的日子, 管这事儿的人越管越严了, 人家对那个模型是不是透明的要求也是越来越高。在这样的一个情况下, Alibi 这个人, 或者是这个团队, 就成了你用来对付那些利益相关者的一种底气和凭借。

六、 -:表格数据也能享受深度学习的红利

在机器学习这个领域里面, 一直有这么一个说法, 就是当你要去处理那些表格类数据的时候, 传统算法那方面, 永远是处于主导地位的, 深度学习的做法往往是要花很大力气最后还不见得有好效果。

但是那个东西的出现把这种僵持不前的局面给打破了, 而这个东西就是这篇论文所提到的一种质量非常高的实现方法, 它利用序列注意力这种技术手段, 让神经网络在对待表格类型的数据的时候也能展示出特别强的竞争能力。

它之所以值得你进行尝试, 其中的主要原因是什么呢。

如果你的业务数据主要是存储在数据库的行的和列当中的, 那么除了那种常规的提升树模型之外, 唯一一个值得你投入时间去尝试一下的深度学习方案。

七、 我们坚决不搞那种学术领域的大跃进, 而是只把精力放在做那些真正实用的推荐系统上。

大家只要一提到那个推荐系统, 好多教程里头就开始去推导那些个非常复杂的矩阵分解的公式了, 或者是去搭建那些特别宏大的分布式的架构体系。可是对于大多数中小型的项目来说, 咱们实际上所需要的只是一个可以快速上线、而且效果还非常靠谱的一个方案才行。

正是这样一个作为实用主义代表的存在。它的注意力都集中在了混合推荐系统这一领域上面。

它的那个厉害地方啊, 就是表现在这里:

如果你有着构建推荐系统这样的打算, 同时又不希望能够从零开始去创建一些基础性的设施工作, 那么这应该被看作是你能够采用的那种最合理的切入路径方式。

写在最后

这7个库存在的理由, 并不在于用那种所谓的花哨手段去展示技术能力, 而是为了去解决在把机器学习应用落地的实际过程中, 大家都会遇到的真实困难。

具体来说, 这些困难包括数据流动的麻烦、时间序列资料的杂乱无章、进行标注时产生的高昂成本费用、对于那些像黑盒子一样无法看透其内部运行机理的模型所引发的关于信任层面的严重危机, 还有在处理表格数据时使用深度学习方法的短板现象。

在今天这个算法越来越发展得成熟的一些时候, 那些把开发者之间差距拉开的东西, 往往不会再是看谁推导公式更加熟练一点了, 反而是看谁能更敏锐地选择适合的一些工具, 并且把这些复杂技术一些问题给转化为稳定的、可解释的、低维护成本的那种业务价值。

你要是对于那些调试的事情, 或者是那种更深层的算法优化的工作有兴趣的话, 那么建议你继续去关注一下那些相关的工程化的实践过程。我们希望的是通过这些工具的使用起来的效果, 能够切实地帮助你把你自己在进行机器学习开发这个过程中的已经丢失了很长一段时间的所谓掌控感给找回来。

你对于这些库当中的哪一个, 抱着的兴趣是最浓的吗? 或者说, 在你所使用的生产环境里, 又曾经察觉过哪些被严重低估的神奇工具? 现在就去评论区的位置, 把我们各自的不同看法都分享出来。

如果你想更进一步地把开发效率提上去, 那么我可以给你生成这些相关库的具体实战案例代码, 也可以针对你现在的业务场景来给出对应的选型建议。所以你到底是想先哪一个方面进行深入的了解呢?

相关推荐
在所不辞兄1 小时前
为什么在标签噪声场景下,识别双重下降拐点有助于防止模型记忆异常数据?
人工智能·深度学习·神经网络·机器学习
云上工程笔记3 小时前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习
2601_9679801113 小时前
Hugging Face:成为机器学习界的“Github”
机器学习·hugging face·开源平台·开放科学·transformer模型
小白菜0014 小时前
AI的理解
人工智能·机器学习
DFT计算杂谈14 小时前
可DIY布里渊区图像绘制编辑器
人工智能·机器学习·语言模型·矩阵·编辑器
aifannihao21 小时前
AI 学习第 8 课:1200 列纯噪声 CV 出 0.47,泄漏在筛特征那步
人工智能·机器学习·scikit-learn·学习路线·数据泄漏
Rocky Ding*21 小时前
REPA-E技术深度解析:解冻 VAE 之后,扩散模型为什么需要选择梯度
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·repa-e
楚山之石1 天前
【Radiology】影像组学的标准化与可重复性:IBSI 卷积滤波器共识及其未能覆盖的环节
人工智能·学习·机器学习·mri