Datawhale X 李宏毅蘋果書 AI夏令營:task1透過案例瞭解機器學習

cytlz2730發表於2024-08-27

隱藏任務:

①:找出本篇中形如迴歸(regression)加粗字型的術語,並用自己的話進行解釋,列成表格,與學習群的其他小夥伴討論你的理解和搜尋到的相關案例。

②:整理出本篇中所有的公式,手動摘錄,並嘗試理解。

③:找出機器學習找函式的3個步驟!並查詢資料,交叉佐證這些步驟。

④:歸納梯度下降的步驟。

⑤:為什麼區域性最小是一個假問題,區域性最小怎麼解決?真正的難題是什麼?

⑥:搜尋資料瞭解線性模型的基本歷史發展,以及目前的主要應用方向。

⑦:瞭解什麼叫批次(batch)、以及怎麼樣從線性模型過度到神經元、神經網路深度學習~


1.隱藏任務1

術語 解釋
機器學習 是一種人工智慧技術,它讓計算機能夠在沒有明確程式設計的情況下從資料中學習。簡而言之,就是讓計算機自己發現規律並做出預測或決策。
深度學習 是機器學習的一個分支,它使用多層神經網路來自動識別資料中的模式。深度學習特別擅長處理影像、語音和自然語言等複雜的資料型別。
標量 是一個單一數值,與向量和矩陣不同,它只有一個數值而不包含方向。在機器學習中,標量常常用來表示單個資料點或計算結果。
迴歸 是一種預測連續值的方法。比如,預測房價、銷售額或溫度等數值型資料。迴歸分析試圖找到輸入變數與輸出變數之間的數學關係。
分類 是預測離散類別的一種方法。例如,判斷一封郵件是否為垃圾郵件、診斷病人是否患有某種疾病等。分類問題的輸出是一組固定的類別標籤。
結構化學習 是一種解決具有結構化輸出的問題的方法。與傳統的分類或迴歸不同,結構化學習關注的是預測複雜的結構化物件,如序列、樹或圖。
引數 是定義機器學習模型行為的可調數值。例如,線上性迴歸中,斜率和截距都是模型的引數。
模型 是對現實世界的簡化表示,它透過一系列數學公式來捕捉資料中的模式。模型可以用來做預測或決策。
特徵 是用於訓練模型的資料屬性。例如,在預測房價的任務中,房屋的面積、臥室數量等都是特徵。
權重 是模型中賦予不同特徵的重要性程度。權重越大,該特徵對模型的貢獻就越大。
偏置 是模型中的一個額外引數,它類似於數學中的截距。偏置可以幫助模型更好地擬合資料。
平均絕對誤差 是評估預測準確性的一種指標,它是預測值與真實值之差的絕對值的平均值。
均方誤差 是另一種評估預測準確性的指標,它是預測值與真實值之差的平方的平均值。相比於 MAE,MSE 更加重視較大的誤差。
交叉熵(shang) 是用來衡量兩個機率分佈之間的差異的指標。在機器學習中,它常被用作分類任務的損失函式。
梯度下降 是一種最佳化演算法,用於最小化損失函式。它透過沿著梯度的負方向迭代更新引數來逐漸降低損失函式的值。
學習率 決定了梯度下降中引數更新的速度。較高的學習率會導致更大的更新步長,但也可能導致錯過最小值。
超引數 是在訓練模型之前設定的引數,它們控制著模型的學習過程。例如,學習率、批次大小等都是超引數。
全域性最小值 是整個引數空間中最小的損失函式值。找到全域性最小值意味著模型達到了最優狀態。
區域性最小值 是在某個區域性區域內的最小值,但它可能不是全域性最小值。在最佳化過程中,模型可能會陷入區域性最小值而無法找到全域性最小值。

2.隱藏任務2

本篇中所有公式如下:(總共10個公式)

\[y=b+\omega x_1 \]

\[\hat{y}=500+1x_1 \]

\[e_1=|y-\hat{y}|=400 \]

