天天看點

機器學習系列(一)——基礎概念及分類

機器學習基礎(一)

目錄

    • 1 基本概念
      • 1.1 ML各種常見算法圖示
      • 1.2 導數的計算
      • 1.3 關于局部最優和全局最優的描述
      • 1.4 大資料與深度學習之間的關系
    • 2 機器學習的分類
      • 2.1 監督學習
      • 2.2 非監督式學習
      • 2.3 半監督式學習
      • 2.4 弱監督學習
      • 2.5 監督學習有哪些步驟

emm... 那個第一篇文章,簡單的自我介紹一下,機器學習小白,希望和大家一起進步,有什麼問題可以留言一起探讨。

本文撰寫于2020/1/1 是本人學習機器學習時,做的筆記摘要,為友善日後查漏補缺,以部落格的形式粘貼出來,文中所引資料及内容僅作學習之用。

機器學習是人工智能的一個子集,目前已經發展出許多有用的方法,比如支援向量機,回歸,決策樹,随機森林,強化方法,內建學習,深度學習等等,一定程度上可以幫助人們完成一些資料預測,自動化,自動決策,最優化等初步替代腦力的任務。本章我們主要介紹下機器學習的基本概念、監督學習、分類算法、邏輯回歸、代價函數、損失函數、LDA、PCA、決策樹、支援向量機、EM算法、聚類和降維以及模型評估有哪些方法、名額等等。

機器學習(Machine Learning, ML),顧名思義,讓機器去學習。這裡,機器指的是計算機,是算法運作的實體載體,你也可以把各種算法本身當做一個有輸入和輸出的機器。那麼到底讓計算機去學習什麼呢?對于一個任務及其表現的度量方法,設計一種算法,讓算法能夠提取中資料所蘊含的規律,這就叫機器學習。如果輸入機器的資料是帶有标簽的,就稱作有監督學習。如果資料是無标簽的,就是無監督學習。

​ 日常使用機器學習的任務中,我們經常會遇見各種算法。

回歸算法 聚類算法 正則化方法
決策樹學習 貝葉斯方法 基于核的算法
:----------------------:
關聯規則學習 人工神經網絡
:-----------------------:
深度學習 降低次元算法 內建算法

計算圖導數計算是反向傳播,利用鍊式法則和隐式函數求導。

​ 假設 \(z = f(u,v)\) 在點 \((u,v)\) 處偏導連續,\((u,v)\)是關于 \(t\) 的函數,在 \(t\) 點可導,求 \(z\) 在 \(t\) 點的導數。

根據鍊式法則有

\[\frac{dz}{dt}=\frac{\partial z}{\partial u}.\frac{du}{dt}+\frac{\partial z}{\partial v}

.\frac{dv}{dt}

\]

​鍊式法則用文字描述:“由兩個函數湊起來的複合函數,其導數等于裡邊函數代入外邊函數的值之導數,乘以裡邊函數的導數。

局部最優和全局最優

柏拉圖有一天問老師蘇格拉底什麼是愛情?蘇格拉底叫他到麥田走一次,摘一顆最大的麥穗回來,不許回頭,隻可摘一次。柏拉圖空着手出來了,他的理由是,看見不錯的,卻不知道是不是最好的,一次次僥幸,走到盡頭時,才發現還不如前面的,于是放棄。蘇格拉底告訴他:“這就是愛情。”這故事讓我們明白了一個道理,因為生命的一些不确定性,是以全局最優解是很難尋找到的,或者說根本就不存在,我們應該設定一些限定條件,然後在這個範圍内尋找最優解,也就是局部最優解——有所斬獲總比空手而歸強,哪怕這種斬獲隻是一次有趣的經曆。

柏拉圖有一天又問什麼是婚姻?蘇格拉底叫他到樹林走一次,選一棵最好的樹做聖誕樹,也是不許回頭,隻許選一次。這次他一身疲憊地拖了一棵看起來直挺、翠綠,卻有點稀疏的杉樹回來,他的理由是,有了上回的教訓,好不容易看見一棵看似不錯的,又發現時間、體力已經快不夠用了,也不管是不是最好的,就拿回來了。蘇格拉底告訴他:“這就是婚姻。”

​ 優化問題一般分為局部最優和全局最優。其中,

(1)局部最優,就是在函數值空間的一個有限區域内尋找最小值;而全局最優,是在函數值空間整個區域尋找最小值問題。

(2)函數局部最小點是它的函數值小于或等于附近點的點,但是有可能大于較遠距離的點。

(3)全局最小點是那種它的函數值小于或等于所有的可行點。

首先來看大資料、機器學習及資料挖掘三者簡單的定義:

大資料通常被定義為“超出常用軟體工具捕獲,管理和處理能力”的資料集。

機器學習關心的問題是如何建構計算機程式使用經驗自動改進。

資料挖掘是從資料中提取模式的特定算法的應用,在資料挖掘中,重點在于算法的應用,而不是算法本身。

機器學習和資料挖掘之間的關系如下:

資料挖掘是一個過程,在此過程中機器學習算法被用作提取資料集中的潛在有價值模式的工具。

大資料與深度學習關系總結如下:

(1)深度學習是一種模拟大腦的行為。可以從所學習對象的機制以及行為等等很多相關聯的方面進行學習,模仿類型行為以及思維。

(2)深度學習對于大資料的發展有幫助。深度學習對于大資料技術開發的每一個階段均有幫助,不管是資料的分析還是挖掘還是模組化,隻有深度學習,這些工作才會有可能一一得到實作。

(3)深度學習轉變了解決問題的思維。很多時候發現問題到解決問題,走一步看一步不是一個主要的解決問題的方式了,在深度學習的基礎上,要求我們從開始到最後都要基于一個目标,為了需要優化的那個最終目标去進行處理資料以及将資料放入到資料應用平台上去,這就是端到端(End to End)。

(4)大資料的深度學習需要一個架構。在大資料方面的深度學習都是從基礎的角度出發的,深度學習需要一個架構或者一個系統。總而言之,将你的大資料通過深度分析變為現實,這就是深度學習和大資料的最直接關系。

根據資料類型的不同,對一個問題的模組化有不同的方式。依據不同的學習方式和輸入資料,機器學習主要分為以下四種學習方式。

​ 特點:監督學習是使用已知正确答案的示例來訓練網絡。已知資料和其一一對應的标簽,訓練一個預測模型,将輸入資料映射到标簽的過程。

​ 常見應用場景:監督式學習的常見應用場景如分類問題和回歸問題。

​ 算法舉例:常見的有監督機器學習算法包括支援向量機(Support Vector Machine, SVM),樸素貝葉斯(Naive Bayes),邏輯回歸(Logistic Regression),K近鄰(K-Nearest Neighborhood, KNN),決策樹(Decision Tree),随機森林(Random Forest),AdaBoost以及線性判别分析(Linear Discriminant Analysis, LDA)等。深度學習(Deep Learning)也是大多數以監督學習的方式呈現。

​ 定義:在非監督式學習中,資料并不被特别辨別,适用于你具有資料集但無标簽的情況。學習模型是為了推斷出資料的一些内在結構。

​ 常見應用場景:常見的應用場景包括關聯規則的學習以及聚類等。

​ 算法舉例:常見算法包括Apriori算法以及k-Means算法。

​ 特點:在此學習方式下,輸入資料部分被标記,部分沒有被标記,這種學習模型可以用來進行預測。

​ 常見應用場景:應用場景包括分類和回歸,算法包括一些對常用監督式學習算法的延伸,通過對已标記資料模組化,在此基礎上,對未标記資料進行預測。

​ 算法舉例:常見算法如圖論推理算法(Graph Inference)或者拉普拉斯支援向量機(Laplacian SVM)等。

​ 特點:弱監督學習可以看做是有多個标記的資料集合,次集合可以是空集,單個元素,或包含多種情況(沒有标記,有一個标記,和有多個标記)的多個元素。 資料集的标簽是不可靠的,這裡的不可靠可以是标記不正确,多種标記,标記不充分,局部标記等。已知資料和其一一對應的弱标簽,訓練一個智能算法,将輸入資料映射到一組更強的标簽的過程。标簽的強弱指的是标簽蘊含的資訊量的多少,比如相對于分割的标簽來說,分類的标簽就是弱标簽。

​ 算法舉例:舉例,給出一張包含氣球的圖檔,需要得出氣球在圖檔中的位置及氣球和背景的分割線,這就是已知弱标簽學習強标簽的問題。

​ 在企業資料應用的場景下, 人們最常用的可能就是監督式學習和非監督式學習的模型。 在圖像識别等領域,由于存在大量的非辨別的資料和少量的可辨別資料, 目前半監督式學習是一個很熱的話題。

​ 處理标簽不充分時的資料

​ 監督學習是使用已知正确答案的示例來訓練網絡,每組訓練資料有一個明确的辨別或結果。想象一下,我們可以訓練一個網絡,讓其從照片庫中(其中包含氣球的照片)識别出氣球的照片。以下就是我們在這個假設場景中所要采取的步驟。

步驟1:資料集的建立和分類

​ 首先,浏覽你的照片(資料集),确定所有包含氣球的照片,并對其進行标注。然後,将所有照片分為訓練集和驗證集。目标就是在深度網絡中找一函數,這個函數輸入是任意一張照片,當照片中包含氣球時,輸出1,否則輸出0。

步驟2:資料增強(Data Augmentation)

​ 當原始資料搜集和标注完畢,一般搜集的資料并不一定包含目标在各種擾動下的資訊。資料的好壞對于機器學習模型的預測能力至關重要,是以一般會進行資料增強。對于圖像資料來說,資料增強一般包括,圖像旋轉,平移,顔色變換,裁剪,仿射變換等。

步驟3:特征工程(Feature Engineering)

​ 一般來講,特征工程包含特征提取和特征選擇。常見的手工特征(Hand-Crafted Feature)有尺度不變特征變換(Scale-Invariant Feature Transform, SIFT),方向梯度直方圖(Histogram of Oriented Gradient, HOG)等。由于手工特征是啟發式的,其算法設計背後的出發點不同,将這些特征組合在一起的時候有可能會産生沖突,如何将組合特征的效能發揮出來,使原始資料在特征空間中的判别性最大化,就需要用到特征選擇的方法。在深度學習方法大獲成功之後,人們很大一部分不再關注特征工程本身。因為,最常用到的卷積神經網絡(Convolutional Neural Networks, CNNs)本身就是一種特征提取和選擇的引擎。研究者提出的不同的網絡結構、正則化、歸一化方法實際上就是深度學習背景下的特征工程。

步驟4:建構預測模型和損失

​ 将原始資料映射到特征空間之後,也就意味着我們得到了比較合理的輸入。下一步就是建構合适的預測模型得到對應輸入的輸出。而如何保證模型的輸出和輸入标簽的一緻性,就需要構模組化型預測和标簽之間的損失函數,常見的損失函數(Loss Function)有交叉熵(Cross Entropy)、均方差(MSE)等。通過優化方法不斷疊代,使模型從最初的初始化狀态一步步變化為有預測能力的模型的過程,實際上就是學習的過程。

步驟5:訓練

​ 選擇合适的模型和超參數進行初始化,其中超參數比如支援向量機中核函數、誤差項懲罰權重等。當模型初始化參數設定好後,将制作好的特征資料輸入到模型,通過合适的優化方法不斷縮小輸出與标簽之間的差距,當疊代過程到了截止條件,就可以得到訓練好的模型。優化方法最常見的就是梯度下降法及其變種,使用梯度下降法的前提是優化目标函數對于模型是可導的。

步驟6:驗證和模型選擇

​ 訓練完訓練集圖檔後,需要進行模型測試。利用驗證集來驗證模型是否可以準确地挑選出含有氣球在内的照片。

​ 在此過程中,通常會通過調整和模型相關的各種事物(超參數)來重複步驟2和3,諸如裡面有多少個節點,有多少層,使用怎樣的激活函數和損失函數,如何在反向傳播階段積極有效地訓練權值等等。

步驟7:測試及應用

​ 當有了一個準确的模型,就可以将該模型部署到你的應用程式中。你可以将預測功能釋出為API(Application Programming Interface, 應用程式程式設計接口)調用,并且你可以從軟體中調用該API,進而進行推理并給出相應的結果。