写点什么

你是否真的需要机器学习?

  • 2020-05-06
  • 本文字数:2186 字

    阅读完需:约 7 分钟

你是否真的需要机器学习?

文中内容并非是从理论上去探讨哪些问题可以通过机器学习解决,而是意在帮助那些没有数据科学家的团队理解应用机器学习是否真的有效。


机器学习当前处境微妙。


机器学习的可行性已得到充分证明,几乎所有最受欢迎的移动应用都或多或少使用了该项技术,从中可见一斑。但这一生态系统尚未完全成熟到任何一位初学者都可以迅速应用自如的程度。


对于团队而言,决定何时引入机器学习技术并非易事,尤其是对于缺少数据科学家的团队。尽管软件工程人员通常对机器学习具有更高层次的理解,但他们一般缺少领域知识,难以判定自己所面对的问题是否适用机器学习解决。


文中内容并非从理论上去探讨讲哪些问题可以通过机器学习解决,而是意在帮助那些没有数据科学家的团队理解应用机器学习是否会有效。

是否有其他人使用机器学习解决了类似的问题?

如果团队中没有任何经验丰富的机器学习工程师或数据科学家,那么是很难回答“是否有可能通过机器学习来解决某个问题?”


如果团队中缺少数据科学家,应该怎么办?


  • 自身成为机器学习专家。这样你可以自己分析问题,判定机器学习解决方案的可行性。

  • 聘用机器学习专家,完成上述工作。

  • 调研是否有其他人用机器学习解决了类似的问题。


前两个选项耗精力耗财力,而后者可能只需花一天时间搜索一下。


相关调研的好处,就是有助于确定工作的着手点。鉴于团队中没有数据科学家,不太可能针对问题设计出适用的模型架构。例如,如果需要构建一个客户支持代理,那么可以去了解一下其他公司的做法。当然,你一定会涉及到 Rasa 和 Google Meena。


了解使用哪些模型和方法解决了类似的问题,有助于团队明确工作的着手点。例如,工程师 Robert Lucian 构建了一款得到广泛使用的个性化车牌读取器。Lucian 的解决方案就是依赖于一些已有的目标检测和文本提取模型。


Lucian 在在文章中提及,他只是调研了其他人在类似领域中正在使用的方法,进而着手实现了自己项目中的机器学习部分。他最终找到了那些专门针对车牌而调优的模型,及用于文本提取的有效模型。这样,他很快将两者加入到生产环境中。

是否具有相关的数据来源(无需考虑数据是否是自己的)?

除非你的问题使用原始预训练模型解决了,否则模型都需要使用相关数据进行训练。


例如,构建一个推荐系统引擎,需要用户资料属性以及浏览习惯等数据。而构建一款客户支持代理,则需要文档手册进行训练。为使模型适用于特定领域,需要使用相应领域数据进行训练。


但是,训练数据不必是自己具有的。即便并没有做复杂的用户数据收集,也可借助于一些公开可用的数据。


例如,数月前开始流行的文本类冒险游戏“AI Dungeon”,就是基于机器学习构建的。



尽管游戏开发工程师 Nick Walton 只通过从 choiceyourstory.com 上抓取 50 MB 的文本做模型调优,但该游戏仍可以与当前最先进的模型相媲美。其成功应归功于迁移学习,该技术将模型的“知识”(该游戏中使用了 OpenAI 的 GPT-2)迁移到新的模型,并使用很小的数据集对更特定领域做了调优,例如游戏中的地牢探索者的故事情景。

相对于其他解决方案而言,使用机器学习的成效是否显著?

在很多情况下,机器学习只是一种可工作的工具,但并非最优的工具。如果机器学习并不能提供比其它解决方案明显的优点,那么就不值得为此付出额外的开销。


对此问题的分析,可借助于下列几个基本考量:


首先,除机器学习外,是否还有其它解决方案?


对于语音识别、计算机视觉等许多应用,机器学习目前是最适用的解决方案。


其次, 其它解决方案是否能复现机器学习的预测质量?


例如,在建立一个推荐系统中,如果收集的用户数据不多,并且只有 100 条博客帖子可供推荐,那么使用基本的标签系统就完全可以。如果用户喜欢 Javascript,那么就向用户展示所有具有“Javascript”标签的文章:



但是,如果策划构建一个庞大的内容库,并且其中管理了大量的用户数据,那么机器学习对于实现个性化推荐的作用是独一无二的。


第三,其他解决方法是否具有机器学习那样的可扩展性?