\[e_2=|y-\hat{y}|=2100 \]

\[L=\frac{1}{N}\sum_n e_n \]

\[e=|\hat{y}-y| \]

\[e=(\hat{y}-y)^2 \]

\[\omega^1\leftarrow\omega^0-\eta\frac{\partial L}{\partial \omega}\biggr\rvert_{\omega=\omega^0} \]

\[\frac{\partial L}{\partial b} \biggr\rvert_{\omega=\omega^0 ,b=b^0}\\ \frac{\partial L}{\partial \omega} \biggr\rvert_{\omega=\omega^0 ,b=b^0} \]

\[\omega^1\leftarrow\omega^0-\eta\frac{\partial L}{\partial \omega}\biggr\rvert_{\omega=\omega^0 ,b=b^0}\\ b^1\leftarrow b^0-\eta\frac{\partial L}{\partial b}\biggr\rvert_{\omega=\omega^0 ,b=b^0} \]

2.1 公式1理解:

\[y=b+\omega x_1 \]

其中 b 跟 w 是未知的。帶有未知的引數的函式稱為模型。模型在機器學習裡面,就是一個帶有未知的引數的函式。特徵 x1 是這個函式里面已知的,它是來自後臺的資訊。而w和b是未知的引數。w稱為權重,b稱為偏置

2.2 公式2理解:

\[\hat{y}=500+1x_1 \]

基於公式1,假設未知的引數的設定是b=500,w=1,預測未來的觀看次數的函式救變成y=500+x1。

2.3 公式3理解:

\[e_1=|y-\hat{y}|=400 \]

估測的值 yˆ 跟真實值 y 的差距 e。

其中真實的值稱為標籤

計算差距不止一種方式。

公式3是其中一種:取絕對值。

透過公式2得出yˆ = 5300,真正的結果是 4900。

由公式3得出e1=400。

2.4 公式4理解:

\[e_2=|y-\hat{y}|=2100 \]

除了用1月1日的值來預測1月2日的值,還可以用1月2日的值來預測1月3日的值。

根據 1 月 2 日的觀看次數,預測的 1 月 3 日的觀看次數的,值是 5400。

公式4計算5400 跟跟標籤(7500)之間的差距。

2.5 公式5理解:

\[L=\frac{1}{N}\sum_n e_n \]

計算3年來每一天的誤差都可以得到e。把這些e加起來取得平均,得到損失L,也就是公式5.

其中N代表訓練資料的個數。

L越大,代表現在這一組引數越不好;L越小,代表現在這一組引數越好。

2.6 公式6理解:

\[e=|\hat{y}-y| \]

估測的值和實際的值之間的差距其實有不同的計算方法,計算y 與 yˆ 之間絕對值的差距。

公式6則被稱為平均絕對誤差

2.7 公式7理解:

\[e=(\hat{y}-y)^2 \]

如果計算y 與 yˆ 之間平方的差距,即為公式7。則其稱為均方誤差

2.8 公式8理解:

\[\omega^1\leftarrow\omega^0-\eta\frac{\partial L}{\partial \omega}\biggr\rvert_{\omega=\omega^0} \]

把 w0 往右移一步,新的位置為 w1,這一步的步伐是 η 乘上微分的結果,即公式8.

image

w 代不同的數值的時候,就會得到不同的損失,這一條曲線就是誤差。怎麼樣找一個 w 讓損失的值最小呢?首先要隨機選取一個初始的點 w0。接下來計算 ∂L/∂w|w=w0,在 w 等於 w0 的時候,引數 w 對損失的微分。計算在這一個點,在 w0 這個位置的誤差表面的切線斜率,也就是這一條藍色的虛線,它的斜率。

2.9 公式9理解:

\[\frac{\partial L}{\partial b} \biggr\rvert_{\omega=\omega^0 ,b=b^0}\\ \frac{\partial L}{\partial \omega} \biggr\rvert_{\omega=\omega^0 ,b=b^0} \]

