李致 徐彥婷
(國家計算機網(wǎng)絡與信息安全管理中心上海分中心 上海市 201315)
隨著互聯(lián)網(wǎng)信息的爆炸式增長,對數(shù)據(jù)內(nèi)容的存儲和處理技術也取得了巨大的進步,以數(shù)據(jù)庫為代表的存儲技術和以人工智能應用為代表的處理技術在互聯(lián)網(wǎng)各領域得到了充分應用。傳統(tǒng)軟件工程過程中,數(shù)據(jù)庫設計偏重于考慮數(shù)據(jù)獲取、存儲,由系統(tǒng)架構人員負責,人工智能應用由專業(yè)算法人員負責,使用特定領域中模型可用的不同數(shù)據(jù)格式。在人工智能應用系統(tǒng)中,系統(tǒng)存儲的數(shù)據(jù)還需經(jīng)清洗、轉(zhuǎn)換才可用于人工智能模型,導致實體關系多次建模、代碼重復開發(fā)、數(shù)據(jù)多次進行存取和格式轉(zhuǎn)換等問題。增加了系統(tǒng)的開發(fā)難度,降低了系統(tǒng)應用效率。本文提出一種人工智能和數(shù)據(jù)庫技術結合的設計方法,通過貫穿數(shù)據(jù)價值鏈的需求預估、實現(xiàn)方案選擇和實現(xiàn)經(jīng)驗總結,在實踐中充分挖掘數(shù)據(jù)庫技術潛力,形成了高效、可擴展的數(shù)據(jù)庫存儲形式 ,滿足人工智能系統(tǒng)的應用需求。
人工智能(Artificial Intelligence),英文縮寫為AI。人工智能是主要研究、開發(fā)用于模擬、延伸和擴展人的智能的理論、方法、技術以及應用系統(tǒng)。人工智能企圖產(chǎn)出一種能以人類智能相似的方式做出反應的機器。當前,人工智能技術在自然語言處理、模式識別等多個領域取得了令人鼓舞的進步。給定規(guī)則及數(shù)據(jù)集下,人工智能模型可以從大規(guī)模的數(shù)據(jù)中高速獲取可用知識并模仿人類思維處理更為廣泛的數(shù)據(jù)。
知識是一種抽象和概念的信息,數(shù)據(jù)是代表實際存在事物的標志性信息。人們往往通過知識了解大范圍的事物,通過數(shù)據(jù)更為準確的了解其所關心的事物內(nèi)容。知識和數(shù)據(jù)統(tǒng)稱為信息,二者結合后形成的信息數(shù)據(jù)集合即可視為數(shù)據(jù)庫。數(shù)據(jù)模型是數(shù)據(jù)庫的組織方式形式之一,其中主要囊括了數(shù)據(jù)的約束、數(shù)據(jù)的操作和數(shù)據(jù)的結構三方面的內(nèi)容。數(shù)據(jù)主要代表著當下存在的事物的信息,通過對數(shù)據(jù)的分析來講其進行細化,對比發(fā)現(xiàn),知識具有概念和抽象的屬性,人們在學習知識后能夠掌握大部分的內(nèi)容和信息,然而在看了具體的數(shù)據(jù)之后,則是了解了具體事物內(nèi)容。一般情況下,知識和數(shù)據(jù)這兩類都被人們定義為信息,但是在兩者結束之后就會形成一個整體的信息系統(tǒng),這也是計算機協(xié)同的根基。
數(shù)據(jù)庫監(jiān)管系統(tǒng)主要是基于對現(xiàn)有數(shù)據(jù)的管理,是一種專門系統(tǒng),當數(shù)據(jù)庫當中出現(xiàn)需要修改、刪除或者增添、發(fā)送時的數(shù)據(jù)信息時,就需要在該系統(tǒng)允許之后才能對數(shù)據(jù)庫進行維護。如果在這四個環(huán)節(jié)中出現(xiàn)了數(shù)據(jù)丟失,我們可以通過該系統(tǒng)進行二次組織。針對知識庫設置的管理系統(tǒng)叫做知識庫管理系統(tǒng),旨在基于對數(shù)據(jù)知識庫的保護上,可以進行維護和擴展,比如:重新對知識庫進行定義。當吸收了新的知識后,需要對知識庫進行更改,此時也務必需要得到該系統(tǒng)的允許。隨著現(xiàn)代化技術手段的創(chuàng)新,在很多領域都使用了數(shù)據(jù)庫技術,然而,在此過程中,雖然數(shù)據(jù)庫信息具有極強的通用性,但是由于受到數(shù)據(jù)庫系統(tǒng)的局限,在使用過程中,數(shù)據(jù)處理較為片面。進而導致人工智能系統(tǒng)運行時,所出現(xiàn)的結果并不具備充分的精確性。
數(shù)據(jù)庫和知識庫在多方面都存在著差異性,不管是處理對象、表達形式、結構等完全不同,在具體的操作行為上和管理上也存在著截然不同的形式,都具有自身的特點。相比較于知識庫,數(shù)據(jù)庫的主要特點是儲存能力比較強,數(shù)據(jù)庫的結構和知識庫的結構也存在著不同,知識庫的結構比較復雜,數(shù)據(jù)庫的一般通過用戶才能進行更新,然而知識庫大部分由專業(yè)來定時更新的,相比較于知識庫,數(shù)據(jù)庫推算出的是具體的知識,知識庫則可以輸出新的知識。
在軟件系統(tǒng)中,數(shù)據(jù)庫本身的結構和內(nèi)容就代表著系統(tǒng)需求方對該領域知識定義。人工智能模型應用中,處理對象的結構和表達形式定義同樣蘊含著系統(tǒng)對該領域知識的理解掌握。數(shù)據(jù)庫設計實現(xiàn)和人工智能模型應用中,均蘊含領域知識,通過融合人工智能與數(shù)據(jù)庫技術,將兩個原本未交叉領域中信息表示和信息模型融合貫通,系統(tǒng)效率將得到極大的提高。
真實網(wǎng)絡世界中的數(shù)據(jù)存在海量、異構等特點,將數(shù)據(jù)庫技術和人工智能結合并非輕而易舉。傳統(tǒng)數(shù)據(jù)庫技術可以高效管理由鍵值對或表構成的邏輯結構數(shù)據(jù),人工智能模型卻長于處理標量張量數(shù)據(jù),基于已有的樣本的抽象判斷未知樣本。人工智能與數(shù)據(jù)庫技術結合主要有兩種形式:
(1)AI for DB通過人工智能為數(shù)據(jù)庫賦能。
即以人工智能模型優(yōu)化數(shù)據(jù)庫的查詢、命令執(zhí)行、系統(tǒng)負載、數(shù)據(jù)生命周期、數(shù)據(jù)庫運維和數(shù)據(jù)庫安全。
(2)DB for AI 通過數(shù)據(jù)庫技術提升人工智能效率。
通過數(shù)據(jù)庫技術,在數(shù)據(jù)質(zhì)量、模型選擇、模型推理等方面提升效率。
參考上面兩個方向的研究,本文提出AI with DB,即通過人工智能與數(shù)據(jù)庫技術結合,在系統(tǒng)需求分析和設計實現(xiàn)階段,通過貫穿數(shù)據(jù)價值鏈各階段,從數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)使用三個角度,實現(xiàn)滿足數(shù)據(jù)獲取能力、數(shù)據(jù)存取效率及數(shù)據(jù)使用需求的人工智能應用系統(tǒng)。人工智能專家系統(tǒng)理想結構圖如圖1所示。
圖1:人工智能專家系統(tǒng)理想結構圖
(1)在數(shù)據(jù)獲取階段,首先對需求用例的數(shù)據(jù)獲取速率、總容量及多樣性進行預估,結構明確的數(shù)據(jù)可以采用關系型數(shù)據(jù)庫;網(wǎng)頁文檔等不再變更的數(shù)據(jù),可采用NoSQL類文檔數(shù)據(jù)庫存儲;實時存取需求較強的數(shù)據(jù),可采用內(nèi)存鍵值數(shù)據(jù)庫;規(guī)模較大的數(shù)據(jù)可直接存入文件系統(tǒng),并在數(shù)據(jù)庫中記錄其索引。
(2)在數(shù)據(jù)存儲階段,需考慮數(shù)據(jù)清洗、數(shù)據(jù)集成、冗余消除等需求,可采用直接內(nèi)存載入處理或構建HashMap類結構予以解決,平衡時空消耗。
(3)在數(shù)據(jù)使用階段,可視化和統(tǒng)計分析需考慮其數(shù)據(jù)規(guī)模及實時性需求,如實時性要求較高,可通過內(nèi)存數(shù)據(jù)庫讀入;社區(qū)發(fā)現(xiàn)、社交網(wǎng)絡分析等聯(lián)系結構分析,需考慮其規(guī)模及調(diào)優(yōu)算法,可通過圖數(shù)據(jù)庫加載;自然語言處理等基于內(nèi)容的分析需求,如命名實體識別、主題建模、信息摘要、文本聚類等,實時性要求較低,可通過SQL數(shù)據(jù)庫讀??;多媒體預處理和圖片分析的規(guī)模較大,通過文件系統(tǒng)獲取是較為合適的做法。
三個階段的需求預估范圍及可能實現(xiàn)方案如表1所示。
表1:三個階段的需求預估范圍及可能實現(xiàn)方案
我們將人工智能和數(shù)據(jù)庫技術結合的設計實踐運用于某BitTorrent(以下簡稱BT)相關人工智能應用系統(tǒng)。BitTorrent是國際互聯(lián)網(wǎng)上最為流行的對等網(wǎng)絡(Peer to Peer, P2P)文件共享協(xié)議,系統(tǒng)需求如下:
(1)通過互聯(lián)網(wǎng)爬蟲,收集網(wǎng)頁鏈接、網(wǎng)頁文本,對網(wǎng)頁鏈接進行核驗;
(2)通過網(wǎng)頁鏈接、網(wǎng)頁文本、網(wǎng)頁核驗結果進行網(wǎng)頁分類;
(3)通過分布式哈希表(Distributed Hash Table, DHT)網(wǎng)絡爬蟲,收集BT網(wǎng)絡文件元數(shù)據(jù)(以下稱種子文件);
(4)通過種子文件中文件列表、文件名、文件類型等字段進行分類;
(5)對特定類別種子文件,下載對應多媒體文件,進行視頻抽幀及特定事件檢測;
設計實踐表如表2所示。
表2:設計實踐表
經(jīng)實踐,系統(tǒng)在數(shù)據(jù)獲取中可支持每日獲取20萬網(wǎng)址和10萬種子,為預計需求的10倍;種子數(shù)據(jù)可在近2000萬種子中進行實時去重;多媒體文件下載及視頻抽幀檢測效率達預估5倍。統(tǒng)計表如表3所示。
此外,本文還在設計實踐中總結了如下的經(jīng)驗:
(1)SQL數(shù)據(jù)庫在單表千萬數(shù)據(jù)時會出現(xiàn)性能瓶頸,關系型數(shù)據(jù)庫ID生成可采用雪花算法等分布式ID生成算法;
(2)在關系型數(shù)據(jù)庫表主外鍵設置上,對數(shù)據(jù)量有限的知識庫表、元數(shù)據(jù)表、配置表等,可根據(jù)實體關系全量關聯(lián),對數(shù)據(jù)量快速增長的表,應恰當關聯(lián),避免三級或以上的多級關聯(lián);
(3)爬蟲類數(shù)據(jù)表中預留冗余字段,后期可結合面向?qū)ο蠓椒M足一定程度的需求變更要求;
(4)對網(wǎng)頁等不涉及修改的數(shù)據(jù),可采用NoSQL文檔數(shù)據(jù)庫存儲;
表3:設計實踐效果統(tǒng)計表
(5)對文件等較大規(guī)模的異構數(shù)據(jù),可采用文件系統(tǒng)分目錄存儲并在數(shù)據(jù)庫中寫入其路徑等元數(shù)據(jù)的方法進行組織;
(6)涉實時處理、運算的數(shù)據(jù)可在系統(tǒng)啟動時通過內(nèi)存數(shù)據(jù)庫讀入;
(7)可采用基于Redis的布隆過濾器進行分布式去重。系統(tǒng)架構如圖2所示。
圖2:系統(tǒng)架構圖
隨著人工智能研究的不斷深入,數(shù)據(jù)庫的發(fā)展也凸顯了較多問題。如:結構變化較大,信息儲存能力要求高速增長等。近幾年來看,數(shù)據(jù)庫技術的不斷發(fā)展,也遇到了人工智能關聯(lián)問題,需要突破原定的局限性,增加語義信息的查詢等功能。因此,人工智能和數(shù)據(jù)庫技術的相互結合不僅是將人工智能技術和數(shù)據(jù)庫技術中有效部分簡單組合,還包括互相擴充知識范圍,彌足各自不足。這其中以知識表示和模擬信息模型最為典型,由于相關領域知識具有極強的共享性和時效性,在技術處理過程中,必須集合數(shù)據(jù)庫信息技術在和人工智能,以保證各子系統(tǒng)對特定內(nèi)容的處理均在總體知識和信息模型的約束之下。
其次,當數(shù)據(jù)庫信息技術在和人工智能完成結合之后,人工系統(tǒng)能夠?qū)崿F(xiàn)強化優(yōu)勢來進行取長補短,從客觀條件來講,人工智能當遇到以下兩個問題時,比如:知識和數(shù)據(jù)的共享,故障恢復等一些具體的操作問題上,人工智能要比數(shù)據(jù)庫處理信息能力偏差,在和數(shù)據(jù)庫信息科學結合后,人工智能能夠借助數(shù)據(jù)庫技術的優(yōu)勢和特點,完善自身的管理經(jīng)驗,通過改良和革新人工知識庫的設計和知識管理系統(tǒng),進而來實現(xiàn)對人工智能的特性和功能方面的改善。
綜上所述,科學技術的進步,是促進社會發(fā)展和改善人們生產(chǎn)、生活的關鍵因素,對促進我國社會的發(fā)展具有深遠的意義。將人工智能和數(shù)據(jù)庫進行科學有效地結合,可以助力人工智能應用系統(tǒng)。本文提出人工智能和數(shù)據(jù)庫技術結合的設計方法,通過數(shù)據(jù)價值鏈分析,在數(shù)據(jù)獲取、數(shù)據(jù)存儲和數(shù)據(jù)使用三個階段,進行六個方面的需求預估并選擇合適的實現(xiàn)方案,實踐證明,該設計方法充分挖掘數(shù)據(jù)庫技術潛力,取得了良好的開發(fā)成果。當然,技術發(fā)展不會止步與此,當系統(tǒng)數(shù)據(jù)獲取能力和人工智能模型數(shù)據(jù)需求再增加兩個數(shù)量級時,當前應用良好的系統(tǒng)將面臨挑戰(zhàn),將有必要在設計實現(xiàn)方法中納入批量處理、分布式存儲、流式處理、大規(guī)模圖計算等更為高效的存儲處理技術,以滿足實踐需要。