TensorFlow系列專題(一):機器學習基礎

磐創AI發表於2018-11-05

TensorFlow系列專題(一):機器學習基礎

一.人工智慧發展

二.人工智慧面臨的挑戰

三.機器學習簡介

四.解決機器學習問題的一般流程

(1)資料收集

(2)資料預處理

(3)特徵工程

(4)模型的選擇

(5)模型的評估

 

一.人工智慧發展

1956年的8月,美國達特茅斯學院(Dartmouth College)舉行了一次研討會,這次會議由約翰麥卡錫等人發起,會議上約翰麥卡錫首次提出了“人工智慧”這個概念,這次會議也被公認為是人工智慧誕生的標誌。在這六十多年的時間裡,人工智慧的發展起起伏伏、忽“冷”忽“熱”。而2016年AlphaGo與李世石的那場“世紀大戰”則徹底點燃了大眾的熱情。當前人工智慧成了一個“香餑餑”,很多國家都在積極爭奪人工智慧領域的話語權,各大公司也都不斷加大在人工智慧領域的投入。對於想要轉行人工智慧領域或者正在從事人工智慧領域的從業者來說,當前是一個不折不扣的黃金時代。

機器學習和深度學習作為解決人工智慧問題的工具,目前正被廣泛的學習和使用。本書以Google的深度學習框架TensorFlow為載體,希望幫助讀者快速的掌握這一深度學習的“利器”,同時讓讀者對深度學習的演算法有一個初步的瞭解,並能夠利用這套工具和演算法解決自己所面臨的深度學習的問題。

 二.人工智慧面臨的挑戰

從Google推出無人駕駛汽車,到AlphaGo戰勝人類頂級圍棋高手李世石,再到阿里巴巴宣佈成立人工智慧研究院——達摩院,最近幾年關於人工智慧的話題一直霸佔著各大媒體的頭條。隨著國務院於2017年7月8日印發《新一代人工智慧發展規劃》,人工智慧也已經上升到了國家發展的戰略高度。

什麼是人工智慧(Artificial Intelligence)?目前關於人工智慧還沒有一個統一和明確的定義,我們可以簡單地認為:人工智慧旨在研究如何讓計算機擁有(或部分擁有)人類的智力,從而去解決現實中只有依靠人的智力才能解決的問題。

目前,人工智慧的應用已經非常廣泛,涵蓋了金融、電商、醫療、製造業、教育等多個領域,諸如科大訊飛的語音識別、谷歌的翻譯系統、電子商城的推薦系統、美圖軟體的圖片處理功能以及今日頭條的個性化新聞推薦等,這些具體的應用場景和我們的生活息息相關。而在未來,人工智慧將會覆蓋到更多的領域,這不僅是一場科技的革命,更是時代的大勢所趨。人工智慧的浪潮必然會讓我們的生活發生翻天覆地的變化,也將全方位推動人類社會邁向更高的文明。

對於人工智慧的討論,有兩個極端的現象,一種是過分的誇大人工智慧的能力,另一種則是過於貶低人工智慧的潛在價值。人工智慧還處在一個“幼小”的年齡段,過分的吹噓人工智慧的能力,甚至於炒作所謂的“人工智慧威脅論”都不利於人工智慧的發展。雖然人工智慧並沒有那麼強,但是在很多的現實問題中,人工智慧的確已經可以做的很好了,所以我們也應該重視人工智慧未來的發展潛力。這一次浪潮過後,不知道人工智慧的發展又會面臨什麼樣的境地,作者撰寫本書的目的之一就是希望能讓更多的人快速的加入這個浪潮之中,能讓更多的專案可以落地。只有大家正視人工智慧,讓它保持一個健康的發展環境,才能依靠它創造出最大的價值。

 三.機器學習簡介

機器學習(Machine Learning)是讓計算機能夠自動地從某些資料中總結出規律,並得出某種預測模型,進而利用該模型對未知資料進行預測的一種方法。它是一種實現人工智慧的方式,是一門綜合了統計學、概率論、逼近論、凸分析、計算複雜性理論等的交叉學科。

