1. 程式人生 > >【轉載】人工智慧教程——監督學習型神經網路

【轉載】人工智慧教程——監督學習型神經網路

總目錄(新手請點選總目錄從序言看起,否則你可能看不懂本篇文章)

什麼是監督學習?

簡單的回答是:判斷是否是監督學習,就看輸入資料是否有標籤。輸入資料有標籤,則為有監督學習,沒標籤則為無監督學習。

對於上面的簡單回答,如果你看不懂,是正常的!下面我給出詳細回答,如果你還是不明白,那麼…也是正常的。因為有些概念要被接受是需要時間的!堅持不懈地看我的文章,不知不覺中你就明白了!

這裡寫圖片描述

要詳細解釋什麼是監督學習,那麼先要明白“什麼是學習?”。一個成語就可概括:舉一反三。此處以高考為例,高考的題目在上考場前我們未必做過,但在高中三年我們做過很多很多題目,由此學會了解題方法,因此考場上面對陌生問題也可以算出答案。機器學習的思路也類似:我們利用一些訓練資料(高中的大量題庫),使機器能夠總結出一些規律(總結出解題方法),然後用這些規律來分析未知資料(用解題方法來解答高考題目)。

分類(classification)這種機器學習演算法就是一種監督學習。對於分類,輸入的訓練資料有特徵(feature),有標籤(label)。也就是我們前面文章中的輸入x和輸出y。每一個x樣本都對應著一個y(輸出)標籤。所謂的學習,其本質就是找到特徵和標籤間的關係(mapping),也就是找規律。這樣當有特徵而無標籤的未知資料輸入時,我們就可以通過已有的關係得到未知資料標籤,即根據新資料進行預測。在上述的分類過程中,如果所有訓練資料都有標籤,則為有監督學習(supervised learning)。如果資料沒有標籤,顯然就是無監督學習(unsupervised learning),即聚類(clustering)。

目前分類演算法(監督學習)的效果還是不錯的,而相對來講,聚類演算法(無監督學習)就有些慘不忍睹了。確實,無監督學習本身的特點使其難以得到如分類一樣近乎完美的結果。這也正如我們在高中做題,答案(標籤)是非常重要的,假設兩個完全相同的人進入高中,一個正常學習,另一人做的所有題目都沒有答案,那麼想必第一個人高考會發揮很好,第二個人會發…瘋。 這裡寫圖片描述

這時各位可能要問,既然監督學習如此之好,非監督學習如此之不靠譜,那為何我們還可以容忍非監督學習的存在?因為在實際應用中,標籤的獲取常常需要極大的人工工作量,有時甚至非常困難。

但是我覺得非監督學習非常之重要!要想讓人工智慧更加聰明,就必須使它具有更強的自學能力。我預見的未來將是這樣的:先用監督學習教會人工智慧體一些基本的常識,然後讓它基於這些常識去自學去探索世界。當實現這個架構後,人工智慧體將會超越人類。 這裡寫圖片描述

但到目前為止,幾乎所有由人工智慧創造的經濟價值都是通過監督學習型神經網路實現的。例如廣告預測,這可能是最有利可圖的人工智慧應用了,它也許不是最鼓舞人心的,但肯定是非常有利可圖的,通過輸入一些關於使用者的資訊x,神經網路就能預測你是否會點選某個廣告(給出輸出y來指示某個廣告),所以當你看到你朋友,或男朋友,或女朋友手機電腦上面都是些黃色廣告時,你基本上可以斷定TA的“性趣很濃”,也之所以我一般不會給別人用我的手機或電腦。計算機視覺在過去幾年也取得了很大的進步,主要是由於深度學習。您可以輸入人臉影象,神經網路會給出這個人的姓名。在語音識別方面的進展也非常激動人心,我們可以輸入一段音訊到神經網路,相應的文字就被輸出來了。機器翻譯也取得了巨大的進步,你可以輸入英文句子,直接輸出中文句子。在自動駕駛中,您可以輸入車輛前方的圖片以及雷達中的一些資訊,基於此,神經網路將告訴您其它汽車的位置(這是自動駕駛系統的關鍵組成部分)。因此,通過神經網路進行的許多價值創造當前都是通過監督學習來實現的——巧妙地構造資料集,選擇什麼應該是x,什麼應該是y,然後讓神經網路來學習這個資料集。

另外再補充些知識點。神經網路除了按監督學習和非監督學習來分類外,還按結構來分類。不同結構的神經網路被用於不同的應用程式中。例如,在之前看到的房價預測應用中,我們使用的是標準的神經網路結構,廣告預測也是一個相對標準的神經網路。對於影象應用程式,我們經常使用卷積神經網路CNN。對於序列資料應用程式一般使用遞迴神經網路RNN(例如音訊就屬於序列資料,是隨著時間一段一段表述的,例如英語、漢語都是隨著時間一個字一個單詞來表述的)。對於更復雜的應用,比如自動駕駛,裡面有影象所以需要CNN卷積神經網路,而雷達資訊則需要其它型別的神經網路,這就導致了混合的神經網路架構。

這裡寫圖片描述

為了更具體一點,上面分別給出了各種不同神經網路的結構圖。依次是,標準神經網路SNN, 卷積神經網路CNN,遞迴神經網路RNN。稍後我會解釋這些圖的含義以及如何實現它。卷積網路通常被用於影象資料。遞迴神經網路被用於序列資料。

你也可能聽說過機器學習中將資料分為結構化資料和非結構化資料。結構化資料主要表示資料庫資料。例如,在房價預測中,您可能會有一個數據庫告訴您臥室的大小和數量。又如預測使用者是否點選廣告時,您可能會獲得有關使用者的資訊,例如年齡,廣告的一些資訊。所謂結構化資料,意味著每個特徵,如房子的大小,臥室的數量或使用者的年齡,是具有非常明確的含義的。相比之下,非結構化資料指的是音訊,影象。這裡的特徵可能是影象中的畫素值或文字中的單個單詞,沒有明確的含義。與結構化資料相比,計算機更難以理解非結構化資料。而人類已經進化得非常善於理解音訊和影象這些非結構化資料。但這一兩年由於深度學習的興起,計算機對非結構化的理解能力越來越強了。人們在聽到有關神經網路對非結構化資料的成功時,例如當神經網路識別出一隻貓時,人們都很興奮。但事實證明,神經網路正在創造的許多短期經濟價值其實是在結構化資料上的,比如廣告系統。所以在這個課程中,我將介紹的很多技術都將適用於結構化資料和非結構化資料。為了解釋演算法,在示例中我將會更多的使用非結構化資料。但是,將來在您自己的團隊中應用神經網路時,我希望您應該對結構化和非結構化資料都重視。