人工智能是怎么“干掉”垃圾邮件的?

阅读 17  ·  发布日期 2021-01-22 14:52:37  ·  伊索科技

你可能不知道,在互联网每天发送的3000多亿封电子邮件中,至少有一半是垃圾邮件。因此,电子邮件供应商承担着一个艰巨的任务,那就是过滤垃圾邮件,并确保用户收到重要的信息。

然而,垃圾邮件检测是混乱的。垃圾邮件和非垃圾邮件之间的界限是模糊的,并且标准会随着时间的推移而变化。从自动化垃圾邮件检测的各种努力来看,机器学习已经被证明是最有效,也是最受电子邮件供应商青睐的方法。

尽管我们在日常生活中仍然会看到垃圾邮件,多亏了机器学习算法,每天已经有大量垃圾邮件已经从我们的收件箱中清除掉了。

那么机器学习如何确定哪些邮件是垃圾邮件,哪些不是呢?以下是基于机器学习的垃圾邮件检测工作原理的概述。

所面临的挑战

垃圾邮件有不同的风格。许多只是一些烦人的信息,旨在引起人们对某一事件的注意或传播虚假信息。还有一些是网络钓鱼邮件,目的是引诱收件人点击恶意链接或下载恶意软件。

它们有一个共同点,那就是与收件人的需求无关。垃圾邮件检测算法必须找到一种方法来过滤垃圾邮件,同时避免屏蔽用户希望在收件箱中看到的真实消息。而且它必须以一种能够与不断发展的趋势相匹配的方式来做到这一点,例如由流行病、选举新闻、对加密货币的突然兴趣以及其他因素引起的恐慌。

静态规则可以提供帮助。例如,太多的密件抄送收件人、非常短的正文和所有大写主题都是垃圾邮件的特征。同样,一些发件人域和电子邮件地址也可能与垃圾邮件相关联。但在大多数情况下,垃圾邮件检测主要依赖于对消息内容的分析。

Naïve 贝叶斯机器学习模型

机器学习算法使用统计模型来分类数据。在垃圾邮件检测情况下,一个经过训练的机器学习模型必须能够确定在电子邮件中发现的单词顺序是更接近于垃圾邮件中发现的单词顺序,还是更接近于安全邮件中的单词顺序。

不同的机器学习算法可以检测到垃圾邮件,但其中一个吸引人的是“Naïve 贝叶斯”算法。顾名思义,“Naïve 贝叶斯”基于“贝叶斯定理”,该定理由英国数学家贝叶斯 发展,用来描述两个条件概率之间的关系,比如 P(A|B) 和 P(B|A)。

之所以称之为“Naïve ”,是因为它假设观察的特征是独立的。假设你想用“Naïve贝叶斯”机器学习来预测是否会下雨。在这种情况下,你的特征可能是温度和湿度,而你预测的事件是降雨。

在垃圾邮件检测的情况下,事情变得有点复杂。我们的目标变量是给定的电子邮件是“垃圾邮件”还是“非垃圾邮件”,而特征是邮件正文中的单词或单词组合。简而言之,我们希望根据电子邮件的文本来计算出它是垃圾邮件的概率。

这里的问题是我们的特征不一定是独立的。例如,考虑术语“烤”、“奶酪”和“三明治”它们可以有不同的含义,这取决于它们是连续的还是在信息的不同部分。另一个例子是“不(not)”和“有趣(interesting)”这两个词在这种情况下,根据它们在消息中出现的位置,含义可能完全不同。但是,即使特征独立性在文本数据中很复杂,如果配置得当,在自然语言处理任务中已证明“Naïve 贝叶斯”分类器是有效的。

数据收集

垃圾邮件检测是一个有监督的机器学习问题。这意味着必须为机器学习模型提供一组垃圾邮件和非垃圾邮件的示例,并让它找到区分这两个不同类别的相关模式。

大多数电子邮件供应商都有自己的大量标记电子邮件数据集。例如,每次用户在Gmail账户将一些邮件标记为垃圾邮件时,就是为谷歌的机器学习算法提供训练数据。(注:谷歌的垃圾邮件检测算法比本文中研究的方法要复杂得多,而且该公司有机制防止滥用其“报告垃圾邮件”功能。)

有一些开源数据集,如加州大学欧文分校的垃圾数据集和安然垃圾数据集。但这些数据集是用于教育和测试目的,在创建生产级别的机器学习模型方面用处不大。

