最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Python人工智能的頭牌語言

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:16:50
文檔

Python人工智能的頭牌語言

Python人工智能的頭牌語言:誰會成為AI 和大數(shù)據(jù)時代的第一開發(fā)語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那么三年之后,趨勢已經(jīng)非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之后,Pytho
推薦度:
導(dǎo)讀Python人工智能的頭牌語言:誰會成為AI 和大數(shù)據(jù)時代的第一開發(fā)語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那么三年之后,趨勢已經(jīng)非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之后,Pytho
誰會成為AI 和大數(shù)據(jù)時代的第一開發(fā)語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那么三年之后,趨勢已經(jīng)非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之后,Python 作為 AI 時代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩(wěn)第二把交椅。

谷歌的AI擊敗了一位圍棋大師,是一種衡量人工智能突然的快速發(fā)展的方式,也揭示了這些技術(shù)如何發(fā)展而來和將來可以如何發(fā)展。

py-500x195.jpeg

人工智能是一種未來性的技術(shù),目前正在致力于研究自己的一套工具。一系列的進(jìn)展在過去的幾年中發(fā)生了:無事故駕駛超過300000英里并在三個州合法行駛迎來了自動駕駛的一個里程碑;IBM Waston擊敗了Jeopardy兩屆冠軍;統(tǒng)計學(xué)習(xí)技術(shù)從對消費者興趣到以萬億記的圖像的復(fù)雜數(shù)據(jù)集進(jìn)行模式識別。這些發(fā)展必然提高了科學(xué)家和巨匠們對人工智能的興趣,這也使得開發(fā)者們了解創(chuàng)建人工智能應(yīng)用的真實本質(zhì)。開發(fā)這些需要注意的第一件事是:

哪一種編程語言適合人工智能?

你所熟練掌握的每一種編程語言都可以是人工智能的開發(fā)語言。

人工智能程序可以使用幾乎所有的編程語言實現(xiàn),最常見的有:Lisp,Prolog,C/C++,近來又有Java,最近還有Python.

LISP

像LISP這樣的高級語言在人工智能中備受青睞,因為在各高校多年的研究后選擇了快速原型而舍棄了快速執(zhí)行。垃圾收集,動態(tài)類型,數(shù)據(jù)函數(shù),統(tǒng)一的語法,交互式環(huán)境和可擴展性等一些特性使得LIST非常適合人工智能編程。

PROLOG

這種語言有著LISP高層和傳統(tǒng)優(yōu)勢有效結(jié)合,這對AI是非常有用的。它的優(yōu)勢是解決“基于邏輯的問題”。Prolog提供了針對于邏輯相關(guān)問題的解決方案,或者說它的解決方案有著簡潔的邏輯特征。它的主要缺點(恕我直言)是學(xué)起來很難。

C/C++

就像獵豹一樣,C/C++主要用于對執(zhí)行速度要求很高的時候。它主要用于簡單程序,統(tǒng)計人工智能,如神經(jīng)網(wǎng)絡(luò)就是一個常見的例子。Backpropagation 只用了幾頁的C/C++代碼,但是要求速度,哪怕程序員只能提升一點點速度也是好的。

JAVA

新來者,Java使用了LISP中的幾個理念,最明顯的是垃圾收集。它的可移植性使它可以適用于任何程序,它還有一套內(nèi)置類型。Java沒有LISP和Prolog高級,又沒有C那樣快,但如果要求可移植性那它是最好的。

PYTHON

Python是一種用LISP和JAVA編譯的語言。按照Norvig文章中對Lips和Python的比較,這兩種語言彼此非常相似,僅有一些細(xì)小的差別。還有JPthon,提供了訪問Java圖像用戶界面的途徑。這是PeterNorvig選擇用JPyhton翻譯他人工智能書籍中程序的的原因。JPython可以讓他使用可移植的GUI演示,和可移植的http/ftp/html庫。因此,它非常適合作為人工智能語言的。

在人工智能上使用Python比其他編程語言的好處

優(yōu)質(zhì)的文檔

平臺無關(guān),可以在現(xiàn)在每一個*nix版本上使用

和其他面向?qū)ο缶幊陶Z言比學(xué)習(xí)更加簡單快速

Python有許多圖像加強庫像Python Imaging Libary,VTK和Maya 3D可視化工具包,Numeric Python, Scientific Python和其他很多可用工具可以于數(shù)值和科學(xué)應(yīng)用。

Python的設(shè)計非常好,快速,堅固,可移植,可擴展。很明顯這些對于人工智能應(yīng)用來說都是非常重要的因素。