假設有兩個引數,隨機初始值為 w0, b0。要計算 w, b 跟損失的微分,計算在 w = w0 的位置,b = b0 的位置,要計算 w 對 L 的微分,計算 b 對 L 的微分。

2.10公式10理解:

\[\omega^1\leftarrow\omega^0-\eta\frac{\partial L}{\partial \omega}\biggr\rvert_{\omega=\omega^0 ,b=b^0}\\ b^1\leftarrow b^0-\eta\frac{\partial L}{\partial b}\biggr\rvert_{\omega=\omega^0 ,b=b^0} \]

計算完公式9後更新 w 跟 b,把 w0 減掉學習率乘上微分的結果得到 w1,把 b0 減掉學習率乘上微分的結果得到 b1。


3.隱藏任務3

以影片的點選次數預測為例介紹下機器學習的運作過程。

機器學習找函式的3個步驟如下:

1.寫出一個帶有未知引數的函式 f,其能預測未來觀看次數。比如將函式寫成

\[y=b+\omega x_1 \]

其中,y 是準備要預測的東西,要預測的是今天(2 月 26 日)這個頻道總共觀看的人,y 就假設是今天總共的觀看次數。x1 是這個頻道,前一天(2 月 25 日)總共的觀看次數,y 跟 x1 都是數值,b 跟 w 是未知的引數,它是準備要透過資料去找出來的,w 跟 b 是未知的,只是隱約地猜測。

2.定義損失,損失也是一個函式。這個函式的輸入是模型裡面的引數,模型是 y = b + w ∗ x1,而 b 跟 w 是未知的,損失是函式 L(b, w),其輸入是模型引數 b 跟w。

3.解一個最最佳化的問題。找一個 w 跟 b,把未知的引數找一個數值出來,看代哪一個數值進去可以讓損失 L 的值最小,就是要找的 w 跟 b,這個可以讓損失最小的 w 跟 b 稱為 w∗ 跟 b∗ 代表它們是最好的一組 w 跟 b,可以讓損失的值最小。梯度下降(gradient descent)是經常會使用最佳化的方法。

--------查詢資料內容如下--------

‌機器學習找函式的三個步驟‌主要包括:

1.選擇或構建模型‌:首先,需要確定一個帶有未知引數的函式形式。這個函式通常是一個線性模型,如y=wx+b,其中w和b是未知引數,w被稱為權重,b被稱為偏置。這個步驟涉及到根據具體問題和任務選擇或構建一個合適的模型。

2.定義損失函式‌:接下來,需要定義一個損失函式,這是一個用來評價模型預測效果與實際結果之間差距的函式。損失函式的輸入是模型的引數(在這個例子中是w和b),輸出是模型預測的準確度或好壞程度。損失函式的選擇取決於具體的問題型別,例如,迴歸問題通常使用均方誤差(MSE)或平均絕對誤差(MAE),而分類問題則可能使用交叉熵代價函式。

3.最佳化求解‌:最後,透過最佳化演算法(如梯度下降法)來尋找使損失函式最小的引數值。這一步驟的目標是找到最佳的函式引數,使得模型在新樣本上的表現達到最佳。最佳化過程可能涉及到迭代更新引數值,直到達到某個停止條件,如損失函式的值不再顯著變化或達到預設的迭代次數。

這三個步驟共同構成了機器學習演算法的核心流程,透過不斷地調整和最佳化模型引數,使得模型能夠更好地適應和預測新資料‌。


4.隱藏任務4

下面是梯度下降的基本步驟:

(1) 初始化引數
  • 首先,隨機或根據某種策略初始化模型的引數。例如,在深度學習中,權重通常是隨機初始化的,而偏置通常初始化為零。
(2) 計算損失
  • 計算模型預測與實際目標之間的差異,通常使用損失函式(如均方誤差 MSE 或交叉熵損失)來量化這種差異。
