企業(yè)級(jí)AI技術(shù)內(nèi)幕:深度學(xué)習(xí)框架開(kāi)發(fā)+機(jī)器學(xué)習(xí)案例實(shí)戰(zhàn)+Alluxio解密
- 企業(yè)級(jí)AI技術(shù)內(nèi)幕:深度學(xué)習(xí)框架開(kāi)發(fā)+機(jī)器學(xué)習(xí)案例實(shí)戰(zhàn)+Alluxio解密
- 王家林 段智華編著
- 2071字
- 2021-03-26 23:53:48
2.1 盤(pán)古人工智能框架
盤(pán)古人工智能框架實(shí)現(xiàn)了多層次神經(jīng)網(wǎng)絡(luò),這里神經(jīng)網(wǎng)絡(luò)是指它的架構(gòu),如圖2-1所示,分為神經(jīng)網(wǎng)絡(luò)的輸入層、隱藏層和輸出層,相當(dāng)于一個(gè)程序的輸入、中間的處理和輸出過(guò)程。

圖2-1 神經(jīng)網(wǎng)絡(luò)骨架
左側(cè)是數(shù)據(jù)的輸入,最右側(cè)是數(shù)據(jù)的輸出,中間是處理的過(guò)程,有線條連接輸入層、隱藏層、輸出層,這就是TensorFlow數(shù)據(jù)處理的過(guò)程。這種處理的思路和用Java語(yǔ)言寫(xiě)一個(gè)“Hello World”的程序是類似的,即使用一個(gè)main入口,接著是一行打印“Hello World”語(yǔ)句,在代碼編寫(xiě)上沒(méi)有任何區(qū)別,只不過(guò)神經(jīng)網(wǎng)絡(luò)把數(shù)據(jù)處理代碼分成幾個(gè)步驟,而且這幾個(gè)步驟是循環(huán)迭代的。首先是數(shù)據(jù)輸入,這是第一步,任何一個(gè)程序都有數(shù)據(jù)輸入的過(guò)程;第二步進(jìn)行初步的處理;第三步進(jìn)一步的處理,然后得出一個(gè)中間結(jié)果(注意是中間結(jié)果),然后開(kāi)始循環(huán)遍歷中間處理的過(guò)程,每一次都會(huì)對(duì)上一次的處理進(jìn)行一點(diǎn)改進(jìn)。重復(fù)的次數(shù)越多,理論上效果就越好。在TensorFlow網(wǎng)站運(yùn)行一下,可視化運(yùn)行圖右側(cè)是輸出的效果,代表訓(xùn)練的誤差和測(cè)試的誤差,可以看到有值的變化,多次運(yùn)行后會(huì)達(dá)到值變化不太明顯的狀態(tài)。網(wǎng)頁(yè)左上方有個(gè)時(shí)代(Epoch)項(xiàng),時(shí)代是指所有的數(shù)據(jù)都處理了一遍,一遍就是一次時(shí)代,不斷重復(fù)數(shù)據(jù)的處理過(guò)程,以最大化減少誤差。誤差越來(lái)越小,最后變化基本停止了,基本停止或者變化非常緩慢的時(shí)候,可以停止訓(xùn)練,進(jìn)行優(yōu)化。數(shù)據(jù)有流動(dòng),通過(guò)前向傳播算法從左側(cè)流動(dòng)到右側(cè),然后通過(guò)反向傳播算法從右側(cè)流動(dòng)到左側(cè),不斷地循環(huán)迭代,關(guān)鍵在于每個(gè)步驟處理完以后,下一步重復(fù)這個(gè)步驟的時(shí)候能改進(jìn)上一個(gè)步驟的表現(xiàn),這是人工智能的核心,也是和傳統(tǒng)編程不同的地方。
要想實(shí)現(xiàn)圖1-1所示從左到右的功能,其中又有循環(huán),首先要有一個(gè)結(jié)構(gòu)體或者對(duì)象去實(shí)現(xiàn)循環(huán)。這里所謂的結(jié)構(gòu)體或者對(duì)象就是輸入層、隱藏層、輸出層,這個(gè)過(guò)程和人類學(xué)習(xí)的過(guò)程一樣。人類的感知系統(tǒng)如圖2-2所示,人有各種感知系統(tǒng),類似于人工智能的數(shù)據(jù)輸入,人所感知的疼痛就類似于人工智能的激活函數(shù),這將得出一個(gè)結(jié)果供下一步去處理。人工智能的認(rèn)知過(guò)程和人的認(rèn)知過(guò)程是一樣的。

