1. 程式人生 > >外行人都能看得懂的機器學習,錯過了血虧!

外行人都能看得懂的機器學習,錯過了血虧!

前言

只有光頭才能變強

沒錯,這篇主要跟大家一起入門機器學習。作為一個開發者,”人工智慧“肯定是聽過的。作為一個開發面試者,肯定也會見過”機器學習“這個崗位(反正我校招的時候就遇到過)。

可能還會聽過或者見過“深度學習”、“神經網路”等等這些非常火的名詞,那你對這些術語瞭解多少呢?

相信大家這幾天在朋友圈也可以看到這照片:

核心AI程式碼

// 通過if else 以人工窮舉的方式來假裝實現智慧機器人聊天

希望閱讀完本文中後,大家可以對這些術語和機器學習有一定的瞭解。

一、術語介紹

首先我們來簡單看看人工智慧、深度學習、機器學習這些術語和它們之間的關係究竟是怎麼樣的。

1.1人工智慧

不知道聽到“人工智慧”大家會聯想到什麼,可能大多數都會想到科幻電影的機器人。

《人工智慧》電影的劇照

我們看來看看維基百科的定義:

人工智慧(英語:Artificial Intelligence,縮寫為 AI)亦稱機器智慧,指由人制造出來的機器所表現出來的智慧。通常人工智慧是指通過普通計算機程式的手段實現的人類智慧技術。

人工智慧也可以分成兩類:

  • 強人工智慧:強人工智慧觀點認為“有可能”製造出“真正”能推理(Reasoning)和解決問題的智慧機器,並且,這樣的機器將被認為是具有知覺、有自我意識的
    • 像絕大多數科幻電影中的機器人就是在這範疇
  • 弱人工智慧:弱人工智慧觀點認為“不可能”製造出能“真正”地推理和解決問題的智慧機器,這些機器只不過“看起來”像是智慧
    的,但是並不真正擁有智慧,也不會有自主意識。
    • 我們目前階段的人工智慧,其實都是弱人工智慧。

1.2機器學習

不知道聽到“機器學習”大家會聯想到什麼。Emmm...反正我就是從字面的意思去理解:“機器可以自我學習”。

首先我們看一下維基百科是怎麼說的:

機器學習是實現人工智慧的一個途徑,即以機器學習為手段解決人工智慧中的問題。機器學習在近30多年已發展為一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、計算複雜性理論等多門學科

簡單來說:機器學習可以通過大量的資料或者以往的經驗自動改進計算機程式/演算法

什麼是機器學習

生成完模型f(x)之後,我們將樣例資料丟進模型裡邊

,就可以輸出結果:

輸入樣例進模型,輸出結果

我們說機器學習可以自我學習,是因為我們會將樣例資料也會丟到“歷史資料”中,這樣生成模型就會有一定的改動,從而達到“自我學習”的效果。

1.3它們之間的關係

等等,我們好像還沒講深度學習呢。我們從上面機器學習的介紹也可以知道,機器學習已發展為一門多領域交叉學科,機器學習中就有好多個經典的演算法,其中就包含了神經網路(深度學習可看成是神經網路的升級版)。由於近幾年深度學習發展迅猛,一些特有的學習手段相繼被提出,所以越來越多的人將其單獨看作一種學習的方法。

《機器學習 周志華》:

所謂深度學習,狹義地說就是“很多層”的神經網路,在若干測試和競賽下,尤其涉及語音、影象等複雜物件的引用中,深度學習取得優越的效能。

所以我們可以總結出人工智慧、機器學習、深度學習之間的關係是這樣的:

  • 機器學習,是實現人工智慧的重要方法。
  • 深度學習,是實現機器學習的技術。

之間的關係

想要了解更多,可參考:

二、機器學習入門

通過上面我們可以簡單認為機器學習就是:利用計算機從歷史資料找出規律,把這些規律用到未來不確定場景的決策中。

下面我們再來學習一下機器學習的一些入門知識。

2.1機器學習的術語

特徵、樣本、資料集、標記這些術語的說明:

特徵、樣本、資料集、標記這些術語的說明

特徵(屬性)所張成的空間叫做特徵空間

特徵空間

