邢立國(guó) 李文堅(jiān) 劉玉坤
摘要:深度學(xué)習(xí)已經(jīng)成為近幾年來(lái)的研究熱點(diǎn)。在諸多深度學(xué)習(xí)研究工具中,pytorch是最流行、最常用系統(tǒng)之一。對(duì)pytorch進(jìn)行了介紹,并給出了一個(gè)線性回歸案例,使用pytorch語(yǔ)言進(jìn)行了實(shí)現(xiàn)。文章既可以對(duì)pytorch的入門(mén)學(xué)習(xí)者助一臂之力,又可以使深度學(xué)習(xí)的愛(ài)好者從中受益。
關(guān)鍵詞:深度學(xué)習(xí);pytorch;線性回歸
中圖分類號(hào):TP3? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)26-0202-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
目前AI研究出現(xiàn)了新的高潮,人工智能相關(guān)領(lǐng)域的科學(xué)研究已經(jīng)被應(yīng)用到國(guó)民生活的各個(gè)領(lǐng)域[1]。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究的一個(gè)新的領(lǐng)域,其動(dòng)機(jī)在于建立、模擬人腦進(jìn)行分析學(xué)習(xí)的神經(jīng)物理,例如“自然語(yǔ)言處理”“人機(jī)博弈”“語(yǔ)音識(shí)別”。當(dāng)今對(duì)深度學(xué)習(xí)的關(guān)注度也在不斷攀升。在諸多深度學(xué)習(xí)系統(tǒng)中,pyTorch 很快成為 AI 研究人員的熱門(mén)選擇并受到推崇[2]。文章介紹了線性回歸,pytorch的相關(guān)概念,其次描述了一個(gè)線性回歸的案例并給出了部分pytorch代碼實(shí)現(xiàn)。
1 pytorch
pyTorch是美國(guó)互聯(lián)網(wǎng)巨頭Facebook在深度學(xué)習(xí)框架Torch的基礎(chǔ)上使用Python重寫(xiě)的一個(gè)全新的深度學(xué)習(xí)框架,它更像NumPy的替代產(chǎn)物,不僅繼承了NumPy的眾多優(yōu)點(diǎn),還支持GPUs計(jì)算,在計(jì)算效率上要比NumPy有更明顯的優(yōu)勢(shì);不僅如此,PyTorch還有許多高級(jí)功能,比如擁有豐富的API,可以快速完成深度神經(jīng)網(wǎng)絡(luò)模型的搭建和訓(xùn)練。所以 PyTorch一經(jīng)發(fā)布,便受到了眾多開(kāi)發(fā)人員和科研人員的追捧和喜愛(ài),成為AI從業(yè)者的重要工具之一。
2 線性回歸
一般地,變量之間的關(guān)系可以是確定關(guān)系,也可以是非確定關(guān)系,變量之間的非確定關(guān)系稱為回歸關(guān)系。在簡(jiǎn)單線性回歸中,可以使用訓(xùn)練數(shù)據(jù)的統(tǒng)計(jì)數(shù)據(jù)來(lái)估計(jì)模型所需的系數(shù),以便對(duì)新數(shù)據(jù)進(jìn)行預(yù)測(cè)。例如,第三產(chǎn)業(yè)職工的工資剖面曲線格[3]。輸出變量(y)可以從輸入變量(z)的線性組合來(lái)計(jì)算。當(dāng)有一個(gè)輸入變量時(shí),描述兩個(gè)變量z和y之間關(guān)系的簡(jiǎn)單線性回歸模型可以用下面的方程表示y=az^2+bz+c,數(shù)字a和b稱為參數(shù),c是誤差項(xiàng)。下面通過(guò)pytorch來(lái)實(shí)現(xiàn)簡(jiǎn)單的線性回歸,通過(guò)對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練,計(jì)算出二次線性回歸函數(shù)(y=az^2+bz+c)中a、b和c的值,并通過(guò)驗(yàn)證數(shù)據(jù),驗(yàn)證得到的函數(shù)是否符合預(yù)期效果。
3 pytorch實(shí)現(xiàn)
(1)Moudle(模塊)引入
Moudle是python中的一個(gè)重要結(jié)構(gòu),pytorch的程序是由一個(gè)個(gè)moudle構(gòu)成。為了方便代碼的重用,可以導(dǎo)入該Moudle[4],這樣就可以調(diào)用該模塊的函數(shù)或類,首先導(dǎo)入torch模塊,為了看到結(jié)果,引入pltlib,引入測(cè)試數(shù)據(jù)Moudle (此模塊代碼從略)。
(2)得到訓(xùn)練數(shù)據(jù)
(4)參數(shù)優(yōu)化。深度學(xué)習(xí)[5]常見(jiàn)的是對(duì)于grad(梯度)的調(diào)優(yōu)調(diào)優(yōu)就是各種對(duì)于grad下降算法的優(yōu)化。這里使用了loss.backward()函數(shù)。一般在上面這個(gè)函數(shù)的之后再添加一個(gè)最小化代價(jià)函數(shù),構(gòu)成深度學(xué)習(xí)中的訓(xùn)練對(duì)象。在pytorch中調(diào)整假設(shè)y=az^2+bz+c,使用grad下降算法找最優(yōu)解。
4 多輪訓(xùn)練效果
經(jīng)過(guò)多輪訓(xùn)練后,訓(xùn)練結(jié)果如圖1二次回歸散點(diǎn)模擬圖所示。使用Pyplot進(jìn)行線性回歸模擬求解直觀的實(shí)現(xiàn)二次函數(shù)的參數(shù)模擬求解。應(yīng)用二次函數(shù)求值并且加上高斯誤差的點(diǎn)均勻地分布在拋物線附近,非常直觀,見(jiàn)圖1。
5 結(jié)語(yǔ)
Pytorch及其擴(kuò)展函數(shù)庫(kù)構(gòu)成了一個(gè)豐富、完整的神經(jīng)網(wǎng)絡(luò)構(gòu)建、應(yīng)用平臺(tái),開(kāi)源,免費(fèi),學(xué)習(xí)和使用方便,本文給出了線性回歸的介紹,并使用pytorch對(duì)該模型進(jìn)行了實(shí)現(xiàn),具有一定的學(xué)習(xí)和應(yīng)用價(jià)值。Pytorch非常適合深度學(xué)習(xí)領(lǐng)域的項(xiàng)目設(shè)計(jì)和應(yīng)用。廣大深度學(xué)習(xí)專業(yè)人員,以及愛(ài)好者可以學(xué)習(xí)和使用Pytorch,以提高工作效率。本文也可以給入門(mén)級(jí)的讀者帶來(lái)一個(gè)全新的體驗(yàn)。
參考文獻(xiàn):
[1] https://blog.csdn.net/sfm06sqvw55dft1/article/details/79149283.
[2] 陳云.深度學(xué)習(xí)框架PyTorch:入門(mén)與實(shí)踐[M].北京:電子工業(yè)出版社,2018.
[3] 廖星宇.深度學(xué)習(xí)入門(mén)之PyTorch深度學(xué)習(xí)框架PyTorch:入門(mén)與實(shí)踐[M].北京:電子工業(yè)出版社,2018:67-75.
[4] https://deeplearning4j.org/cn/linear-regression.
[5]https://blog.csdn.net/u011012422/article/details/72808898?utm_source=itdadao&utm_medium=referral.
【通聯(lián)編輯:代影】