圖2-2 人類的感知系統(tǒng)與人工智能的認(rèn)知系統(tǒng)
如圖2-3所示,神經(jīng)元對(duì)外界感知并做出決定,很多時(shí)候需考慮不同的因素,并且不同因素的重要性優(yōu)先級(jí)不同。權(quán)衡的因素從神經(jīng)網(wǎng)絡(luò)的角度講是特征(Features),從數(shù)學(xué)的角度講是維度(Dimension)。例如,預(yù)測(cè)一下讀者會(huì)不會(huì)喜歡這本書(shū)。書(shū)有很多特征:出版的時(shí)間、價(jià)格、作者、出版社等,這些都是權(quán)衡的因素特征。CNN、RNN之所以強(qiáng)大,就在于其可以自動(dòng)提取特征,而對(duì)于普通的機(jī)器學(xué)習(xí)來(lái)講提取特征則是一個(gè)非常麻煩的過(guò)程。

圖2-3 神經(jīng)元
如圖2-4所示,不同的特征有不同的權(quán)重,如x1、x2、x3、x4、x5等權(quán)重。例如,是否需要深厚的數(shù)學(xué)基礎(chǔ)及編程語(yǔ)言基礎(chǔ)是學(xué)習(xí)人工智能課程的一個(gè)權(quán)重,如果你選擇如需要這些基礎(chǔ)就放棄,說(shuō)明這個(gè)權(quán)重對(duì)你影響很大,所以權(quán)重系數(shù)就很大,可能為0.9或者0.85;另一個(gè)因素是上課時(shí)間,如果上課時(shí)間無(wú)所謂,它的權(quán)重可能就為0.1;課程中是否有足夠的項(xiàng)目案例,這個(gè)特別重要,它的權(quán)重可能就是0.99。構(gòu)建一個(gè)神經(jīng)網(wǎng)絡(luò)有幾個(gè)點(diǎn):輸入層、輸出層、中間的隱藏層,前面的層對(duì)于后面的層次都有特征及權(quán)重的影響。

圖2-4 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
不同的權(quán)重可能還會(huì)加一個(gè)偏愛(ài)因子(Bias),例如,項(xiàng)目案例非常重要,則在項(xiàng)目案例權(quán)重0.99的基礎(chǔ)上,可能會(huì)加一個(gè)偏愛(ài)因子。偏愛(ài)因子是額外的一個(gè)權(quán)重。
圖2-5所示是阿爾法狗的訓(xùn)練過(guò)程,圍棋專家給出落子位置數(shù)據(jù),阿爾法狗通過(guò)監(jiān)督學(xué)習(xí)的算法進(jìn)行了一定程度的學(xué)習(xí),也就是神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí);學(xué)到一定程度以后再進(jìn)行增強(qiáng)學(xué)習(xí)。

圖2-5 阿爾法狗的訓(xùn)練過(guò)程
接下來(lái)進(jìn)行盤(pán)古人工智能框架代碼實(shí)戰(zhàn)。
首先,我們看一下盤(pán)古人工智能框架版本的整體迭代結(jié)構(gòu)圖。整個(gè)盤(pán)古人工智能框架從第一個(gè)版本迭代到第五個(gè)版本,迭代版本分別為chapter2_Create_AI_Framework、chapter3_Create_AI_Framework、chapter4_Create_AI_Framework、chapter5_Create_AI_Framework、chapter6_Create_AI_Framework。最終的版本chapter6_Create_AI_Framework包括入口主程序Neuron_Network_Entry.py;service目錄里面包括BackPropagation.py、FeatureNormalization.py、ForwardPropagation.py、LossComputation.py、NetworkConnection.py、NetworkStructure.py等模塊;entity目錄里面包括Node.py、Weight.py等Python模塊,如圖2-6所示。

