人工智能與python


                                                                   

人工智能的話題在近幾年可謂是相當火熱,前幾天看快本時其中有一個環節就是關於人工智能的,智能家電、智能機器人、智能工具等等,在我的印象里,提到人工智能就會出現 Python,然后我便在網上查找了相關信息,並整合了一下。

 

 

 

人工智能

人工智能,英文縮寫為AI,是研究、開發用於模擬、延伸和擴展人的智能的理論、方法、技術及應用系統的一門新的技術科學;是計算機科學的一個分支,它企圖了解智能的實質,並生產出一種新的能以人類智能相似的方式做出反應的智能機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。

 

Python

Python 是一種跨平台的計算機程序設計語言。是一種面向對象的動態類型語言,最初被設計用於編寫自動化腳本(shell),隨着版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。

 

之間的關系

而一般說起人工智能都認為是用 Python 語言實現的,就如我之前說的,但查完資料發現,的確大部分的人工智能的代碼都是使用 Python 來編寫,寫人工智能代碼時需要用到許多框架工具和庫,這些大部分都是 Python 提供的,Python是這些庫的API binding,但並不能因為這樣就認為人工智能就是靠 Python 寫的,Python 是解釋語言,速度比較慢,它只是調用AI接口,而人工智能核心算法是完全依賴於 C/C++ 這類編譯語言,真正的計算全是 C/C++ 寫好的數據底層,因為是計算密集型,需要非常精細的優化,還需要GPU、專用硬件之類的接口,這些都只有C/C++能做到,用Python只是寫相應的邏輯!所以某種意義上其實C/C++才是人工智能領域最重要的語言。

那為什么不直接全部用 C/C++ 寫人工智能呢?這是因為 Python 強大的便捷性,開發生態成熟,有很多有用的庫可以用。使用 Python是因為 CPython 的膠水語言特性,要開發一個其他語言到 C/C++ 的跨語言接口,Python是最容易的,比其他語言的 ffi 門檻要低不少,C語言要寫幾百行的代碼,可能用 Python 幾行就搞定了,效率很高。尤其是使用 Cython 的時候。其他語言的 ffi 許多都只能導入 C 的函數入口點,復雜的數據結構大多只能手工用 byte 數組拼起來,如果還需要回調函數輸入那就無計可施了。而 CPython 的 C API 是雙向融合的,可以直接對外暴露封裝過的 Python 對象,還可以允許用戶通過繼承這些自定義對象來引入新特性,甚至可以從 C 代碼當中再調用 Python 的函數。比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調用的擴展類庫。

打個比方,就像我們統計數據或選擇用 excel 制作表格時,因為在需要用到加減乘除或者、函數等時,只需要套用公式就可以,因為 SUM、AVERAGE 等這樣的函數運行的背后,是 C++/C# 等語言已經編寫好了代碼,所以 Excel 只是工具和展現形式並不是它做計算。同理在學習人工智能時 Python 只是用來操作深度學習框架的工具,實際負責運算的主要模塊並不依靠 Python,真正起作用的是也是一大堆復雜的 C/ C++  程序。 

 

用於通用 AI:

AIMA —— Python 實現 Russell 和 Norvig 的‘Artificial Intelligence: A Modern Approach’庫。

pyDatalog —— Python 中的邏輯編程引擎

SimpleAI —— Python 實現了“AIMA”一書中描述的許多人工智能算法。它側重於提供易於使用,有據可查的測試庫。

EasyAI —— 簡單的 Python 引擎,用於 AI 的雙人游戲,如 Negamax, transposition tables, game solving。

 

用於機器學習:

PyBrain —— 靈活、簡單,但對於機器算法任務非常高效,它是 Python 的一個機器學習模塊化庫。它還提供了各種預定義的環境來測試和比較你的算法。

PyML —— 一款以 Python 編寫的側重於 SVM 和其他內核方法的雙邊框架。它支持在 Linux 和 Mac OS X 上運行。

scikit-learn —— 旨在提供在各種環境下可重復使用的簡單而強大的解決方案:機器學習作為科學和工程的多功能工具。它是一個 Python 模塊,它將經典的經典機器學習算法集成在如緊密結合的科學世界的 Python 軟件包中(如 numpy,scipy,matplotlib)。

小結

了解了 Python 和人工智能的關系后,我認為雖然人工智能的核心算法是 C/C++,但我們編寫代碼時並不需要過多的了解 C/C++,我們只需要用到 Python 就好,而 Python 語言對初學編程的人來說是很友好的,被稱為“最不需要備注的語言”。上手快,語言簡單易懂,對比其他語言來說沒那么多條條框框的規則。

隨着社會的不斷發展和需求,人工智能已經逐漸被發展到社會行業的方方面面,從科學層面看,人工智能跨越認知科學、神經科學、數學和計算機科學等學科,具有高度交叉性;從技術層面看,人工智能包含計算機視覺、機器學習、知識工程、自然語言處理等多個領域,具有極強專業性;從產業層面看,人工智能在智能制造、智慧農業、智慧醫療、智慧城市等領域的應用不斷擴大,具有內在融合性;從社會層面看,人工智能給社會治理、隱私保護、倫理道德等帶來新的影響,具有全面滲透性。目前,在邊界清晰、規則明確、任務規范的特定應用場景下(如下圍棋、人臉識別、語音識別)設計出的智能體表現出較好的專用智能。在全新理念的引導下,機器人可以更多承擔重復簡單甚至是危險的工作,而幫助人類從繁雜工作中解放,獲得更多從事創造性工作的機會。比起人工智能完全取代人的方式,工廠不必擔心人工智能做出錯誤的決定延誤生產,也不用考慮人在做重復勞動時效率降低的問題,雙方取長補短,最大化的提升生產效率,從長遠角度來看,這樣的方式無疑更符合生產的需求,也更符合社會的需求。

所以我有一句話想對沒學過編程,但對人工智能有所期望的人說:既然有 Python 這么好上手的、適合初學者的編程語言,為什么不都嘗試學一下呢,畢竟技多不壓身,不邁開第一步,你永遠不知道你后面的路怎么走!

時代在進步,社會在發展,不說人工智能以后會不會大火,但一定不會褪色。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM