【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

NO IMAGE

在本章節,我們將要搞清楚,人工智能,機器學習,以及深度學習是什麼,以及它們之前的區別和聯繫。

什麼是人工智能?

首先關於人工智能,可以看看百科上面的解釋。

人工智能(Artificial Intelligence),英文縮寫為AI。人工智能是計算機科學的一個分支,它企圖瞭解智能的實質,並生產出一種新的能以人類智能相似的方式做出反應的智能機器,該領域的研究包括機器人、語言識別、圖像識別、自然語言處理和專家系統等。

總體來說,人工智能其實就是讓計算機實現人類擁有的智能。

人類能做的事情被計算機學家分成了幾個大類,大類下面又有小類。

下面我們這裡將要介紹幾個大類:計算機視覺,自然語言處理,推薦系統,智能信息檢索。

計算機視覺

計算機視覺,英文全稱為Computer Vision,簡稱為CV。其實也就是研究圖片的。比如說早期的應用,其實也就是研究如何進行手寫字符識別,也就算圖像分類領域了。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

當然,發展到現在,還有目標檢測,檢測圖片中所有的物體,並且選出區域來。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

風格遷移:給一張風格圖片,將原始圖片變成和風格圖片類似的樣子。其實也就是AI濾鏡了。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

以及非常火的DeepFake(AI換臉),其實都可以算是計算機視覺這個方向的。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

自然語言處理

自然語言處理,英文全稱為Natural Language Processing,簡稱為NLP。它目標是讓計算機在理解語言上能像人類一樣的智能。

比如說,我們現在用到的機器翻譯,翻譯的很多時候比人還要好。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

還有,比如說我們有時候需要過濾掉郵件裡的垃圾短信,或者知道一條消息的情感,這就是文本分類或者叫情感分類

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

當然,還有些對於一般人來說,聽起來會很陌生的方向,或者說很難觸碰到的方面:命名實體識別

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

推薦系統

推薦系統,英文全稱Recommender system。我們使用淘寶、京東的時候,想必不少見了把。這裡可以分為基於內容的推薦,基於關聯規則的推薦等等。

智能信息檢索

信息檢索,英文全稱為Information Retrieval,簡稱為IR。也就是搜索引擎的技術了。

這裡我添加智能兩個字其實是因為,狹義的信息檢索指的是信息查詢,也就是我們查找文章裡面是否存在一個字一個詞或者幾個詞。而我們對搜索的要求其實也越來越高了,我們不是搜是不是存在某一個詞或者某幾個詞的文章,而是要找到類似的含義的文章。

有的時候我們還要找到一個答案,搜索引擎也變成了問答系統。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

當然,我們搜索的內容也不單單僅限於文字了,可能是以圖搜圖了,也就是圖像搜索

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

其他的情況

當然,除了以上的類別以外。其實還是有很多別的方面的研究,比如說AI下棋,AI打遊戲,算遊戲AI領域的。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

以及交叉的領域方面的研究,比如說Image Captioning(圖片描述自動生成),也就是看圖說話,又有圖片又有文字,算是CV+NLP了。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

這裡的內容就介紹到這裡,讀者感興趣可以繼續深入,下面來說說機器學習。

什麼是機器學習?

以上介紹了那麼多的人工智能的領域,那麼機器學習和人工智能又有什麼關係呢?

這裡機器學習其實既可以算人工智能一個研究領域,也可以算是一種實現人工智能的方法。

說它是一種方法,因為上面的領域中,都會用到機器學習。就像如果做自然語言處理,那麼做的其實就是基於機器學習方法的自然語言處理算法。

說它是一個領域,因為機器學習也有很多的研究,比如說強化學習,弱監督學習,最優化算法,採樣方法等等偏理論方面的研究。

下面我們回到我們的機器學習。機器學習其實研究的是如何模擬人類或者實現人類學習的行為,從而能夠應對新的任務能力

那麼機器,學習的是什麼呢?

其實是數據。

機器學習是一門數據驅動的科學,我們人類能夠根據歷史數據學習到經驗,當再次面對類似的問題時,能想到相應的解決方法。對應的機器學習到的其實是通過學習歷史數據得到一個模型,這個模型有預測未知數據的能力。

機器學習的數學表示

用數學的形式來表示機器學習,那麼機器學習其實就是要學習到一個函數。這裡我們把輸入當成【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,而理想的輸出當成【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,那麼機器學習其實就是要找到一個形式的函數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,使得【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

對於不同的任務,我們就會有不同的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹對。比如下圖的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹就是語音識別,【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹就是圖片分類了。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

