考虑您将如何使用传统编程技术编写垃圾邮件过滤器(图 1-1):
首先,您会考虑垃圾邮件通常是什么样的。您可能会注意到某些单词或短语(例如“4U”、“信用卡”、“免费”和“惊人”)往往会出现在主题行中。也许您还会注意到发件人姓名、电子邮件正文和电子邮件的其他部分中的其他一些模式。
您将为您注意到的每个模式编写一个检测算法,如果检测到多个这些模式,您的程序会将电子邮件标记为垃圾邮件。
您将测试您的程序并重复步骤 1 和 2,直到它足以启动。
由于问题很困难,您的程序可能会变成一长串复杂的规则——很难维护。
相比之下,基于机器学习技术的垃圾邮件过滤器通过检测垃圾邮件示例中与火腿示例(图 1-2)中异常频繁的单词模式,自动学习哪些单词和短语可以很好地预测垃圾邮件。该程序更短,更易于维护,并且很可能更准确。
如果垃圾邮件发送者注意到他们所有包含“4U”的电子邮件都被阻止了怎么办?他们可能会开始写“For U”。使用传统编程技术的垃圾邮件过滤器需要更新以标记“For U”电子邮件。如果垃圾邮件发送者继续绕过您的垃圾邮件过滤器,您将需要永远编写新规则。
相比之下,基于机器学习技术的垃圾邮件过滤器会自动注意到“For U”在用户标记的垃圾邮件中变得异常频繁,并且在没有您干预的情况下开始标记它们(图 1-3)。
机器学习的另一个亮点是解决对传统方法来说过于复杂或没有已知算法的问题。例如,考虑语音识别。假设您想从简单的开始,编写一个能够区分“一”和“二”这两个词的程序。您可能会注意到单词“two”以高音 (“T”) 开头,因此您可以硬编码一个算法来测量高音强度并使用它来区分一个和两个——但显然这种技术将不能扩展到数百万不同的人在嘈杂的环境中使用数十种语言所说的数千个单词。最好的解决方案(至少在今天)是编写一个算法,该算法可以根据每个单词的许多示例录音自行学习。
最后,机器学习可以帮助人类学习(图 1-4)。可以检查 ML 算法以查看它们学到了什么(尽管对于某些算法来说这可能很棘手)。例如,一旦垃圾邮件过滤器接受了足够多的垃圾邮件的训练,就可以很容易地检查它以显示它认为是垃圾邮件的最佳预测因子的单词列表和单词组合。有时,这会揭示出意想不到的相关性或新趋势,从而更好地了解问题。应用 ML 技术来挖掘大量数据可以帮助发现并非立即显现的模式。这称为数据挖掘。
总而言之,机器学习非常适合:
现有解决方案需要大量微调或长规则列表的问题:一种机器学习算法通常可以简化代码并比传统方法表现更好。
使用传统方法无法解决的复杂问题:最好的机器学习技术或许可以找到解决方案。
波动的环境:机器学习系统可以适应新数据。
深入了解复杂问题和大量数据。
我们看看吧 在机器学习任务的一些具体示例中,以及可以解决它们的技术:
这是图像分类,通常使用卷积神经网络(CNN;参见第 14 章)执行。
这是语义分割,其中对图像中的每个像素进行分类(因为我们想要确定肿瘤的确切位置和形状),通常也使用 CNN。
这是自然语言处理 (NLP),更具体地说是文本分类,可以使用循环神经网络 (RNN)、CNN 或 Transformer(参见第 16 章)来解决。
这也是文本分类,使用相同的 NLP 工具。
这是 NLP 的一个分支,称为文本摘要,同样使用相同的工具。
这涉及到许多 NLP 组件,包括自然语言理解 (NLU) 和问答模块。
这是一个回归任务(即预测值),可以使用任何回归模型来解决,例如线性回归或多项式回归模型(参见第 4 章)、回归 SVM(参见第 5 章)、回归随机森林(参见第 7 章),或人工神经网络(见第 10 章)。如果要考虑到过去的绩效指标的帐户序列,您可能需要使用RNNs,细胞神经网络,或变压器(见第15和16)。
这是语音识别,这需要处理音频样本:因为它们是长而复杂的序列,他们使用的是通常RNNs处理,细胞神经网络,或变压器(见第15和16)。
这是异常检测(参见第 9 章)。
这就是聚类(参见第 9 章)。
这是数据可视化,通常涉及降维技术(参见第 8 章)。
这是一个推荐系统。一种方法是将过去的购买(以及有关客户的其他信息)提供给人工神经网络(参见第 10 章),并让它输出最有可能的下一次购买。该神经网络通常会根据所有客户过去的购买序列进行训练。
这通常使用强化学习(RL;参见第 18 章)来解决,这是机器学习的一个分支,它训练代理(例如机器人)选择随着时间的推移将最大化其奖励的动作(例如,机器人可能会获得奖励每次玩家失去一些生命点),在给定的环境(如游戏)内。在围棋比赛中击败世界冠军的著名 AlphaGo 程序就是使用 RL 构建的。
这个列表可以继续下去,但希望它能让您了解机器学习可以处理的任务的广度和复杂性,以及您将用于每项任务的技术类型。