例如我們把“色澤”、"根蒂“、”敲聲“作為三個座標軸,則它們張成一個用於描述西瓜的三圍空間,每個西瓜都可在這個空間中找到自己的座標位置。由於空間中的每個點對應一個座標向量,我們也把一個示例稱為“特徵向量”。

特徵向量

回到我們上面的圖,再來講講“訓練資料”、“訓練”、“標記”:

“訓練資料”、“訓練”、“標記”的術語解釋

2.2機器學習的分類

一般機器學習又可以分成以下幾類:

  • 監督學習
  • 半監督學習
  • 非監督學習
  • 增強學習

2.2.1監督學習

監督學習:訓練資料(Training Data)可以告訴我們要找的那個模型的輸入(Input)與輸出(Output,也就是我們說的label)之間有什麼樣的關係。

  • 給出的資料都有“答案”或“標記”

訓練資料:"Java3y公眾號"->好的公眾號 , "Java4y公眾號"->不好的公眾號。
輸出結果:好的公眾號或者不好的公眾號

在監聽學習下又分為兩種演算法:

  • 迴歸(Regression):結果是一個連續的數值(scalar),而非類別
  • 分類(Classification):為訓練資料進行分類別(多分類)
    • 二分類:類別只有兩種結果(YES OR NO)

迴歸例子:知道前幾天的PM2.5數值,預測一下明天的PM2.5數值。

迴歸例子

二分類例子:判斷一封郵件是垃圾郵件還是正常郵件。

判斷是垃圾郵件還是正常郵件

多分類例子:將新聞帖子分類成不同的類別。

分類成不同的類別

2.2.2非監督學習

非監督學習:訓練資料(Training Data)沒有對應“答案”或“標記”

訓練資料:"Java3y公眾號" "Java4y公眾號" "Java5y公眾號" "Java6y公眾號" "yyy公眾號" "xxx公眾號" "zzz公眾號"
輸出結果:("Java3y公眾號" "Java4y公眾號" "Java5y公眾號" "Java6y公眾號") ("yyy公眾號" "xxx公眾號" "zzz公眾號") 分門類別

對沒有“標記”的資料進行分類-聚類分析

對沒有“標記”的資料進行分類-聚類分析

聚類分析例子:在以前,中國移動有三個品牌:神州行、動感地帶、全球通。我們給一堆的SIM卡交由學習演算法訓練,不告訴它每張SIM卡具體是什麼卡,最後我們是可以將這些SIM卡分類別出來的

非監督學習的意義

非監督學習的意義

非監督學習的意義

2.2.3半監督學習

理解了監督學習和非監督學習,對於半監督學習就很容易理解了。

一部分資料有“標記”或者“答案”,另一部分資料沒有

  • 因為各種原因產生的標記缺失。

部分有label,部分沒有label

通常都會使用非監督學習手段對資料進行處理(特徵提取、降維),之後再只用監督學習手段做模型的訓練和預測。

2.2.4增強學習

根據周圍環境的情況,採取行動,根據採取行動的結果,學習行動方式

增強學習

每次行動,就給這次的行動評分,演算法會根據評分來評估下一次的行動是好還是壞,最終不斷改進。

給每次的行動評分

例子:Alpha Go下每步棋的時候都會評估自己這次下得怎麼樣,通過最終的結果不斷改進下的每步棋。

2.3機器學習的其他分類

除了我們上面所說的監督學習、非監督學習、半監督學習、增強學習之外,機器學習也可以分成:

  • 線上學習:及時將樣例資料作為訓練資料對模型進行訓練。
    • 需要加強對資料進行監控(有可能樣本資料是髒資料,這樣就破壞我們的模型)
  • 離線(批量)學習:定時將樣例資料作為訓練資料對模型進行訓練。
    • 不能很快的適應環境的變化

還有:

  • 引數學習:一旦學到了引數,就不再需要原有的資料集。通過調引數就好了。
  • 非引數學習:不對模型進行過多的假設,非引數不代表沒引數。

最後

機器學習的核心在於演算法上,這篇只是對機器學習的一個簡單的入門,希望能對大家有所幫助。

機器學習資源,可關注我的公眾號,回覆“機器學習”即可領取。

  • 有周志華《機器學習》電子版。吳恩達、李巨集毅視訊及筆記

樂於分享和輸出乾貨的Java技術公眾號:Java3y。

帥的人都關注了

文章的目錄導航