(圖片摘選自:臺大李宏毅教授的機器學習課件)

而對於得到不同形式的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的方法,則對應著不同的機器學習算法,百度一搜就能搜出來一堆,這裡就不舉例了。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

相信學習過函數的人,都不難理解上面的內容。但其實,我們在書中看到的並不是【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹這個樣子的。筆者最早在學習機器學習的時候,還是看的機器學習相關的書籍,記得當時看到裡面的一堆的數學符號,每次都感覺看懂了一點兒,又感覺一點兒都看不懂,看的是一臉懵逼。

下面我們要開始增加符號了。

加入數據

想想剛剛說的,機器學習其實是一門數據驅動的科學。那麼這裡要開始增加數據了。

數據的輸入這裡定義為【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹, 輸入有n個樣本,構成數據集。用 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹表示數據集的第i個樣本。

同樣,數據的理想輸出,或者叫數據的標籤定義為【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,構成數據集的標籤集。用 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹表示標籤集的第i個樣本。這裡【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹是一一對應的。

這裡舉例一個驗證碼識別的數據集,這裡有一些驗證碼的圖片,每個圖片都有一個文件名。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

這裡我們的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹就是某個圖片(這裡其實是圖片的二維數組,後面圖像處理會講到如何把圖像讀取到程序的數組之中):

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹則是該圖片的文件名:2bfwr。

現在我們的目標其實變成了:使得【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹成立。

加入參數

當然,加入數據不代表結束了,我們還有函數的參數,這裡用【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹來表示,【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹表示的是一系列參數,【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

假如說我們的函數形式是一次函數,那麼這裡的函數,就是有兩個參數,形如: 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

加入參數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹後,現在我們的目標其實變成了:使得【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹成立。

如果用英文來說這個公式呢,就是:【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹 given 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹, parameterized by 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹, is 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹.

機器學習的數據集

接下來我們來看看機器學習的數據集。

上面我們的得到了目標:令【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹成立。而我們在學習的時候,我們的目標其實是學習歷史的數據【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,讓新的數據【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹能夠成功預測出【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

所以在數據構建的時候,就需要我們把數據集進行分割成最少兩部分:一部分用來當歷史的數據,也就是訓練集【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹;而另一部分則當成未知的數據,測試集【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹。訓練集的標籤和測試集的標籤則表示為:【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

現在我們之前的輸入【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹變成了測試集【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的每一個樣本,而數據集【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹則變成了【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

我們現在的目標可以寫成【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

也就是通過訓練數據【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的學習,可以將測試集中的每一個數據【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹都能成功預測成【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

機器學習算法的流程

下面我們來看一下機器學習算法的流程。

評價指標

上面加入數據集後,我們的目標其實是要讓測試集中每一個【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹 和 標籤【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹相等。這個條件其實是相當的苛刻了。

這裡定義一個評價指標函數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,用【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹表示在測試集預測效果的好壞。

舉例:對於一個文本分類的任務,我們可能會以準確率(Accuracy),作為評價指標,那麼這個時候的評價指標:

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

這個指標肯定是越高越好了,弱化之前”讓每一個樣本都預測正確”的目標,機器學習的目標現在變成了最大化測試集的評價指標【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

損失函數

接下來,再來定義一個損失函數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,用【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹來表示預測值【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹與真實值【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的接近程度,其中【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

損失函數有很多分類,以後的課程在實踐中還會介紹。這裡只要知道,損失函數一般都是正的,並且當【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹時,預測值【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹和真實值【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹相等即可。

前面一直說,機器學習中學習的是數據。而機器的這個學習的過程,就是要最小化訓練數據的損失函數的過程,即最小化所有樣本的損失之和:

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

這裡需要求解的也就是使得上式最小化的時候的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的取值【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

記做:

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

(arg min表示使目標函數取最小值時的變量值)

這裡的數學符號看著有些唬人,但【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹其實也就是類似我們求解出一元一次函數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹中的參數來,可能算出來【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,那我們最後得到的形式也就是【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

小結

機器學習的算法流程也就是:通過最小化訓練集的損失函數的方式,來達到最大化測試集的評價指標的目的。通過學習訓練集,而在測試集預測的能力叫泛化能力,機器學習的模型都會有這種能力。

看到這裡我們可能有個疑問,為什麼機器學習不直接最優化評價指標呢?

