付麗梅
(大連東軟信息學(xué)院軟件工程系,遼寧 大連 116023)
智能手機(jī)的高速發(fā)展使各種小視頻成為人們生活中的重要娛樂手段,隨之而來的視頻推薦已成為當(dāng)前視頻應(yīng)用的一個(gè)關(guān)鍵問題。當(dāng)前視頻推薦的精度和速度都還有一定的提升空間,可通過對SOM算法的研究改進(jìn)視頻推薦系統(tǒng)的精度和速度。目前SOM神經(jīng)網(wǎng)絡(luò)的研究方向主要有以下幾種:(1)基于動(dòng)態(tài)確定結(jié)構(gòu)和網(wǎng)絡(luò)數(shù)目的改進(jìn)。為了擺脫傳統(tǒng)SOM模型需要提前給定結(jié)構(gòu)和網(wǎng)絡(luò)單元數(shù)目的限制,科研人員提出在訓(xùn)練過程中動(dòng)態(tài)確定網(wǎng)絡(luò)形狀和數(shù)目的解決方案。(2)基于匹配神經(jīng)元策略的改進(jìn)。該研究方向中比較著名的研究算法有SOFM-CV、SOFM-C、DSOM等,其改進(jìn)方向?yàn)樾薷纳窠?jīng)元的競爭方式或競爭過程,或者在競爭過程中添加其他參數(shù)和限制條件等,以防止競爭單元層中出現(xiàn)“始終不能獲勝”的結(jié)果。(3)最后一種就是用其他算法來組合SOM算法,其中比較有代表性的是提出把SOM和粗糙集進(jìn)行組合的RSOM算法;科研人員提出使用自適應(yīng)共振理論模型和SOM組合對文檔進(jìn)行聚類;另有科研人員使用了多層感知器(Multilayer Perceptron,MLP)和SOM結(jié)合來進(jìn)行語音識(shí)別。本文使用K-means算法對SOM神經(jīng)網(wǎng)絡(luò)算法進(jìn)行改進(jìn),并應(yīng)用到視頻搜索推薦系統(tǒng)中,該推薦系統(tǒng)分為爬蟲、算法實(shí)現(xiàn)、可視化三個(gè)模塊。
SOM是一種自組織特征映射聚類算法,它包括輸入層和競爭層(也叫輸出層)兩部分。訓(xùn)練過程采用競爭的方式,競爭層在接收到輸入層的樣本數(shù)據(jù)后,計(jì)算樣本與神經(jīng)元自身的權(quán)向量,與樣本最近的神經(jīng)元為最佳匹配單元,接著更新最佳匹配單元的權(quán)值,同時(shí)和最佳匹配單元臨近的點(diǎn)也根據(jù)它們距最佳匹配單元的距離適當(dāng)更新參數(shù),這個(gè)過程迭代反復(fù)直至收斂。
K-means算法是一種無監(jiān)督的聚類算法,其思想如下:將給定的樣本集按照樣本之間的距離大小劃分為個(gè)簇,劃分時(shí)要讓簇內(nèi)部點(diǎn)的排列盡量緊密,簇與簇的間距相對要盡量大。K-means算法的值一般是根據(jù)對數(shù)據(jù)的先驗(yàn)經(jīng)驗(yàn)來選擇,若先驗(yàn)知識(shí)不足,也可通過交叉比對選擇。個(gè)質(zhì)心的選擇可以采用隨機(jī)方式,質(zhì)心的初始位置會(huì)極大地影響最終的聚類結(jié)果及運(yùn)行時(shí)間,質(zhì)心之間的距離不應(yīng)太近,否則會(huì)影響聚類效果。
SOM算法作為一種無監(jiān)督的學(xué)習(xí)算法,它的訓(xùn)練過程不是很穩(wěn)定,如果有一個(gè)如同K-means算法的穩(wěn)定訓(xùn)練過程,就可以大大提升工作效率。SOM算法的訓(xùn)練過程需要刷新初始值較小的神經(jīng)元,和K-means算法選定質(zhì)心的方式有著相似之處,只不過一個(gè)是在輸入層之前選定,一個(gè)是在訓(xùn)練過程之中選定。本文綜合兩種算法對視頻推薦算法進(jìn)行優(yōu)化。
數(shù)據(jù)采集使用爬蟲技術(shù),爬取www.bilibili.com網(wǎng)頁中較火的視頻類數(shù)據(jù)進(jìn)行處理后作為實(shí)驗(yàn)數(shù)據(jù)。爬蟲的編寫采用Python 3.7自帶的urllib模塊,當(dāng)用戶打開網(wǎng)頁時(shí),瀏覽器根據(jù)輸入的地址找到相應(yīng)的服務(wù)器發(fā)送請求,服務(wù)器收到請求后,解析請求中攜帶的信息并進(jìn)行響應(yīng),最終返回請求結(jié)果。urllib模塊模擬用戶的瀏覽過程,發(fā)送請求后獲取服務(wù)器返回的數(shù)據(jù)。獲取網(wǎng)頁HTML文件后,使用BeautifulSoup庫解析HTML文件。BeautifulSoup為開發(fā)者提供一些Python風(fēng)格的函數(shù)來分析提取HTML文檔中的信息,通過解析HTML篩選出有用的信息導(dǎo)入數(shù)據(jù)庫以備算法使用。實(shí)驗(yàn)需要的信息包括嗶哩嗶哩視頻彈幕網(wǎng)的視頻播放量、點(diǎn)擊量、評論及彈幕數(shù)量等數(shù)據(jù),至于視頻的編號(AV)則是通過對URL的拆分處理而得到的。拆分的過程就是利用split函數(shù)以“/”為分隔,將字符串切割成列表的形式。
SOM算法的學(xué)習(xí)過程分為三個(gè)部分。首先是競爭,也就是針對輸入的數(shù)據(jù)集,計(jì)算其與數(shù)據(jù)單元權(quán)向量的歐幾里得距離,距離最小的為獲勝神經(jīng)元,也可通過其他判別函數(shù)得出,記為最佳匹配單元。然后是合作,最佳匹配單元決定了興奮的神經(jīng)元的拓?fù)溧徲蛘紦?jù)的空間位置,是相鄰的神經(jīng)元合作的基礎(chǔ)。最后要調(diào)整權(quán)值,興奮的神經(jīng)元通過對自身權(quán)向量的調(diào)整,來增加數(shù)據(jù)集的判別函數(shù)值(使用向量間的歐幾里得距離),然后讓神經(jīng)元對接下來的相似輸入有一個(gè)強(qiáng)化的響應(yīng)。
SOM算法的實(shí)現(xiàn)過程可描述為如下幾方面。
(1)初始化。使用權(quán)值較小的隨機(jī)值進(jìn)行初始化,并對輸入向量和權(quán)值做歸一化處理:
(2)將樣本輸入網(wǎng)絡(luò)。計(jì)算樣本與權(quán)值向量的歐幾里得距離,距離最小的神經(jīng)元贏得競爭,記為最佳匹配單元。
(3)更新權(quán)值。更新獲勝的神經(jīng)元拓?fù)溧徲騼?nèi)的神經(jīng)元,重新歸一化學(xué)習(xí)后的權(quán)值,基本公式如下:
該算法的優(yōu)點(diǎn)是無須監(jiān)督,無須提前告知分類數(shù)便能自動(dòng)對輸入模式進(jìn)行聚類,容錯(cuò)性強(qiáng),對異常值和噪聲不敏感。其缺點(diǎn)是在訓(xùn)練時(shí)有些神經(jīng)元始終不能勝出,導(dǎo)致分類結(jié)果不準(zhǔn)確,SOM網(wǎng)絡(luò)收斂時(shí)間較長,運(yùn)算效率較低。
(3)重新計(jì)算每個(gè)簇的新質(zhì)心,新質(zhì)心為各個(gè)簇內(nèi)所有樣本距離的平均值,若k個(gè)質(zhì)心向量未發(fā)生變化,則進(jìn)行步驟(4);否則,重復(fù)步驟(1)—步驟(3),直至最大迭代次數(shù)或聚類完成。
(4)重新劃分輸出簇C。
SOM算法具有一些缺陷,例如算法運(yùn)行后期有可能會(huì)出現(xiàn)鐘擺效應(yīng)(即網(wǎng)絡(luò)在幾個(gè)最佳極值點(diǎn)之間反復(fù)跳動(dòng)),以及不穩(wěn)定的訓(xùn)練輸出等,可結(jié)合K-means算法的訓(xùn)練過程來使SOM算法的訓(xùn)練過程穩(wěn)定化,并且借用K-means算法的思想來強(qiáng)化SOM算法的效率。
改進(jìn)的思想大致如下:首先,SOM算法需要隨機(jī)選定神經(jīng)元,隨機(jī)性會(huì)導(dǎo)致后面的訓(xùn)練過程不穩(wěn)定;而K-means是首先選定質(zhì)心,在訓(xùn)練過程的穩(wěn)定性上占有優(yōu)勢。其次,SOM算法以神經(jīng)元為中心,使得數(shù)據(jù)向神經(jīng)元移動(dòng);而K-means算法是通過移動(dòng)質(zhì)心的方式來達(dá)成對數(shù)據(jù)類的分簇。綜合這兩種思想,首先觀察數(shù)據(jù)集的分布狀態(tài)判定質(zhì)心,調(diào)用K-means算法的訓(xùn)練過程將質(zhì)心移動(dòng)到分簇的附近,然后將選定得到的質(zhì)心作為現(xiàn)成的最佳神經(jīng)元定位拓?fù)溧徲?,使用SOM算法開始聚合。改良后的算法的基本流程如圖1所示。
圖1 使用K-means改進(jìn)SOM算法流程Fig.1 Using K-means to improve SOM algorithm process
改良后的算法雖然以SOM算法為主要運(yùn)行部分,但是使用K-means算法指定的質(zhì)心取代了SOM算法需要算法運(yùn)行選擇的最佳神經(jīng)元,并且在經(jīng)過質(zhì)心選定之后使得質(zhì)心/最佳神經(jīng)元更靠近需要聚類的數(shù)據(jù)簇。該算法的優(yōu)點(diǎn)是算法簡單,收斂速度快,準(zhǔn)確率較高;缺點(diǎn)是初始聚類中心的設(shè)定對聚類結(jié)果影響較大,聚類種數(shù)需要預(yù)先給定,而在很多情況下的估計(jì)是非常困難的。
本系統(tǒng)的可視化模塊采用了Django框架進(jìn)行開發(fā),可視化模塊分為關(guān)鍵字搜索和結(jié)果顯示兩個(gè)頁面。關(guān)鍵字搜索頁面在提供自定義搜索的同時(shí),也提供標(biāo)簽式的定向搜索,即根據(jù)用戶選擇的標(biāo)簽推送出最吻合的視頻,滿足不同類型用戶的需要。結(jié)果顯示頁面除了提供視頻的超鏈接之外,還提供該視頻的評分項(xiàng),計(jì)算方法是將點(diǎn)擊數(shù)、播放數(shù)、評論數(shù)、彈幕數(shù)等屬性進(jìn)行歸一化處理后乘以100得出基本評分,方便用戶選擇視頻。本系統(tǒng)采用MySQL數(shù)據(jù)庫,需要安裝PyMySQL模塊。系統(tǒng)的數(shù)據(jù)流向如下:啟動(dòng)爬蟲,對網(wǎng)頁進(jìn)行數(shù)據(jù)爬取,經(jīng)過一個(gè)臨時(shí)數(shù)據(jù)存儲(chǔ)模塊處理后進(jìn)入數(shù)據(jù)庫,算法在數(shù)據(jù)庫中提取數(shù)據(jù),通過分析后輸出推薦視頻到結(jié)果頁顯示。
本文對SOM算法單體效率的研究采用修改參數(shù)調(diào)整效率的方式,大部分參數(shù)可以通過學(xué)習(xí)獲得,能夠手動(dòng)修改且對運(yùn)行結(jié)果影響較大的是迭代次數(shù)及批尺寸(batch_size)。
(1)迭代次數(shù)實(shí)驗(yàn)
在這一步中,本文使用了500 個(gè)樣本數(shù)據(jù),在不影響batch_size的情況下進(jìn)行改動(dòng)迭代次數(shù)的實(shí)驗(yàn),實(shí)驗(yàn)使用單一的SOM算法。實(shí)驗(yàn)結(jié)果表明,在不修改batch_size的情況下,單純地修改迭代次數(shù)對算法的運(yùn)行效率幾乎沒有影響。
(2)batch_size實(shí)驗(yàn)
batch_size是機(jī)器學(xué)習(xí)算法中一個(gè)重要的參數(shù),本實(shí)驗(yàn)以已經(jīng)完成的組合算法為框架,輸入200 個(gè)樣本,通過調(diào)整batch_size不斷實(shí)驗(yàn)可以看出,如果batch_size減小,算法在200 次迭代內(nèi)不能收斂。如果batch_size增大,處理數(shù)據(jù)的速度會(huì)變快,而達(dá)到相同精度所需的迭代數(shù)量增多。當(dāng)batch_size增大到一定程度時(shí),會(huì)達(dá)到運(yùn)行時(shí)間的最優(yōu)化,但最終的收斂精度會(huì)陷入不同的極值。因此,batch_size需要在0—200取舍,本實(shí)驗(yàn)的batch_size定為100。
第一組測試的是運(yùn)行所需要的時(shí)間。實(shí)驗(yàn)限制條件為batch_size100,迭代次數(shù)100,只對輸入樣本的個(gè)數(shù)進(jìn)行更改。實(shí)驗(yàn)結(jié)果為算法的運(yùn)行時(shí)間,如表1所示。
表1 算法運(yùn)行時(shí)間對比Tab.1 Comparison of algorithm running time
由表1可以得出,在限制了迭代次數(shù)及batch_size的情況下,改良后的算法在運(yùn)行時(shí)間上要略差于原本的SOM算法,其運(yùn)行時(shí)間比原算法長4%—12%。
第二組實(shí)驗(yàn)測試的是同等運(yùn)行條件下的運(yùn)行精度,參考值為輸出關(guān)鍵字的精確性。實(shí)驗(yàn)結(jié)果為用戶需求的關(guān)鍵詞在推薦結(jié)果中所含數(shù)量占算法推薦數(shù)總量的百分比,如表2所示。
由表2可知,在限制了迭代次數(shù)及batch_size的情況下,改良算法的運(yùn)行結(jié)果在推薦精度上有了5%—8%的提升,符合視頻推薦應(yīng)用對精度要求更高的需求。
表2 算法運(yùn)行精度對比Tab.2 Comparison of algorithm running accuracy
SOM和其他算法的組合在很多領(lǐng)域應(yīng)用效果較好。本文使用SOM和K-means的組合算法來進(jìn)行視頻推薦,并設(shè)計(jì)了一個(gè)視頻推薦系統(tǒng),系統(tǒng)由數(shù)據(jù)采集與處理、算法優(yōu)化和可視化三部分構(gòu)成。實(shí)驗(yàn)結(jié)果表明,在限制batch_size和迭代次數(shù)的情況下,使用K-means優(yōu)化的SOM算法雖然在運(yùn)行效率上有所降低,但在運(yùn)行精度上有了5%—8%的提升,在視頻推薦應(yīng)用方面,推薦的準(zhǔn)確性遠(yuǎn)比運(yùn)行時(shí)間更符合實(shí)際用戶需求。因此,改良的SOM算法適合應(yīng)用在視頻推薦系統(tǒng)上。