對于科學(xué)用途的廣泛編程任務(wù)都很有用,無論從小的shell腳本還是整個網(wǎng)站應(yīng)用。

最后,它是開源的??梢缘玫较嗤纳鐓^(qū)支持。

AI的Python庫

總體的AI庫

AIMA:Python實現(xiàn)了從Russell到Norvigs的“人工智能:一種現(xiàn)代的方法”的算法

pyDatalog:Python中的邏輯編程引擎

SimpleAI:Python實現(xiàn)在“人工智能:一種現(xiàn)代的方法”這本書中描述過的人工智能的算法。它專注于提供一個易于使用,有良好文檔和測試的庫。

EasyAI:一個雙人AI游戲的python引擎(負(fù)極大值,置換表、游戲解決)

機器學(xué)習(xí)庫

PyBrain 一個靈活,簡單而有效的針對機器學(xué)習(xí)任務(wù)的算法,它是模塊化的Python機器學(xué)習(xí)庫。它也提供了多種預(yù)定義好的環(huán)境來測試和比較你的算法。

PyML 一個用Python寫的雙邊框架,重點研究SVM和其他內(nèi)核方法。它支持Linux和Mac OS X。

scikit-learn旨在提供簡單而強大的解決方案,可以在不同的上下文中重用:機器學(xué)習(xí)作為科學(xué)和工程的一個多功能工具。它是python的一個模塊,集成了經(jīng)典的機器學(xué)習(xí)的算法,這些算法是和python科學(xué)包(numpy,scipy.matplotlib)緊密聯(lián)系在一起的。

MDP-Toolkit這是一個Python數(shù)據(jù)處理的框架,可以很容易的進(jìn)行擴展。它海收集了有監(jiān)管和沒有監(jiān)管的學(xué)習(xí)算飯和其他數(shù)據(jù)處理單元,可以組合成數(shù)據(jù)處理序列或者更復(fù)雜的前饋網(wǎng)絡(luò)結(jié)構(gòu)。新算法的實現(xiàn)是簡單和直觀的??捎玫乃惴ㄊ窃诓粩嗟姆€(wěn)定增加的,包括信號處理方法(主成分分析、獨立成分分析、慢特征分析),流型學(xué)習(xí)方法(局部線性嵌入),集中分類,概率方法(因子分析,RBM),數(shù)據(jù)預(yù)處理方法等等。

自然語言和文本處理庫

NLTK 開源的Python模塊,語言學(xué)數(shù)據(jù)和文檔,用來研究和開發(fā)自然語言處理和文本分析。有windows,Mac OSX和Linux版本。

案例

做了一個實驗,一個使用人工智能和物聯(lián)網(wǎng)做員工行為分析的軟件。該軟件通過員工情緒和行為的分心提供了一個有用的反饋給員工,從而提高了管理和工作習(xí)慣。

使用Python機器學(xué)習(xí)庫,opencv和haarcascading概念來培訓(xùn)。建立了樣品POC來檢測通過安置在不同地點的無線攝像頭傳遞回來基礎(chǔ)情感像幸福,生氣,悲傷,厭惡,懷疑,蔑視,譏諷和驚喜。收集到的數(shù)據(jù)會集中到云數(shù)據(jù)庫中,甚至整個辦公室都可以通過在Android設(shè)備或桌面點擊一個按鈕來取回。

開發(fā)者在深入分析臉部情感上復(fù)雜點和挖掘更多的細(xì)節(jié)中取得進(jìn)步。在深入學(xué)習(xí)算法和機器學(xué)習(xí)的幫助下,可以幫助分析員工個人績效和適當(dāng)?shù)膯T工/團(tuán)隊反饋。

結(jié)論

python因為提供像 scikit-learn的好的框架,在人工智能方面扮演了一個重要的角色:Python中的機器學(xué)習(xí),實現(xiàn)了這一領(lǐng)域中大多的需求。D3.js JS中數(shù)據(jù)驅(qū)動文檔時可視化最強大和易于使用的工具之一。處理框架,它的快速原型制造使得它成為一門不可忽視的重要語言。AI需要大量的研究,因此沒有必要要求一個500KB的Java樣板代碼去測試新的假說。python中幾乎每一個想法都可以迅速通過20-30行代碼來實現(xiàn)(JS和LISP也是一樣)。因此,它對于人工智能是一門非常有用的語言。

