版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
基于深度學(xué)習(xí)的垃圾郵件分類系統(tǒng)設(shè)計(jì)目錄TOC\o"1-3"\h\u13791緒論 2289971.1研究背景及意義 2217221.2國內(nèi)外研究現(xiàn)狀 499481.3論文結(jié)構(gòu) 590242垃圾郵件分類相關(guān)技術(shù) 7237542.1電子郵件的工作原理 7210492.1.1相關(guān)協(xié)議 7166892.1.2郵件收發(fā)過程 897732.1.3基于郵件工作過程的過濾技術(shù) 9170222.2深度學(xué)習(xí)技術(shù) 12104742.2.1人工神經(jīng)網(wǎng)絡(luò) 12112572.2.2卷積神經(jīng)網(wǎng)絡(luò) 1616712.2.3長短時(shí)記憶網(wǎng)絡(luò) 19306232.3文本分類技術(shù)文 22241312.3.1數(shù)據(jù)預(yù)處理 2220502.3.2詞向量方法 2239542.3.3垃圾郵件文本分類器的構(gòu)造方法 25210032.4本章小結(jié) 2627423.1文本處理 27321973.2基于CNN的郵件分類方法 30128193.2.1網(wǎng)絡(luò)的實(shí)現(xiàn) 30324233.2.2模型的訓(xùn)練保存及調(diào)用 31262783.2.3參數(shù)調(diào)試 32263483.3基于LSTM的郵件分類方法 3364003.3.1網(wǎng)絡(luò)的實(shí)現(xiàn) 3458883.3.2模型的訓(xùn)練保存及調(diào)用 3465203.3.3參數(shù)調(diào)試 34125613.4實(shí)驗(yàn)結(jié)果分析 3540843.4.1數(shù)據(jù)集介紹 36148993.4.2評價(jià)標(biāo)準(zhǔn) 37324943.4.3實(shí)驗(yàn)結(jié)果 37240093.5本章小結(jié) 3950644垃圾郵件分類系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 40115314.1系統(tǒng)框架 40221924.2環(huán)境配置 40173774.2.1Anaconda的下載安裝 4178384.2.2深度學(xué)習(xí)各種包的安裝 41177704.2.3PyQt5的安裝 4246524.3系統(tǒng)實(shí)現(xiàn) 43301834.4效果展示 4411204.4本章小結(jié) 4494505結(jié)論 4613472參考文獻(xiàn) 47摘要隨著互聯(lián)網(wǎng)相關(guān)應(yīng)用的快速發(fā)展,廣告技術(shù)的進(jìn)步和電子郵件的普及,越來越多的垃圾郵件充斥著我們的生活。如何高效的區(qū)分垃圾郵件的研究也逐漸成為了熱門課題。論文主要分析總結(jié)當(dāng)前常用的垃圾郵件的過濾方法,選擇基于深度學(xué)習(xí)的分類算法作為本文研究的重點(diǎn),基于郵件文本本身用深度學(xué)習(xí)的方法建立垃圾郵件過濾模型。主要工作包括:介紹傳統(tǒng)郵件分類的方法及原理,包括郵件傳輸協(xié)議以及基于協(xié)議的各種分類方法,還有基于郵件內(nèi)容分類的傳統(tǒng)方法,包括基于規(guī)則和基于統(tǒng)計(jì)的方法。設(shè)計(jì)實(shí)現(xiàn)用于垃圾郵件文本分類的卷積神經(jīng)網(wǎng)絡(luò),和長短期記憶網(wǎng)絡(luò),對參數(shù)進(jìn)行優(yōu)化以取得更好的分類效果。在郵件文本處理過程中,用詞嵌入方法對文本進(jìn)行向量化操作,以解決傳統(tǒng)的one-hot編碼數(shù)據(jù)稀疏、緯度高的問題。最后調(diào)用了訓(xùn)練好的CNN網(wǎng)絡(luò)模型,實(shí)現(xiàn)了一個(gè)垃圾郵件分類系統(tǒng),在系統(tǒng)頁面內(nèi)輸入郵件文本,就可以判斷這封郵件是垃圾郵件還是正常郵件。關(guān)鍵詞:垃圾郵件過濾;文本分類;深度學(xué)習(xí);詞向量1緒論1.1研究背景及意義電子郵件于上世紀(jì)70年代誕生于美國,最先用于阿帕網(wǎng)的科研工作者相互交流科研成果,為當(dāng)時(shí)的研究工作做出了巨大貢獻(xiàn),80年代中期,個(gè)人電腦的興起使得電子郵件的普遍使用成為可能。時(shí)至今日,隨著計(jì)算機(jī)和通信技術(shù)的發(fā)展進(jìn)步,電子郵件的優(yōu)勢日益突顯,憑借其廉價(jià)、實(shí)用、即時(shí)的特性,電子郵件穩(wěn)坐互聯(lián)網(wǎng)應(yīng)用的第一把交椅。雖然現(xiàn)在QQ、微信等即時(shí)通信工具的產(chǎn)生在一定程度上沖擊了電子郵件在人們?nèi)粘=涣髦兴嫉牡匚唬娮余]件集電話的便利與信件永久性與一體的特點(diǎn)使其在正式交流的場合具有得天獨(dú)厚的優(yōu)勢,是商務(wù)工作活動(dòng)中必不可少的交流工具,極大的促進(jìn)了社會(huì)經(jīng)濟(jì)的發(fā)展與進(jìn)步。垃圾郵件由來已久,1978年5月3日,當(dāng)時(shí)的互聯(lián)網(wǎng)還被稱作ARPANET,美國數(shù)字設(shè)備公司一個(gè)名叫GaryThuerk的銷售代表為了推銷新的產(chǎn)品,向393人發(fā)去了包含介紹公司即將舉行的新品發(fā)布會(huì)的宣傳郵件,這封郵件雖然成功引起了一些客戶的注意力,但也為他帶來了意想不到的牢獄之災(zāi),這封郵件就是有記錄以來最早的一封垃圾郵件。在第一封垃圾郵件出現(xiàn)的很多年以后,網(wǎng)絡(luò)技術(shù)的發(fā)展,使得發(fā)件人每天可以毫不費(fèi)力地進(jìn)行郵件的批量發(fā)送,垃圾郵件才變得一發(fā)不可收拾。據(jù)相關(guān)部門統(tǒng)計(jì),在2001年的時(shí)候垃圾郵件的數(shù)量僅僅只占電子郵件總量的7%,但是與之只相隔一年,到了2002年垃圾郵件的數(shù)量就達(dá)到電子郵件總量的29%,令人擔(dān)憂的是這種爆發(fā)式的增長速度并沒有得到及時(shí)有效的控制,以至于到2004年垃圾郵件所占比例已超過了總郵件數(shù)的51%。中國互聯(lián)網(wǎng)協(xié)會(huì)發(fā)布的調(diào)查顯示,有超過一半的電子郵箱用戶因?yàn)槔]件遭受了經(jīng)濟(jì)上的損失[1]。大量的垃圾郵件給我們帶來了眾多的危害,首先,從用戶體驗(yàn)來說,當(dāng)我們的郵箱中的大部分郵件都是垃圾郵件時(shí),電子郵箱帶給我們的將不再是便利而是煩惱了,這會(huì)很大程度上增加了人們對電子郵件的抵觸心理。其次,從用戶信息安全的角度來看,垃圾郵件有可能攜帶非法鏈接計(jì)算機(jī)病毒,成為危害用戶信息安全的非法操做工具。從網(wǎng)絡(luò)自身發(fā)展來看,垃圾郵件的泛濫,給網(wǎng)民帶來了一定程度上的經(jīng)濟(jì)損失,肆意捏造的虛假信息不利于社會(huì)長治久安,同時(shí)也會(huì)打擊網(wǎng)友對網(wǎng)絡(luò)交流的信心,非常不利于信息技術(shù)的發(fā)展[2]。全球著名的信息安全軟件供應(yīng)商MessageLabs經(jīng)長時(shí)間調(diào)查后發(fā)現(xiàn):如今垃圾郵件的數(shù)量依然在不斷的增長,由此給用戶帶來的經(jīng)濟(jì)損失也不斷增加,據(jù)估計(jì),對一個(gè)中等規(guī)模的企業(yè)來說,每年由于垃圾郵件導(dǎo)致的損失就將近1300萬美元。根據(jù)2018年全球垃圾郵件數(shù)據(jù)來看,中國既是垃圾郵件危害最多的國家,也是垃圾郵件最大的生產(chǎn)地,占全球垃圾郵件來源的11.69%。去年2月5日,正值新冠疫情爆發(fā)之際,我國的網(wǎng)絡(luò)安全應(yīng)急響應(yīng)平臺(tái)發(fā)現(xiàn):某南亞組織火上澆油,趁火打劫,竟然利用新冠疫情的爆發(fā)對我國的醫(yī)療機(jī)構(gòu)進(jìn)行定向的攻擊。據(jù)事后報(bào)道,這些攻擊者采用魚叉式釣魚的攻擊方式,借助郵件投遞含有惡意病毒的文檔來實(shí)施攻擊,利用我國人民對于疫情形勢的關(guān)注,來誘導(dǎo)收件人點(diǎn)擊下載文件,進(jìn)而通過相關(guān)提示促使受害者執(zhí)行宏命令。這些作為誘餌的文檔名稱,均與疫情密切相關(guān),這種混淆視聽行為不僅威脅了我國民眾的個(gè)人信息安全還破壞了我國的疫情防控的順利有序進(jìn)行,具有很大的負(fù)面影響。垃圾郵件不僅給我國的網(wǎng)絡(luò)環(huán)境帶來了極大的污染嚴(yán)重影響了社會(huì)風(fēng)氣,還時(shí)刻威脅著用戶的信安全,誘發(fā)了很多社會(huì)問題。關(guān)于垃圾郵件的范疇[3]界定業(yè)內(nèi)說法不一,不同的組織機(jī)構(gòu)都曾對其做過范疇劃定。早在2000年8月,由中國電信指定的垃圾郵件處理辦法,此辦法適用于所有中國電信網(wǎng)絡(luò)IP用戶,辦法規(guī)定凡是內(nèi)容涉及了廣告、刊物且不請自來,或者缺少明確的拒收方式和相關(guān)的地址信息,以及包含其他一切不符合互聯(lián)網(wǎng)服務(wù)提供商所規(guī)定的安全策略或服務(wù)條款的郵件都會(huì)被認(rèn)定為垃圾郵件。中國的第一個(gè)反垃圾郵件協(xié)調(diào)小組是在2002年成立的,這個(gè)協(xié)調(diào)小組是由包括中國互聯(lián)網(wǎng)協(xié)會(huì)和新浪網(wǎng)在內(nèi)的20多家中國網(wǎng)絡(luò)集團(tuán)共同發(fā)起的,小組成立后經(jīng)討論研究發(fā)布了目前仍使用的《中國互聯(lián)網(wǎng)協(xié)會(huì)反垃圾郵件規(guī)范》。針對垃圾郵件的特點(diǎn)在這個(gè)規(guī)范進(jìn)行了詳細(xì)而系統(tǒng)的說明:郵件內(nèi)容中包含各種形式的宣傳內(nèi)容包含但不限于廣告、電子刊物或者包含色情反動(dòng)等不良信息以及傳播病毒包含惡意代碼;收件人沒有主接收意向的郵件;郵件無法拒收,或者缺少發(fā)件人身份、發(fā)件地址、郵件主題等關(guān)鍵信息,或者提供的信息是虛假的郵件。我國相關(guān)政府部門頒布的通信行業(yè)標(biāo)準(zhǔn)YD/T1311-2004也有與之相似的定義。國際上,也有很多權(quán)威組織對垃圾郵件的范疇做出了相關(guān)的說明。TREC即世界上著名的文本檢索會(huì)議在2008年組織開展了一次大規(guī)模的垃圾郵件過濾任務(wù)評測(SpamTrack)活動(dòng),在這次評測活動(dòng)中,垃圾郵件的判定標(biāo)準(zhǔn)是具有不請自來的(Unsolicited)、不受歡迎的(Unwanted)、不加選擇(Indiscriminate)隨意發(fā)送或者郵件的發(fā)送者與接收者雙方?jīng)]有直接關(guān)系等鮮明特點(diǎn)的郵件。著名的反垃圾郵件軟件McAfee,在系統(tǒng)說明中明確指出如果一份郵件被發(fā)送給多個(gè)用戶,同時(shí)這些接收到郵件的用戶并沒有提出請求接收,那么這封郵件就會(huì)被當(dāng)作垃圾郵件,但在用戶明確表示了希望接收這封郵件,或者能夠肯定的確定這封郵件的來源是可信來源的時(shí)候,那么郵件則不會(huì)被認(rèn)為是垃圾郵件。本課題打算從垃圾郵件的文本內(nèi)容入手,用深度學(xué)習(xí)網(wǎng)絡(luò)構(gòu)建出垃圾郵件分類器,對垃圾郵件與正常郵件進(jìn)行檢測分類,以解決垃圾郵件泛濫的問題。1.2國內(nèi)外研究現(xiàn)狀對于垃圾郵件分類問題目前已經(jīng)有很多人做了研究,并提出了一些很有意義的方法,早在上世紀(jì),Maron等人[4]就已經(jīng)提出了使用關(guān)鍵詞來對文本進(jìn)行分類的方法,他提出用標(biāo)引詞代替文本,根據(jù)標(biāo)引詞在類中出現(xiàn)的概率來確定類別。此后,機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等也現(xiàn)后被用于解決垃圾郵件分類問題。2011年,曹根等人[5]將K-鄰近法的局部加權(quán)原理與樸素貝葉斯算法相結(jié)合,用K-鄰近算法對屬性進(jìn)行加權(quán),通過訓(xùn)練找到最合適的加權(quán)值,減小了樸素貝葉斯算法條件獨(dú)立假設(shè)條件對分類性能的影響,提高了分類準(zhǔn)確性。2015年,陳翠平等人[6]利用深度置信網(wǎng)絡(luò)從高維的原始特征中抽取低維度高度可區(qū)分的低維特征,最后用深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)來進(jìn)行特征提取,最終完成網(wǎng)絡(luò)分類任務(wù),隨后也有學(xué)者步將這種思想用于郵件文本的分類。2017年時(shí)WaelEtaiwi等人[7]通過改善預(yù)處理步驟,在其中對文本加入詞性標(biāo)記,并用n-gram統(tǒng)計(jì)詞性的歸屬頻率,提高了對文本特征提取的準(zhǔn)確率。2019年,李曉東等人[8]提出可以通過增加隱藏父節(jié)點(diǎn)的方式改進(jìn)TF-IDF算法來提高提取文本特征詞的準(zhǔn)確率,在利用TF-IDF算法提取出文本特征詞后,根據(jù)各屬性之間的依賴關(guān)系添加隱藏的父節(jié)點(diǎn),來增強(qiáng)屬性間的依賴。2020年,趙博文等人[9]提出了基于泊松分布的特征加權(quán)的樸素貝葉斯算法,他們通過泊松隨機(jī)變量引入特征詞權(quán)重,并定義信息增益率對文本特征詞加權(quán),消弱了樸素貝葉斯算法中完全獨(dú)立假設(shè)帶來的影響,提高了分類的準(zhǔn)確性。此外,還有學(xué)者將圖片處理中的注意力機(jī)制[10]用于了自然語言處理,注意力機(jī)制使用注意力向量來估計(jì)文本中的一個(gè)元素與其他元素的相關(guān)程度,能夠獲取文本序列更精準(zhǔn)的信息,通常將注意力機(jī)制與神經(jīng)網(wǎng)絡(luò)相結(jié)合,來構(gòu)造文本分類器。2020年,吳小晴[11]將卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)以及注意力機(jī)制相結(jié)合,改善了神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中梯度下降算法容易收斂到局部最小而不是全局最小以及池化層丟失信息的問題,提高了分類的準(zhǔn)確率。1.3論文結(jié)構(gòu)本文實(shí)現(xiàn)了基于深度學(xué)習(xí)的垃圾郵件分類方法,全文共有五章,我的論文結(jié)構(gòu)如下:第一章,介紹了垃圾郵件的發(fā)展趨勢以及國內(nèi)外深度學(xué)習(xí)方法在垃圾郵件分類方面的研究成果,說明了垃圾郵件分類的必要性以及深度學(xué)習(xí)方法的可行性。第二章,從電子郵件的工作原理出發(fā),介紹了郵件協(xié)議以及收發(fā)過程,以及根據(jù)郵件的工作原理設(shè)計(jì)出的各種垃圾郵件過濾方法,重點(diǎn)介紹了深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)的算法原理和文本分類需要的各種技術(shù)。第三章利用深度學(xué)習(xí)方法實(shí)現(xiàn)了對垃圾郵件的文本分類,將經(jīng)過數(shù)據(jù)清洗的文本文檔轉(zhuǎn)化為可以直接作為網(wǎng)絡(luò)模型的輸入的向量數(shù)據(jù),然后分別構(gòu)建了CNN和LSTM網(wǎng)絡(luò)對郵件進(jìn)行特征提取并分類,在一定范圍內(nèi)進(jìn)行了網(wǎng)絡(luò)參數(shù)的優(yōu)化,最后調(diào)用保存的模型對這兩種網(wǎng)絡(luò)分類的準(zhǔn)確性做測試。第四章,調(diào)用訓(xùn)練好的CNN模型,構(gòu)建了一個(gè)簡單的垃圾郵件分類系統(tǒng),在界面內(nèi)輸入郵件文本的內(nèi)容,點(diǎn)擊開始檢測按鈕后就可以調(diào)用模型進(jìn)行檢測,并將檢測結(jié)果輸出在界面中。第五章,對現(xiàn)階段的工作進(jìn)行總結(jié),并展望后續(xù)可以完善發(fā)展的方面。
2垃圾郵件分類相關(guān)技術(shù)20世紀(jì)70年代,郵件攔截技術(shù)就已經(jīng)出現(xiàn)了,為了更好地理解與解決垃圾郵件的相關(guān)問題,我們有必要了解一些電子郵件的工作原理,從郵件的工作過程出發(fā),這樣才能更好地理解各種垃圾郵件過濾技術(shù)的原理,才能更好的提高分類的準(zhǔn)確率。目前,根據(jù)文本進(jìn)行分類已經(jīng)成為一種廣泛使用的垃圾郵件過濾方法。2.1電子郵件的工作原理電子郵件的工作過程遵循客戶-服務(wù)器模式。每份電子郵件的發(fā)送都要涉及到發(fā)送方與接收方,發(fā)送方構(gòu)成客戶端,而接收方構(gòu)成服務(wù)器,服務(wù)器含有眾多用戶的電子信箱。發(fā)送方通過郵件客戶程序,將編輯好的電子郵件向郵局服務(wù)器發(fā)送。郵局服務(wù)器識(shí)別接收者的地址,并向管理該地址的郵件服務(wù)器發(fā)送消息。郵件服務(wù)器識(shí)將消息存放在接收者的電子信箱內(nèi),并告知接收者有新郵件到來。接收者通過郵件客戶程序連接到服務(wù)器后,就會(huì)看到服務(wù)器的通知,進(jìn)而打開自己的電子信箱來查收郵件。2.1.1相關(guān)協(xié)議電子郵件在發(fā)送與接收過程中都要遵循簡單郵件傳輸協(xié)議(SimpleMailTransferProtocol,SMTP)、郵局協(xié)議(PostOfficeProtocol,POP)等協(xié)議[12],這些協(xié)議確保了電子郵件在各種不同系統(tǒng)之間的傳輸。其中,SMTP負(fù)責(zé)電子郵件的發(fā)送,而POP3則用于接收網(wǎng)絡(luò)上的電子郵件。(1)SMTPSMTP是郵件傳輸過程中應(yīng)用最廣的協(xié)議。圖2.1展示SMTP的簡單模型,它確定了郵件的傳輸規(guī)則,用戶使用它來幫助計(jì)算機(jī)找到發(fā)送或中轉(zhuǎn)信件的下一個(gè)目的地址。如果收件和發(fā)件雙方同時(shí)都在一個(gè)網(wǎng)絡(luò)上,雙方的就可以不通過郵件服務(wù)器,直接進(jìn)行郵件的收發(fā);但若收發(fā)雙方?jīng)]有在同一個(gè)網(wǎng)絡(luò)上,就不可以直接進(jìn)行通信,這個(gè)時(shí)候就需要借助一個(gè)或數(shù)個(gè)服務(wù)器幫助郵件進(jìn)行轉(zhuǎn)發(fā)。圖2.1SMTP的模型示意圖SMTP工作過程如圖2.2所示:當(dāng)發(fā)件方在郵件客戶端提出發(fā)送郵件的申請后,客戶端的STMP服務(wù)器會(huì)向接收方的SMTP服務(wù)器請求建立一個(gè)TCP連接,當(dāng)連接成功建立后,才能夠進(jìn)行郵件的傳遞。圖2.2STMP的通信過程(2)POPPOP的作用就像我們現(xiàn)實(shí)生活中的郵局一樣,用來對郵件進(jìn)行檢索。POP協(xié)議不僅定義了電子郵件進(jìn)行檢索的方法,還使得電子郵件可以傳輸包括圖片和音頻在內(nèi)的任何格式的文件,值得注意的是,在用戶下載查看了一封郵件后POP協(xié)議會(huì)將其從服務(wù)器中刪除。POP的各種版本不具有兼容性,我們現(xiàn)在使用最多的是POP3版本。2.1.2郵件收發(fā)過程郵件服務(wù)通過一組郵件服務(wù)器的程序?qū)︵]件使用過程中所需要的硬件進(jìn)行管理和存儲(chǔ)。一旦這些郵件服務(wù)器停止運(yùn)行,就無法繼續(xù)進(jìn)行郵件的收發(fā)了,這與個(gè)人電腦停止工作期間的收到的郵件會(huì)在重新開始工作后全部統(tǒng)一接收有所不同。我們通常會(huì)將SMTP協(xié)議和POP協(xié)議組合起來實(shí)現(xiàn)電子郵件在客戶端-服務(wù)器模式下進(jìn)行發(fā)送和檢索。基本上,所有郵件傳輸工具都是符合SMTP標(biāo)準(zhǔn)的,依照SMTP標(biāo)準(zhǔn),可以把郵件的收發(fā)簡化為圖2.3所示的過程[13]。發(fā)送方要發(fā)送一封郵件,需要經(jīng)過郵件用戶代理也就是我們通常使用的郵件客戶端軟件,來幫助用戶讀取寫入文件,用戶完成郵件后,用戶代理將郵件發(fā)給郵件傳輸代理,郵件傳輸代理將決定郵件的傳輸路線,最終將郵件送到收件人的服務(wù)器,然后收件方的郵件傳輸代理會(huì)將普通郵件送到收件人的用戶代理處,這是,收件人就可以通過自己的郵箱查看郵件了。圖2.3郵件收發(fā)過程2.1.3基于郵件工作過程的過濾技術(shù)總體上來看應(yīng)對垃圾郵件的方法有三類:第一類是通過完善法律法規(guī)對相關(guān)行為進(jìn)行約束,這也是從根源上解決垃圾的有效途徑;第二就是通過改進(jìn)完善郵件的傳輸協(xié)議來進(jìn)行垃圾郵件過濾,依據(jù)郵件傳輸協(xié)議可以在傳播過程中對過濾掉垃圾郵件。第三則是根據(jù)信息內(nèi)容來看是否屬于垃圾郵件,就是通過對郵件文本進(jìn)行分析進(jìn)而進(jìn)行分類。在法律層面上多國都頒布了相關(guān)的法律法規(guī)。2003年12月,美國頒布了CAN-SPAM法案,該法案確立了美國首個(gè)發(fā)送商業(yè)電子郵件的國家標(biāo)準(zhǔn),根據(jù)該法案,聯(lián)邦貿(mào)易委員會(huì)(FTC)有權(quán)力對每個(gè)單獨(dú)的垃圾郵件處以最高16,000美元罰款。我國也早在2002年就由互聯(lián)網(wǎng)協(xié)會(huì)制定頒布了正式的《反垃圾郵件規(guī)范》。下面介紹一些基于郵件工作模式的垃圾郵件過濾方法。從電子郵件協(xié)議以及郵件發(fā)送過程的角度來考慮,郵件傳輸協(xié)議的本身存在的缺陷對垃圾郵件的泛濫負(fù)有不可推卸的責(zé)任。所以如果能夠合理的配置和有效地改進(jìn)電子郵件傳輸協(xié)議,可以在一定程度上有效地防止垃圾郵件的肆意傳播。許多中間轉(zhuǎn)發(fā)鏈路存在于電子郵件的發(fā)送過程中,這給垃圾郵件的傳播提供了很多可乘之機(jī),所以可以考慮在郵件的中間轉(zhuǎn)發(fā)鏈路上附加一些特定的垃圾郵件預(yù)防協(xié)議,來減少中間鏈路中垃圾郵件的傳播風(fēng)險(xiǎn),這樣就達(dá)到了從電子郵件傳遞協(xié)議級(jí)別上有效地進(jìn)行過濾垃圾郵件的目的。目前,基于SMTP協(xié)議的垃圾郵件過濾方法很多,包括關(guān)閉開放轉(zhuǎn)發(fā)、反向域名解析以及SMTP交互行為檢測技術(shù)[14]。此外,網(wǎng)絡(luò)的IP層在網(wǎng)絡(luò)正常工作中占有重要地位,通過研究垃圾郵件在IP層的工作過程,提出了在IP層上的垃圾郵件分類方法。這些方法主要有白名單(Whitelist)、黑名單(Blacklist)、實(shí)時(shí)黑名單(RealtimeBlackholeList,RBL)[15-16]三種。這些方法過濾成本低,郵件服務(wù)器中廣泛應(yīng)用了這些方法。(1)關(guān)閉開放轉(zhuǎn)發(fā)處于開放轉(zhuǎn)發(fā)(Open-Relay)狀態(tài)時(shí),郵件服務(wù)器會(huì)不加選擇地轉(zhuǎn)發(fā)所有的入站郵件,并不關(guān)心郵件的收發(fā)者的身份信息。關(guān)閉開放中繼后,如果郵件服務(wù)器要向外部系統(tǒng)發(fā)送郵件,需要先進(jìn)行身份驗(yàn)證,此時(shí),郵件服務(wù)器只有確認(rèn)郵件的收發(fā)雙方都屬于電子郵件服務(wù)器上的合法用戶后才會(huì)為雙方提供郵件轉(zhuǎn)發(fā)服務(wù),這種工作模式在很大程度上避免了垃圾郵件發(fā)送者通過此郵件服務(wù)器發(fā)送電子郵件。這大大減少了垃圾郵件的傳播,但是我們要明白的是關(guān)閉開放轉(zhuǎn)發(fā)是一種單向反垃圾郵件方法,因?yàn)樗皇潜WC了郵件的使用者不主動(dòng)發(fā)垃圾郵件,卻不能減少用戶接收垃圾郵件。(2)反向域名解析反向域名解析的方法原理是通過反向地址解析協(xié)議將發(fā)送方帶有的IP地址反向解析出IP所在的域名,之后再利用域名系統(tǒng)對反向解析出的域名進(jìn)行查詢,看看查到的發(fā)送方的IP以及域名與其郵件中說明的IP及反向解析出的域名是否一致,如果不一致的話,就說明這封郵件存在假冒地址的問題,這是這封郵件將被系統(tǒng)判定為垃圾郵件,若一致的話,則說明這封郵件的發(fā)送地址是正常的,系統(tǒng)將會(huì)把它當(dāng)成正常郵件來處理。反向域名解析方法通過反向解析發(fā)送發(fā)IP地址與DNS查詢能夠高效地過濾IP存在問題的垃圾郵件,但這種方法由于每次都要進(jìn)行DNS查詢,這個(gè)過程將需要很多的計(jì)算和網(wǎng)絡(luò)資源,也會(huì)花費(fèi)很多時(shí)間,因此反向域名解析雖然過濾效率高但并沒有得到廣泛的應(yīng)用。(3)SMTP交互行為檢測通過檢測SMTP交互行為來進(jìn)行垃圾郵件過濾的方法的原理與垃圾郵件服務(wù)器的工作機(jī)制的特點(diǎn)密切相關(guān),隨著垃圾郵件服務(wù)器工作方式的改變SMTP交互行為也會(huì)發(fā)生改變,相應(yīng)的檢測方法也會(huì)有所不同,因此,SMTP交互行為的檢測方法一直在不斷地更新和發(fā)展,創(chuàng)新出來了很多具體方法,其中目前最常用的具體方法有:第一種是用戶自己在郵件系統(tǒng)中設(shè)定某個(gè)賬號(hào)發(fā)送的郵件統(tǒng)統(tǒng)都拒收,這種方法被稱為發(fā)送賬號(hào)限制,與下面提到地黑名單有異曲同工之妙;還有一種是服務(wù)器自己通過統(tǒng)計(jì)賬號(hào)發(fā)送郵件的退信數(shù)量,當(dāng)某個(gè)賬號(hào)退信率過高時(shí),這個(gè)賬號(hào)將被記為發(fā)送無效賬號(hào),這種方法也被成為發(fā)送無效賬號(hào)統(tǒng)計(jì);還有一些電子郵件的客戶端為用戶提供了自主設(shè)置電子郵箱工作模式的功能,此時(shí)用戶可以通過使用特殊命令來設(shè)置自己郵箱的工作機(jī)制,以減少垃圾郵件的接收數(shù)量。(4)黑名單黑名單方法是指如果已經(jīng)明確定一個(gè)電子郵件賬號(hào)是專門發(fā)送垃圾郵件的,那么就把該賬號(hào)的域名和IP地址都加入到一張黑名單中,這個(gè)黑名單會(huì)被部署到郵件系統(tǒng)的網(wǎng)關(guān)中,這樣當(dāng)網(wǎng)關(guān)收到來自黑名單上的IP地址發(fā)送的郵件時(shí),它就不會(huì)接收郵件而是直接拒絕轉(zhuǎn)發(fā)該郵件。這種方法聽起來很有效,但是由于網(wǎng)關(guān)是可以由管理人員配置的,這就導(dǎo)致這種方法可能會(huì)受到人的主觀情感的影響,事實(shí)上,黑名單方法存在很大的地域歧視問題,這也影響了正常的郵件傳輸行為,降低了郵件交流的有效性。我國目前很少采用黑名單方法來過濾垃圾郵件,這種方法在我國尚處于緩慢發(fā)展階段,可以實(shí)現(xiàn)黑名單過濾方法的郵件服務(wù)器數(shù)量稀少,因此它的有效性也很難得到充分驗(yàn)證。(5)白名單白名單與我們常用的通訊錄很相似,它相當(dāng)于一個(gè)郵件的好友列表,在列表建立以后,用戶就只自動(dòng)接收在列表上的IP地址發(fā)送的郵件,其他所有不在列表上的IP地址所發(fā)送的郵件,要么會(huì)被直接拒收,要么會(huì)由郵件系統(tǒng)自動(dòng)進(jìn)行驗(yàn)證,驗(yàn)證通過后再進(jìn)行接收。但是由于驗(yàn)證過程是通過郵件系統(tǒng)像發(fā)送方的郵箱雙方之間發(fā)送驗(yàn)證郵件來實(shí)現(xiàn)的,這樣就會(huì)產(chǎn)生很多額外的垃圾郵件。因此,這種方法雖然減少了郵件用戶接收到的垃圾郵件數(shù)量,但卻會(huì)增加網(wǎng)絡(luò)中垃圾郵件的數(shù)量,不能有效地遏制垃圾郵件的產(chǎn)生,也會(huì)造成網(wǎng)絡(luò)資源的嚴(yán)重浪費(fèi)。(6)實(shí)時(shí)黑名單從名稱上就可以看出實(shí)時(shí)黑名單方法是對黑名單方法的優(yōu)化和擴(kuò)展,上文已經(jīng)提到黑名單本質(zhì)上就是一個(gè)可以查詢的電子郵件用戶的IP地址列表。實(shí)時(shí)黑名單相比黑名單就是多了實(shí)時(shí)兩個(gè)字,這是一個(gè)動(dòng)態(tài)的詞匯,也就是說實(shí)時(shí)黑名單是一個(gè)隨著時(shí)間而動(dòng)態(tài)變化的黑名單,具有很強(qiáng)的時(shí)效性。郵件接收用戶可以通過直接查詢DNS來判斷發(fā)送郵件的IP地址,是否包含在實(shí)時(shí)黑名單里,這也決定了這封郵件是否能夠順利地被用戶接收。一般情況下,由權(quán)威或公益機(jī)構(gòu)來提供實(shí)時(shí)黑名單的維護(hù)服務(wù),例如,我國具有實(shí)時(shí)黑名單功能的郵件服務(wù)器RBL服務(wù)器的維護(hù)工作就是由國內(nèi)權(quán)威的反垃圾機(jī)構(gòu),中國反垃圾郵件聯(lián)盟進(jìn)行的。2.2深度學(xué)習(xí)技術(shù)2006年G.E.Hinton等人[17]提出了深度學(xué)習(xí)的概念,深度學(xué)習(xí)是一個(gè)通過特定的訓(xùn)練方法對訓(xùn)練樣本數(shù)據(jù)進(jìn)行訓(xùn)練,最后得到一個(gè)多層網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)過程。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)由于網(wǎng)絡(luò)中的權(quán)值是隨機(jī)的進(jìn)行初始化的,所以通常會(huì)在短時(shí)間內(nèi)就會(huì)收斂到局部的最小值,針對這個(gè)問題,Hinton創(chuàng)造性地提出了先采用無監(jiān)督預(yù)訓(xùn)練的方法提前對網(wǎng)絡(luò)的權(quán)值的初始值進(jìn)行優(yōu)化,然后再利用微調(diào)的方法對權(quán)值進(jìn)行調(diào)整優(yōu)化。由此深度學(xué)習(xí)的大幕被緩緩拉來,深度學(xué)習(xí)正式登上歷史舞臺(tái),開始在各個(gè)領(lǐng)域嶄露頭角。近年,深度學(xué)習(xí)在語音、圖像的處理方面取得了巨大的成果,這在很大程度上,促進(jìn)了深度學(xué)習(xí)的方法在自然語言處理的任務(wù)中的應(yīng)用,2011年Collobert[18]用卷積神經(jīng)網(wǎng)絡(luò)來完成自然語言處理的任務(wù),獲得了很好的實(shí)驗(yàn)效果,在這之后,深度學(xué)習(xí)在自然語言處理的領(lǐng)域?qū)崿F(xiàn)了多種功能的應(yīng)用,比如文本分類、文本聚類、摘要實(shí)體生成、智能過濾、情感分析、知識(shí)圖譜等。大多數(shù)的深度學(xué)習(xí)算法都是基于人工神經(jīng)網(wǎng)絡(luò)的概念。2.2.1人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)[19]是深度學(xué)習(xí)的基礎(chǔ),人工神經(jīng)網(wǎng)絡(luò)是一種由生物學(xué)啟發(fā)的典范技術(shù),人工神經(jīng)網(wǎng)絡(luò)的目的就是想讓機(jī)器獲得像哺乳動(dòng)物的大腦一樣的能夠自主學(xué)習(xí)的能力。生物學(xué)上的研究表明哺乳動(dòng)物大腦中的神經(jīng)元在受到電流刺激時(shí),會(huì)使神經(jīng)元處于激活狀態(tài),產(chǎn)生興奮,這種興奮會(huì)在神經(jīng)元之間進(jìn)行傳遞,直至大腦控制人體對初始刺激做出反應(yīng)。與之類似的,人工神經(jīng)網(wǎng)絡(luò)背后的基本原理是成為人工神經(jīng)元或感知器的基本元素的集合,它們采用多個(gè)二元輸入x1,x2,…,xn,及其對應(yīng)的權(quán)值w1,w2,…,wn,如圖所示為一個(gè)神經(jīng)元的樣本。w2xw2x1yyw1w1xx2圖2.4神經(jīng)元樣本對于一個(gè)神經(jīng)元來說,每當(dāng)輸入加權(quán)和在考慮誤差的情況下,超過激活電位時(shí),就會(huì)執(zhí)行一個(gè)表現(xiàn)為階梯函數(shù)的“發(fā)射”指令。發(fā)射的神經(jīng)元沿著信號(hào)傳遞到與其樹突相連的其他神經(jīng)元,同樣,如果超過激活電位,其他神經(jīng)元也會(huì)發(fā)射,從而產(chǎn)生級(jí)聯(lián)效應(yīng),如圖所示。圖2.5神經(jīng)元激活運(yùn)算示意激活函數(shù)作用于信號(hào)傳播的過程中,將神經(jīng)元的輸入映射到輸出端,也被稱為傳遞函數(shù),激活函數(shù)的引入為神經(jīng)網(wǎng)絡(luò)增加了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù)。神經(jīng)網(wǎng)絡(luò)中常用的激活函數(shù)包括:Sigmoid函數(shù)、Tanh函數(shù)以及ReLU函數(shù)等[20]。Sigmoid函數(shù)通常作用于隱藏層神經(jīng)元輸出,取值范圍為(0,1),可以將一個(gè)實(shí)數(shù)映射到(0,1)的區(qū)間,可以用于做二分類。Sigmoid函數(shù)圖像如圖2.6所示。sigmoidx=圖2.6Sigmoid函數(shù)圖像Tanh函數(shù)也是一種常用的激活函數(shù),也稱其為正切函數(shù),取值范圍為[-1,1]。在特征相差明顯時(shí)使用tanh函數(shù)效果會(huì)更好。Tanh函數(shù)的圖像如圖2.7所示。Tanhx=圖3.15Tanh函數(shù)圖像ReLu函數(shù)也被稱為線性整流函數(shù),當(dāng)輸入值大于0時(shí)被激活,激活狀態(tài)下輸出值呈線性增長,且斜率為1。當(dāng)輸入值小于等于0時(shí),輸出值恒為0。函數(shù)圖像如圖2.8所示。ReLux=圖2.8ReLU函數(shù)圖像上面提到的激活函數(shù)都很容易微分化,這使得網(wǎng)絡(luò)可以通過梯度下降的法進(jìn)行訓(xùn)練。與哺乳動(dòng)物的大腦一樣,人工神經(jīng)網(wǎng)絡(luò)中,單個(gè)神經(jīng)元按層組織,自層內(nèi)連接到下一層,它的結(jié)構(gòu)如圖2.9所示。隱藏層隱藏層輸出層輸入層輸出層輸入層圖2.9神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖深度學(xué)習(xí)中的“深”是指網(wǎng)絡(luò)結(jié)構(gòu)中的深度,現(xiàn)在我們常用的深度學(xué)習(xí)網(wǎng)絡(luò)包括卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)以及它們的各種變體。2.2.2卷積神經(jīng)網(wǎng)絡(luò)卷積網(wǎng)絡(luò),也稱為卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetworks,CNN)[21],旨在處理具有相似網(wǎng)格結(jié)構(gòu)的數(shù)據(jù)。例如,時(shí)間序列數(shù)據(jù)(可以看作是沿著時(shí)間軸通過常規(guī)采樣形成的一維網(wǎng)格)和圖像數(shù)據(jù)(可以看作是二維像素網(wǎng)格)。卷積網(wǎng)絡(luò)在許多應(yīng)用領(lǐng)域都可以很好地工作,例如圖像分類,對象識(shí)別和圖像樣式轉(zhuǎn)換。CNN的設(shè)計(jì)靈感來自視覺皮層的工作過程。Hubel和Wiesel[22]于1962年進(jìn)行的一項(xiàng)實(shí)驗(yàn)詳細(xì)解釋了視覺皮層中存在的一小部分細(xì)胞對視覺區(qū)域的某些部分敏感,并證明了大腦的某些部分僅在特定方向上存在。當(dāng)神經(jīng)細(xì)胞的邊緣實(shí)際存在時(shí),神經(jīng)細(xì)胞將對觸發(fā)行為的單個(gè)神經(jīng)細(xì)胞作出反應(yīng)。研究表明,有些神經(jīng)元僅在垂直邊緣受到刺激,而另一些則因水平或?qū)沁吘壍拇嬖诙艿酱碳?。此外,Hubel和Wisesl還觀察到所有這些神經(jīng)元必須協(xié)同工作并排列成圓柱狀結(jié)構(gòu)才能產(chǎn)生視覺感知。這樣,系統(tǒng)的特定組件對應(yīng)于特定任務(wù)(視覺皮層的神經(jīng)細(xì)胞尋找特定特征)的想法也適用于機(jī)器,這是CNN的基礎(chǔ)。CNN將通過輸入層傳輸?shù)妮斎霐?shù)據(jù)發(fā)送到完全連接的層進(jìn)行計(jì)算,并將其轉(zhuǎn)換為輸出層給定的一組分?jǐn)?shù)。CNN的基礎(chǔ)結(jié)構(gòu)如圖2.10所示。圖2.10CNN基礎(chǔ)結(jié)構(gòu)圖卷積網(wǎng)絡(luò)的輸入層負(fù)責(zé)加載和存儲(chǔ)原始輸入數(shù)據(jù),以便在網(wǎng)絡(luò)中處理,輸入數(shù)據(jù)制定了寬度、高度和通道數(shù)量。卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心,負(fù)責(zé)提取輸入數(shù)據(jù)的特征,盡管卷積層是以卷積運(yùn)算(convolution)命名的,在卷積層中使用的計(jì)算方法在數(shù)學(xué)上更常被稱為互相關(guān)運(yùn)算。卷積層參數(shù)包括卷積核大小、步長和填充,三者共同決定了卷積層輸出特征的尺寸,是卷積神經(jīng)網(wǎng)絡(luò)的超參數(shù)。(1)卷積運(yùn)算我們可以將卷積運(yùn)算分成三部分,如圖2.11。圖2.11卷積運(yùn)算實(shí)例輸入可以是訓(xùn)練數(shù)據(jù),也可以是上層網(wǎng)絡(luò)的輸出;卷積核是整個(gè)卷積網(wǎng)絡(luò)的主要參數(shù);輸出是計(jì)算的結(jié)果。在卷積運(yùn)算中,卷積內(nèi)核從輸入的左上角開始,按從左到右,從上到下的順序使用輸入進(jìn)行計(jì)算。計(jì)算方法如下:將輸入數(shù)組的子數(shù)組的元素與卷積核的元素相應(yīng)地相乘,獲得總和即為輸出數(shù)組的相應(yīng)位置的結(jié)果。例如,圖2.11中的37是通過將淺黃色表中的數(shù)據(jù)與卷積核中的數(shù)據(jù)進(jìn)行相乘而得到的,即:37=1*1+2*2+4*3+5*4。然后輸入的卷積窗口向右滑動(dòng),新的窗口內(nèi)的數(shù)據(jù)會(huì)按同樣的方法與卷積核進(jìn)行運(yùn)算,圖2.11輸出中的數(shù)據(jù)的計(jì)算公式分別為:47=2*1+3*2+5*3+6*4;67=4*1+5*2+7*3+8*4;77=5*1+6*2+8*3+9*4。(2)填充上面提到的卷積運(yùn)算示例有一個(gè)特點(diǎn):卷積運(yùn)算后,輸出的高度和寬度將小于輸入的高度??梢韵胂螅S著卷積層數(shù)的增加和輸出的進(jìn)一步減少,輸出很快將只剩下1?1個(gè)數(shù)組,沒有辦法繼續(xù)進(jìn)行計(jì)算,因此,為了方便起見,提出了一種填充方法網(wǎng)絡(luò)的進(jìn)一步深化實(shí)際上,填充的原因有兩個(gè):不進(jìn)行填充會(huì)導(dǎo)致數(shù)據(jù)規(guī)模逐漸縮小,從而使網(wǎng)絡(luò)深度無法達(dá)到非常深;不填充將導(dǎo)致邊緣和角落的數(shù)據(jù)學(xué)習(xí)不足,對于圖2.11來說輸入數(shù)組的四個(gè)頂點(diǎn):1、3、7、9在執(zhí)行的四個(gè)卷積運(yùn)算中僅計(jì)算一次,這意味著卷積對邊緣數(shù)據(jù)的學(xué)習(xí)是不夠的,而當(dāng)我們進(jìn)行填充后卷積網(wǎng)絡(luò)就可以多次學(xué)習(xí)邊緣的數(shù)據(jù),這樣才對數(shù)據(jù)的學(xué)習(xí)才夠全面。圖2.12是對圖2.11中的數(shù)據(jù)進(jìn)行填充后的情況。填充的方法就是在輸入的高和寬兩側(cè)分別填充了0元素,再進(jìn)行卷積運(yùn)算。池化層可以非常有效地縮小矩陣的尺寸(主要減少矩陣的長和寬,一般不會(huì)減少矩陣深度),從而減少最后全連接層中的參數(shù)。使用池化層既可以加快計(jì)算速度也有防止過擬合問題的作用。與卷積層類似,池化層的前向傳播過程也是通過一個(gè)類似滑動(dòng)窗口的結(jié)構(gòu)完成的。不過池化層窗口中的計(jì)算不是節(jié)點(diǎn)的加權(quán)和,而是采用更加簡單的最大值或者平均值運(yùn)算。使用最大值操作的池化層被稱為最大池化層(maxpooling),這是使用最多的池化層結(jié)構(gòu)。使用平均值操作的池化層被稱為平均池化層(averagepooling)。圖2.12卷積運(yùn)算增加填充后的實(shí)例圖2.13是一個(gè)最大池化層的實(shí)例。可以看出,匯聚層在保持某些特征的同時(shí)迅速減小了入口的尺寸。最大池化層是從輸入矩陣的某個(gè)范圍中選擇最大元素以進(jìn)行保留。平均池化層是對輸入矩陣的一定范圍內(nèi)的數(shù)求平均值,然后保留;最小池化層轉(zhuǎn)換層包括選擇要保留的輸入矩陣中一定范圍內(nèi)的最小元素。這里要注意的是,池化層將每個(gè)輸入通道單獨(dú)分組,最終得到的輸出道通的數(shù)量與輸入導(dǎo)通的數(shù)量是相同的。池化層共有三個(gè)通用參數(shù):最大池化層,平均池化層和最小池化層。通常使用最大池層。池化層有兩個(gè)主要參數(shù),一個(gè)是池化層的形狀,另一個(gè)是池化層的步幅。例如,圖2.13中最大池化層的形狀大小為2×2,步幅為2。圖2.13最大池化層的實(shí)例經(jīng)過多輪卷積層和池化層的處理后,在CNN的最后一般由1到2個(gè)全連接層來給出最后的分類結(jié)果。經(jīng)過幾輪卷積和池化操作,可以認(rèn)為輸入數(shù)據(jù)中的信息已經(jīng)被抽象成了信息含量更高的特征。我們可以將卷積和池化看成自動(dòng)圖像提取的過程,在特征提取完后,仍然需要使用全連接層來完成分類任務(wù),一般情況下,全連接層的激活函數(shù)使用softmax。2.2.3長短時(shí)記憶網(wǎng)絡(luò)長短時(shí)記憶網(wǎng)絡(luò)(LongShort-TermMemory,LSTM)[23]是RNN的一個(gè)變種,它的出現(xiàn)解決了RNN網(wǎng)絡(luò)中存在的長期依賴問題,如圖2.14所示,原始RNN的隱藏層只有一個(gè)狀態(tài),即h,它對于短期的輸入非常敏感,而LSTM網(wǎng)絡(luò)中增加一個(gè)狀態(tài),即c,來保存長期的狀態(tài),新增狀態(tài)c被稱為單元狀態(tài)。cchhhhLSTMRNNLSTMRNN圖2.14RNN與LSTM將LSTM在某時(shí)刻t展開得到如圖2.15所示的結(jié)構(gòu)圖,LSTM的輸入有三個(gè):當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸出值xt、上一時(shí)刻LSTM的輸出值ht?1、以及上一時(shí)刻的單元狀態(tài)ct?1;LSTM的輸出有兩個(gè):當(dāng)前時(shí)刻LSTM輸出值ht、和當(dāng)前時(shí)刻的單元狀態(tài)xt。ct+1ct-1ct-2ctcccct+1ct-1ct-2ctccchhhhhtht+1ht-1ht-2hhtht+1ht-1ht-2hxtxt+1xt-1xtxt+1xt-1圖2.15t時(shí)刻LSTM結(jié)構(gòu)展開圖LSTM使用三個(gè)控制開關(guān)來控制長期狀態(tài)c。三個(gè)開關(guān)的作用如圖2.16所示,其中,第一個(gè)開關(guān),負(fù)責(zé)控制繼續(xù)保存長期狀態(tài)c;第二個(gè)開關(guān),負(fù)責(zé)控制把即時(shí)狀態(tài)輸入到長期狀態(tài)c;第三個(gè)開關(guān),負(fù)責(zé)控制是否把長期狀態(tài)c作為當(dāng)前的LSTM的輸出。htctct-1htctct-1上一時(shí)刻的長期狀態(tài)上一時(shí)刻的長期狀態(tài)當(dāng)前時(shí)刻的輸出當(dāng)前時(shí)刻的輸出c'tc't當(dāng)前時(shí)刻的即時(shí)狀態(tài)當(dāng)前時(shí)刻的即時(shí)狀態(tài)圖2.16長期狀態(tài)c的控制開關(guān)開關(guān)的算法實(shí)現(xiàn)用到了門的概念,門實(shí)際上就是一層全連接層,它的輸入是一個(gè)向量,輸出是一個(gè)0到1之間的實(shí)數(shù)向量。假設(shè)W是門的權(quán)重向量,b是偏置項(xiàng),那么門可以表示為:gx=σWx+b門的使用,就是用門的輸出向量按元素乘以我們需要控制的那個(gè)向量。因?yàn)殚T的輸出是0到1之間的實(shí)數(shù)向量,那么,當(dāng)門輸出為0時(shí),任何向量與之相乘都會(huì)得到0向量,這就相當(dāng)于啥都不能通過;輸出為1時(shí),任何向量與之相乘都不會(huì)有任何改變,這就相當(dāng)于啥都可以通過。因?yàn)棣遥ㄒ簿褪莝igmoid函數(shù))的值域是(0,1),所以門的狀態(tài)都是半開半閉的。圖2.17顯示了LSTM結(jié)構(gòu)中的各個(gè)門。圖2.17LSTM的核心結(jié)構(gòu)LSTM用兩個(gè)門來控制長期狀態(tài)c的內(nèi)容,一個(gè)是遺忘門(forgetgate),它決定了上一時(shí)刻的長期狀態(tài)ct?1有多少保留到當(dāng)前時(shí)刻ct,遺忘門ft按照公式(2.5)進(jìn)行運(yùn)算;另一個(gè)是輸入門(inputgate),它決定了當(dāng)前時(shí)刻網(wǎng)絡(luò)的輸入xt有多少保存到當(dāng)前狀態(tài)ct,輸出門it由公式(2.6)運(yùn)算得到。ft=σWfit=σWi?當(dāng)前輸入的單元狀態(tài)ctct'=tanhWc?當(dāng)前時(shí)刻的長期狀態(tài)ct,由公式(2.8)計(jì)算得到,它是由上一時(shí)刻的長期狀態(tài)ct?1按元素乘以遺忘門ft,再用當(dāng)前輸入的單元狀態(tài)ct'ct=ft°LSTM用輸出門(outputgate)來控制單元狀態(tài)ct有多少輸出到LSTM的當(dāng)前輸出值ht,輸出門由公式(2.9)計(jì)算得到,最終的輸出ht由公式(2.ot=σWo?ht?1ht=ot°tanhc2.3文本分類技術(shù)文本分類[24]任務(wù)的通常情況下的目標(biāo)就是找到一個(gè)能夠準(zhǔn)確地實(shí)現(xiàn)文本類型的映射函數(shù)。文本表示和映射函數(shù)是文本分類的核心問題。文本分類總的過程如圖2.18所示。圖2.18文本分類的過程2.3.1數(shù)據(jù)預(yù)處理數(shù)據(jù)的預(yù)處理[24]就是將原始語料格式化,便于后續(xù)的統(tǒng)一處理。數(shù)據(jù)的預(yù)處理包括數(shù)據(jù)清洗、分詞以及數(shù)據(jù)轉(zhuǎn)換。(1)數(shù)據(jù)清洗數(shù)據(jù)清清洗[24]的目的是排除非關(guān)鍵信息,盡可能減少非關(guān)鍵信息對構(gòu)建分類器模型的影響,在文本分類任務(wù)中數(shù)據(jù)清洗的常用的手段是把語料中的不需要的文本部分刪除掉,包括標(biāo)題,摘要,標(biāo)點(diǎn)符號(hào)等。除此之外,我們還需要將文本的編碼方式轉(zhuǎn)換為可識(shí)別的統(tǒng)一的編碼方式,對于中文文本來說,通常采用utf-8的方式進(jìn)行編碼。(2)分詞分詞[24]就是按照一定規(guī)則將文本切分成詞組,對于中文文本來說,分詞是文本處理的基礎(chǔ),分詞的準(zhǔn)確性影響著計(jì)算機(jī)識(shí)別語句含義的效果。中文分詞的研究工作,上世紀(jì)80年代就已經(jīng)開始了,先后有人提出了正向最大匹配法、逆向最大匹配法、雙向掃描匹配法、逐詞遍歷法等分詞方法。整體上來說,分詞方法可以分為基于規(guī)則和詞表的方法以及基于統(tǒng)計(jì)的方法兩大類。2.3.2詞向量方法完成對數(shù)據(jù)的預(yù)處理操作后,我們需要將文本轉(zhuǎn)換成為分類器模型可以識(shí)別的數(shù)值表示,借助向量空間用空間上的相似度表示語義的相似度,將文本內(nèi)容的處理轉(zhuǎn)化為了向量空間中的向量運(yùn)算。自然語言處理中,詞向量表示方法有one-hot編碼、詞嵌入等方法[25-26]。(1)one-hot編碼one-hot是一種基于詞袋模型的稀疏編碼形式,它將文本中含有的N個(gè)詞用長度為N的詞典進(jìn)行表示。one-hot編碼得到的詞向量只有一個(gè)維度的值為1,其他值均為0,編碼形式如圖2.19所示。圖2.19one-hot編碼示例(2)詞嵌入方法詞嵌入(wordembeding)是基于深度學(xué)習(xí)的詞向量模型[26],它通過隱藏層將one-hot編碼映射到維度較低的向量空間,利用每個(gè)單詞在文本中的語義特征進(jìn)行編碼,這樣詞向量在特征空間上的距離也就代表了詞義之間的相似性。目前word2vec[26]是比較主流的一種詞嵌入方法,后續(xù)的實(shí)驗(yàn)我也會(huì)采用這種方法對文本進(jìn)行向量化表示。Word2vec有兩種計(jì)算方法:CBOW(ContinuousBagofWords,CBOW)和Skip-gram[27]。如圖2.20所示,對于t處的詞W(t),CBOW是從上下文單詞來推測目標(biāo)單詞。公式(2.11)計(jì)算了目標(biāo)詞的概率分布,其中,U為權(quán)值矩陣,Softmax是激活函數(shù)。公式(2.12)為CBOW的交叉熵?fù)p失函數(shù)。(2.11)(2.11)J=1Tt=1T輸出投影層輸入輸出投影層輸入W(t-2)W(t-2)SUMW(t-1SUMW(t-1)W(t)W(t)W(t+1)W(t+1)W(t+W(t+2)圖2.20CBOW模型Skip-gram模型與CBOW模型恰好相反,它通過一個(gè)背景詞來預(yù)測周圍的詞,其結(jié)構(gòu)如圖2.21。Skip-gram模型在輸入的時(shí)候給出了背景詞的向量,按照公式(2.13),最大化背景詞的輸出概率就可以得到周圍詞的概率分布,其中n為訓(xùn)練窗口的大小。預(yù)測詞的概率分布通過公式(2.14)運(yùn)算得到,其中W(t)是背景詞,W(t+j)是目標(biāo)詞,W是詞典中單詞總數(shù)。1Tt=1T?n≤j≤nlogPPWt+jWt=exp(W(t-2)輸出投影層輸入W(t-2)輸出投影層輸入W(t-1)SUMW(t-1)SUMW(t)W(t)W(t+1)W(t+1)W(t+2)W(t+2)圖2.21Skip-gram模型2.3.3垃圾郵件文本分類器的構(gòu)造方法基于文本對垃圾郵件進(jìn)行分類,先后出現(xiàn)了基于規(guī)則和基于統(tǒng)計(jì)的方法,我們常見的分類方法有:決策樹、貝葉斯、K最近鄰、支持向量機(jī)等[28-29]。(1)決策樹決策樹(DecisionTree)方法首先采用自到下的遞歸方法構(gòu)造出一顆二叉樹也叫做決策樹,然后利用信息增益的大小作為標(biāo)準(zhǔn)來選擇樹中各個(gè)節(jié)點(diǎn)的測試屬性。決策樹生成后,我們可以直接從決策樹中提取出相應(yīng)的規(guī)則,通常情況下,每條從根到葉的路徑都對應(yīng)了一條規(guī)則。決策樹方法具有白盒的優(yōu)點(diǎn),它的決策過程可以看作是完全透明的,能夠?qū)Ω鱾€(gè)結(jié)論做出明確的解釋。(2)貝葉斯貝葉斯(Bayes)方法是利用文本中的詞匯與文本所屬類別的聯(lián)合概率的數(shù)值來估計(jì)這個(gè)文檔屬于某個(gè)類別的概率,這種估計(jì)方法是基于先驗(yàn)概率和類別條件概率理論的。貝葉斯方法正確工作的前提條件是文檔中的各個(gè)詞是相互獨(dú)立的,而實(shí)際上,這種條件獨(dú)立的假設(shè)是難以成立的,因此這種分類方法的效果永遠(yuǎn)不可能實(shí)現(xiàn)理論上的最優(yōu)值。正因于此,現(xiàn)在的一些研究正在嘗試通過不完全樸素貝葉斯方法來對文本進(jìn)行分類,這種方法適當(dāng)放寬了樸素貝葉斯方法的獨(dú)立條件,適當(dāng)?shù)乜紤]了屬性間合理的語義關(guān)聯(lián),這種對于語義關(guān)聯(lián)性的考慮使得模型更加符合實(shí)際的情景,因此在垃圾郵件分類問題上取得了更好的表現(xiàn)。(3)K最近鄰K最近鄰方法(K-NearestNeighbor,KNN)思想非常簡單直觀易于理解。它的核心思想可以理解成物以類聚人以群分。即相似的人和物會(huì)相聚在一起。KNN算法屬于監(jiān)督學(xué)習(xí),監(jiān)督學(xué)習(xí)所需要做的是在給定一部分帶有特征和標(biāo)簽兩部分?jǐn)?shù)據(jù)的情況下,根據(jù)這一部分的特征和數(shù)據(jù)建立一個(gè)模型,之后當(dāng)我們輸入新的特征時(shí),這個(gè)模型可以返回這種特征所應(yīng)該貼上的標(biāo)簽。KNN算法判定待測數(shù)據(jù)屬于哪個(gè)類別的依據(jù)就是根據(jù)離它最近的K個(gè)點(diǎn)的類別,待預(yù)測數(shù)據(jù)就屬于那個(gè)點(diǎn)最多的類別。這很深刻的體現(xiàn)了“近朱者赤,近墨者黑”的思想。KNN算法在測試階段是看離待測點(diǎn)最近的K個(gè)點(diǎn)的類別比分,所以不管訓(xùn)練數(shù)據(jù)中有多少種類別,都可以通過類別比分來確定待測點(diǎn)類別。當(dāng)然會(huì)有類別比分打平的情況,這種情況下可以看待測點(diǎn)離哪個(gè)類別最近,選最近的類別作為待測點(diǎn)的預(yù)測類別。當(dāng)然KNN算法的缺點(diǎn)也很明顯,就是當(dāng)訓(xùn)練集數(shù)據(jù)量比較大時(shí),預(yù)測過程的效率很低。這是因?yàn)镵NN算法在預(yù)測過程中需要計(jì)算待測點(diǎn)與訓(xùn)練集中所有點(diǎn)的距離并排序??上攵?dāng)數(shù)據(jù)量比較大的時(shí)候,效率會(huì)奇低,對于時(shí)間敏感的業(yè)務(wù)不太適合。(4)支持向量機(jī)方法支持向量機(jī)方法(SupportVectorMachine,SVM),興起于20世紀(jì)90年代,它的理論基礎(chǔ)包括構(gòu)風(fēng)險(xiǎn)最小化原理和Vapnik-chervenkis維數(shù)理論,理論基礎(chǔ)非常的扎實(shí)。在樣本信息有限的情況下,SVM可以在兼顧平均模型復(fù)雜度和學(xué)習(xí)能力,力爭以最小的成本獲得最佳的學(xué)習(xí)能力。SVM首先通過訓(xùn)練來找到分類能力較強(qiáng)的支持向量,然后利用這些向量構(gòu)造出一個(gè)超平面。不論是要將訓(xùn)練集中的數(shù)據(jù)進(jìn)行分離,還是要將分類之間的間隔進(jìn)行最大化,都可以利用這個(gè)超平面來進(jìn)行,SVM方法也因此被叫做最大邊緣(MaximumMargin)方法。2.4本章小結(jié)本章從電子郵件的工作原理出發(fā),介紹了郵件協(xié)議以及收發(fā)過程,以及根據(jù)郵件的工作原理設(shè)計(jì)出的各種垃圾郵件過濾方法。之后重點(diǎn)介紹了深度學(xué)習(xí)的網(wǎng)絡(luò)結(jié)構(gòu)的算法原理和文本分類需要的各種技術(shù)。文本數(shù)據(jù)的預(yù)處理主要包括數(shù)據(jù)清洗和分詞,經(jīng)過預(yù)處理的文本還需要通過詞向量方法轉(zhuǎn)化為可以輸入模型的數(shù)據(jù),在下一章中將會(huì)用本章介紹的word2vec模型實(shí)現(xiàn)詞向量轉(zhuǎn)換,構(gòu)造出訓(xùn)練以及測試數(shù)據(jù)集。
3基于深度學(xué)習(xí)的垃圾郵件分類方法的實(shí)現(xiàn)在上一章中已經(jīng)介紹了深度學(xué)習(xí)中常用的CNN網(wǎng)絡(luò)和LSTM網(wǎng)絡(luò)的原理和特點(diǎn),本章將會(huì)分別利用這兩種網(wǎng)絡(luò)來構(gòu)建垃圾郵件分類器模型。使用深度學(xué)習(xí)方法對垃圾郵件進(jìn)行分類的一般流程如圖3.1所示。訓(xùn)練并保存網(wǎng)絡(luò)模型構(gòu)建神經(jīng)網(wǎng)絡(luò)(CNN、LSTM)訓(xùn)練并保存網(wǎng)絡(luò)模型構(gòu)建神經(jīng)網(wǎng)絡(luò)(CNN、LSTM)文本處理郵件文本調(diào)用保存的調(diào)用保存的模型完成分類圖3.1基于深度學(xué)習(xí)的垃圾郵件分類過程3.1文本處理對于中文郵件文本,首先在按行讀入(數(shù)據(jù)每一行為一封郵件),同時(shí)進(jìn)行數(shù)據(jù)清洗,去掉其他非中文字符及標(biāo)點(diǎn)符號(hào)等,經(jīng)數(shù)據(jù)清洗后的文本格式如圖3.3,文本中只保存了中文字符。圖3.2清洗后的文本格式然后進(jìn)行分詞,并將分詞后的結(jié)果保存在列表中,采用jieba分詞工具對清洗后的文本進(jìn)行分詞,jieba分詞有三種不同的分詞模式:精確模式、全模式和搜索引擎模式,采用不同的模式分詞效果也不同,以“今天天氣真好”為例,采用不同的分詞模式結(jié)果如圖3.3所示。對清洗后的郵件文本采取精確分詞模式來進(jìn)行分詞,分詞后的結(jié)果如圖3.4所示。圖3.3不同模式下jieba分詞結(jié)果圖3.4分詞后的文本格式接著之后就是構(gòu)造完整的數(shù)據(jù)集以及標(biāo)簽,構(gòu)造標(biāo)簽時(shí)我們分別訪問垃圾郵件和正常郵件的文本,將其中的郵件文本取出,每封郵件作為列表的一個(gè)元素,會(huì)分別得到一個(gè)垃圾郵件的列表和一個(gè)正常郵件的列表,分別創(chuàng)建對應(yīng)的標(biāo)簽列表,然后將正常郵件列表與垃圾郵件列表連接起來,兩個(gè)標(biāo)簽列表按同樣方式連接,最終返回兩個(gè)數(shù)據(jù)列表,一個(gè)是數(shù)據(jù)集詞匯列表x_text,以一封正常郵件和一封垃圾郵件為例,得到的x_text如圖3.5所示,另一個(gè)是標(biāo)簽列表y,如圖3.6所示,其中[0,1]標(biāo)簽代表正常郵件,[1,0]標(biāo)簽代表垃圾郵件。圖3.5x_text的文本格式圖3.6標(biāo)簽列表由于每封郵件的詞匯數(shù)量是不同的,我們還需要對得到的樣本用‘UNK’來填充,進(jìn)行對齊操作,將其統(tǒng)一成固定的長度。當(dāng)我們選定固定長度為50后,對齊操作完成后,得到的數(shù)據(jù)格式如圖3.7所示。圖3.7對齊后的文本格式最后利用word2vec模型進(jìn)行樣本的詞向量表示,將每個(gè)樣本用對應(yīng)詞的詞向量堆疊的形式代替。這里我們指定詞向量的訓(xùn)練維度為50,詞向量化的結(jié)果如圖3.8所示,每一個(gè)詞由一個(gè)50維的向量表示。圖3.8詞向量的數(shù)據(jù)格式3.2基于CNN的郵件分類方法提起CNN我們第一時(shí)間想到的可能是圖像處理,不同于圖像問題輸入為像素,文本分類的輸入是文本構(gòu)成的矩陣,矩陣的每一行就是一個(gè)詞或字符。TextCNN[30]是利用卷積神經(jīng)網(wǎng)絡(luò)對文本進(jìn)行分類的算法,一般結(jié)構(gòu)如圖3.12所示,可以分為輸入層,卷積層、池化層和全連接層。接下來,我們通過構(gòu)建一個(gè)TextCNN來對郵件文本進(jìn)行特征提取與分類。圖3.9TextCNN的網(wǎng)絡(luò)結(jié)構(gòu)3.2.1網(wǎng)絡(luò)的實(shí)現(xiàn)用于垃圾郵件文本分類的CNN網(wǎng)絡(luò)的輸入層輸入的是詞向量,文本通過數(shù)據(jù)清洗、分詞、對齊等操作后,再調(diào)用word2vec模型即可將文本轉(zhuǎn)化為詞向量,作為輸入的詞向量的形狀為(n,100,50)。接下來是3個(gè)卷積層,分別使用尺寸為3、4、5的窗口大小在嵌入矩陣上做卷積操作。然后是步幅為1的最大池化層。然后使用dropout層,對網(wǎng)絡(luò)性能進(jìn)行優(yōu)化。最后為全連接層,使用softmax函數(shù)得到預(yù)測標(biāo)簽。圖3.10為CNN網(wǎng)絡(luò)的結(jié)構(gòu)圖。全連接層全連接層dropout層dropout層最大池化層最大池化層最大池化層最大池化層最大池化層最大池化層4×4卷積層5×5卷積層3×3卷積層4×4卷積層5×5卷積層3×3卷積層輸入層輸入層圖3.10CNN網(wǎng)絡(luò)結(jié)構(gòu)圖3.2.2模型的訓(xùn)練保存及調(diào)用模型的訓(xùn)練過程,就是調(diào)用定義好的CNN網(wǎng)絡(luò),并向網(wǎng)絡(luò)中傳遞合適的超參數(shù),以獲得更好的分類效果,訓(xùn)練過程中不斷地更新網(wǎng)絡(luò)中的參數(shù),tensorflow框架下進(jìn)行訓(xùn)練時(shí)必須通過withtf.Graph().as_default()語句定義一張計(jì)算圖,然后通過withsess.as_default()語句聲明會(huì)話定義訓(xùn)練過程,傳遞訓(xùn)練參數(shù)。在tensorflow架構(gòu)下保存模型就是保存訓(xùn)練時(shí)的計(jì)算圖,以及網(wǎng)絡(luò)中的權(quán)重矩陣和偏置,我們可以定義每訓(xùn)練1000次保存一次模型,每次保存,會(huì)生成3個(gè)文件:“.meta”文件保存了當(dāng)前圖結(jié)構(gòu),“.data”文件保存了當(dāng)前參數(shù)名和值,“.index”文件保存了輔助索引信息,如圖3.11所示,其中的checkpoint文件保存了最近一次保存的模型的信息,模型保存成功后就可以通過這三個(gè)文件來調(diào)用模型。調(diào)用CNN網(wǎng)絡(luò)模型前也要對測試集文本數(shù)據(jù)進(jìn)行預(yù)處理,將其轉(zhuǎn)化為詞向量的形式,調(diào)用模型時(shí)首先要通過tf.train.import_meta_graph('x.meta')語句加載保存的計(jì)算圖即meta文件,然后通過saver.restore(sess,'x')語句加載保存的訓(xùn)練參數(shù),之后直接將詞向量化后的測試集數(shù)據(jù)傳入模型即可進(jìn)行測試。圖3.11模型保存生成的文件3.2.3參數(shù)調(diào)試網(wǎng)絡(luò)的參數(shù),對網(wǎng)絡(luò)的性能有很大的影響,通過參數(shù)調(diào)試,可以將網(wǎng)絡(luò)調(diào)整到最好的狀態(tài),取得最佳的實(shí)驗(yàn)效果。超參數(shù)是使用網(wǎng)絡(luò)進(jìn)行訓(xùn)練之前,我們自己設(shè)定的參數(shù),CNN中的超參數(shù)主要包括窗口大小以及dropout值等。下面會(huì)依次對學(xué)習(xí)率、迭代次數(shù)、窗口大小、droupout值進(jìn)行調(diào)試。設(shè)置不同的學(xué)習(xí)率,迭代次數(shù)以及初始化方式,進(jìn)行多輪訓(xùn)練,依次記錄相應(yīng)的分類準(zhǔn)確率,可以得到如圖3.12的結(jié)果。其中,lr表示LearningRate即學(xué)習(xí)率;te表示TrainingEpochs即訓(xùn)練迭代次數(shù);z表示tf.zeros()即將變量初始化為0;t表示tf.truncated_normal()即將變量初始化為標(biāo)準(zhǔn)截?cái)嗾龖B(tài)分布的隨機(jī)數(shù)。通過觀察可知,當(dāng)學(xué)習(xí)率為1,迭代次數(shù)為50,并用truncated_normal做初始化,準(zhǔn)確率最高。圖3.12不同學(xué)習(xí)率、迭代次數(shù)及初始化方式的準(zhǔn)確率對比由于中文中的一個(gè)詞多是由2、3、4或者5個(gè)字組成的,所以我們在設(shè)置窗口大小時(shí)可以在這些值的附近進(jìn)行選擇,通過設(shè)置不同的窗口大小對模型進(jìn)行訓(xùn)練,可以得到圖3.13,觀察可知,當(dāng)我們把窗口大小設(shè)置為3、4、5時(shí)準(zhǔn)確率最高。圖3.13窗口大小對準(zhǔn)確率的影響Dropout能夠改善網(wǎng)絡(luò)的性能,防止過擬合,提高網(wǎng)絡(luò)模型的泛化能力。dropout的不同取值對網(wǎng)絡(luò)的準(zhǔn)確率也有影響,保持其他參數(shù)不變,只改變droupout值的大小,進(jìn)行多次訓(xùn)練,可以得到dropout取值與準(zhǔn)確率的變化關(guān)系,如圖3.14所示,觀察可知,當(dāng)我們把dropout值設(shè)為0.5時(shí)準(zhǔn)確率最高。圖3.14dropout值對準(zhǔn)確率的影響3.3基于LSTM的郵件分類方法LSTM網(wǎng)絡(luò)在處理與序列分類有關(guān)問題上具有很大的優(yōu)勢,在情感分析領(lǐng)域取得了很好的效果,但LSTM網(wǎng)絡(luò)比較復(fù)雜,通常會(huì)比其他模型慢。下面,將利用LSTM網(wǎng)絡(luò)來對垃圾郵件進(jìn)行分類。3.3.1網(wǎng)絡(luò)的實(shí)現(xiàn)用于垃圾郵件分類的LSTM網(wǎng)絡(luò)的網(wǎng)絡(luò),使用tensorflow自帶的rnn模型,基本單元lstm_cell是通過tensorflow中LSTM網(wǎng)絡(luò)的基本單元BasicLSTMCell的實(shí)例化來進(jìn)行定義,需要指定embeddingsize、sequencelength以及dropout的值。還需要聲明LSTM循環(huán)單元中各門的計(jì)算參數(shù)w矩陣與偏置量b,定義LSTM網(wǎng)絡(luò)前向傳播的計(jì)算邏輯,計(jì)算遺忘門、輸入門、輸出門的計(jì)算結(jié)果。分別定義一層前向傳播的網(wǎng)絡(luò)和反向傳播網(wǎng)路。定義網(wǎng)絡(luò)的損失函數(shù)和優(yōu)化方法,損失函數(shù)使用的是交叉熵函數(shù)cross_entropy,優(yōu)化方法使用的是Adagrad。整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖3.15所示。維度:256長度:文本長度維度:256長度:文本長度維度:300文本向量表示分詞原始文本文本向量表示分詞原始文本詞向量表示詞向量表示分類結(jié)果隱藏層隱藏層分類結(jié)果隱藏層隱藏層128維降為1維256維降為128維128維降為1維256維降為128維圖3.15LSTM分類過程3.3.2模型的訓(xùn)練保存及調(diào)用LSTM網(wǎng)絡(luò)的訓(xùn)練保存和調(diào)用與CNN相似,訓(xùn)練模型之前首先定義計(jì)算圖,保存模型時(shí)要先實(shí)例化一個(gè)saver對象,定義好模型的保存頻率,模型調(diào)用時(shí),要先加載計(jì)算圖,再加載保存的參數(shù)。3.3.3參數(shù)調(diào)試LSTM網(wǎng)絡(luò)中的參數(shù)也有很多,其中對網(wǎng)絡(luò)性能影響較大的有LSTM單元中的單元數(shù)量以及訓(xùn)練批次的大小,接下來對這兩個(gè)參數(shù)進(jìn)行調(diào)試。保持其他情況不變,改變單元數(shù)量分別進(jìn)行訓(xùn)練,觀察準(zhǔn)確率的變化,得到了圖3.16,由圖可知,LSTM單元中的單元數(shù)對準(zhǔn)確率的影響大致是:當(dāng)單元數(shù)量較少時(shí)準(zhǔn)確率隨著單元數(shù)的增加而增大,但當(dāng)單元數(shù)超過某一數(shù)量時(shí),準(zhǔn)確率隨著單元數(shù)的增大而逐漸變低。從我們測試的幾組單元數(shù)來看,當(dāng)單元數(shù)為96時(shí)準(zhǔn)確率最高,所以我們可以把單元數(shù)設(shè)為96。圖3.16單元數(shù)對準(zhǔn)確率的影響批次的大小會(huì)影響收斂速度,其他情況相同時(shí),采用不同批次大小對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,觀察準(zhǔn)確率的變化,可以得到圖3.17,可以看到批次大小對準(zhǔn)確率的影響并沒有很大,且呈現(xiàn)出了一定的震蕩性,在進(jìn)行測試的幾個(gè)數(shù)值里,當(dāng)批次大小為20時(shí)準(zhǔn)確率最高,可以把網(wǎng)絡(luò)的批次大小設(shè)置成20。圖3.17批次大小對準(zhǔn)確率的影響3.4實(shí)驗(yàn)結(jié)果分析前面我分別構(gòu)建了CNN網(wǎng)絡(luò)模型和LSTM網(wǎng)絡(luò)模型來對垃圾郵件文本進(jìn)行分類,模型的訓(xùn)練過程均采用了同一個(gè)數(shù)據(jù)集,下面我們將會(huì)比較分析這兩種網(wǎng)絡(luò)模型的分類效果。3.4.1數(shù)據(jù)集介紹數(shù)據(jù)集來源于國際文本檢索會(huì)議提供的公開垃圾郵件語料庫trec06c,其中含有正常郵件21766份,垃圾郵件42854份,這些郵件均來自于真實(shí)郵件,保存了原有的格式和內(nèi)容,如圖3.18所示。圖3.18trec06c中的文本形式trec06c語料庫中包含三個(gè)文件夾,其中data里是數(shù)據(jù)文件,full里是index文件,說明了哪個(gè)路徑的文件是什么類型,格式如圖3.19所示。圖3.19index文件內(nèi)容按照index文件中的文件類型與路徑的對應(yīng)關(guān)系,我們可以把spam郵件和ham郵件的文本內(nèi)容分別提取到兩個(gè)文本文檔中,并將一封郵件的內(nèi)容存成一行,可以得到如圖3.20所示的ham郵件文檔和圖3.21所示的spam郵件文檔。任意選取取其中的5153封正常郵件以及5239封垃圾郵件作為訓(xùn)練數(shù)據(jù),其中的十分之一會(huì)用于訓(xùn)練過程中的驗(yàn)證集,另取1149封正常正常郵件以及1074封垃圾郵件作為測試集,用于測試訓(xùn)練好的模型的性能。圖3.20ham郵件文本內(nèi)容圖3.21spam郵件文本內(nèi)容3.4.2評價(jià)標(biāo)準(zhǔn)使用網(wǎng)絡(luò)的準(zhǔn)確率作為評價(jià)標(biāo)準(zhǔn),準(zhǔn)確率是指正確分類的郵件數(shù)量占郵件總數(shù)的比例。它是模型工作是否有效性,預(yù)測結(jié)果是否可信的最直觀的數(shù)據(jù),也是評估一個(gè)模型是否可信的最可靠的依據(jù)。表3.1網(wǎng)絡(luò)模型的分類情況實(shí)際是垃圾郵件數(shù)實(shí)際是正常郵件數(shù)被分類為垃圾郵件數(shù)AB被分類為正常郵件數(shù)CD如表3.1所示,此時(shí),總郵件數(shù)N=A+B+C+D,則分類準(zhǔn)確率accuracy=(A+D)/N,我們在網(wǎng)絡(luò)訓(xùn)練過程中,模型的準(zhǔn)確率也是這么算出來的。3.4.3實(shí)驗(yàn)結(jié)果用于垃圾郵件分類的CNN以及LSTM網(wǎng)絡(luò)是在tensorflow框架下搭建,在訓(xùn)練過程中可以利用tensorflow自帶的可視化工具tensorboard來觀察網(wǎng)絡(luò)模型的訓(xùn)練情況。圖3.22和3.23分別是CNN和LSTM隨著訓(xùn)練次數(shù)的增加,準(zhǔn)確率的變化情況。圖3.22CNN訓(xùn)練過程中的準(zhǔn)確率變化準(zhǔn)確率準(zhǔn)確率圖3.23LSTM訓(xùn)練過程中的準(zhǔn)確率變化通過圖3.22和3.23我們可以知道,當(dāng)訓(xùn)練次數(shù)達(dá)到3000次時(shí),模型基本上就達(dá)到了收斂,所以,可以考慮每訓(xùn)練500次保存一次模型,保存前3000次的訓(xùn)練模型,然后用測試集,分別測試模型分類的準(zhǔn)確性。在測試集上調(diào)用保存好的模型,記錄模型運(yùn)行的準(zhǔn)確性,可以的都表3.2所示的結(jié)果。從表3.2中,我們可以看到與LSTM網(wǎng)絡(luò)比起來,CNN在垃圾郵件分類問題上表現(xiàn)得更好,準(zhǔn)確率更高,隨著訓(xùn)練輪次的增加CNN網(wǎng)絡(luò)的最終準(zhǔn)確率將會(huì)達(dá)到96.7%,而LSTM網(wǎng)絡(luò)的準(zhǔn)確率會(huì)達(dá)到93.1%。我認(rèn)為LSTM的準(zhǔn)確率不如CNN主要是:一方面,LSTM網(wǎng)絡(luò)對處理有時(shí)序性的文本具有優(yōu)勢,而郵件文時(shí)序性并不明顯,這種情況下,LSTM就不具有優(yōu)勢了;另一方面,CNN網(wǎng)絡(luò)在卷積層使用了多個(gè)卷積核大小對文本進(jìn)行特征提取,抓住了文本的多個(gè)不同的n-gram的特征,獲取的信息更加全面,因此CNN使用起來,分類效果更好。表3.2網(wǎng)絡(luò)模型的分類準(zhǔn)確率訓(xùn)練次數(shù)CNN模型準(zhǔn)確率LSTM模型準(zhǔn)確率5000.9330.86110000.9510.88515000.9640.90420000.9670.91825000.9670.92530000.9670.9283.5本章小結(jié)本章利用深度學(xué)習(xí)方法實(shí)現(xiàn)了對垃圾郵件的文本分類,第一步工作是對文本進(jìn)行預(yù)處理以及向量化表示,經(jīng)過數(shù)據(jù)清洗、分詞、貼標(biāo)簽、對齊等操作后調(diào)用gensim模塊的word2vec模型對文本進(jìn)行向量化表示,這一步之后,文本文檔轉(zhuǎn)化為了向量數(shù)據(jù),可以直接作為網(wǎng)絡(luò)模型的輸入。接著分別構(gòu)建了CNN和LSTM網(wǎng)絡(luò)對郵件進(jìn)行特征提取并分類,對于網(wǎng)絡(luò)中的參數(shù)在一定范圍內(nèi)進(jìn)行了參數(shù)的優(yōu)化,最終調(diào)用了保存的模型對這兩種網(wǎng)絡(luò)分類的準(zhǔn)確性做了測試,發(fā)現(xiàn)CNN網(wǎng)絡(luò)的準(zhǔn)確率更高。
4垃圾郵件分類系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)上一章中分別構(gòu)建了CNN和LSTM網(wǎng)絡(luò)來對郵件文本進(jìn)行分類,實(shí)現(xiàn)兩種網(wǎng)絡(luò)模型的訓(xùn)練、保存和調(diào)用,最后分析結(jié)果發(fā)現(xiàn)CNN網(wǎng)絡(luò)的分類效果更好,因此,接下來會(huì)調(diào)用一個(gè)訓(xùn)練好的CNN模型來完成一個(gè)簡單的基于郵件文本的垃圾郵件分類系統(tǒng)。4.1系統(tǒng)框架本系統(tǒng)可以分為數(shù)據(jù)預(yù)處理與向量化表示、CNN網(wǎng)絡(luò)模型的加載與調(diào)用、UI界面運(yùn)行3個(gè)模塊。系統(tǒng)的工作流程如圖4.1所示。點(diǎn)擊檢測調(diào)用CNN網(wǎng)絡(luò)模型進(jìn)行預(yù)測郵件文本預(yù)處理及向量化表示將待檢測文本點(diǎn)擊檢測調(diào)用CNN網(wǎng)絡(luò)模型進(jìn)行預(yù)測郵件文本預(yù)處理及向量化表示將待檢測文本輸入檢測框點(diǎn)擊清除清除所有內(nèi)容將結(jié)果輸出到UI界面將預(yù)測標(biāo)簽轉(zhuǎn)為郵件類型點(diǎn)擊清除清除所有內(nèi)容將結(jié)果輸出到UI界面將預(yù)測標(biāo)簽轉(zhuǎn)為郵件類型圖4.1系統(tǒng)框架4.2環(huán)境配置本次實(shí)驗(yàn)需要進(jìn)行一定的環(huán)境配置,主要是深度學(xué)習(xí)的一些開源工具的安裝與配置,所用到的工具及其版本信息如表4.1所示。表4.1實(shí)驗(yàn)環(huán)境及配置工具名稱版本信息CPUAMD銳龍53500U操作系統(tǒng)Win10編輯器Pycharm2020編程語言環(huán)境配置工具Python3.6Anaconda32020.07深度學(xué)習(xí)框架Tensorflow1.15自然語言處理工具Gensim3.7.0分詞工具Jieba0.42.1界面設(shè)計(jì)工具PyQt5.1Anaconda的下載安裝首先我們需要安裝一個(gè)python的代碼編輯器,我選擇的是pycharm,可以在官網(wǎng)選擇合適的版本進(jìn)行下載,下載好安裝包后按照提示選擇合適的安裝路徑進(jìn)行安裝。安裝完成后我們就可以通過pycharm來編輯python代碼了,但此時(shí)缺少了python解釋器,代碼是無法運(yùn)行的。這就需要安裝anaconda3來解決,anaconda是python的發(fā)行版,集成了很多python的第三方庫,可以幫助我們更加方便地管理配置出需要的python運(yùn)行環(huán)境。首先從清華大學(xué)的鏡像網(wǎng)站下載合適的版本(官網(wǎng)下載速度很慢),我下載的是anaconda3-2020.07-windows-x86_64本,如圖4.2所示。圖4.2選擇合適的Anaconda版本下載完成后依據(jù)安裝提示選擇合適的路徑進(jìn)行安裝,注意安裝路徑中不能含有空格及中文字符,路徑名盡量簡潔。安裝完成后,配置環(huán)境變量,右鍵單擊此電腦,選擇屬性,進(jìn)入高級(jí)系統(tǒng)設(shè)置,選擇環(huán)境變量,選擇path變量,點(diǎn)擊編輯,新建一個(gè)路徑,輸入剛剛的安裝路徑即可,如圖4.3所示。圖4.3Anaconda環(huán)境變量配置配置完成后可以打開命令提示符,通過conda版本查看命令來驗(yàn)證安裝是否成功,安裝成功時(shí)將會(huì)出現(xiàn)版本信息,如圖4.4所示。圖4.4成功安裝Anaconda4.2.2深度學(xué)習(xí)各種包的安裝Anaconda安裝完成后,可以先創(chuàng)建一個(gè)虛擬python環(huán)境,如圖3.6所示,創(chuàng)建了一個(gè)版本為3.6的python虛擬環(huán)境,并將這個(gè)虛擬環(huán)境的名字命名為py36。圖4.5python虛擬環(huán)境的創(chuàng)建創(chuàng)建完成后,可以通過conda命令查看已創(chuàng)建的虛擬環(huán)境,如圖4.6所示,可以看到,此時(shí)py36環(huán)境已創(chuàng)建成功。圖4.6虛擬環(huán)境查看下面需要激活py36函數(shù),如圖4.7所示,然后就可以使用pip或者conda命令在這個(gè)虛擬環(huán)境中安裝各種深度學(xué)習(xí)需要用到的包了。圖4.7環(huán)境激活、包安裝命令仿照上面的命令安裝tensorflow、gensim等工具包,安裝完成后可以查看所有已安裝工具,圖4.8所示為已成功安裝的部分工具包。圖4.8查看已成功安裝的工具包4.2.3PyQt5的安裝PyQt5的安裝與上面提到的深度學(xué)習(xí)工具包的安裝類似,都可以通過pip命令直接安裝,如圖4.9所示。圖4.9PyQt5的安裝然后為了在pycharm中使用PyQt5的工具QTDesigner,需要在pycharm中進(jìn)行一些配置,如圖4.10所示。圖4.10QTDesigner的配置使用QTDesigner可以直接通過拖動(dòng)部件進(jìn)行界面設(shè)計(jì),生成的qt文件可以通過pyuic工具轉(zhuǎn)化為可運(yùn)行的python代碼,所以還需要對pyuic進(jìn)行配置,配置過程如圖4.11所示。圖4.11pyuic的配置4.3系統(tǒng)實(shí)現(xiàn)本系統(tǒng)的功能是在界面內(nèi)輸入垃圾郵件文本的內(nèi)容,根據(jù)文本內(nèi)容判斷是否為垃圾郵件,并在界面中輸出判斷結(jié)果。實(shí)現(xiàn)的核心是一個(gè)做標(biāo)簽預(yù)測的函數(shù),函數(shù)的輸入為一個(gè)字符串,即一封郵件的文本內(nèi)容,首先需要對這個(gè)字符串進(jìn)行數(shù)據(jù)清洗、詞向量化表示,將文本轉(zhuǎn)化為CNN網(wǎng)絡(luò)模型的輸入向量。然后調(diào)用之前保存的CNN網(wǎng)絡(luò)模型對這個(gè)向量做出預(yù)測,判斷預(yù)測出的標(biāo)簽,若標(biāo)簽為[1,0]則這封郵件為垃圾郵件,若標(biāo)簽為[0,1]則郵件為正常郵件,最后將判斷結(jié)果打印輸出。4.4效果展示最終的效果就是通過UI界面,輸入正常郵件文本內(nèi)容,點(diǎn)擊檢測后,會(huì)在檢測結(jié)果中輸出“正常郵件“字樣,如圖4.12所示。當(dāng)輸入的文本為垃圾郵件時(shí),會(huì)在檢測結(jié)果中輸出“垃圾郵件”字樣,如圖4.13所示。4.12正常郵件檢測結(jié)果4.13垃圾
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高三教師年度教學(xué)工作總結(jié)范文9篇
- 企業(yè)人力資源管理制度及執(zhí)行指南
- (2025年)毒麻藥品、精神藥品、毒性藥品管理制度考試題附答案
- 企業(yè)生產(chǎn)經(jīng)營守信保證承諾書4篇
- 企業(yè)安全檢查表全場景適用標(biāo)準(zhǔn)化安全管理制度
- 智能科技研發(fā)效率承諾書范文5篇
- 公用設(shè)施維護(hù)維修保證承諾書4篇
- 消防安全責(zé)任與措施落實(shí)承諾書范文4篇
- 嚴(yán)控生產(chǎn)安全安全操作承諾書5篇范文
- 大數(shù)據(jù)在工程管理中的應(yīng)用-洞察及研究
- 2026長治日報(bào)社工作人員招聘勞務(wù)派遣人員5人參考題庫完美版
- 2025年經(jīng)營分析報(bào)告
- 慢性心衰心肌代謝記憶的干細(xì)胞干預(yù)新策略
- 2026年孝昌縣供水有限公司公開招聘正式員工備考題庫有完整答案詳解
- 中建八局項(xiàng)目如何落實(shí)鋼筋精細(xì)化管理
- 鋼結(jié)構(gòu)除銹后油漆施工方案
- 安徽省江南十校2025-2026學(xué)年高一上學(xué)期12月聯(lián)考生物(含答案)
- 杭州市臨平區(qū)2025年網(wǎng)格員招聘筆試必考題庫(含答案)
- 總裁思維培訓(xùn)課件
- 電梯更換配件協(xié)議書
- 中海大海洋地質(zhì)學(xué)課件第12章海底礦產(chǎn)資源-1第二十二講
評論
0/150
提交評論