我們也可以通過最大化訓練集的評價指標,來最大化測試集的評價指標。這裡其實對於很多機器學習任務來說,是很難直接優化評價指標,比如說上面說的準確率,也就是正確的個數,這個在函數中其實是不可導的,用微積分的話也就是不可微,是很難直接優化的。

當然,有的時候我們也可以直接優化評價指標,這個時候我們只需要取一個負號,令【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹,那麼也就是最小化“負的評價指標”,也就是最大化評價指標了。

損失函數可以給我們一個更通用的形式。

機器學習的分類

根據有無標籤分類

我們上面舉的例子其實都是有標籤的數據集,但有的時候數據集並沒有標籤。根據數據集是否有標籤可以分為有監督學習和無監督學習。

有監督學習的訓練數據如:【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹;而無監督的數據則如:【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

這系列課程以及後面的課程涉及的內容都是有監督學習,也就是數據都是有標籤的,讀者如果有興趣可以自己看無監督學習方面的內容。

根據標籤的輸出分類

根據標籤的輸出類型,我們可以分為迴歸問題,分類問題,以及時間序列問題。

  • 迴歸問題 輸出的標籤是數值類型,比如說:房價的預測,股價的預測,結果都是一個具體的數值,取值有無窮可能。
  • 分類問題 輸出的標籤是類別,比如說:動物識別,垃圾短信分類,預測出來的結果是一個有限個數的類別。
  • 時間序列問題 輸出的標籤是一個序列,比如說:機器翻譯,看圖說話,預測結果是一個序列的單詞。

機器學習系統的實現步驟

現在我們來看看一個機器學習系統都需要哪些步驟,其實只需要以下五個步驟即可。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

  • 1. 收集數據:這裡也就是構建我們的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹的步驟了,一般我們都會選擇一個網絡上已經有的數據集。
  • 2. 特徵工程:這一步將要把我們的數據,轉換成有用的信息。選取有用的信息,刪除無用的信息,比如說我們要預測二手房房價,那我們可能房子面積、地理位置,是否南北通透等等有很大的關係,而和賣家的年齡,賣主的身高則沒啥關係。
  • 3. 訓練模型:這裡要選取一個機器學習算法,以及最優化方法,得到我們的函數【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹了。
  • 4. 測試調優:這裡需要不斷的嘗試各種方法,讓【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹更好。
  • 5. 使用模型:最後以上方法得到了一個好的模型後,就可以投入使用了。

深度學習又是什麼?

看完了機器學習,那麼什麼又是深度學習呢?

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

深度學習其實是一種機器學習的算法:神經網絡,也就是一個複雜的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹函數了。它的特點是可以不斷的疊加層數。每增加一層,其實也就是就多套了一層函數。我們之前的【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹變成了 【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹為層數。

層數越多,模型的表達能力就越強。比如說2015年的ResNet它的層數多達152層。

隨著AlexNet2012年以來的出現,模型的層數越來越多,也越來越複雜,於是就叫深度學習了。同時深度學習的效果也越來越好,於是幾乎所有領域的最前沿(state-of-art)的算法都變成深度學習方法了,也就變得越來越火了。

深度學習和機器學習在處理上的區別

深度學習和一般機器學習方法最大的優勢不需要進行特徵工程,像房價預測還好說,對於圖像以及文本這樣複雜的數據,人工提取的特徵方法就很受到侷限性。

【Python機器學習基礎】1.人工智能、機器學習、深度學習介紹

深度學習的缺點

那麼有了深度學習,傳統的方法是不是沒用了嗎?

這個答案明顯是否定的,深度學習的效果雖然好,但是他的代價也很大,一個深度學習系統需要的訓練數據通常都是巨大的,需要花費大量的代價標註數據。

深度學習需要的計算資源也是龐大的,前段時間自然語言處理領域的一個預訓練模型XLNet的效果非常好,不過訓練這個模型的成本就要花掉6萬美金。

在模型的使用中,深度學習方法如果不通過知識蒸餾等模型壓縮的方法優化模型,預測也是很耗時且耗資源的。即使通過壓縮,很多時候在性能上也無法滿足需求。

小結

總體來說,機器學習和深度學習還是各有利弊的,當然現在深度學習在大部分領域都會遠遠超過傳統的方法,並且也能夠實用。在學習深度學習之前,本系列課程將會先講傳統機器學習的方法。

相關文章

Taro小程序開發大型實戰(三):實現微信和支付寶多端登錄

答應我,別再寫上千行的類了好嗎

【你應該瞭解的】詳盡&全面的前端部署(從零起步,前端上線不用愁)

巧用CSS實現酷炫的充電動畫