對于希望加入到 AI 和大數(shù)據(jù)行業(yè)的開發(fā)人員來說,把雞蛋放在 Python 這個籃子里不但是安全的,而且是必須的?;蛘邠Q個方式說,如果你將來想在這個行業(yè)混,什么都不用想,先閉著眼睛把 Python 學(xué)會了。當(dāng)然,Python不是沒有它的問題和短處,你可以也應(yīng)該有另外一種甚至幾種語言與 Python 形成搭配,但是Python 將坐穩(wěn)數(shù)據(jù)分析和 AI 第一語言的位置,這一點毫無疑問。我甚至認(rèn)為,由于 Python 坐穩(wěn)了這個位置,由于這個行業(yè)未來需要大批的從業(yè)者,更由于Python正在迅速成為全球大中小學(xué)編程入門課程的首選教學(xué)語言,這種開源動態(tài)腳本語言非常有機會在不久的將來成為第一種真正意義上的編程世界語。

討論編程語言的優(yōu)劣興衰一直被認(rèn)為是一個口水戰(zhàn)話題,被資深人士所不屑。但是我認(rèn)為這次 Python 的上位是一件大事。請設(shè)想一下,如果十五年之后,所有40歲以下的知識工作者,無分中外,從醫(yī)生到建筑工程師,從辦公室秘書到電影導(dǎo)演,從作曲家到銷售,都能使用同一種編程語言進(jìn)行基本的數(shù)據(jù)處理,調(diào)用云上的人工智能 API,操縱智能機器人,進(jìn)而相互溝通想法,那么這一普遍編程的協(xié)作網(wǎng)絡(luò),其意義將遠(yuǎn)遠(yuǎn)超越任何編程語言之爭。目前看來,Python 最有希望擔(dān)任這個角色。

Python 的勝出令人意外,因為它缺點很明顯。它語法上自成一派,讓很多老手感到不習(xí)慣;“裸” Python 的速度很慢,在不同的任務(wù)上比C 語言大約慢數(shù)十倍到數(shù)千倍不等;由于全局解釋器鎖(GIL)的限制,單個Python 程序無法在多核上并發(fā)執(zhí)行;Python 2 和 Python 3 兩個版本長期并行,很多模塊需要同時維護(hù)兩個不同的版本,給開發(fā)者選擇帶來了很多不必要的混亂和麻煩;由于不受任何一家公司的控制,一直以來也沒有一個技術(shù)巨頭肯死挺 Python ,所以相對于 Python 的應(yīng)用之廣泛,其核心基礎(chǔ)設(shè)施所得到的投入和支持其實是非常薄弱的。直到今天,26歲的Python 都還沒有一個官方標(biāo)配的 JIT 編譯器,相比之下, Java 語言在其發(fā)布之后頭三年內(nèi)就獲得了標(biāo)配 JIT 。

另一個事情更能夠說明問題。Python 的 GIL 核心代碼 1992 年由該語言創(chuàng)造者 Guido van Rossum 編寫,此后十八年時間沒有一個人對這段至關(guān)重要的代碼改動過一個字節(jié)。十八年!直到2010年,Antoine Pitrou才對 GIL 進(jìn)行了近二十年來的第一次改進(jìn),而且還僅在 Python 3.x 版本中使用。這也就是說,今天使用 Python 2.7 的大多數(shù)開發(fā)者,他們所寫的每一段程序仍然被26年前的一段代碼牢牢制約著。

Python 就是這樣一個帶著各種毛病沖到第一方陣的賽車手,但即便到了幾年前,也沒有多少人相信它有機會摘取桂冠,很多人認(rèn)為 Java 的位置不可動搖,還有人說一切程序都將用 JavaScript重寫。但今天我們再看,Python 已經(jīng)是數(shù)據(jù)分析和 AI的第一語言,網(wǎng)絡(luò)攻防的第一黑客語言,正在成為編程入門教學(xué)的第一語言,云計算系統(tǒng)管理第一語言。Python 也早就成為Web 開發(fā)、游戲腳本、計算機視覺、物聯(lián)網(wǎng)管理和機器人開發(fā)的主流語言之一,隨著 Python 用戶可以預(yù)期的增長,它還有機會在多個領(lǐng)域里登頂。

