本文為想要學習人工智能的人提供有關理論、技術和應用的知識。本文的每個部分都解釋了基本的工作原理。在最後一節中,你可以找到書籍、博客等其他資料。
起源
人工智能是在模仿人類智慧的過程中誕生的。它是否有可能完全模仿人類的思維目前還尚不清楚,但我們可以重新塑造它的一些功能。與此同時,整個認知科學領域受到了人們廣泛的關注。
機器接管世界有些言過其實,但探討人工智能與自然智能的關係,瞭解計算機在哪些方面優於人類,對人類來說是利大於弊的。
從某種意義上說,所有的計算機甚至計算器都代表著一種人工智能。正如該領域的創始人之一所言:“一旦它成功,就沒有人再叫它人工智能了。” ——約翰麥卡錫。
隨著計算機的發展和技術的進步,人工智能將會變得更加智能化。最新研究表明,未來5 —10年內,有多達50%的就業機會受到人工智能的威脅。無論是否能完全模擬人類思維,人工智能都會對我們的生活產生重大影響。
數學的先決條件
值得注意的是,我們習慣的古典邏輯不能代表大多數現代技術。因此,你首先應該理解模糊邏輯的思想。其次,圖形也是很重要的數學主題,下文將幫助你更好的理解數學。
線性代數
線性代數將概念和操作從普通代數擴展到數字集合。它通常代表輸入、輸出和操作參數。
張量:張量是標量、矢量和矩陣對高維對象的推廣。
目標函數
目標函數也被稱為目標、成本或損失功能。目標函數通常用於衡量算法在工作中的表現。此外,通過優化目標函數,我們可以改進算法。有時我們不能直接計算目標函數,而需要對算法的性能進行評估。
優化
在構建目標函數之後,我們需要優化它的參數以提高算法的性能。常用的優化方法是梯度下降法。
GD有很多種類,其中之一是隨機梯度下降法,它只需要訓練數據的一個子集來計算每次迭代的損失和梯度。另一個重要的算法是動量,它可以使參數向一個方向上移動。
沒有免費的午餐定理
這個定理傳達了一個非常重要的思想:沒有普遍有效的人工智能方法。簡而言之,這個定理指出,針對某一領域的所有問題,所有算法的期望性能是相同的。儘管這個定理在最一般的情況下尚未得到證實,但實踐已經證明了它的重要性。所以,我們必須為每個問題都選擇合適的方法。
常用的方法和算法
每種方法的主要目的是為特定問題構建一個適合的輸入—輸出的映射模型。此外,不同的排列組合可能會得出更好的解決方案。例如並行搜索、堆疊和增強等技術可以使用簡單的混合模型來構造更好的模型。
雖然搜索方法通常只需要規範問題,但大多數深度學習算法都需要大量的數據。因此,可用的數據在方法的選擇中起著重要的作用。
下文以大致的歷史發展順序來描述技術的主要類別:
經典編程
雖然編程不再被認為是人工智能技術,但它已經是多年前的事了。
經典編程的可解釋性和嚴格的規範允許在它一個結構中結合數百甚至數千個不同的程序。然而,這種方法在在複雜系統中的實踐都失敗了,因為在複雜系統中預測所有可能的輸入—輸出組合是非常困難的。
基於規則的專家系統
典型的專家系統由一組if-then規則和推理機制組成。本教程將為你提供總體思路。一般情況下,現代知識圖通常用於問答和自然語言處理。雖然這些方法今天仍在使用,但專家系統的普及率正在穩步下降。
搜索
在你可以定義解決方案的空間的情況下,搜索將幫助你找到一個好的解決方案。下文會介紹一些常見搜索算法,以及它們在遊戲開發中的應用。儘管這些方法看起來很簡單,但在使用得當時可以獲得意想不到的好結果。
遺傳算法
遺傳或進化算法是受生物進化啟發的一種搜索。
機器學習
一般來說,ML方法也使用搜索,通常是使用梯度下降(Gradient Descent)來尋找解決方案。換句話說,他們使用訓練樣例來學習/擬合參數。實際上有幾十種ML算法,但其中大多數都依賴於相同的原理。迴歸、支持向量機、樸素貝葉斯和決策樹是最受歡迎和廣泛使用的。
概率圖形模型
這些模型以圖形的形式學習變量之間的統計依賴關係。現在,雖然它們在實際應用中被神經網絡取代,但對複雜系統的分析仍然有用。
深度學習
簡而言之,深度學習是ML方法的一個子集,其中包含許多表示層。NN最特殊的屬性之一就是可以以任意組合堆疊不同的圖層。
神經網絡的基本類型:
前饋
復發
卷積(和不同類型的卷積)
在更專業化的模塊中,神經注意機制在許多應用中起到了良好的作用。像Long Short Term Memory這樣的即插即用模塊或用於關係推理的即插即用模塊在架構設計中提供了很大的靈活性。通過這種方式,你可以很容易的創建遞歸卷積網絡。
一些技術在改進神經網絡和其他ML模型的泛化的同時又會提高其準確性。其中最受歡迎的是Dropout和Batch Normalization。
Autoencoders最著名的應用程序是 Word2Vec。此外,它還可用於創建文檔、知識圖形實體、圖像、基因和任何其他類型的數據。
自組織映射、波爾茲曼機器、Spiking神經網絡、自適應共振網絡等神經網絡在文獻中很受歡迎,但實際應用相對較少。
強化學習
在歷史發展進程中,出現了了大量的RL方法。其中最先進的技術有Evolution Strategies,Deep Reinforcement Learning,Asynchronous Advantage Actor-Critic(A3C)等。
發展
由於大多數現代系統都或多或少使用相同的硬件(GPU和TPU),本節中將重點介紹軟件編程。
基礎知識
Python可能是最適合初學者的編程語言。它與第一個人工智能語言Lisp有許多相似之處。Python具有直觀的語法和受眾龐大的社區,它能提供大量的軟件包、教程和訓練材料。
數據科學
由於人工智能方法高度依賴於數據,因此需要你能夠分析和處理它。
使用Python和Pandas系列進行數據分析將幫助你更深入地瞭解數據集。
機器學習
從Andrew Ng的機器學習課程開始學習。它涵蓋了所有需要理解的數學和基本方法:線性和邏輯迴歸、支持向量機、主成分分析、簡單的神經網絡等。
因為機器模型自動化需要比手動構建的模型更多的資源,所以它還沒有被廣泛使用。此外,在開展人工智能項目時,你應該考慮可能存在的安全問題。
這些資源將幫助你更好地理解人工智能:
書目清單
人工智能:Stuart Russel和Peter Norvig《現代方法》
人工智能:David L. Poole和Alan K. Mackworth《計算Agent的基礎》
Ian Goodfellow,Yoshua Bengio和Aaron Courville撰寫的《深度學習》
Andreessen Horowitz《AI Playbook》
Michael Nielsen 《神經網絡和深度學習》
Andrew Ng 《機器學習的渴望》
Marvin Minsky《情感機器》
博客
OpenAI- 專注於人工智能的安全問題(https://blog.openai.com)
DeepMind - “解決智能。用它來使世界變得更美好。”(https://deepmind.com/blog/)
谷歌研究 - 谷歌研究的最新消息(https://research.googleblog.com)
Facebook研究 - 關於Facebook研究的最新消息(https://research.fb.com/blog/)
微軟下一篇 - 關於微軟技術和研究的最新消息(https://blogs.microsoft.com/next/)
BAIR - 伯克利AI研究平臺(http://bair.berkeley.edu/blog/)
直覺機器 - 深度學習模式,方法和策略(https://medium.com/intuitionmachine)
LAB41- 關於數據分析研究的發現、實驗結果和想法(https://gab41.lab41.org)
Distill -機器學習研究雜誌(https://distill.pub)
閱讀更多 AI中國 的文章