你可能不知道,在互聯(lián)網(wǎng)每天發(fā)送的3000多億封電子郵件中,至少有一半是垃圾郵件。因此,電子郵件供應(yīng)商承擔(dān)著一個(gè)艱巨的任務(wù),那就是過濾垃圾郵件,并確保用戶收到重要的信息。
然而,垃圾郵件檢測是混亂的。垃圾郵件和非垃圾郵件之間的界限是模糊的,并且標(biāo)準(zhǔn)會隨著時(shí)間的推移而變化。從自動化垃圾郵件檢測的各種努力來看,機(jī)器學(xué)習(xí)已經(jīng)被證明是最有效,也是最受電子郵件供應(yīng)商青睞的方法。
盡管我們在日常生活中仍然會看到垃圾郵件,多虧了機(jī)器學(xué)習(xí)算法,每天已經(jīng)有大量垃圾郵件已經(jīng)從我們的收件箱中清除掉了。
那么機(jī)器學(xué)習(xí)如何確定哪些郵件是垃圾郵件,哪些不是呢?以下是基于機(jī)器學(xué)習(xí)的垃圾郵件檢測工作原理的概述。
所面臨的挑戰(zhàn)
垃圾郵件有不同的風(fēng)格。許多只是一些煩人的信息,旨在引起人們對某一事件的注意或傳播虛假信息。還有一些是網(wǎng)絡(luò)釣魚郵件,目的是引誘收件人點(diǎn)擊惡意鏈接或下載惡意軟件。
它們有一個(gè)共同點(diǎn),那就是與收件人的需求無關(guān)。垃圾郵件檢測算法必須找到一種方法來過濾垃圾郵件,同時(shí)避免屏蔽用戶希望在收件箱中看到的真實(shí)消息。而且它必須以一種能夠與不斷發(fā)展的趨勢相匹配的方式來做到這一點(diǎn),例如由流行病、選舉新聞、對加密貨幣的突然興趣以及其他因素引起的恐慌。
靜態(tài)規(guī)則可以提供幫助。例如,太多的密件抄送收件人、非常短的正文和所有大寫主題都是垃圾郵件的特征。同樣,一些發(fā)件人域和電子郵件地址也可能與垃圾郵件相關(guān)聯(lián)。但在大多數(shù)情況下,垃圾郵件檢測主要依賴于對消息內(nèi)容的分析。
Na?ve 貝葉斯機(jī)器學(xué)習(xí)模型
機(jī)器學(xué)習(xí)算法使用統(tǒng)計(jì)模型來分類數(shù)據(jù)。在垃圾郵件檢測情況下,一個(gè)經(jīng)過訓(xùn)練的機(jī)器學(xué)習(xí)模型必須能夠確定在電子郵件中發(fā)現(xiàn)的單詞順序是更接近于垃圾郵件中發(fā)現(xiàn)的單詞順序,還是更接近于安全郵件中的單詞順序。
不同的機(jī)器學(xué)習(xí)算法可以檢測到垃圾郵件,但其中一個(gè)吸引人的是“Na?ve 貝葉斯”算法。顧名思義,“Na?ve 貝葉斯”基于“貝葉斯定理”,該定理由英國數(shù)學(xué)家貝葉斯 發(fā)展,用來描述兩個(gè)條件概率之間的關(guān)系,比如 P(A|B) 和 P(B|A)。
之所以稱之為“Na?ve ”,是因?yàn)樗僭O(shè)觀察的特征是獨(dú)立的。假設(shè)你想用“Na?ve貝葉斯”機(jī)器學(xué)習(xí)來預(yù)測是否會下雨。在這種情況下,你的特征可能是溫度和濕度,而你預(yù)測的事件是降雨。
在垃圾郵件檢測的情況下,事情變得有點(diǎn)復(fù)雜。我們的目標(biāo)變量是給定的電子郵件是“垃圾郵件”還是“非垃圾郵件”,而特征是郵件正文中的單詞或單詞組合。簡而言之,我們希望根據(jù)電子郵件的文本來計(jì)算出它是垃圾郵件的概率。
這里的問題是我們的特征不一定是獨(dú)立的。例如,考慮術(shù)語“烤”、“奶酪”和“三明治”它們可以有不同的含義,這取決于它們是連續(xù)的還是在信息的不同部分。另一個(gè)例子是“不(not)”和“有趣(interesting)”這兩個(gè)詞在這種情況下,根據(jù)它們在消息中出現(xiàn)的位置,含義可能完全不同。但是,即使特征獨(dú)立性在文本數(shù)據(jù)中很復(fù)雜,如果配置得當(dāng),在自然語言處理任務(wù)中已證明“Na?ve 貝葉斯”分類器是有效的。
數(shù)據(jù)收集
垃圾郵件檢測是一個(gè)有監(jiān)督的機(jī)器學(xué)習(xí)問題。這意味著必須為機(jī)器學(xué)習(xí)模型提供一組垃圾郵件和非垃圾郵件的示例,并讓它找到區(qū)分這兩個(gè)不同類別的相關(guān)模式。
大多數(shù)電子郵件供應(yīng)商都有自己的大量標(biāo)記電子郵件數(shù)據(jù)集。例如,每次用戶在Gmail賬戶將一些郵件標(biāo)記為垃圾郵件時(shí),就是為谷歌的機(jī)器學(xué)習(xí)算法提供訓(xùn)練數(shù)據(jù)。(注:谷歌的垃圾郵件檢測算法比本文中研究的方法要復(fù)雜得多,而且該公司有機(jī)制防止濫用其“報(bào)告垃圾郵件”功能。)
有一些開源數(shù)據(jù)集,如加州大學(xué)歐文分校的垃圾數(shù)據(jù)集和安然垃圾數(shù)據(jù)集。但這些數(shù)據(jù)集是用于教育和測試目的,在創(chuàng)建生產(chǎn)級別的機(jī)器學(xué)習(xí)模型方面用處不大。
因此,擁有自家的電子郵件服務(wù)器的公司可以很容易地創(chuàng)建專門的數(shù)據(jù)集,以調(diào)整其機(jī)器學(xué)習(xí)模型適應(yīng)所屬工作領(lǐng)域的特定語言。例如,提供金融服務(wù)的公司的數(shù)據(jù)集與建筑公司的數(shù)據(jù)集就有很大的區(qū)別。
訓(xùn)練機(jī)器學(xué)習(xí)模型
盡管近年來自然語言處理已經(jīng)取得了不錯(cuò)的進(jìn)展,但人工智能算法仍然不能像人類一樣理解語言。
因此,開發(fā)垃圾郵件檢測器機(jī)器學(xué)習(xí)模型的關(guān)鍵步驟之一是為統(tǒng)計(jì)處理準(zhǔn)備數(shù)據(jù)。在訓(xùn)練“Na?ve 貝葉斯”分類器之前,垃圾郵件和非垃圾郵件的語料庫必須經(jīng)過某些步驟。
考慮包含以下句子的數(shù)據(jù)集:
史蒂夫想為聚會買烤奶酪三明治(Steve wants to buy grilled cheese sandwiches for the party)
莎莉正在做烤雞肉當(dāng)晚餐(Sally is grilling some chicken for dinner)
我買了一些奶油干酪做蛋糕(I bought some cream cheese for the cake)
文本數(shù)據(jù)在被輸入到機(jī)器學(xué)習(xí)算法之前必須被“標(biāo)記化”,無論是在訓(xùn)練模型時(shí),還是之后對新數(shù)據(jù)進(jìn)行預(yù)測時(shí)。實(shí)質(zhì)上,標(biāo)記化意味著將文本數(shù)據(jù)分解為更小的部分。如果按單個(gè)單詞分割上述數(shù)據(jù)集,就會得到以下詞匯表。請注意,這里只每個(gè)單詞只統(tǒng)計(jì)一次。
Steve, want, to, buy, grill, cheese, sandwich, for, the party, Sally, is, grill, some, chicken, dinner, I, bought, cream, cake
我們可以刪除出現(xiàn)在垃圾郵件和非垃圾郵件中的單詞,這些單詞對區(qū)分是否為垃圾郵件沒有幫助,包括the、for、is、to和some等術(shù)語。在上述數(shù)據(jù)集中,刪除這些沒意義的詞將使檢測詞匯量減少5個(gè)。
我們也可以使用其他技術(shù),如將單詞轉(zhuǎn)換成基本形式。例如,在我們的示例數(shù)據(jù)集中,buy和bought是共同的意思,grilled和grill也是一樣,這同樣有助于進(jìn)一步簡化機(jī)器學(xué)習(xí)模型。
在某些情況下,您應(yīng)該考慮使用二元模型(兩個(gè)單詞標(biāo)記)、三元模型(三個(gè)單詞標(biāo)記)或更多單詞標(biāo)記。例如,將上述數(shù)據(jù)集以二元模型形式標(biāo)記就是“奶酪蛋糕(cheese cake)”,而使用三元模型將生成“烤奶酪三明治(grilled cheese sandwich)”。
一旦你處理了數(shù)據(jù),就會有一個(gè)定義機(jī)器學(xué)習(xí)模型特征的術(shù)語列表?,F(xiàn)在,您必須確定哪些單詞或單詞序列與垃圾郵件相關(guān)。
當(dāng)你在訓(xùn)練數(shù)據(jù)集上訓(xùn)練機(jī)器學(xué)習(xí)模型時(shí),每個(gè)術(shù)語會根據(jù)它在垃圾郵件和非垃圾郵件中出現(xiàn)的次數(shù)分配一個(gè)權(quán)重。例如,如果“贏得大獎(win big money prize)”是特征之一,并且只出現(xiàn)在垃圾郵件中,那么它被檢測為垃圾郵件的可能性就會更大。如果“重要會議”只在非垃圾郵件中提到,那么將其被歸類為非垃圾郵件的可能性也就會增加。
一旦處理了數(shù)據(jù)并為特征分配權(quán)重,機(jī)器學(xué)習(xí)模型就可以過濾垃圾郵件了。當(dāng)收到一封新郵件時(shí),標(biāo)記文本,并按照貝葉斯公式運(yùn)行。郵件主體中的每個(gè)術(shù)語都乘以其權(quán)重,權(quán)重的總和決定了該郵件是垃圾郵件的概率。(實(shí)際上,計(jì)算有點(diǎn)復(fù)雜,但為了簡單起見,本文將堅(jiān)持使用權(quán)重之和。)
先進(jìn)的垃圾郵件檢測與機(jī)器學(xué)習(xí)
聽起來簡單,“Na?ve 貝葉斯”機(jī)器學(xué)習(xí)算法已經(jīng)被證明對許多文本分類任務(wù)是有效的,包括垃圾郵件檢測。
但這并不意味著它是完美的。
與其他機(jī)器學(xué)習(xí)算法一樣,Na?ve 貝葉斯不理解語言的上下文,而是依賴單詞之間的統(tǒng)計(jì)關(guān)系來判斷一段文本是否屬于某個(gè)類。
這意味著,例如,如果發(fā)送者只是在郵件的末尾添加一些非垃圾郵件詞匯,或者用其他密切相關(guān)的詞匯替換垃圾郵件詞匯,那么就可以騙過Na?ve 貝葉斯圾郵件檢測器,從而忽略垃圾郵件。
當(dāng)然,Na?ve 貝葉斯并不是唯一可以檢測垃圾郵件的機(jī)器學(xué)習(xí)算法。其他流行的算法包括遞歸神經(jīng)網(wǎng)絡(luò)(RNN)和transformers,它們在處理連續(xù)數(shù)據(jù)(如電子郵件和文本信息)方面非常有效。
最后要注意的是,垃圾郵件檢測始終是一項(xiàng)正在進(jìn)行的工作。隨著開發(fā)人員使用人工智能和其他技術(shù)來檢測和過濾電子郵件中的有害信息,垃圾郵件發(fā)送者同樣能找到了新方法破解系統(tǒng),讓垃圾騙過過濾器。這就是為什么電子郵件供應(yīng)商總是依賴用戶的幫助來改進(jìn)和更新他們的垃圾郵件檢測程序。
文章來源于網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系刪除。