《一堂課掌握AI自學路徑圖LIVE》之小記

FrankCheung發表於2018-05-10

這篇文章也發在我的部落格,歡迎圍觀?

人工智慧主要研究領域

摘自Russell & Norvig的經典教材《人工智慧

自然語言處理(natural language processing)
知識表示(knowledge representation)
自動推理(automated reasoning)
機器學習(machine learning)
計算機視覺(computer vision)
機器人學 (robotics)

AI主要應用的生活場景

  1. 智慧音響一類的生活助手,主要是使用語音識別
  2. 影象識別,例如自動駕駛、AI加持的拍照演算法、動態行為分析等

七牛雲的AI應用

《一堂課掌握AI自學路徑圖LIVE》之小記

1. 視訊上傳後AI識別人臉
2. AI鑑黃、反暴恐

《一堂課掌握AI自學路徑圖LIVE》之小記
《一堂課掌握AI自學路徑圖LIVE》之小記
3. AI視訊分類
《一堂課掌握AI自學路徑圖LIVE》之小記
4. 基礎要素切割,如某段視訊中存在哪些人、物等要素
5. 對視訊進行描述
6. 對視訊進行分割定位

快速入門

給初學者的建議

  1. 不要等到掌握所有的相關數學知識再開始

矩陣/張量,特徵值分解,行列式,範數...
概率分佈,獨立,貝葉斯,最大似然估計...
線性優化,梯度下降、牛頓法...
導數、偏微分,鏈式法則,矩陣求導...
資訊理論、數值計算...

  1. 不要收集過多的學習資料
  2. 動手X3

機器學習速覽

機器學習是什麼?

機器學習就是,利用學習演算法,從資料中產生模型

Spam filters, Search ranking, Click through rate predict, Recommendations, Speech recognition,Machine translation, Face detection, Image classification......

  1. 傳統程式設計: 資料 + 程式 => 輸出結果
  2. 機器學習: 資料 + 輸出結果 ====> 學習模型

機器學習與傳統程式設計

泛化性

對於某類任務T和效能度量P,如果一個計算機程式在T上以P衡量的效能隨著經驗E而自我完善,那麼我們稱這個計算機程式在從經驗E中學習。-- Tom M. Mitchell

如下圖,雖然第三幅圖沒有偏差,但是對於未知的點的預測效果,沒有圖二好。這就是泛化性。

機器學習泛化性

常見任務與演算法

《一堂課掌握AI自學路徑圖LIVE》之小記

要針對具體學習問題進行

如果不針對某一具體的學習問題,則沒有哪個演算法比其他演算法更高效

  1. 在某些問題上表現很好的學習演算法,在另一些問題上卻可能不盡如人意
  2. 學習演算法的歸納偏好與問題是否匹配,往往起決定性作用
  3. 歸納偏好是學習演算法本身所做的關於“什麼樣的模型更好”的假設

影象分類

人可以輕而易舉進行影象分類,而機器不行,因為存在語義鴻溝

如下圖,人看到貓,計算機看到的是數字,計算機是語義這個概念的。

《一堂課掌握AI自學路徑圖LIVE》之小記

K近鄰

K近鄰就是K最近鄰(k-Nearest Neighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

《一堂課掌握AI自學路徑圖LIVE》之小記

換言之,給定一個訓練資料集,我有一個新的例項,如果在資料中與該例項最鄰近的K個例項,這些例項中大多數屬於某一類,那麼就判斷該新的例項屬於某一類。

缺點:

  1. 分類器必須記住所有訓練資料並將其儲存起來,以便於未來測試資料用於比較。這在儲存空間上是低效的,資料集的大小很容易就以GB計。
  2. 對一個測試影象進行分類需要和所有訓練影象作比較,演算法計算資源耗費高。

線性分類器

由於K近鄰存在明顯缺點,所以我們需要一種更強大的方法來解決影象分類問題,此處可以用線性分類器

推薦學習資料

書籍

  1. 尼克《人工智慧簡史》
  2. Miroslav Kubat《機器學習導論》
  3. 周志華《機器學習》(西瓜書)
  4. Aurelien Geron《 Hands-on Machine Learning with Scikit-learn & Tensorflow 》
  5. Ian Goodfellow等《Deep Learning》(花書)

文章

  1. Getting Started With MachineLearning (all in one) by 樑勁 http://sina.lt/f3W8
  2. Machine learning 101 by Jason Mayes http://sina.lt/f3W3

課程

  1. 機器學習速成課程 https://developers.google.com/machine-learning/crash-course/
  2. 臺灣大學李宏毅教授 http://speech.ee.ntu.edu.tw/~tlkagk/courses.html
  3. 吳恩達教授 http://mooc.study.163.com/smartSpec/detail/1001319001.htm
  4. 史丹佛大學 cs231n http://cs231n.stanford.edu/
  5. 史丹佛大學 cs224n http://web.stanford.edu/class/cs224n/

其他

  1. scikit-learn Tutorials http://scikit-learn.org/stable/tutorial/index.html
  2. 機器學習術語表 https://developers.google.com/machine-learning/crash-course/glossary

Q&A

  1. 機器學習與社會科學的關係?
    機器學習的發展很大程度上依託於社會科學,因為機器學習其實就是在探究心理學的理念以及大腦如何學習與思考,機器學習在發展過程中又會反哺社會科學。

  2. 中國人工智慧領域處於領先位置,但為什麼這方面的資料都是國外的?
    中國是一個大國,社會行為方面的資料非常豐富。但是由於在計算機領域我們起步比較晚,所以在基礎領域我們的研究並不深。這不僅僅是人工智慧領域,包括整個計算機學科領域,我們很多的應用都是基於國外的基礎理論。但是到實際應用領域,我們是非常領先的。例如人臉識別,中國人口眾多,可供訓練的樣本非常豐富。中國在人工智慧面臨的挑戰是如何將我們在應用中的經驗和總結與基礎理論相結合,推動學術發展。

  3. 是否建議初學者從深度學習開始入手學習?
    不建議。應該系統學習基礎概念及其關係,練習熟悉常用方法,再進一步學習。

  4. Pytorch和TensorFlow兩個機器學習庫,選擇哪個學習比較好?
    兩者皆可。TensorFlow是google出品,開源可以參考的比較多。目前來說做學術研究Pytorch多一些,做應用層面的TensorFlow多一些。

  5. 學習過程中應該如何實踐?
    學習線上課程,做這些課程的練習,同時要去論壇和別人交流,才能進步。或者參加天池等的一些人工智慧競賽,逼迫自己去實踐。

  6. AI開發用什麼程式語言合適?
    雖然python有很多的庫,而且主流框架很多都使用Pythen的介面。但是隻會Pyhton不夠,七牛AI開發過程中使用了包括C++、GO等程式語言。

  7. 是否有必要看學術論文?
    有必要。現在一項技術從科研到落地的時間特別短,緊跟最新的科研成果很有必要。

  8. AI開發過程
    收集源資料--抽樣、整理生成樣本--放入計算實體訓練(過程中做超引數除錯)--形成模型(評估模型是否滿足需求,通過另外一批樣本測試)--滿足則上線

《一堂課掌握AI自學路徑圖LIVE》之小記
《一堂課掌握AI自學路徑圖LIVE》之小記

直播回顧

附上直播回顧連結:
一堂課掌握AI自學路徑圖(上)
一堂課掌握AI自學路徑圖(下)

感謝各位看官,歡迎批評指正?

相關文章