目前對於機器學習的研究和使用大概集中於下圖所示的一些領域:

TensorFlow系列專題(一):機器學習基礎

圖一 機器學習的研究和應用領域

事實上,無論是模式識別問題還是資料探勘問題,它們所涉及到的機器學習的問題在很多地方都是相通的,只是在方法和側重點上有所區別。模式識別是機器學習中通過數學方法來研究模式處理的一類問題;資料探勘是從資料庫管理、資料分析、演算法的角度探索機器學習問題;而統計學習則是站在統計學的視角來研究機器學習問題。

計算機視覺、語音識別以及自然語言處理(這裡特指文字處理)目前是機器學習領域最常見的幾類應用領域。計算機視覺是一門研究如何讓機器能夠替代人的眼睛,把看到的圖片進行分析、處理的一門科學。在影像分類、人臉識別、車牌識別、自動駕駛中的街景識別等場景均有十分廣泛的應用。語音識別是把語音處理、語義理解等技術和機器學習結合起來。常見的應用有:siri、小冰等語音助手。此外,語音識別經常還會和自然語言處理技術中的機器翻譯、語音合成等技術構建出更加複雜的應用,如:語音翻譯器。自然語言處理旨在使用自然語言處理技術使計算機能夠“讀懂”人類的語言。具體的應用有:谷歌翻譯、垃圾郵件的識別、知識圖譜等。

目前,機器學習大致可以分為以下幾類:

(1)有監督學習(Supervised learning):我們已經知道一些資料和正確的輸出結果(訓練集),然後通過這些資料訓練出一個模型,再利用這個模型去預測新資料的輸出結果。監督學習可分為迴歸問題和分類問題兩大類。迴歸問題中,我們預測的結果是連續值;而分類問題中,我們預測的結果是離散值。常見的有監督學習演算法有:線性迴歸、邏輯迴歸、K-近鄰、樸素貝葉斯、決策樹、隨機森林、支援向量機等。

(2)無監督學習(Unsupervised learning):無監督學習中沒有給定類標的訓練樣本,這就需要我們對給定的資料直接進行建模。和監督學習最大的不同在於無監督學習我們事先並不知道資料的類標。常見的無監督學習演算法有:聚類、EM演算法等。

(3)半監督學習(Semi-supervised learning)):給定的資料集中既包括有類標的資料,也包括沒有類標的資料。是一種介於有監督學習和無監督學習之間的方法,它在工作量(例如資料的打標)和模型的準確率之間取了一個平衡點。

(4)強化學習(Reinforcement learning):計算機從什麼都不懂,到通過不斷學習、總結規律,最終學會的過程便是強化學習。強化學習很依賴於學習的“周圍環境”,強調如何基於“周圍環境”而作出相應的動作。

TensorFlow系列專題(一):機器學習基礎

圖二 機器學習演算法的分類

 四.解決機器學習問題的一般流程

當我們拿到一個機器學習問題時,解決問題的一般流程大致可以分為以下幾個步驟,如圖1-3所示:

TensorFlow系列專題(一):機器學習基礎

圖三 解決機器學習問題的一般流程

 (1)資料收集

業界有一句非常流行的話:“資料和特徵決定了機器學習的上界,而模型和演算法只是去逼近這個上界”,由此可見,資料對於整個機器學習專案來說至關重要。當我們面臨一個實際的問題時,有時候只是有一個關於該問題的大致想法,以及一些相關的有用或無用的資料。資料收集就是要根據我們的需求從這些資料中找出我們真正需要的資料。還有一些時候,我們只是有一個想法,根本就沒有資料,這就需要我們自己去搜尋、整理資料。對於一個學習者或研究者來說,當我們有了一個相關的問題之後,一個較好的收集資料的方式是去網上找一些質量較高、使用較多的公開資料集。

(2)資料預處理

無論是我們自己的資料還是公開的資料集,通常都會存在各種各樣的問題,例如資料不完整、格式不一致、存在異常資料以及正負樣本數量不均衡等。因此,需要對資料進行一系列的處理之後才能拿來使用,這個過程稱為資料預處理。

