第二章 程序的優化

第二章 程序的優化

為了更好的訓練這個智能程序,王石已經把這個核心掛在聊天程序上好幾個月了,程序也確實按照王石的設想那想變得越來越人性化。

現在基本上王石的聊天活動都是由這個程序代勞的,而對方也基本沒有看出來,自己在與一個程序在聊天,只是有時候會覺得王石的回復有點弱智,有點驚訝罷了。

雖然程序的表現越來越好,可是王石也有苦惱,那就是越來越大的神經元數據庫和越來越慢的反應速度。

雖然一早就料到了程序在成長的過程中,這些問題是遲早會出來的,但是由於成長的速度超出了王石的想像,所以,這些問題就提前到來了。

程序的成長性主要是由可擴展的神經元數據庫和外掛的語言庫決定的,到現在為止,神經元數據庫的條目已經有十幾萬條了。而語言庫則由開始的2兆多不到3兆字節擴展到了2個多G的體積。足足增加了近上千倍。由於核心基本沒變,在體積變大的同時,程序的反應速度也就不可避免的開始變得遲鈍。

既然出現這樣的問題,那麼就要把它給解決,這是王石的一貫作風,其實,王石因為早就料到了這個問題,所以王石老早也就準備好了好幾套解決方案,最簡單的方案就是升級硬件,讓計算機的速度加快,但是王石現在還是學生,雖然由於不錯的計算機水平,還能接點活賺點外快,但也不是很多。所以這方案基本被否決了。

那麼只能從程序優化上作文章了,由於一開始設計的時候,把神經元的工作模式製作成了核心,把神經元構造成了數據庫的模式。而且一開始雖然定義了每個神經元的連結數量,按照使用頻率的權值進行增減,但是由於開始時庫的容量比較小,所以沒有啟用這個功能,這就導致了這個連接的數目是按照神經元的條數的指數形式進行增長的。因為每個連接都要被處理的,所以最後計算資源全部消耗在這個地方上了。

幸好核心程序一開始就預留了這個功能模塊的接口,使得這一步的工作量大大減小。王石大約花了一個下午時間編好了模塊,重新編譯連接了整個模塊,又通過一星期時間的調試。算是完成了這一步,按照王石的估計,這下連接的數目增長方式可能會變成線性增長的方式。因為,對於單個神經元來說,連接的數目最大數是按照使用頻率的來確定的,使用頻率越高,那麼可連接到其它神經元的連接最多的數目也可以更多,這從整體上限制了連接數目暴髮式增長的可能性。但是為了消除由於設置這個限制的影響。這就有必要考慮這個連接的取捨問題。若是由於不加考慮的隨便取消一個連接,則將會導致整個系統的邏輯混亂和失去穩定定性。

舉個例子,比如說,一個人的關係網,一個人上有爸爸媽媽爺爺奶奶,旁邊有老婆,下有兒子女兒孫子孫女,還有兄弟姐妹,而且還有工作上的一些關係,而這些人基本上這也有這麼一些關係。而這些關係呢,也就有了遠近親疏之分,而所有這些關係裏面,對這個人影響最大的,當然就是最親最近的人了,然後按照親疏遠近的不同,影響力逐漸減小。所以當關係較遠的人發生什麼事情,基本上影響不到這個人,自然沒有這種關係也無所謂,但是關係較近的人發生了這種事情,那麼就會發生很大的影響,當突然之間取消掉這個關係的話,那麼情況就會發生突然的變化,從而導致關係網的混亂。而王石構造的這個神經網絡與此類似。那個影響力大小和親近程度就代表了那個連結的強度。這個連接的強度是在的訓練中不斷調整並趨向於穩定的。很顯然,假如有一天,要讓你選擇你只能保留一百個人之間的關係的話,你會怎麼選擇呢?自然是按照關係的親近程度來進行選擇的。

幸好由於一開始的時候已經考慮了這個問題,所以王石沒花多少時間就完成了這個模塊的編製,這個模塊的首要問題就是將當前的神經元的輸出端按連結強度進行排序,取消超額的末尾那些連結。

一開始的時候,系統的限額並不好估計,大了的話,沒有達到精簡的效果,小了的話,會導致系統的不穩定。最後,王石通過統計現有神經元數據庫中的連結分佈情況,發現結果是確實存在使用次數與連結數量的之間的關係,使用次數多了,連結數量都比較龐大。王石最後選擇一些簡單的函數用最小二乘法去擬合后,沒花多少功夫就確定了一個反三角的函數可以較好的擬合這些統計結果。

採用這個函數作為確定連結配額的函數,以連結的使用次數作為參數,就能計算出該神經元所能擁有連結數的限制值,這樣,當核心執行這條神經元的時候,會不再計算超出限制值以外的連結。因為限額以外的那些連結是無關緊要的。不會對整個系統產生太大的影響。

在這個模塊的代碼完成後,王石覺得還可以再做一個優化工作,那就是對整個神經元數據庫進行排序,按使用的頻率來進行,由於整個程序在進行“思考”的時候,很是消耗計算資源,所以這個排序工作就不能在放在核心之中,必須是另做一個線程,而且優先級必須低於這個核心線程。當核心線程執行的時候,它必須無條件的停止,讓出計算資源來。

大約花了兩個月的時間,程序的優化工作算是完成了。反應速度快了,回答問題的準確性,邏輯性也增加了。以前CPU佔用率長時間100%也降下來了。現在平均40%左右上下浮動,也算是暫時解決了王石的當前問題。

這下子,王石基本上把聊天這部分工作扔給了這個程序。因為已經沒有人在不知道的情況下還能分辨得出來,與自己聊天的是程序還是人。己經砌底人性化起來了。

而這時,王石的大學生涯也只剩下最後一學期了。由於把所有時間都花在了這個程序上面,王石在其他方面一片蒼白。人其貌不揚,性格孤僻,無戀愛史,成績也就能剛剛過,雖然不少同學都知道他在程序方面水平不錯,不過也沒聽說有什麼成果出來,熟悉的一些同學也只知道他在編一個聊天程序。不過呢,那也太簡漏了。根本看不上眼。而本身王石的性格也是比較孤僻的,基本上也太多要好的朋友。這也導致了王石也不願意把這個程序公開出來。王石的直覺覺得這樣做是不妥當的。

最後一學期,一般主要任務就是畢業論文或畢業作品,比如象王石他們計算機專業的,既可以寫一篇論文,也可以做一個軟件。本來,王石想給智能聊天程序做個語音輸入輸出模塊的,不過有一件事情讓他改變了主意。大文學

上一章書籍頁下一章

小農經濟時代

···
加入書架
上一章
首頁 軍事歷史 小農經濟時代
上一章下一章

第二章 程序的優化

%