關於人工智慧和python
- 2019 年 10 月 16 日
- 筆記
人工智慧的話題在近幾年可謂是相當火熱,前幾天看快本時其中有一個環節就是關於人工智慧的,智慧家電、智慧機器人、智慧工具等等,在我的印象里,提到人工智慧就會出現 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 這麼好上手的、適合初學者的程式語言,為什麼不都嘗試學一下呢,畢竟技多不壓身,不邁開第一步,你永遠不知道你後面的路怎麼走!
時代在進步,社會在發展,不說人工智慧以後會不會大火,但一定不會褪色。
參考鏈接:https://blog.csdn.net/leyangjun/article/details/79931144