(3)求導數
  • 對損失函式關於每個引數求偏導數。這一步驟的目標是計算梯度向量,即損失函式在當前位置的斜率。梯度的方向指向了函式增長最快的方向。
(4) 更新引數
  • 使用以下公式更新引數:

    \[\omega^1\leftarrow\omega^0-\eta\frac{\partial L}{\partial \omega}\biggr\rvert_{\omega=\omega^0} \]

    其中:η是學習率,決定了每次更新步長的大小。
(5)重複步驟2至4
  • 迭代進行上述步驟,直到滿足停止條件。停止條件可能是達到預定的最大迭代次數、梯度的模小於一個閾值或損失函式的變化小於某個閾值等。

5.隱藏任務5

(1)區域性最小為何可能是個“假問題”:
  1. 在高維空間中:隨著引數空間維度的增加,區域性最小變得不那麼重要。在深度學習中,由於引數數量巨大(高維空間),區域性最小往往非常接近全域性最小,或者說,很多區域性最小點的效能相差無幾。
  2. 鞍點問題:在深度學習中,比區域性最小更常見的問題是鞍點(saddle points)。這些點周圍的梯度接近於零,但它們既不是區域性最小也不是區域性最大,而是有多個方向上的增減變化。
  3. 實際應用中的效果:在實踐中,找到一個能夠使模型很好地泛化到新資料的區域性最小點,往往比找到絕對的全域性最小點更重要。
(2)如何解決區域性最小問題:
  1. 隨機初始化:透過多次隨機初始化權重來訓練模型,這樣可以探索不同的區域性最小點。
  2. 動量方法:如動量梯度下降(Momentum)、Nesterov 加速梯度下降(NAG)等,可以幫助模型逃離區域性最小點。
  3. 自適應學習率方法:如 AdaGrad、RMSProp 和 Adam 等最佳化演算法,這些方法透過動態調整學習率來改善最佳化過程。
  4. 正則化技術:如 L1 和 L2 正則化,可以幫助模型避免過擬合,並且有時也能幫助模型跳出區域性最小點。
  5. 批次歸一化:透過歸一化輸入和/或隱藏層的輸出,可以幫助最佳化過程更加穩定。
(3)真正的難題:
  • 鞍點問題:在高維空間中,鞍點比區域性最小更常見,也是最佳化過程中的一大挑戰。
  • 泛化能力:即使找到了一個全域性最小點,模型也未必能在未見過的資料上表現良好。因此,如何設計模型使其具有良好的泛化能力是另一個重要的考慮因素。
  • 計算資源:尋找最優解需要大量的計算資源,特別是在處理大規模資料集和複雜模型時。如何高效地利用計算資源也是一個關鍵問題。

6.隱藏任務6

6.1 線性模型的歷史發展
  1. 早期起源
    • 線性模型的基礎可以追溯到18世紀末和19世紀初,當時科學家們開始使用簡單的線性方程來描述資料之間的關係。
    • 19世紀中葉,卡爾·弗里德里希·高斯(Carl Friedrich Gauss)和阿道夫·凱特勒(Adolphe Quetelet)的工作為線性模型奠定了理論基礎,他們使用最小二乘法來估計引數。
  2. 20世紀的發展
    • 20世紀初期,統計學家如羅納德·費希爾(Ronald Fisher)和尤金·皮爾遜(Egon Pearson)等人推動了線性模型的理論和應用發展。
    • 20世紀中葉,隨著計算機的出現和發展,線性模型的計算變得更加可行,這促進了線性模型在各種領域的廣泛應用。
  3. 現代發展
    • 20世紀後期和21世紀初,隨著大資料時代的到來,線性模型的形式和應用範圍得到了擴充套件,例如廣義線性模型(Generalized Linear Models, GLMs)的引入,使得線性模型能夠適用於更多的資料型別和場景。
    • 近年來,隨著機器學習和人工智慧的興起,線性模型在預測和決策支援系統中扮演著重要角色。