而且不要忘了,未來絕大多數(shù)的 Python 用戶并不是專業(yè)的程序員,而是今天還在使用 Excel、PowePoint、SAS、Matlab和視頻編輯器的那些人。就拿 AI 來說,我們首先要問一下,AI 的主力人群在哪里?如果我們今天靜態(tài)的來談這個話題,你可能會認(rèn)為 AI 的主力是研究機構(gòu)里的 AI 科學(xué)家、擁有博士學(xué)位的機器學(xué)習(xí)專家和算法專家。但上次我提到李開復(fù)的“AI紅利三段論”明確告訴我們,只要稍微把眼光放長遠(yuǎn)一點,往后看三至五年,你會看到整個 AI 產(chǎn)業(yè)的從業(yè)人口將逐漸形成一個巨大的金字塔結(jié)構(gòu),上述的 AI 科學(xué)家僅僅是頂端的那么一點點,95% 甚至更多的 AI 技術(shù)人員,都將是AI 工程師、應(yīng)用工程師和AI 工具用戶。我相信這些人幾乎都將被Python 一網(wǎng)打盡,成為 Python 陣營的龐大后備軍。這些潛在的 Python 用戶至今仍然在技術(shù)圈子之外,但隨著 AI 應(yīng)用的發(fā)展,數(shù)百萬之眾的教師、公司職員、工程師、翻譯、編輯、醫(yī)生、銷售、管理者和公務(wù)員將裹挾著各自領(lǐng)域中的行業(yè)知識和數(shù)據(jù)資源,涌入 Python 和 AI 大潮之中,深刻的改變整個 IT,或者說 DT (數(shù)據(jù)科技)產(chǎn)業(yè)的整體格局和面貌。

為什么 Python 能夠后來居上呢?

如果泛泛而論,我很可以列舉 Python 的一些優(yōu)點,比如語言設(shè)計簡潔優(yōu)雅,對程序員友好,開發(fā)效率高。但我認(rèn)為這不是根本原因,因為其他一些語言在這方面表現(xiàn)得并不差。

還有人認(rèn)為 Python 的優(yōu)勢在于資源豐富,擁有堅實的數(shù)值算法、圖標(biāo)和數(shù)據(jù)處理基礎(chǔ)設(shè)施,建立了非常良好的生態(tài)環(huán)境,吸引了大批科學(xué)家以及各領(lǐng)域的專家使用,從而把雪球越滾越大。但我覺得這是倒因為果。為什么偏偏是 Python 能夠吸引人們使用,建立起這么好的基礎(chǔ)設(shè)施呢?為什么世界上最好的語言 PHP 里頭就沒有 numpy 、NLTK、sk-learn、pandas 和 PyTorch 這樣級別的庫呢?為什么 JavaScript 極度繁榮之后就搞得各種程序庫層次不齊,一地雞毛,而 Python 的各種程序庫既繁榮又有序,能夠保持較高水準(zhǔn)呢?

我認(rèn)為最根本的原因只有一點:Python 是眾多主流語言中唯一一個戰(zhàn)略定位明確,而且始終堅持原有戰(zhàn)略定位不動搖的語言。相比之下,太多的語言不斷的用戰(zhàn)術(shù)上無原則的勤奮去侵蝕和模糊自己的戰(zhàn)略定位,最終只能等而下之。

Python 的戰(zhàn)略定位是什么?其實很簡單,就是要做一種簡單、易用但專業(yè)、嚴(yán)謹(jǐn)?shù)耐ㄓ媒M合語言,或者叫膠水語言,讓普通人也能夠很容易的入門,把各種基本程序元件拼裝在一起,協(xié)調(diào)運作。

正是因為堅持這個定位,Python 始終把語言本身的優(yōu)美一致放在奇技妙招前面,始終把開發(fā)者效率放在CPU效率前面,始終把橫向擴張能力放在縱向深潛能力之前。長期堅持這些戰(zhàn)略選擇,為 Python 帶來了其他語言望塵莫及的豐富生態(tài)。

比如說,任何一個人,只要愿意學(xué)習(xí),可以在幾天的時間里學(xué)會Python基礎(chǔ)部分,然后干很多很多事情,這種投入產(chǎn)出比可能是其他任何語言都無法相比的。再比如說,正是由于 Python 語言本身慢,所以大家在開發(fā)被頻繁使用的核心程序庫時,大量使用 C 語言跟它配合,結(jié)果用 Python 開發(fā)的真實程序跑起來非常快,因為很有可能超過 80% 的時間系統(tǒng)執(zhí)行的代碼是 C 寫的。相反,如果 Python 不服氣,非要在速度上較勁,那么結(jié)果很可能是裸速提高個幾倍,但這樣就沒人有動力為它開發(fā) C 模塊了,最后的速度遠(yuǎn)不如混合模式,而且很可能語言因此會變得更復(fù)雜,結(jié)果是一個又慢又丑陋的語言。

