AI產品之路:機器學習(一)

6 評論 22051 瀏覽 199 收藏 12 分鐘

文章分享了關于機器學習的一些知識,希望能夠給各位PM帶來收獲。

2017年可以說是人工智能爆發的一年,傳統互聯網紅利消失,熟知的大廠BAT都在人工智能上布局,作為一名互聯網PM,深知技術的變革必然帶來新機會??蓪Υ蠖鄶祷ヂ摼WPM而言,面對ML(機器學習)、DL(深度學習)、NLP(自然語言處理)以及的各種概念以及底層所需的各種數學知識,不懂技術似乎讓人望而卻步了。

可事實并非全然如此,AI是手段,最終的目的也是要找到現實中可以落地和商業化的場景,去實現他的價值,雖然目前來看仍然是技術主導。不過可以確信的一點是,要進入這個領域,對底層知識和技術的要求是必然要高于互聯網PM的水平。

本人目前是一名互聯網PM,剛好上學得是相關專業,有點數學底子,也層自己擼過代碼設計實現“基于BP前饋神經網絡的圖像識別”,打算進入未來進入AI領域,最近開始重新學習并搭建AI的知識框架,希望能分享出來大家一起來了解AI這個看起來“高大上”的東西。

首先,按照李笑來老師和羅胖的說法,學一個領域的知識,就是兩件事(1)找概念(2)搭框架。特別是對于很多對概念都不了解的同學,一定要有個“知識地圖”,如下:

看到這個腦圖,一些童鞋經?;煜膯栴}就明白了

  1. 機器學習是什么
  2. 深度學習是什么
  3. 機器學習與深度學習的區別是什么
  4. 機器學習監督學習方式的“回歸思想”

下面我們一一來說

1.機器學習

概念定義(個人理解):通過大量已知數據(可能被標注,也可能無標注)去訓練算法模型,總結出某種數據之間的映射關系(即規律),最終可以對未知數據實現智能處理(分類、識別、預測等)

舉個例子,比如我這里有大量蘋果和桃子的圖片,并且每張圖片都打上對應的種類標簽,然后把這些圖片喂給模型,讓模型不斷學習優化。訓練結束后,我們又找一些沒有打標簽的蘋果和桃子圖片扔給這個模型,讓他自己去做分類識別是蘋果還是桃子,這就是一個完整的機器學習過程(有監督)。而所謂的“映射關系”,即“蘋果圖片”對應“蘋果標簽”,“桃子圖片”對應“桃子標簽”

2.基本概念

(1)學習方式

學習方式分為有監督學習和無監督學習,有監督學習即我們會再把數據給模型訓練之前,進行人工的預先處理,打標簽(學名:特征提取)。監督學習又分為回歸與分類。

而無監督學習,就是無需通過人為的預先處理,直接把數據給算法,無監督學習對應的方法為“聚類”

(2)學習過程

  • 訓練集(訓練樣本):我們在訓練算法模型時給他的數據
  • 驗證集:用訓練樣本訓練好以后,我們還要用訓練樣本之外的數據,去檢驗這個算法模型的實際效果
  • 誤差:如何檢驗效果呢?在ML/DL里,就是通過“誤差”的大小去判斷(至于具體怎么計算,下一篇會講到)
  • 欠擬合:模型不能在訓練集上獲得足夠低的誤差
  • 過擬合:訓練誤差與測試誤差(在驗證集的誤差)差距過大,那么這個模型就不是好模型,因為只能用在訓練樣本上….而對其以外的數據都沒有好的效果
  • 泛化性:訓練好的模型在其他數據上的使用情況,如果效果也很好,那就是泛化性好

那么問題來了,怎樣才算合適的擬合呢?

其實在整個過程中,隨著時間推移,算法的不斷優化,在訓練樣本和測試樣本的誤差都在不斷下降;但如果學習時間過程,訓練集的誤差持續下降,而驗證集的誤差卻開始上升了。原因是模型為了在訓練集上效果更好!已經開始學習訓練集上的噪音和不需要的細節了。所以要找到合適的“擬合”,最好是找到訓練誤差還在下降,而測試誤差剛好開始上升的那個“點”

3.機器學習與深度學習的區別

很多不知道的人,可能僅僅知道他們是包含關系,深度學習屬于機器學習,但其實遠遠不止如此…..(這樣太模糊了),從腦圖可以看出,其實機器學習在方法上可以有很多種,比如:邏輯回歸、決策樹、樸素貝葉斯、線性回歸、SVM支持向量機等,他們都屬于機器學習,而我們也看到,最下面有一個“神經網絡”,他們的等級與上面列舉是屬于一類的。

神經網絡這概念,可以分為“淺層神經網絡”與“深層神經網絡”