6.2 當前的主要應用方向
  1. 經濟學和金融
    • 線性模型被廣泛用於預測市場趨勢、風險評估和投資組合最佳化等領域。
  2. 生物學和醫學
    • 在生物統計學中,線性模型用於分析基因表達資料、疾病預測和臨床試驗結果。
  3. 社會科學
    • 社會科學研究中經常使用線性模型來分析社會現象,如人口趨勢、社會經濟狀況的影響等。
  4. 工程學
    • 工程領域使用線性模型來最佳化設計、質量控制和故障預測。
  5. 市場營銷
    • 在市場營銷中,線性模型可用於預測消費者行為、產品銷售和廣告效果。
  6. 資訊科技
    • IT行業使用線性模型進行網路流量預測、伺服器負載均衡等。
  7. 機器學習
    • 在機器學習中,線性模型如線性迴歸和邏輯迴歸仍然是非常基礎且重要的工具,用於分類和迴歸任務。
    • 特別是線上性迴歸方面,它作為最基本的模型之一,在機器學習入門階段被廣泛教授和使用。
  8. 深度學習
    • 儘管深度學習模型是非線性的,但在某些情況下,也會使用線性模型作為基準模型,或在神經網路的某些層中使用線性變換。
  9. 精算科學
    • 線性模型在保險業中用於評估風險和制定保費政策。
  10. 環境科學
    • 在環境科學中,線性模型被用於預測氣候變化的影響、汙染物擴散等。

7.隱藏任務7

7.1 什麼叫批次

批次(batch)通常指的是在電腦科學和資料處理中,將多個資料項或任務組合在一起,作為一個單元進行處理的方法。這種方法可以提高處理效率,尤其是在處理大量資料時,可以更好地利用計算資源,減少資源的浪費。在深度學習中,批次大小(batch size)是指在訓練模型時一次性輸入的樣本數目,它是一個重要的超引數,影響模型的訓練速度、記憶體使用、收斂性和泛化能力。批次演算法是指使用整個訓練集的最佳化演算法,這種方法在機器學習中用於確保模型得到較好的泛化能力。

7.2 怎麼樣從線性模型過度到神經元、神經網路深度學習

線性模型在處理複雜資料和非線性問題時存在侷限性。為了克服這些侷限性,可以透過引入神經元和構建神經網路來實現更高階的資料表示和學習能力。以下是從線性模型過渡到神經元和神經網路的關鍵步驟:

  1. 理解神經元的工作原理:神經元是神經網路的基本構建塊,它接收多個輸入,透過加權求和後應用啟用函式來產生輸出。啟用函式引入了非線性,使得神經網路能夠學習和模擬複雜的函式對映。
  2. 構建多層感知機(MLP):透過將多個神經元連線成多層結構,形成多層感知機。每一層的神經元可以提取輸入資料的不同層次的特徵,從而實現更復雜的資料表示。
  3. 反向傳播演算法:反向傳播是訓練多層神經網路的關鍵演算法,它透過計算損失函式相對於網路權重的梯度,並使用梯度下降等最佳化演算法來更新權重,以最小化預測誤差。
  4. 正則化和最佳化技術:在深度學習中,為了防止過擬合和提高模型的泛化能力,通常會採用L1、L2正則化以及Dropout等技術。這些技術可以幫助模型在訓練過程中更好地學習資料的內在結構。
  5. 深度學習框架:利用深度學習框架(如TensorFlow、PyTorch等)可以方便地構建、訓練和部署神經網路模型。這些框架提供了豐富的工具和預構建的層,使得構建複雜的神經網路變得更加高效。
  6. 實踐和實驗:透過實際構建和訓練神經網路模型,可以加深對神經網路工作原理的理解,並透過實驗調整網路結構和超引數,以獲得最佳的模型效能。

透過上述步驟,可以從簡單的線性模型過渡到複雜的神經元和神經網路,從而處理和學習更加複雜的資料集和任務。深度學習模型在影像識別、自然語言處理等領域已經取得了顯著的成功。

相關文章