圖2-6 盤(pán)古人工智能框架整體迭代版本
本節(jié)將實(shí)現(xiàn)盤(pán)古人工智能框架的神經(jīng)元網(wǎng)絡(luò)骨架,要實(shí)現(xiàn)的目錄結(jié)構(gòu)如圖2-7所示。

圖2-7 chapter2_Create_AI_Framework目錄結(jié)構(gòu)
讀者可以自行安裝Anaconda的開(kāi)發(fā)環(huán)境(https://www.anaconda.com/download/)。進(jìn)入Anaconda的控制臺(tái),啟動(dòng)Spyder,Anaconda Spyder是一個(gè)機(jī)器學(xué)習(xí)的集成開(kāi)發(fā)環(huán)境,如圖2-8所示。
進(jìn)入Spyder的File explorer窗口,創(chuàng)建自定義的神經(jīng)網(wǎng)絡(luò)項(xiàng)目目錄chapter2_Create_AI_Framework,如圖2-9所示。
選擇chapter2_Create_AI_Framework目錄,單擊齒輪圖標(biāo),然后單擊Set console working directory命令,設(shè)置其為工作目錄,如圖2-10所示。這一步很重要,因?yàn)楹罄m(xù)的所有代碼都將放在這個(gè)目錄中,該工作目錄包括了上下文信息。

圖2-8 Anaconda的控制臺(tái)

圖2-9 創(chuàng)建目錄

圖2-10 設(shè)置工作目錄
實(shí)現(xiàn)盤(pán)古人工智能框架的多層次神經(jīng)網(wǎng)絡(luò),需要以下四個(gè)步驟:
(1)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)結(jié)構(gòu)。
(2)實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)層之間節(jié)點(diǎn)的連接。
(3)初始化神經(jīng)網(wǎng)絡(luò)的權(quán)重。
(4)實(shí)現(xiàn)多個(gè)隱藏層。
我們要實(shí)現(xiàn)的人工智能框架和TensorFlow的類似,可以調(diào)整神經(jīng)元的數(shù)量。第1步我們要實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)的節(jié)點(diǎn)結(jié)構(gòu)。從Java開(kāi)發(fā)者的角度講,節(jié)點(diǎn)結(jié)構(gòu)就是JavaBean。
我們先在chapter2_Create_AI_Framework工作目錄中建立一個(gè)子目錄entity,entity的含義是實(shí)體,如圖2-11所示。

圖2-11 創(chuàng)建entity子目錄
在entity子目錄下創(chuàng)建一個(gè)節(jié)點(diǎn)文件Node.py,如圖2-12所示。

圖2-12 創(chuàng)建Node.py文件
接下來(lái)通過(guò)代碼來(lái)實(shí)現(xiàn)多層次神經(jīng)網(wǎng)絡(luò)功能。
- 昆侖子牙練AI:人工智能從開(kāi)發(fā)到實(shí)戰(zhàn)
- AI落地:讓人工智能為你所用
- 神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí):基于MATLAB的仿真與實(shí)現(xiàn)
- 工業(yè)人工智能
- 劫持
- 未來(lái)可期:與人工智能同行
- 智能移動(dòng)機(jī)器人:技術(shù)與應(yīng)用(人工智能技術(shù)叢書(shū))
- Joy RL:強(qiáng)化學(xué)習(xí)實(shí)踐教程
- 移動(dòng)機(jī)器人技術(shù)及其應(yīng)用
- AI繁榮
- 機(jī)器學(xué)習(xí)與數(shù)據(jù)科學(xué)(基于R的統(tǒng)計(jì)學(xué)習(xí)方法)
- DeepSeek:打開(kāi)財(cái)富密碼
- 人工智能算法
- 圖靈的大教堂:數(shù)字宇宙開(kāi)啟智能時(shí)代
- 區(qū)塊鏈 人工智能 數(shù)字貨幣:黑科技讓生活更美好?