“淺層神經網絡”中最經典的一個網絡也就是“BP前饋神經網絡”

“深層神經網絡”,大概可以理解為我們所謂的“深度學習”(Deep Learning),而深層神經網絡,下面又分為很多網絡結構,如DNN、CNN、RNN

但這里要注意區分的是,深淺的區別不僅僅是“網絡層數”的區別,更重要的是,“深度學習”(深層神經網絡)較其他所有機器學習最厲害的一點:

他可以進行數據的特征提取“預處理”(省去了數據人工標注的大麻煩,同時可以對更多維和復雜的特征進行向量的提取和空間向量的轉換,方便后續處理),而這也是他為什么要很多層的原因,因為其中多出來的網絡層數,都是要用來進行數據特征提取預處理的

相信到一步,結合上面的腦圖,我們就能分清“機器學習”與“深度學習”的真正區別了,不是簡單的包含關系。

4.回歸

個人覺得回歸作為了解機器學習過程,是一個很好的入門了解。

所謂“回歸”,看起來很深奧,其實并不是這樣。我舉個栗子:

y=2x這個一元函數,假設我們現在不知道他的斜率w=2,而我給你5數據y=2,4,6,8,10,對應的x分別為1,2,3,4,5。你是不是會自動假設,那他們之間是2倍的對應關系?沒錯!你“自動假設他們有某種對應關系”的這個過程,就叫“回歸”;而你假設他們的關系是“2倍”,這就是“線性回歸”了。

所以回歸的定義(個人理解):我們看到大量事實或數據中,假設他們之間存在著某種對應關系。而機器學習中的回歸(監督學習)要做的就是:嘗試去讓計算機找到大量數據之間這樣的對應關系,那怎么找呢?

我們先假設一個關系吧:y=wx+b ,其中 w為權值、b為偏置,w為1Xn矩陣向量,x為nX1的矩陣向量(這幾個概念就不做數學解釋了,而為什么x不是實數而是矩陣,那是因為我們在現實世界的數據中,可能有N多個維度….而不僅僅是一維就可以描述這個數據特征的)

現在我要評判一個橘子的“好壞程度”,y代表“好壞程度”,而且都是打過標簽的。x為一個三維矩陣向量分別代表【大小、顏色、形狀】。那么代入公式:

y=w1X大小+w2X顏色+w3X形狀+b ?(這里先假設b為0吧)

那么現在的任務就是分別找到合適的w1,w2,w3的值來準確描述橘子的“好壞程度”與“大小、顏色、形狀”的關系。那么怎樣確定是否合適呢?

通過“損失函數”Loss來定義(這里數學公式就不列了),Loss的含義就是把樣本中所有x都代入“假設公式”wx+b中(這時候w與b的值幾乎肯定是不準確的),然后得到值與真實的y值做比較的差值,就是損失函數Loss。那么Loss越小,說明這時候的w與b的值越接近真實的“線性關系”。所以我們最終機器學習的目的,就是求解出讓Loss越小(當然無限接近于0最好)的對應的w與b的值,求出來之后,也就是機器學習模型“訓練結束”!之后就是用驗證集去驗證是否會過擬合,來檢驗模型的泛化能力

當然這里要做幾點說明了:

(1)這只是最為最為簡單的一個機器學習栗子說明,著重了解一下機器學習中回歸的基本思想

(2)這里我們并沒有說怎么去尋找讓Loss最?。ɑ蚍蠗l件)的對應w與b的映射關系,后面我在分享“BP前饋神經網絡的梯度下降時”會簡單介紹這個求解基本思想過程

(3)如果你分析的數據本身是非線性關系,而你假設他們是線性關系并用對應的模型去訓練,那么結果一定是“欠擬合”的(所以對于欠擬合的一另一個表達:你的想法不符合這個世界的現實…)

上面的關于機器學習的一些基本概念的分享,后續持續更新,希望能和大家一起走在AI的路上!

 

本文由 @?Free 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自PEXELS,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 感覺線性代數都丟回去了,咋辦

    來自浙江 回復
  2. 在看tensorflow文檔時候,一起看你寫的真是幫了大忙了!

    來自上海 回復
  3. 對于訓練集和驗證集我有不同的看法,驗證集往往是從訓練集中抽取的一部分為為最優模型輸出做驗證,模型出來用訓練之外的數據測試模型的數據叫測試集

    回復
    1. 對,驗證集還是有標簽的只是沒有輸入,測試集才是真正類似真實需要去得到結果的新數據

      回復
  4. 瞬間覺得大學時期學的高數還是有作用的! ?

    來自北京 回復
    1. 不是高數,是線性代數吧 ??

      來自北京 回復