更重要的是,Python 的包裝能力、可組合性、可嵌入性都很好,可以把各種復(fù)雜性包裝在 Python 模塊里,暴露出漂亮的接口。很多時候,一個程序庫本身是用 C/C++ 寫的,但你會發(fā)現(xiàn),直接使用 C 或者 C++ 去調(diào)用那個程序庫,從環(huán)境配置到接口調(diào)用,都非常麻煩,反而隔著一層,用其python 包裝庫更加清爽整潔,又快又漂亮。這些特點到了 AI 領(lǐng)域中,就成了 Python 的強大優(yōu)勢。Python 也借助 AI 和數(shù)據(jù)科學(xué),攀爬到了編程語言生態(tài)鏈的頂級位置。Python 與 AI綁在一起,對它們來說,無論是電子商務(wù)、搜索引擎、社交網(wǎng)絡(luò)還是智能硬件,未來都只是生態(tài)鏈下游的數(shù)據(jù)奶牛、電子神經(jīng)和執(zhí)行工具,都將聽命于自己。

對編程語言發(fā)展歷史缺乏了解的人可能會覺得,Python 的戰(zhàn)略定位是犬儒主義和缺乏進(jìn)取心的。但事實證明,能同時做到簡單而嚴(yán)謹(jǐn)、易用而專業(yè),是很難的,而能夠堅守膠水語言的定位,更是難上加難。

有的語言,從一開始就是出于學(xué)術(shù)而非實用的目的,學(xué)習(xí)曲線過于陡峭,一般人很難接近。有的語言,過于依賴背后金主的商業(yè)支持,好的時候風(fēng)光無限,一旦被打入冷宮,連生存下去都成問題。有的語言,設(shè)計的時候有明確的假想場景,要么是為了解決大規(guī)模并發(fā),要么是為了解決矩陣運算,要么是為了做網(wǎng)頁渲染模板,一旦離開這個場景,就各種不爽。更多的語言,剛剛?cè)〉靡稽c成功,就迫不及待的想成為全能冠軍,在各個方向上拼命的伸展觸角,特別是在增強表達(dá)能力和提升性能方面經(jīng)常過分積極,不惜將核心語言改得面目全非,最后變成誰都無法掌控的龐然大物。相比之下,Python 是現(xiàn)代編程語言設(shè)計和演化當(dāng)中的一個成功典范。

Python 之所以在戰(zhàn)略定位上如此清晰,戰(zhàn)略堅持上如此堅定,歸根結(jié)底是因為其社區(qū)構(gòu)建了一個堪稱典范的決策和治理機制。這個機制以 Guido van Rossum (BDFL,Pythoners 都知道這是什么意思), DavidBeazley, Raymond Hettinger 等人為核心,以 PEP 為組織平臺,民主而有序,集中而開明。只要這個機制本身得以維系,Python 在可見的未來里仍將一路平穩(wěn)上行。

最有可能向 Python 發(fā)起挑戰(zhàn)的,當(dāng)然是Java。Java 的用戶存量大,它本身也是一種戰(zhàn)略定位清晰而且非常堅定的語言。但我并不認(rèn)為 Java 有很大的機會,因為它本質(zhì)上是為構(gòu)造大型復(fù)雜系統(tǒng)而設(shè)計的。什么是大型復(fù)雜系統(tǒng)?就是由人清清楚楚描述和構(gòu)造出來的系統(tǒng),其規(guī)模和復(fù)雜性是外生的,或者說外界賦予的。而 AI 的本質(zhì)是一個自學(xué)習(xí)、自組織的系統(tǒng),其規(guī)模和復(fù)雜性是一個數(shù)學(xué)模型在數(shù)據(jù)的喂養(yǎng)下自己長出來的,是內(nèi)生的。因此,Java大多數(shù)的語言結(jié)構(gòu)對于大數(shù)據(jù)的處理和 AI 系統(tǒng)的開發(fā)顯得使不上勁,你強的東西這里用不上,這里需要的東西你做起來又別扭。而 Python 在數(shù)據(jù)處理方面的簡潔強悍早就盡人皆知。對比兩個功能相同的 Java 和 Python 機器學(xué)習(xí)程序,正常人只要看兩眼就能做出判斷,一定是 Python 程序更加清爽痛快。

大概在 2003 或者 2004 年的時候,我買過一本 Python 的書,作者是一位巴西人。他說自己之所以堅定的選擇 Python,是因為他小時候經(jīng)常夢到未來世界將由一條大蟒蛇(蟒蛇的英文為python)統(tǒng)治。我當(dāng)時覺得這哥們好可憐,做個夢都能夢到這么恐怖的場景。但今天來看,也許他只是像黑客帝國里的程序員安德森一樣,不小心穿越到未來,并且窺探到了世界的真相。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python人工智能的頭牌語言

Python人工智能的頭牌語言:誰會成為AI 和大數(shù)據(jù)時代的第一開發(fā)語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那么三年之后,趨勢已經(jīng)非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之后,Pytho
推薦度:
標(biāo)簽: 語言 的語言 python
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top