因此,拥有自家的电子邮件服务器的公司可以很容易地创建专门的数据集,以调整其机器学习模型适应所属工作领域的特定语言。例如,提供金融服务的公司的数据集与建筑公司的数据集就有很大的区别。

训练机器学习模型

尽管近年来自然语言处理已经取得了不错的进展,但人工智能算法仍然不能像人类一样理解语言。

因此,开发垃圾邮件检测器机器学习模型的关键步骤之一是为统计处理准备数据。在训练“Naïve 贝叶斯”分类器之前,垃圾邮件和非垃圾邮件的语料库必须经过某些步骤。

考虑包含以下句子的数据集:

  • 史蒂夫想为聚会买烤奶酪三明治(Steve wants to buy grilled cheese sandwiches for the party)

  • 莎莉正在做烤鸡肉当晚餐(Sally is grilling some chicken for dinner)

  • 我买了一些奶油干酪做蛋糕(I bought some cream cheese for the cake)

文本数据在被输入到机器学习算法之前必须被“标记化”,无论是在训练模型时,还是之后对新数据进行预测时。实质上,标记化意味着将文本数据分解为更小的部分。如果按单个单词分割上述数据集,就会得到以下词汇表。请注意,这里只每个单词只统计一次。

Steve, want, to, buy, grill, cheese, sandwich, for, the party, Sally, is, grill, some, chicken, dinner, I, bought, cream, cake

我们可以删除出现在垃圾邮件和非垃圾邮件中的单词,这些单词对区分是否为垃圾邮件没有帮助,包括the、for、is、to和some等术语。在上述数据集中,删除这些没意义的词将使检测词汇量减少5个。

我们也可以使用其他技术,如将单词转换成基本形式。例如,在我们的示例数据集中,buy和bought是共同的意思,grilled和grill也是一样,这同样有助于进一步简化机器学习模型。

在某些情况下,您应该考虑使用二元模型(两个单词标记)、三元模型(三个单词标记)或更多单词标记。例如,将上述数据集以二元模型形式标记就是“奶酪蛋糕(cheese cake)”,而使用三元模型将生成“烤奶酪三明治(grilled cheese sandwich)”。

一旦你处理了数据,就会有一个定义机器学习模型特征的术语列表。现在,您必须确定哪些单词或单词序列与垃圾邮件相关。

当你在训练数据集上训练机器学习模型时,每个术语会根据它在垃圾邮件和非垃圾邮件中出现的次数分配一个权重。例如,如果“赢得大奖(win big money prize)”是特征之一,并且只出现在垃圾邮件中,那么它被检测为垃圾邮件的可能性就会更大。如果“重要会议”只在非垃圾邮件中提到,那么将其被归类为非垃圾邮件的可能性也就会增加。

一旦处理了数据并为特征分配权重,机器学习模型就可以过滤垃圾邮件了。当收到一封新邮件时,标记文本,并按照贝叶斯公式运行。邮件主体中的每个术语都乘以其权重,权重的总和决定了该邮件是垃圾邮件的概率。(实际上,计算有点复杂,但为了简单起见,本文将坚持使用权重之和。)

先进的垃圾邮件检测与机器学习

听起来简单,“Naïve 贝叶斯”机器学习算法已经被证明对许多文本分类任务是有效的,包括垃圾邮件检测。

但这并不意味着它是完美的。

与其他机器学习算法一样,Naïve 贝叶斯不理解语言的上下文,而是依赖单词之间的统计关系来判断一段文本是否属于某个类。

这意味着,例如,如果发送者只是在邮件的末尾添加一些非垃圾邮件词汇,或者用其他密切相关的词汇替换垃圾邮件词汇,那么就可以骗过Naïve 贝叶斯圾邮件检测器,从而忽略垃圾邮件。

当然,Naïve 贝叶斯并不是唯一可以检测垃圾邮件的机器学习算法。其他流行的算法包括递归神经网络(RNN)和transformers,它们在处理连续数据(如电子邮件和文本信息)方面非常有效。

最后要注意的是,垃圾邮件检测始终是一项正在进行的工作。随着开发人员使用人工智能和其他技术来检测和过滤电子邮件中的有害信息,垃圾邮件发送者同样能找到了新方法破解系统,让垃圾骗过过滤器。这就是为什么电子邮件供应商总是依赖用户的帮助来改进和更新他们的垃圾邮件检测程序。

文章来源于网络,如有侵权请联系删除。