焦正,張強(qiáng)(通信作者,韓清華,李明遠(yuǎn)
1.棗莊學(xué)院 人工智能學(xué)院,山東棗莊,277160;2.伊爾庫茨克國(guó)立理工大學(xué),俄羅斯伊爾庫茨克州,664074
人類在接觸一個(gè)新事物的時(shí)候,會(huì)把新事物分為兩類:已知和未知。分辨的依據(jù)就是我們腦海中已有的知識(shí),通過與腦海中已知事物進(jìn)行特征比對(duì),可以很快地辨別出,新事物以前是否見過。如果匹配,則會(huì)將腦海里有關(guān)這個(gè)事物的所有知識(shí)全部調(diào)用出來;如果不匹配,下一步則會(huì)想,這個(gè)新事物和這個(gè)已知的事物有多少特征相似,然后通過已知事物的特征來標(biāo)記未知事物,然后通過各種渠道搜集資料和信息,得到新事物的一個(gè)定義,然后結(jié)合剛剛的特征,就會(huì)把這個(gè)未知事物轉(zhuǎn)化為已知事物,進(jìn)而成為儲(chǔ)存在腦海里的知識(shí)。這就是人類接觸一個(gè)新事物的時(shí)候,大腦中的一個(gè)簡(jiǎn)單的連鎖反應(yīng)。
人認(rèn)知世界的過程中就是在不斷地給各種事物打上各種各樣的標(biāo)簽:高、矮、胖、瘦……打的標(biāo)簽越多,我們對(duì)這個(gè)世界的認(rèn)知就越全面,對(duì)世界的認(rèn)知也就更容易。數(shù)據(jù)標(biāo)注,就是在給數(shù)據(jù)打標(biāo)簽。目前的數(shù)據(jù)標(biāo)注,大部分工作還是需要人力來完成,所需人力資源龐大[1]。為了解決這個(gè)問題,我們通過類比思維模式提出了一個(gè)算法概念。首先,該算法可以通過已知事物的標(biāo)簽來標(biāo)注未知事物,數(shù)據(jù)庫中的數(shù)據(jù)越多,標(biāo)簽的定義也就越詳細(xì),通俗來講就是已有標(biāo)注數(shù)據(jù)越多,對(duì)新數(shù)據(jù)的標(biāo)注工作也就越輕松。該算法就是在模擬人接觸新事物的一個(gè)思維過程——類比思維模式。
此算法雖然基于機(jī)器學(xué)習(xí),但不同于現(xiàn)有的算法,此算法會(huì)對(duì)已經(jīng)儲(chǔ)存的數(shù)據(jù)進(jìn)行一個(gè)簡(jiǎn)單的運(yùn)用:通過儲(chǔ)存的知識(shí)讓標(biāo)簽的定義更加完善;更加完善的標(biāo)簽則可以更好地完成數(shù)據(jù)標(biāo)注的工作,這樣就構(gòu)成了一個(gè)良性循環(huán),它更符合人的思考方式。在人類學(xué)習(xí)知識(shí)的過程中,有這樣一個(gè)概念:“歸屬學(xué)習(xí)”,而“歸屬學(xué)習(xí)”還分為上位學(xué)習(xí)和下位學(xué)習(xí),上位學(xué)習(xí)是指新學(xué)習(xí)的知識(shí)在概括程度上高于認(rèn)知結(jié)構(gòu)中已有的知識(shí),下位學(xué)習(xí)則與之相反,認(rèn)知結(jié)構(gòu)中已有的知識(shí)可以概括新知識(shí),而通過類比算法來學(xué)習(xí)的一個(gè)概念就是下位學(xué)習(xí)。標(biāo)簽可以囊括我們所需要標(biāo)注的內(nèi)容,而標(biāo)注的內(nèi)容則能更好的豐富標(biāo)簽的定義,使標(biāo)簽愈發(fā)完善。
相比于目前主流機(jī)器學(xué)習(xí)算法,該算法更注重的是數(shù)據(jù)的“運(yùn)用”、智能結(jié)構(gòu)的搭建以及如何不斷完善和更新。對(duì)數(shù)據(jù)的運(yùn)用并不是簡(jiǎn)單的存儲(chǔ)和調(diào)用,通過這些數(shù)據(jù)的存儲(chǔ)可以很好的完善所搭建的“智能結(jié)構(gòu)”。
本文基于類比思維模式,提出了一種實(shí)現(xiàn)機(jī)器學(xué)習(xí)數(shù)據(jù)集半自動(dòng)標(biāo)注的算法模型——“類比算法模型”,人類認(rèn)知事物的基本邏輯是給予各個(gè)事物以標(biāo)簽,包括:外貌、名稱、特征等。并通過這些標(biāo)簽和已知事物來與未知事物進(jìn)行類比,相似的標(biāo)簽,將直接挪用在未知事物上,未知的特征,將通過各種渠道了解,然后再標(biāo)注。
我們把人當(dāng)作一個(gè)算法模型,其認(rèn)知事物的過程可以這樣描述:首先數(shù)據(jù)庫中存在已標(biāo)注的數(shù)據(jù)集,且這些數(shù)據(jù)集可以隨時(shí)調(diào)用,然后輸入一個(gè)新數(shù)據(jù),算法模型將調(diào)用數(shù)據(jù)集中與新數(shù)據(jù)相似度高于80%(該參數(shù)會(huì)隨著模型的訓(xùn)練趨近于一個(gè)穩(wěn)定的值)的數(shù)據(jù),并與之進(jìn)行對(duì)比,判斷相似的地方,然后直接挪用標(biāo)簽,剩余未知的內(nèi)容與以標(biāo)注的內(nèi)容同時(shí)輸出,由人工復(fù)檢,人工復(fù)檢需要檢查標(biāo)注的內(nèi)容是否正確,然后再標(biāo)注未知的內(nèi)容,標(biāo)注未知的內(nèi)容過程與人工標(biāo)注的方式相同。這一過程的流程如圖1所示。
圖1 類比算法流程圖
人工智能簡(jiǎn)單來說就是類人化的一個(gè)系統(tǒng),可以模仿人類除了創(chuàng)造類的所有行為[4]。要想讓它實(shí)現(xiàn)“獨(dú)立思考”,就要先探討人的獨(dú)立思考是如何形成的。人與生俱來就有自己獨(dú)立的思維,但是,人類認(rèn)知這個(gè)世界的過程卻不是僅僅依靠自己來摸索的,在人類認(rèn)知世界的過程中,會(huì)有老師、父母、朋友等來進(jìn)行引導(dǎo)和影響,簡(jiǎn)單來說,老師和父母會(huì)把他們認(rèn)知的世界傳輸給你,然后通過自己的自我化,轉(zhuǎn)化為自己的知識(shí),從而形成對(duì)這個(gè)世界的概念,然后以此為基礎(chǔ)來對(duì)接觸的新事物打標(biāo)簽、下定義。這是我們認(rèn)知世界的一個(gè)大致過程。機(jī)器學(xué)習(xí)就是讓我們?nèi)祟悂懋?dāng)人工智能的老師,把我們的世界觀灌輸給人工智能,通過大量的數(shù)據(jù)訓(xùn)練,使它能實(shí)現(xiàn)某一方面的“智能化”[6]。但這一方式有一個(gè)缺點(diǎn),它不能進(jìn)行數(shù)據(jù)的自我更新,訓(xùn)練完的模型并不會(huì)因?yàn)樗幚淼臄?shù)據(jù)越多從而越智能[5]。因此,這一類模型依然是人工智能方面的一個(gè)“工具”,并沒有形成一個(gè)可以“自我完善”的良性循環(huán)。
讓人工智能擁有獨(dú)立思考的能力,還有很長(zhǎng)一條路要走,但是讓人工智能“類人化”卻并非無法實(shí)現(xiàn),人類認(rèn)知世界的過程是基于已有的知識(shí)來記憶新知識(shí),但是目前的人工智能并沒有很好的“運(yùn)用”存儲(chǔ)的知識(shí),它沒能通過知識(shí)來“獲取”知識(shí)。人類是通過類比來不斷豐富對(duì)這個(gè)世界的認(rèn)知,所以,構(gòu)建人工智能框架時(shí),可以借鑒這一思考方式。首先要使人工智能的框架呈開放性,可以隨時(shí)進(jìn)行更新、完善、填充以及更改。然后把儲(chǔ)存的數(shù)據(jù)打上各種標(biāo)簽以便進(jìn)行特征查找和比對(duì)。無數(shù)的標(biāo)簽構(gòu)成了所需要的知識(shí)網(wǎng)絡(luò),擴(kuò)大知識(shí)網(wǎng)絡(luò)就是在不斷創(chuàng)建新的標(biāo)簽,充實(shí)知識(shí)網(wǎng)絡(luò)的內(nèi)容,就是在不斷豐富標(biāo)簽下的數(shù)據(jù)。
人工智能的實(shí)現(xiàn)依然離不開對(duì)算法的開發(fā),算法是人工智能的基礎(chǔ),就像是人類認(rèn)識(shí)世界的一個(gè)底層邏輯,判斷是非對(duì)錯(cuò)、判斷特征等。給事物打上標(biāo)簽是人類認(rèn)識(shí)世界最普遍的手段,然后隨著自己的理解越來越多,再進(jìn)行標(biāo)簽的增加與刪除。所以,我們不能把系統(tǒng)看做一個(gè)處理事務(wù)的工具,為了處理事務(wù)而被寫出來的人工智能系統(tǒng),并不能稱得上是真的人工智能,大多數(shù)智能系統(tǒng)都是通過使用大量的數(shù)據(jù)訓(xùn)練模型,當(dāng)模型達(dá)到要求的時(shí)候,“成品”就出來了,但是這樣的“成品”,后期的更新與維護(hù),依然需要人工來添加數(shù)據(jù)和模塊,然后再進(jìn)行訓(xùn)練。不能是為了讓它處理數(shù)據(jù)而處理數(shù)據(jù),要做到,處理數(shù)據(jù)的同時(shí),能不斷完善自身的系統(tǒng),當(dāng)系統(tǒng)真正能脫離人工的輔助,方能成為“人工智能”。
類比算法是通過觀察人類認(rèn)識(shí)世界的過程總結(jié)出來的,與現(xiàn)有的大多數(shù)算法不同,類比算法并不是為了處理數(shù)據(jù)而提出,它更傾向于對(duì)數(shù)據(jù)的一種“使用”,通過對(duì)數(shù)據(jù)的處理來不斷完善。這個(gè)過程依然需要人工輔助,不過可以肯定的是通過不斷處理數(shù)據(jù),不斷完善自身,可以使其對(duì)人工輔助的依賴性越來越弱,無限趨近于“真正的人工智能”,本人通過類比算法提出了一個(gè)文本類半自動(dòng)化數(shù)據(jù)標(biāo)注系統(tǒng),模型流程圖如圖2所示。
圖2 文本類半自動(dòng)標(biāo)注系統(tǒng)流程圖
在豐富標(biāo)簽構(gòu)成的過程中有一個(gè)完整的反饋環(huán),可以很好地根據(jù)標(biāo)記的內(nèi)容去不斷完善標(biāo)簽的定義。但是該過程依然需要人工的干預(yù),例如:當(dāng)該內(nèi)容直接被模型定義,且與人工復(fù)檢一致,則不需要該內(nèi)容定義,記作“容易”;如果該內(nèi)容直接被模型定義,但是與人工復(fù)檢不一致,則由該內(nèi)容完善標(biāo)簽的定義,記作“中等”;當(dāng)該內(nèi)容不被模型定義,即模型已有的標(biāo)簽無法標(biāo)記該內(nèi)容,則由人工干預(yù),增加新的標(biāo)簽,記作“困難”[3]。
通過這個(gè)完整的反饋環(huán),可以不斷地去增加新的標(biāo)簽,不斷地完善已有的標(biāo)簽,即“越標(biāo)記,越準(zhǔn)確”。在不斷增加和完善標(biāo)簽定義的過程中,通過各種類,將各個(gè)標(biāo)簽關(guān)聯(lián)起來,實(shí)現(xiàn)相互關(guān)聯(lián)的知識(shí)網(wǎng)絡(luò)。
實(shí)現(xiàn)這一目標(biāo)有一大難點(diǎn):文本特征如何抓取。如果沒有辦法抓取文本特征,那么定義標(biāo)簽則無法進(jìn)行,要想抓取文本特征,就要搞明白什么是文本特征,這是一個(gè)很飄渺的東西,尤其是中國(guó)文化博大精深,同一句話用不同的語氣讀,意思完全不一樣。受小學(xué)語文試卷中精簡(jiǎn)句子題的啟發(fā),我發(fā)現(xiàn)“文本特征”就是“文本”。我們要做的任務(wù)就是縮減句子,盡可能地縮減句子,越簡(jiǎn)單越好,直到句子成分只有主語、動(dòng)詞、賓語、謂語。即,對(duì)文本的概括就是我們要找的文本特征。當(dāng)然這僅僅是文本特征的一部分,更多的標(biāo)簽還囊括了很大一方面,如:文本類型、篇幅長(zhǎng)短、刊登地址。
為滿足多人并發(fā)同步訪問,標(biāo)注平臺(tái)的服務(wù)器部分采用Nginx實(shí)現(xiàn)[2]。主要業(yè)務(wù)邏輯部分基于類比算法模型框架實(shí)現(xiàn),并采用NoSQL數(shù)據(jù)庫實(shí)現(xiàn)原始文本數(shù)據(jù)、標(biāo)簽數(shù)據(jù)的存儲(chǔ)。為實(shí)現(xiàn)友好的用戶界面,平臺(tái)的前端基于BootStrap框架實(shí)現(xiàn),并通HTML和CSS控制頁面的美觀性。同時(shí),利用Python的requests程序包實(shí)現(xiàn)爬蟲模塊,從互聯(lián)網(wǎng)中獲取合法的輔助提示信息。系統(tǒng)的整體框架如圖3所示。
圖3 系統(tǒng)整體框架
本文所提出的文本類半自動(dòng)化標(biāo)注系統(tǒng)包含5個(gè)模塊:基于BootStrap的前端表示層,基于“類比算法模型”的核心業(yè)務(wù)邏輯,基于Nginx的Web服務(wù)器,基于requests 庫的網(wǎng)絡(luò)爬蟲,以及基于NoSQL數(shù)據(jù)庫的數(shù)據(jù)庫集群模塊。各個(gè)模塊的具體實(shí)現(xiàn)功能如下所述。
(1)基于 BootStrap 的前端表示層:該模塊負(fù)責(zé)為用戶提供友好易用的可視化界面。每個(gè)具體頁面通過 HTML 控制界面的布局,并通過CSS 批量控制多個(gè)頁面的樣式。同時(shí),該模塊負(fù)責(zé)處理數(shù)據(jù)標(biāo)注師與頁面中的交互,如提交數(shù)據(jù)、刷新界面等。
(2)基于“類比算法模型”核心業(yè)務(wù)邏輯:該模塊負(fù)責(zé)整體協(xié)調(diào)其他各模塊的輸入輸出數(shù)據(jù),實(shí)現(xiàn)標(biāo)注系統(tǒng)的核心邏輯。
(3)基于 Nginx 的 Web 服務(wù)器:該模塊負(fù)責(zé)處理更底層的業(yè)務(wù)。如根據(jù)配置對(duì)不同的請(qǐng)求做出不同的轉(zhuǎn)發(fā)。
(4)基于NoSQL的數(shù)據(jù)庫:該模塊負(fù)責(zé)將原始數(shù)據(jù)、標(biāo)注后的數(shù)據(jù)、用戶的數(shù)據(jù)存儲(chǔ)在服務(wù)器主機(jī)的磁盤中。在標(biāo)注與查詢過程中,該模塊根據(jù)收到的請(qǐng)求對(duì)標(biāo)注數(shù)據(jù)進(jìn)行查詢、修改、新增、刪除等操作。
(5)爬蟲模塊:該模塊基于Python的requests程序庫實(shí)現(xiàn)。該模塊將原始的文本數(shù)據(jù)進(jìn)行處理,封裝成網(wǎng)絡(luò)數(shù)據(jù)包,并以標(biāo)準(zhǔn)化的格式傳送給業(yè)務(wù)邏輯層。整套網(wǎng)站系統(tǒng)的開發(fā)與調(diào)試基于 PyCharm集成環(huán)境。
類比模型的提出,并不僅僅局限在文本標(biāo)注工作中,類比模型的核心是“通過已有的知識(shí),類比未知的知識(shí),從而減少工作量”。這一概念就可以運(yùn)用在如自然語言處理,人工智能語音識(shí)別模塊,文字識(shí)別模塊等眾多場(chǎng)合。
類比模型給予了系統(tǒng)一個(gè)思考方式:這個(gè)東西是不是和我認(rèn)知中(數(shù)據(jù)庫中)的東西一致,不一致的話,那有哪里相似?然后完全未知的部分就會(huì)輸出,由人工來定義標(biāo)簽。“類比”是人類認(rèn)知過程中很重要的一個(gè)思考方式,人工智能的發(fā)展依然離不開對(duì)人類思考方式的一種模仿,所以類比模型給人工智能提供了一個(gè)“磚”,人類的思考方式多種多樣,所以人工智能的思考方式,即模型,也應(yīng)該是多種模型結(jié)合而來的,當(dāng)遇到不同的情況時(shí),可以調(diào)用不同模型來應(yīng)對(duì),而這些模型,也應(yīng)該是由人類的思考方式演變而來的。