天天看點

《白話深度學習與TensorFlow》——第1章 1.0機器學習是什麼

機器學習是一個跟“大資料”一樣近幾年格外火的詞彙。我們在了解深度學習之前,還是有必要了解和認識機器學習這個詞的。機器學習究竟是一個什麼過程或者行為呢?

機器學習——我們先想想人類學習的目的是什麼?是掌握知識、掌握能力、掌握技巧,最終能夠進行比較複雜或者高要求的工作。那麼類比一下機器,我們讓機器學習,不管學習什麼,最終目的都是讓它獨立或至少半獨立地進行相對複雜或者高要求的工作。我們在這裡提到的機器學習更多是讓機器幫助人類做一些大規模的資料識别、分揀、規律總結等人類做起來比較花時間的事情。這個就是機器學習的本質性目的。

在人類發展的曆史長河中,機器逐漸代替人的生産工作是一個不可逆轉的趨勢——從原始人的刀耕火種,氏族部落大量原始人共同使用極為原始的工具共同狩獵,到後來随着生産力發展和工種分化的不斷互相刺激,越來越多的工具出現,代替了原本生産所需要的衆多人工。

在近現代,尤其是第一次和第二次工業革命之後,化石能源驅動的高能量的機器再一次在更多的領域取代人力、畜力,大大改善了人類的生産效率。

在資訊革命之後,随着計算機的計算能力增強,以及在計算機算法領域新理論、新技術的逐漸發展,機器也逐漸代替人,參與到更多的帶有“一定的智能性”的資訊分揀與識别的工作中來。這裡面我們着重要提一下這個“一定的智能性”。

算法這種東西在最初出現的時候是一種确定性的機器指令執行序列,也就是說,機器需要怎麼做是早在程式一開始就設定好的。雖然說在程式執行的過程中可以依靠有限的參數對程式執行過程所涉及的對象、執行次數、執行分支條件等進行設定,但是基本行為邏輯已經大抵确定。在這個過程中,機器——計算機是非常被動的,它老老實實地嚴格執行程式員賦予它的指令執行序列,沒有任何“學習”的行為。這也沒辦法,因為最開始的圖靈機模型在設計的時候就是期望計算機以這種方式工作的。

而機器學習這個領域的思路就與剛才我們所說的這樣一個形式有很大的差別。我們以有監督學習的過程為例,例如有一個分類器,可以将輸入的郵件分揀為“普通郵件”和“垃圾郵件”兩個類别。但是對于垃圾郵件的判斷标準不是在程式運作伊始給出的,而是在給予分類器大量垃圾郵件後,由分類器對垃圾郵件樣本的各種特征進行統計和歸納,進而得到的。

《白話深度學習與TensorFlow》——第1章 1.0機器學習是什麼

在這個訓練過程中,給予分類器的大量被标注為垃圾郵件的郵件,稱為訓練樣本(training sample)。分類器對垃圾郵件樣本的特征進行統計和歸納的過程稱為訓練(traning)。總結出的判斷标準,我們稱為分類模型。與此同時,我們還會拿其他一些“普通郵件”和“垃圾郵件”給予分類器,讓它嘗試根據剛剛總結好的分類模型進行分類,看看它分類的正确性是否确實具有泛化性(generalization),這個步驟我們稱為驗證(validation)。這個過程主要是為了驗證從訓練樣本中歸納總結出來的資料關系是否能夠遷移。在此之後,我們還會使用一定量的“普通郵件”和“垃圾郵件”去測試(testing)這個模型的識别能力,看看是不是在我們業務允許的範圍内。這是一個基本完整的有監督學習(supervised learning)的學習過程。

其他的有監督學習的場景也極為類似,都是基于訓練樣本做訓練和使用驗證資料集驗證。在這個過程中我們不難看出,最後整個分類器工具投入生産環境對外提供服務的工作方式不是我在程式裡事先寫好的,而是先對給予的樣本進行總結得出分類規則(标準),之後根據這個規則進行分類操作。這是一個非常形象的“機器學習”的過程,它在這個過程中自己學會了怎麼樣進行正确地區分事物。這是不是很有趣呢?

機器學習從學習的種類來說,最常見的我們習慣分作兩種,一種叫無監督學習(unsupervised learning),一種叫有監督學習(supervised learning)。所謂“無監督學習”,是指人們在獲得訓練的向量資料後在沒有标簽的情況下嘗試找出其内部蘊含關系的一種挖掘工作,這個過程中使用者除了可能要設定一些必要的超參數(hyper-parameter)以外,不用對這些樣本做任何的标記甚至是過程幹預;“有監督學習”與此不同,每一個樣本都有着明确的标簽,最後我們隻是要總結出這些訓練樣本向量與标簽的映射關系。是以這在這兩種方式下,處理的邏輯有很大的差別,初學的朋友需要格外注意。

繼續閱讀