六星源課堂:開發(fā)人工智能為什么要用Python?
雖然現(xiàn)在不管圈里圈外,只要說到做數(shù)據(jù)分析、機(jī)器學(xué)習(xí)甚至人工智能,好像已經(jīng)言必稱Python,不過,這些領(lǐng)域并非天生就得是Python,別的不說,就說人工智能。
人工智能領(lǐng)域出了很多語言,如果你早個(gè)幾年學(xué)習(xí)人工智能,可能連Python的影子都看不見,大家一般推薦的都是LISP、Prolog,哪怕是業(yè)內(nèi)人士看這些語言都是又古老又偏門,尤其是Prolog,好像除了人工智能就沒別的地方能見到,但是Prolog做規(guī)則推導(dǎo)有奇效,大家也就一直沿用下來了。
現(xiàn)在呢?現(xiàn)在不怎么提了,一來是因?yàn)榛诮y(tǒng)計(jì)的機(jī)器學(xué)習(xí)一直占據(jù)了人工智能的頂流位置,規(guī)則推導(dǎo)說得不多,二來是Python迅速崛起,人稱“人工智能第一語言”,就連規(guī)則推導(dǎo)都可以用Python來做。
但是,現(xiàn)在我們要問的是:為什么Python能成為“人工智能第一語言”呢?