机器学习的主要承诺之一,就是其灵活性足以消除那些传统上需要人工干预的流程中的人力参与。例如,库存管理是一个非常繁杂的工作,产品通常信息不完整,列出方式也不一致,导致经常需要手动处理。


在产品数量不多的情况下,人工处理完全可以取代机器学习。但是对于大量的产品,人工做比对是不现实的。例如,处理一百万种产品,需要很多人花费大量时间。而 Glisten 等产品使用机器学习分析产品数据,可快速完成此类工作:


何时何处适用机器学习

事实上,尽管机器学习有着诸多优越性,但却往往应用在许多毫无意义的场景中。这导致许多人普遍对机器学习持怀疑态度,“不过又是一轮炒作而已”。


现实情况是,就像其它所有广为使用的技术一样,机器学习只是在某些情况下的理想解决方案,而并不适用于所有情况。项目上手时,最难的就是判定该项目是否需要使用机器学习,尤其是对于缺乏该领域经验的团队,希望本文能对正处于迷茫中的团队有所助益。


如果读者对如何在生产环境中使用机器学习感兴趣,欢迎访问 Cortex 示例代码库。


Cortex 项目地址:


https://github.com/cortexlabs/cortex/tree/master/examples


声明:本文内容基于作者本人对机器学习团队的观察,而非对整个行业的学术综述。作者背景是 Cortex 的贡献者之一。Cortex 是一款用于机器学习模型在生产环境部署的开源平台。


原文链接:


https://towardsdatascience.com/should-you-really-use-machine-learning-for-that-d781a80aa0fb


公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2020-05-06 11:071302

评论

发布
暂无评论
发现更多内容

2021Java大厂高频面试题,原理+实战+视频+源码

Geek_f90455

Java 程序员 后端

Rust从0到1-模式-可反驳性

rust 模式 Patterns Refutability 可反驳性

Python代码阅读(第1篇):列表映射后的平均值

Felix

Python 编程 Code Programing 阅读代码

基于ECS快速搭建 Docker 环境

若尘

Docker 服务器 8月日更

Druid 从控制台(Druid console)中删除过滤器和运行查询

HoneyMoose

synchronized 优化手段之锁膨胀机制!

王磊

Java 并发 8月日更

复杂多变场景下的Groovy脚本引擎实战

vivo互联网技术

敏捷开发 脚本语言

2021Java开发现状分析,给大家安排上!

Geek_f90455

Java 程序员 后端

Druid 通过 dsql 运行的时候提示错误 urllib2

HoneyMoose

【设计模式】原型

Andy阿辉

C# 编程 后端 设计模式 8月日更

Design for failure常见的12种设计思想

架构精进之路

降级 重试 容错 8月日更

Druid 从控制台(Druid console)从 SQL 脚本转换为 JSON 格式的方法

HoneyMoose

【Maven技术专题】如何使用Assembly插件实现自定义打包

洛神灬殇

maven assembly 8月日更

一文带你搞定AOP切面

华为云开发者联盟

spring aop 切面编程 面向切面编程 切面

架构实战营 - 模块四作业

思梦乐

docker入门:postgresql安装及可视化界面portainer使用

小鲍侃java

8月日更

手撸二叉树之对称二叉树

HelloWorld杰少

算法和数据结构 8月日更

深度学习中的分布式训练

安第斯智能云

人工智能 深度学习

重磅 | 用友《数字化中台》震撼上市!数智化转型和商业创新实践的企业级经验!

博文视点Broadview

Druid 从控制台(Druid console)中查询字段

HoneyMoose

十大排序算法--插入排序

Ayue、

排序算法 8月日更

【Flutter 专题】132 图解 PaginatedDataTable 分页表格

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

索信达控股:银行4.0的AI世界——开启算法力的时代

索信达控股

人工智能 金融科技 银行

Python OpenCV 图像区域轮廓标记,可用于框选各种小纸条

梦想橡皮擦

8月日更

netty系列之:netty初探

程序那些事

Java 响应式编程 Netty nio 程序那些事

分布式性能测试框架用例方案设想(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

Druid 的几个查询实例

HoneyMoose

多语言ASR?没有什么听不懂,15种语言我全都要

华为云开发者联盟

语言 ASR 多语言ASR 单语模型 Conformer

原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!

冰河

MySQL 面试 精通MySQL SELECT查询流程 查询缓存

kafka SpringBoot

Rubble

kafka springboot 8月日更

基于docker的分布式性能测试框架功能验证(二)

FunTester

分布式 性能测试 接口测试 测试框架 测试开发

你是否真的需要机器学习?_行业深度_Caleb Kaiser_InfoQ精选文章