(3)特徵工程

目前在機器學習或深度學習相關的書籍中,很少會有專門把特徵工程拿出來單獨介紹的(在一些資料分析或資料探勘相關的書籍中可能會介紹的多一些)。的確,對於整個機器學習的專案來說,特徵工程只是裡面很小的一部分工作,但是千萬不能忽略這“一小部分”工作的重要性。一個機器學習任務的成功與否往往很大程度上取決於特徵工程。簡單來說,特徵工程的任務是從原始資料中抽出最具有代表性的特徵,從而讓模型能夠更有效地學習這些資料。通常我們可以使用sklearn這個庫來處理資料和提取特徵,sklearn是機器學習中使用非常廣泛的一個第三方模組,它本身封裝了很多常用的機器學習演算法,同時它還有很多資料處理和特徵提取相關的方法,詳細使用說明可以參閱sklearn的官方文件:http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing。

(4)模型的選擇

        當我們處理好資料之後,就可以選擇合適的機器學習模型進行資料的訓練了。常見的機器學習模型我們在上一小節已經簡單介紹過,每種模型詳細的介紹和用法,同樣可以參閱sklearn官方手冊:http://scikit-learn.org。可以看到可供選擇的機器學習模型有很多,每個模型都有自己的適用場景,那麼如何選擇合適的模型呢?

我們需要先對處理好的資料進行分析,一般的,首先判斷資料是否有類標,若是有類標則應該考慮使用有監督學習的相關模型,否則可以劃分為無監督學習問題。其次分析問題的型別是屬於分類問題還是迴歸問題,當我們確定好問題的型別之後再去選擇具體的模型。在模型的實際選擇時,通常會考慮使用多個不同的模型,或者相同的模型使用不同的引數對資料進行訓練,然後比較模型的效果,選擇最佳的那個,這需要用到接下來要介紹的模型評估的方法。此外,我們還會考慮到資料集的大小,若是資料集樣本較少,訓練的時間較短,通常考慮樸素貝葉斯等一些輕量級的演算法,否則的話就要考慮SVM等一些重量級演算法,甚至考慮使用深度學習的模型。

(5)模型的評估

在選擇和優化模型階段,我們都需要對模型進行評估。常用的評估方法有留出法、交叉驗證法以及自助法等,相關的評價指標有:

  • 正確率和錯誤率

正確率(accuracy)和錯誤率(error rate)是最常用也是最簡單的模型評價指標。錯誤率是指在測試集(或驗證集)中分類錯誤的樣本數佔總測試集(或驗證集)樣本數的比例,正確率是指在測試集(或驗證集)中分類正確的樣本數佔總測試集(或驗證集)樣本數的比例,即:正確率=1-錯誤率。

  • 查準率、查全率和F1-score

有些時候,我們並不僅僅關心錯誤率和精度,我們可能還想知道,在所有的正例樣本中有多少被正確分類,或者又有多少負例樣本被錯分為正例。這種情況下,我們就可以使用查準率(precision)、查全率(recall,又稱為“召回率”)和F1-score作為度量標準。

  • ROC和AUC

ROC(Receiver Operating Characteristic)和AUC(Area Under Curve)是從一個更泛化的角度來評估模型的效能,ROC和AUC的計算依賴於查準率和查全率。目前,在作者平時的工作中以及從身邊同事和朋友的反饋來看,主要還是以查準率、查全率以及F1-score作為主要的模型效能評價指標。本書中將不會展開介紹ROC和AUC。

到這裡我們已經知道了解決機器學習問題的大致流程和相關方法,接下來的內容裡,我們會將其中兩個最重要的環節“特徵工程”和“模型的選擇與評估”單獨拿出來,做進一步的介紹。

原文連結:https://mp.weixin.qq.com/s/oa8u--mmrTudIdSLOLalbA

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555081/viewspace-2218762/,如需轉載,請註明出處,否則將追究法律責任。

相關文章