現(xiàn)在Python很熱,所以介紹Python的文章特別多,大家一定也看膩了諸如Python簡單易用、靈活性高之類好像說了很多,又好像什么都沒說的介紹。我們說點(diǎn)接地氣的。
在我來看,Python最大的優(yōu)點(diǎn)就是“拎包入住”。
如果大家去租房,一定能看到一個(gè)詞,叫“拎包入住”,這個(gè)詞經(jīng)常作為租屋的重要賣點(diǎn),也反映出消費(fèi)者對租屋的一個(gè)重要需求。
什么叫拎包入?。孔夥啃袠I(yè)對這個(gè)詞的準(zhǔn)確定義有爭議,很多人在糾結(jié)家私家電齊全到底是不是等同于拎包入住,不過意思是清楚的,我作為租客,啥都不用準(zhǔn)備,只需要把行李拉過來就可以住下了,這就是拎包入住。
換句話說,有不少租屋是達(dá)不到拎包入住的標(biāo)準(zhǔn)的,本來我只是要滿足“住”的需要,可是因?yàn)樽馕輻l件有欠缺,導(dǎo)致我不得不先客串一回裝修師傅,需要先做一些其它的準(zhǔn)備,然后才能做我想要做的事。
好了,說回編程語言。很多人喜歡從語言風(fēng)格、語法設(shè)計(jì)甚至語法糖等等角度來比較編程語言的優(yōu)劣,不過,我更看重另一樣?xùn)|西:生態(tài)環(huán)境。
以前我們說C++多么多么爆紅,后來又說Java多么多么爆紅,現(xiàn)在又輪到了Python,到底這些“網(wǎng)紅語言”的成功背后靠的是什么?真的只是因?yàn)榫幊陶Z言自身的優(yōu)秀設(shè)計(jì)嗎?
我認(rèn)為,一款編程語言是否流行,設(shè)計(jì)當(dāng)然是很重要的因素,但生態(tài)環(huán)境的成熟可能是更為直接的原因。我們經(jīng)常能聽到的一個(gè)關(guān)于編程的問題是,A語言早就已經(jīng)過時(shí)了,現(xiàn)在已經(jīng)有了新興的B語言,為什么現(xiàn)在還要用A語言開發(fā)項(xiàng)目呢?
這個(gè)問題通常有兩種可能,一種是項(xiàng)目已經(jīng)用A語言做了大量開發(fā),替換成B語言又得高樓平地起,另一種是B語言還太新,某個(gè)專業(yè)領(lǐng)域還沒有可用的或者好用的庫,同樣也得高樓平地起。這兩種都可以歸結(jié)為同一個(gè)原因:使用B語言并不能拎包入住。
02 數(shù)據(jù)科學(xué)方向的熱門Python包介紹
都知道Python在人工智能、大數(shù)據(jù)方向很熱,但是,真的有任務(wù)來了,究竟該用哪些包呢?很多介紹Python的教程,是真的就只介紹Python的語法,語法當(dāng)然很重要,要想使用Python,首先當(dāng)然得掌握語法。
但是,前面我們也進(jìn)行了介紹,Python的優(yōu)勢在于擁有許多成熟的包,讓你可以“拎包入住”,也即可以專注于任務(wù)本身,所以,我們要用Python,不但需要掌握Python的語法,同時(shí)也要了解都有哪些好用的Python,都可以用來做什么。
Python好用的包非常多,覆蓋領(lǐng)域也是五花八門,都列出來反而顯得凌亂,這里我們只介紹數(shù)據(jù)科學(xué)和人工智能方向用得多的包。
首先是pandas。這是數(shù)據(jù)分析用得非常多的包,尤其擅長各種格式化數(shù)值分析,前面提到的Python廣告只說用Python,并沒有說明該使用什么包,不過,既然是替代電子表格進(jìn)行數(shù)據(jù)分析,想必肯定會(huì)用到pandas。
接著是scikit-learn,這個(gè)包寫法很多,也有人喜歡簡寫為sklearn。這是個(gè)著名的機(jī)器學(xué)習(xí)包。scikit-learn非常好用,推薦大家都試一試,尤其是覺得機(jī)器學(xué)習(xí)數(shù)學(xué)很難,一看到機(jī)器學(xué)習(xí)幾個(gè)字就產(chǎn)生抵觸心理的同學(xué)。
為什么這么說呢?我們都知道,機(jī)器學(xué)習(xí)不是一種方法,而是一個(gè)大框,里面堆滿各種算法模型,譬如線性模型、樹形模型、支持向量機(jī)模型、以及現(xiàn)在在機(jī)器學(xué)習(xí)領(lǐng)域非常熱門的神經(jīng)網(wǎng)絡(luò)模型。
每一種模型背后都依靠一套復(fù)雜的數(shù)學(xué)邏輯來支撐模型運(yùn)作。在很多人看來,光是看懂機(jī)器學(xué)習(xí)模型的數(shù)學(xué)表達(dá)式就已經(jīng)十分費(fèi)勁,需要很深的數(shù)學(xué)功底,更不用說手推公式和實(shí)戰(zhàn)中使用了。于是,很多人覺得機(jī)器學(xué)習(xí)“可遠(yuǎn)觀而不可褻玩焉”。
當(dāng)然,這里面有幾個(gè)理解誤區(qū)。是不是需要很深的數(shù)學(xué)功底才能明白機(jī)器學(xué)習(xí)模型的原理呢?未必,機(jī)器學(xué)習(xí)確實(shí)用到很多數(shù)學(xué)知識(shí),不過,我經(jīng)常和大家分享的一個(gè)觀點(diǎn)是:不妨把數(shù)學(xué)看作只是一種語言,是一門外語,機(jī)器學(xué)習(xí)的運(yùn)行原理,是用這門外語來描述,所以我們不太容易看懂。
那怎么辦呢?跨國交流我們可以找翻譯,同樣,只要有人看懂了機(jī)器學(xué)習(xí)這里的數(shù)學(xué)語,然后“翻譯”成中文,也就方便大家看得懂了。
另一個(gè)誤區(qū)就是得把機(jī)器學(xué)習(xí)模型的數(shù)學(xué)原理都學(xué)懂弄通了,最好能手推一遍公式,然后才能知道怎么使用。這個(gè)理解符合我們長期以來形成的按部就班的印象,不過,就我看來,使用機(jī)器學(xué)習(xí)和開車很像,沒必要要求司機(jī)都學(xué)會(huì)造車了才能開車,況且,造車和開車很可能還是并不相同的兩條學(xué)習(xí)曲線,畢竟老技工未必就是老司機(jī)。
如果只是想用機(jī)器學(xué)習(xí)解決問題,完全可以另辟蹊徑積累經(jīng)驗(yàn)。方法是什么呢?就是使用scikit-learn,這個(gè)包把常用的熱門的機(jī)器學(xué)習(xí)模型統(tǒng)統(tǒng)做了非常良好的封裝,我們完全可以像調(diào)用黑盒函數(shù)一樣,操作各種機(jī)器學(xué)習(xí)模型來解決實(shí)際問題。
最后就是Pytorch、Tensorflow和Keras這幾個(gè)網(wǎng)紅深度學(xué)習(xí)包,Python這一輪走勢長紅,這幾個(gè)深度學(xué)習(xí)包居功甚偉,在背后貢獻(xiàn)了大量流量。
現(xiàn)在是深度學(xué)習(xí)時(shí)代,大家都知道深度學(xué)習(xí)能解決很多以前無解的問題,可是理論設(shè)計(jì)出來的模型,還得編程實(shí)現(xiàn)才能使用。怎么實(shí)現(xiàn)呢?就用這幾個(gè)包,它們把深度學(xué)習(xí)的各個(gè)部件都已經(jīng)封裝好了,使用者只需要像拼裝樂高積木一樣,把部件拼裝成完整的模型。
現(xiàn)在大家應(yīng)該感到Python真是個(gè)寶藏男孩,應(yīng)該就能更為理解,為什么開發(fā)人工智能要用Python,一項(xiàng)人工智能的工程可能涉及到多個(gè)環(huán)節(jié),而如果選擇使用Python,它可以給你提供一條龍服務(wù)。
以上就是本次分享的全部內(nèi)容,想要學(xué)習(xí)編程的小伙伴們,歡迎前往六星源課堂,獲取更多技能與教程~