人工智能的話題在近幾年可謂是至關火熱,前幾天看快本時其中有一個環節就是關於人工智能的,智能家電、智能機器人、智能工具等等,在個人印象裏,提到人工智能就會出現 Python,而後我便在網上查找了相關信息,並整合了一下。算法
人工智能shell
人工智能,英文縮寫爲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