并不是每个问题都可以通过机器学习来解决,并不是每个公司都准备应用人工智能。以下是如何知道你的IT组织是否准备好获得人工智能的好处。
由于机器学习是灵丹妙药,你的公司应该能够有利地使用它,对吗?也许是;也许不是。好吧,我只是拿灵丹妙药开玩笑,这只是营销炒作。我们来讨论一下你是否拥有利用人工智能所需要的东西——如果你还没有达到这个地步你该如何达到。
首先,你知道你想预测或发现的是什么吗?你有足够的数据来分析以建立预测模型吗?你有需要定义和训练模型的人和工具吗?你是否已经有统计模型或物理模型为你提供预测的基准? 在此,我们将分解你让你的人工智能(AI)和机器学习(ML)项目成功所需要的东西,讨论其衍生后果,以帮助你确定贵组织是否真正准备好利用机器学习、深度学习和人工智能。
你有很多数据
充分的相关数据是预测和特征识别的必要条件。有了它,你可能会成功;没有它,你不能成功。你需要多少数据?你考虑的因素越多,你需要的数据就越多,无论你进行普通的统计预测、机器学习或深度学习。
以预测销售的常见问题为例,比如你下个月将在迈阿密销售多少件海军蓝短袖上衣,以及在不搁死太多钱和仓储空间的情况下,你在迈阿密商店和亚特兰大仓库需要多少库存以避免欠交订单。零售销售季节性很强,因此你需要多年来积累的具有重要统计意义的月度数据,以便能够纠正月度变化并建立年度趋势——这只是针对标准时间序列分析。机器学习需要的数据比统计模型要多很多,而深度学习模型需要的数据量更是多得翻几翻。
你可能构建的一个统计模型将分析你的连锁店在全国超过五年的每月上衣销售情况,并使用该汇总来预测下个月的总上衣销售情况。这个数字可能在几十万(假设它是30万)。那么你可以预测迈阿密的女衬衫销售额占全国销售额的百分比(假设为3%),并独立预测蓝色短袖上衣的销售额占总衬衫销售额的百分比(比如说是1%)。
该模型指出下个月在迈阿密约售出90件蓝色短袖衬衫。你可以通过查看各种产品的同店销售情况,对该预测进行合理性检查,特别要注意与模型的预测有多大的差异。
现在,假设你想把天气和时尚趋势这样的外部因素考虑进去。短袖衬衫在炎热或暖和的日子是不是比凉爽和多雨的日子卖得更好?可能吧。你可以通过在模型中包含历史天气数据来测试,尽管使用时间序列统计模型可能有点笨拙,因此你可以尝试使用决策森林回归(decision forest regression),当你尝试使用其它7 种用于回归的机器学习模型(见上面的截图),然后比较每个模型的“成本”(归一化误差函数),与去年的实际结果进行比较,以找到最佳模型。
海军蓝军下个月的销量会好于去年同期吗?你可以查看海军蓝色服装的每月销售量,并预测年度时尚趋势,也许可以将其纳入到你的机器学习模型中。
或者你可能需要根据你从时尚媒体所听到的内容,将手动更正(亦称“瞎猜”)应用到你的模型。(“以防万一,让我们将预测提高20%,”) 也许你想通过为这个预测创建一个深度神经网络来做更好的事情。你可能会发现你添加的每一个隐藏层的都能将回归误差提高几个百分点,直到无助于提高的程度。
报酬递减的原因可能是因为在模型中没有更多的特征可以识别,或者更有可能是因为没有足够的数据来支持更多的细化。
你有足够的数据科学家
你可能已经注意到,一个人必须构建上面讨论的所有模型。不,这不是将数据倾倒到料斗中并按下按钮的问题。不管你使用什么工具,这需要经验、直觉、编程的能力以及玩转机器学习的过硬的统计学背景——尽管供应商可能会这样宣称。
某些供应商特别倾向于声称“任何人”或“任何企业角色”都可以使用其预先训练的应用机器学习模型。如果模型完全适于手头的问题,例如将正式的书面的魁北克法文翻译成英文,这可能是真的,但是更常见的情况是,你的数据不适合现有的训练有素的机器学习(ML)模型。由于你必须训练该模型,你将需要数据分析师和数据科学家来指导培训,而这种培训比工程或科学更像是一门艺术。
关于招聘数据科学家的最奇怪的事情之一就是公布的要求,特别是与受聘者的实际技能相比。广告经常这么写道“招聘:数据科学家。科技工数类博士(STEM Ph.D.),加上20年的经验。
”第一个奇怪的地方是,该领域还没有真正存在超过20年。第二个奇怪的地方是,公司要雇用26岁的毕业生——也就是说,没有任何在学术界以外的工作经验,更不用说20年了——而他们优先于已经知道如何做这些事情的人,因为他们害怕资深人士太贵了,尽管他们要求20年的经验。是的,这是虚伪的,很可能是非法的年龄歧视,但这就是一直发生的事情。
你追踪或获取重要的因素
即使你有大量的数据和很多数据科学家,你可能没有所有相关变量的数据。用数据库的话来说就是,你可能有很多行,但缺少几列。统计上你可能有不明原因的方差。
诸如天气观测的一些自变量的测量很容易获得并合并到数据集中,甚至在事后也行。其它因素可能在测量或获取上很困难、不切实际或昂贵,即使你知道它们是什么。
我们用一个化学的例子来说明。当你将铅电镀到铜上时,你可以测量氟硼酸电镀槽的温度和浓度,并记录阳极上的电压,但是除非槽中含有足够的肽(但不能太多),否则不能获得良好的附着力。如果你没有对放入槽中的肽进行称重,你就不知道这个关键催化剂的剂量,你就无法用其它变量来解释电渡质量的变化。
你有清理和变换数据的办法
数据几乎总是很嘈杂的。测量可能缺少一个或多个值,单个值本身可能超出范围或与同一测量中的其它值不一致,电子测量可能由于电气噪声而不准确,回答问题的人可能无法理解或编造答案等等。
任何分析过程中的数据过滤步骤通常需要尽大的努力来设置——在我的经验中,占总分析时间的80%到90%。一些工场在其ETL(extract, transform, and load;提取,转换和加载)过程中清理数据,以便分析人员永远不会看到错误的数据点,但是其它工场用ELT流程数保留了据仓库或数据湖中的所有数据(最后的转换步骤)。这意味着,即使是明显的脏数据也被保存了,所依据的理论是过滤器和变换随时间的推移需要被细化了。
即使精确的过滤数据也可能需要进一步转换才能很好地分析。像统计学方法一样,当每个可能的状态有相似行数时,机器学习模型最有效,这可能意味着通过随机抽样来减少最流行状态的数量。与统计学方法一样,当所有变量的范围已经被归一化时,机器学习模型最有效。
例如,由小娜机器学习(Cortana ML)完成的特朗普和克林顿竞选献金的分析显示如何通过创建标签、处理数据、设计附加功能和清理数据来准备机器学习数据集;该分析在微软的博文中有讨论。该分析在SQL和R中进行了几次变换,以发现与克林顿或特朗普相关联的各种委员会和活动资金、根据姓名识别捐助者的身份可能是男性或女性、纠正拼写错误、并修正类偏斜(数据集中有94%是克林顿事务,主要是小额捐款)。
我在Azure ML Studio的“入门”教程中展示了如何获取此样本的输出并将其提供给两类逻辑回归模型。
你已经对数据进行了统计分析
数据分析和问题解决的一大罪恶之一就是引起争议。在你可以弄清楚发生了什么和为什么之前,你需要退后一步去看看所有变量及其相关性。
探索性数据分析可以快速显示所有变量的范围和分布,无论变量对是否应变或自变,集群所在的位置以及可能存在异常值的地方。当你具有高度相关的变量时,从分析中丢弃一个或另一个变量往往是有用的,或者执行类似于逐步多重线性回归(stepwise multiple linear regression)的某些特征来确定变量的最佳选择。
我的意思并不是说最终的模型是线性的,但在引入复杂性之前,尝试简单的线性模型总是有用的;如果你的模型中有太多的项,那么你最终可能会得到一个超定系统。
你测试了很多方法来找到最佳模型
只有一种方法可以找到给定数据集的最佳模型:试遍它们。如果你的目标是一个经过深思熟虑但具有挑战性的领域,例如感光特征识别和语言识别,你可能会试图从比赛中尝试“最佳”模型,但不幸的是,这些模型通常是计算密集型的深度学习模型,这些模型在图像识别和用于语音识别的长短期记忆(long short-term memory,LSTM)层的情况下具有卷积层。如果你需要训练这些深层神经网络,那么你可需要的计算能力远超你现在所具备的。
你有训练深度学习模式的计算能力
你的数据集越大,你的深度学习模型中的层就越多,训练神经网络所需的时间就越多。拥有大量数据可帮你训练更好的模型,但也会因为训练时间的增加而伤害你。拥有大量层可帮助你识别更多功能,同时也会因为训练时间的增加而伤害你。你可能不能等待一年来训练每个模型;一周更合理,特别是因为你很可能需要调整你的机型数十次。
避免训练时间问题方法之一是使用通用图形处理单元(general purpose graphics processing unit,GPGPU),如英伟达(Nvidia)出品的那些,用它们来执行神经网络层下面的向量和矩阵计算(也称为线性代数)。一个K80 GPU和一个CPU一起通常比只用CPU在训练速度上要快5到10倍的,如果你可以将网络的整个“内核”置入GPU的本地内存,并且使用一个P100 GPU,你可以得到比只用CPU快100倍的训练速度。
除了单GPU,你可以设置CPU和GPU的协作网络,用更少的时间解决更大的问题。除非你全年训练深度学习模型,并且拥有巨大的资本预算,否则你可能会发现在具有GPU的云端租用时间是你具成本效益的选择,包括CNTK、MXNet和TensorFlow在内的几个深度学习框架支持与CPU和GPU进行并行计算,并且对于具有强大GPU的非常大型的虚拟机(VM)实例的网络,已经展示了合理的缩放系数(一次测试结果约为85%)。你可以在主要云提供商中发现这些框架已经被安装到具有GPU支持的VM实例中。
你的机器学习模型优于统计模型
你的简单统计模型为你的工作设置了机器学习和深度学习的门槛。如果你不能用给定的模型提高门槛,那么你应该调整它或尝试不同的方法。一旦你知道自己在做什么,你可以在超参数调整算法(hyperparameter tuning algorithm)的控制下并行设置多个模型的训练,并使用好的结果来指导你的进程的下一个阶段。
你可以部署预测模型
最终,你想要实时地应用经过培训的模型。根据应用的不同,预测可以在服务器、云、个人电脑或电话上运行。深度学习框架提供了将模型嵌入网络和移动应用程序的各种选项。亚马逊、谷歌和微软已经通过制作理解语音的消费设备和智能手机应用程序来展示其实用性。
你可以定期更新模型
如果你已经在自己的数据上训练了自己的模型,你可能会发现模型的错误率(误报和漏报)随时间的推移而增加。这主要是因为数据随着时间的推移而偏移:你的销售模式发生了变化,竞争对手在变化,风格在变化和经济在变化。
为了适应这种效应,大多数深入学习框架都有重新训练新数据中的旧模型并用新模型替代预测服务的选择。如果你每个月都这样做,你应该能够控制偏差。如果你不能,你的模型最终将变得过时而不可靠。
回到我们的开始的问题,你知道你想预测或检测的是什么吗?你有足够的数据来分析以建立预测模型吗?你有需要定义和训练模型的人和工具吗?你是否已经有统计模型或物理模型为你提供预测的基准? 如果是这样的话,你还在等什么?