外行人都能看得懂的機器學習,錯過了血虧!
前言
只有光頭才能變強
沒錯,這篇主要跟大家一起入門機器學習。作為一個開發者,”人工智慧“肯定是聽過的。作為一個開發面試者,肯定也會見過”機器學習“這個崗位(反正我校招的時候就遇到過)。
可能還會聽過或者見過“深度學習”、“神經網路”等等這些非常火的名詞,那你對這些術語瞭解多少呢?
相信大家這幾天在朋友圈也可以看到這照片:
// 通過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半監督學習
理解了監督學習和非監督學習,對於半監督學習就很容易理解了。
一部分資料有“標記”或者“答案”,另一部分資料沒有
- 因為各種原因產生的標記缺失。
通常都會使用非監督學習手段對資料進行處理(特徵提取、降維),之後再只用監督學習手段做模型的訓練和預測。
2.2.4增強學習
根據周圍環境的情況,採取行動,根據採取行動的結果,學習行動方式
每次行動,就給這次的行動評分,演算法會根據評分來評估下一次的行動是好還是壞,最終不斷改進。
例子:Alpha Go下每步棋的時候都會評估自己這次下得怎麼樣,通過最終的結果不斷改進下的每步棋。
2.3機器學習的其他分類
除了我們上面所說的監督學習、非監督學習、半監督學習、增強學習之外,機器學習也可以分成:
- 線上學習:及時將樣例資料作為訓練資料對模型進行訓練。
- 需要加強對資料進行監控(有可能樣本資料是髒資料,這樣就破壞我們的模型)
- 離線(批量)學習:定時將樣例資料作為訓練資料對模型進行訓練。
- 不能很快的適應環境的變化
還有:
- 引數學習:一旦學到了引數,就不再需要原有的資料集。通過調引數就好了。
- 非引數學習:不對模型進行過多的假設,非引數不代表沒引數。
最後
機器學習的核心在於演算法上,這篇只是對機器學習的一個簡單的入門,希望能對大家有所幫助。
機器學習資源,可關注我的公眾號,回覆“機器學習”即可領取。
- 有周志華《機器學習》電子版。吳恩達、李巨集毅視訊及筆記
樂於分享和輸出乾貨的Java技術公眾號:Java3y。
文章的目錄導航: