← 返回文章列表

透過案例瞭解機器學習

透過具體案例理解機器學習:損失函式、梯度與模型訓練。

A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.

基礎概念

近些年,人工智慧飛速發展,我們經常聽到人工智慧、機器學習、深度學習和強化學習等名詞。事實上,它們之間存在著密切的聯絡。

人工智慧

人工智慧(Artificial Intelligence, AI)是一個廣泛的領域,可以從“能力”和“學科”兩個方面對人工智慧進行定義。從能力的角度看,人工智慧是指用人工的方法在機器上實現的智慧;從學科角度看,人工智慧是一門研究如何構造智慧機器或智慧系統,使其能模擬、延伸和擴充套件人類智慧的學科。

機器學習

機器學習(Machine Learning, ML)是AI的一個子集,它專注於開發演算法和統計模型。機器學習是指在不需要明確程式設計的情況下,讓計算機能夠利用資料提高在某個任務上表現的演算法。機器學習又可以分為監督學習、無監督學習、半監督學習和強化學習等。

深度學習

深度學習(Deep Learning, DL)是機器學習的一個子領域,它使用類似於人腦的神經網路結構,特別是具有多個層的深層神經網路,來學習複雜的模式和表示。

強化學習

強化學習(Reinforcement Learning, RL)是機器學習的一個分支,它專注於如何讓智慧體(agent)透過與環境的互動來學習最佳行為或策略,以最大化某種累積獎勵。

深度強化學習

深度強化學習(Deep Reinforcement Learning, DRL)是深度學習和強化學習的結合,它使用深度神經網路作為智慧體的大腦,以處理高維度的輸入資料並學習複雜的策略。

它們的關係可以大致總結為下圖: 請新增圖片描述

課程基礎

機器學習

機器學習最重要的是尋找到一個函式,讓機器具備找到一個函式的能力。

通常情況下,函式是非常複雜的,人難以自己寫出,若是透過機器的力量自己找出有很多優勢。

機器學習尋找的函式通常是不同的,根據實際需求可以分成迴歸、分類和結構化學習等。

迴歸(regression)

假設要找的函式輸出的是一個數值,或者稱為一個標量(scalar),這種機器學習的任務稱為迴歸。(根據歷史資料和指標預測未來的一個數值)

迴歸問題中,比較經典的是房價預測問題,這個問題在很多教程中都被作為例子,在Kaggle中可以進行實踐。

分類(classification)

分類任務是讓機器做選擇題,函式的輸出是從設定好的選項中選出一個選項當作輸出。通常,在確定選項的過程中會牽扯到機率的計算,根據機率判斷最可能的選項,常見的分類演算法中都有機率的影子,個人感覺人工智慧技術的發展確實離不開數學的支援。

在分類問題中,比較常見的就是垃圾郵件判斷的例子,判斷郵件是否為垃圾郵件,這是一個二分類問題,除此之外還有多分類,AlphaGo下圍棋就是從棋盤中找到最正確的選項,還有動物識別(貓、狗、鳥……)。

結構化學習(structed learning)

在這種情況下,機器學習並不只是要做出選擇或者輸出一個數字,而是要產生一個有結構的物體,比如畫一張圖、寫一篇文章……近些年也逐漸得到更多應用。 在其他學習群裡看到過一張有意思的圖: 請新增圖片描述

結構化學習仍需要我們去探索。

案例學習

已有的資料是youtube後以往的資訊,想要得到的明天可能觀看的次數是多少 透過一個函式來實現這個過程

機器學習找函式的過程

1、寫出一個帶有未知引數的函式(這個函式基於我們的知識積累設定,這只是一個猜測),這個函式能夠預測未來觀看的次數

y=b+wx1y=b+wx_1

其中yy表示要預測的觀看次數,x1x_1 表示前一天的觀看人數

ww和bb都表示未知的引數,都需要讓機器從資料中學習

2、定義損失函式(loss function)

損失函式就是:在當前引數組合下,所有資料誤差和的平均值(個人理解),公式如下:

L=1N∑ni=1en L= \frac{1}{N} \sum_n^{i=1} e_n

其中ee表示誤差

可以採用預測值與目標值之間差的絕對值:e=∣y−y^∣e = \vert y - \hat{y} \vert

也可以採用差的平方: e=(y−y^)2e=(y-\hat{y})^2

當採用絕對值,稱為MAE(Mean Absolute Error)

當採用平方,稱為MSE(Mean Squared Error)

除了上述的兩種方式,還有一種計算loss的方式稱為“交叉熵”

計算的損失函式可以透過視覺化方式呈現,如:熱力圖、等高線圖……。下面是課程中採用的示例: 請新增圖片描述

3、最佳化(Optimization)

最佳化的目的是讓損失函式的值最小,如下公式:

w∗,b∗=minw,bLw^*,b^*=min_{w,b}L

我們要找到讓損失函式值最小的未知引數組合。

常用的方式是梯度下降(gradient descent),透過梯度下降進行引數最佳化的過程如圖: 請新增圖片描述

其中有幾個非常重要的概念:

斜率:斜率大於0表示loss在上升,斜率小於0表示loss在下降,等於0表示到達了一個極值點。

學習率(learning rate):η\eta可以理解為跨一步的大小,η\eta越高,跨一步越大,反之越小。η\eta可以經驗決定。

超引數(hyperparameter):在機器學習過程中需要人為預先設定的引數。

還有一個重要的點是關於ww的更新:

w1←w0−η∂l∂w∣w=w0w^1 \leftarrow w^0 - \eta \frac{\partial{l}}{\partial{w}}\vert_{w=w^0}

隨著ww的不斷更新,理想狀態下loss的斜率會成為0,如下圖所示 請新增圖片描述

當w=wTw=w^T時,斜率為0,當時此時loss並不是最低的

local minima:區域性最小

global minima:全域性最小

在上圖中,一個有意的現象,loss有負值,為什麼loss可以是負的?

因為loss是可以自己定義的,用上邊的絕對值和平方計算肯定是正值,但是如果自己定義不同的方式可以是負值。

4、最後

找到合適的模型要觀察資料、理解資料並進行試驗,根據結果更新模型。

關於這篇文章的日期

保留舊站原始文章標註的日期;實際開始寫作的時間可能更早。

原始日期: 2024-08-26 20:56:08 +0800