日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习中的基本数学知识

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习中的基本数学知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:本文的代碼是使用Python 3寫的。

  • 機器學習中的基本數學知識
    • 線性代數(linear algebra)
      • 第一公式
      • 矩陣的操作
        • 換位(transpose)
        • 矩陣乘法
        • 矩陣的各種乘積
        • 內積
        • 外積
        • 元素積(element-wise product/point-wise product/Hadamard product
    • 低等數學
    • 幾何
      • 范數(norm)
      • 拉格朗日乘子法和KKT條件
    • 微分(differential)
      • 表示形式
      • 法則
      • 常見導數公式
    • 統計學/概率論
    • 信息論
      • 香農熵(Shannon Entropy)
    • 博弈論
    • 不知道放到哪兒
    • 機器學習
      • 激活函數
      • 損失函數
    • 附錄
      • 希臘字母的含義和發音
      • 數學符號的含義和發音
    • 參照

線性代數(linear algebra)

第一公式

?

f(x)=xwT+b


這是在機器學習中,最常見的公式。我把這個稱為機器學習的第一公式,實際上就是線性分類函數(linear classifier)。
訓練分類器的目標就是求出(w,b)。
其中:
x 是一個一行矩陣 [[x1,x2,...,xn]]。
w 是一個一行矩陣 [[w1,w2,...,wn]]。
x 和 w 的維度相同。
b 是一個數。
xwT=∑ni=1xiwi

,稱為點積(dot product)。

有時,我們也會見到這個公式表示為類似下面的樣子,它們的基本含義都是一樣的。
f(x)=wx+b


f(x)=wTx+b
f(x)=w???x??+b

?

注:這里w

表示為一個一維數組(或者向量、矢量(vector)) [x1,x2,...,xn]。
注:一維數組:在數學上,可以理解為向量,表示多維空間上的一個點。
注:由于在線性代數中,矩陣乘法ab≠ba,所以對于表達式wTx,嚴格地說,要把矢量(向量)看做一列的矩陣(而不是一行的矩陣),才符合數學上的定義。
注:表達式w???x??和wx是正確的,因為w和x

是矢量,這個符合矢量計算的定義。

矩陣的操作

由于,這篇文章是從數學的角度寫的,所以我們先關注矩陣的操作。

換位(transpose)

矩陣的換位操作:將矩陣中的數按照對角線交換。
數學公式:wT


代碼示例:

# Matrix Transpose m = numpy.mat([[1, 2], [3, 4]]) print("Matrix.Transpose:") print(m.T) ''' Output: Matrix.Transpose: [[1 3][2 4]] '''

矩陣乘法

  • 矩陣相乘的含義
    如果一斤蘋果10元,5斤蘋果多少元?答案是:10?5=50


如果一斤蘋果10元,一斤梨20元,5斤蘋果2斤梨一共多少元?
答案是:

[1020][52]=10×5+20×2=90


  • 我們可以看出矩陣相乘的約束:乘數1的列數要和乘數2的行數相等

  • 矩陣乘法不滿足交換律

    ?

    m1?m2≠m2?m1


  • 我們再看看交換乘數后,計算的結果:

    [1020][52]=[10×520×510×220×2]=[501002040]


    比如:數20
    • 的含義是2斤蘋果多少錢。

    舉例說明它們的不同之處:

    ?

    m1=[12]

    ?

    m2=[1020]


    m1?m2的計算方法是:

    m1?m2=[12][1020]1?10+2?20=[50]

    ?

    m2?m1

    的計算方法是:

    m2?m1=1020110?120?1210?220?2=[10202040]

    ?

    • 計算公式
      矩陣相乘是:用矩陣1的每一行和矩陣2的每一列的點積,得到一個矩陣。
      l?m
    的矩陣乘以 m?n 的矩陣,形成一個l?n
    • 的矩陣。

    ?

    x?y=[x1?xn]???y1?yn???=[∑ni=1xiyi]x?y=???x1?xm???[y1?yn]=???x1y1?xmy1???x1yn?xmyn???x?y=?????x11x21?xm1????x1nx2n?xmn???????????y11y21?yn1????y1qy2q?ynq??????=???∑ni=1x1iyi1?∑ni=1xmiyi1???∑ni=1x1iyiq?∑ni=1xmiyiq???

    ?

    • 代碼演示:
    # Matrix Multiplication print("Matrix Multiplication") a = numpy.mat([1, 2]) b = numpy.mat([[10], [20]]) print(a * b) print(a.T * b.T)a = numpy.mat([[1, 2], [3, 4]]) b = numpy.mat([[10, 20], [30, 40]]) print(a * b)''' Output: [[50]] [[10 20][20 40]] [[ 70 100][150 220]] '''

    矩陣的各種乘積

    操作數學符號PythonDemo
    點積(dot product)ab
    ?a.dot(b)
    numpy.dot(a, b)

    AB=(1,2)(1020)=1?10+2?20=50

    ?
    內積(inner product)a?b

    ?a,b?
    ?numpy.inner(a, b)

    a?b=abT

    ?
    外積(outer product)a?b
    ?numpy.outer(a, b)

    A?B=(12)(1020)=(1?102?101?202?20)=(10202040)

    ?
    元素積(element-wise product, point-wise product, Hadamard product )a°b

    a⊙b
    ?numpy.multiply(a, b)

    A⊙B=(1324)(1020)=(1?103?102?204?20)=(10304080)

    ?

    注:Python中,矩陣數據可以表示為matrix和ndarray兩種類型。
    這兩種類型的操作非常接近,但是有細微的不同。
    ndarray * operation :element-wise product.
    matrix * operation :dot product.
    numpy.multiply for ndarray :element-wise product. same.
    numpy.multiply for matrix :element-wise product. same.
    numpy.dot for ndarray : inner product. 1-d array.
    numpy.dot for matrix :dot product. shape determined by values.
    numpy.inner for ndarray :inner product. 1-d array.
    numpy.inner for matrix :inner product. shape determined by values.
    numpy.outer for ndarray :outer product. same.
    numpy.outer for matrix :outer product. same.

    內積

    英文: inner product, scalar product。
    矢量的降維運算,變成一個數。
    矩陣的內積是每行每列的內積的矩陣。

    ?

    xy=?x,y?=∑ni=1xiyi

    ?

    x = numpy.array([1, 2]) y = numpy.array([10, 20]) print("Array inner:") print(numpy.inner(x, y)) ''' Output: Array inner: 50 '''x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([10, 20]) print("Matrix inner:") print(numpy.inner(x, y)) ''' Output: Matrix inner: [[ 50][110]] '''

    外積

    矢量的升維運算, m

    維矢量和n維矢量的外積是m?n為矩陣。
    矩陣的并集運算, a1?a2維矢量和b1?b2維矩陣的外積是(a1?a2)?(b1?b2)為矩陣。

    x?y=?????x1x2?xm????x1nx2n?xmn???????????y1y2?yp????y1qy2q?xpq??????=???????????x1y1?x1ny1x2y1?xmny1??????x1y1q?x1ny1qx2y1q?xmny1qx1y2?x1ny2x2y2?xmny2??????x1ypq?x1nypqx2ypq?xmnypq???????????

    ?

    x = numpy.array([1, 3]) y = numpy.array([10, 20]) print("Array outer:") print(numpy.outer(x, y)) ''' Output: Array outer: [[10 20][30 60]] '''x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([10, 20]) print("Matrix outer:") print(numpy.outer(x, y)) ''' Output: Matrix outer: [[10 20][20 40][30 60][40 80]] '''

    注:有沒有發現matrix outer 是vector outer的并集。

    元素積(element-wise product/point-wise product/Hadamard product

    • 計算公式

    ?

    x?y=[x1?xn][y1?yn]=[x1y1?xnyn]x?y=[x1?xn]???y1?ym???=???x1y1?x1ym???xny1?xnym???x?y=???x11?xm1???x1n?xmn??????y11?ym1???y1n?xn???=???x11y11?xm1ym1???x1ny1n?xmnynn???

    ?

    x = numpy.array([1, 3]) y = numpy.array([10, 20]) print("Array element-wise product:") print(x * y) ''' Output: Array element-wise product: [10 60] '''

    x = numpy.mat([[1, 2], [3, 4]]) y = numpy.mat([[10, 20],[30, 40]]) print("Matrix Add :") print(x + y) ''' Output: Matrix Add : [[11 22][33 44]] '''

    低等數學

    • 求總和公式
      這個大家應該都知道。

      ?

      ∑i=1Nxi=x1+x2+?+xn

  • ?

  • 求總積公式

    ?

    ∏i=1Nxi=x1×x2×?×xn

  • ?

  • 對數
    • 對數的含義:
    • 求數的長度。
    • 將乘法轉變成加法。
    • 解決下溢出問題:由于太多很小的數相乘造成的問題。
    • 數學表達

      ?

      log(x)=log10xlog2xln(x)

    • ?

      由于不同底的對數的結果是等比關系,所以,有時底數是誰,是無所謂的。

  • 等比
    a

  • 等比于b。可用于算法復雜度計算。

    a?ba∝b

  • ?

  • 下取整(floor)和上取整(ceil)

    ?

    floor:??x?ceil:??x?

  • ?

幾何

范數(norm)

  • L1范數
    ∥w∥1

: L1范數,也就是各項目絕對值的和。

∥w∥1=∑ni=1|wi|

  • ?

  • L2范數
    ∥w∥?or?∥w∥2

  • : L2范數,也就是各項目平方和的平方根。

    ∥w∥=∑ni=1w2i???????√

    • ?

    拉格朗日乘子法和KKT條件

    如果方程式f(x)=wx+b

    有不等式約束條件,拉格朗日乘子法和KKT條件提供了一種方法,可以計算(w,b)

    L(w,b,α)


    關于拉格朗日乘子法和KKT條件,請看:
    深入理解拉格朗日乘子法(Lagrange Multiplier)和KKT條件

    微分(differential)

    表示形式

    ?

    f′(x)or partial differential in Leibniz notation:?f(x)?xdydxor:?f(x)?x?: the gradient of f at x

    ?

    含義

    ?

    df(x)dx=limh→0f(x+h)?f(x)hwhereddx?is an operation of f(x)

    ?

    數學含義是在x

    點上,f(x)的變化除以x

    的變化。
    數學上可以認為是:斜率
    機器學習中指的是:梯度。
    計算梯度后,乘以一個比值(步長),可以得到矯正值,用于反向傳播(矯正)權值。
    partial differential:偏微分,表示函數在某個維度上的微分。這時,可將其它維度看做常量。

    法則

    法則微分偏微分
    和法則(sum rule)(f+g)′=f′+g′
    ?

    ?(u+v)?x=?u?x+?v?x

    ?
    積法則(product rule)(f?g)′=f′?g+f?g′
    ?

    ?(u?v)?x=u??v?x+v??u?x

    ?
    鏈式法則(chain rule of differentiation)(f(g(x)))′=f′(g(x))g′(x)
    ?

    ?z?x=?z?y??y?x

    ?

    常見導數公式

    f(x)f'(x)
    ax
    ?a
    ?
    xn
    ?nxn?1
    ?
    x+c
    ?1
    ?
    ex
    ?ex
    ?
    ln(x)
    ?1x
    ?

    統計學/概率論

    • 貝葉斯公式(Bayes formula)

    ?

    p(A|B)=p(B|A)p(A)p(B)wherep(A)?: the probability of observing event A.p(B)?: the probability of observing event B.p(A|B)?: the probability of observing event A given that B is true.p(B|A)?: the probability of observing event B given that A is true.

    ?

    比如:在判斷垃圾郵件的算法中:
    P(A) : 所有郵件中,垃圾郵件的概率。
    P(B) : 出現某個單詞的概率。
    P(B|A) : 垃圾郵件中,出現某個單詞的概率。
    P(A|B) : 出現某個單詞的郵件,是垃圾郵件的概率。

    信息論

    香農熵(Shannon Entropy)

    • 熵的定義
      在信息論中,熵是接收的每條消息中包含的信息的平均量,又被稱為信息熵、信源熵、平均自信息量。
      熵定義為信息的期望值。
      熵實際是對隨機變量的比特量和順次發生概率相乘再總和的數學期望。
      熵的單位通常為比特, bit 或者sh(annon) (基于2),但也用nat(基于自然對數)、Hart(基于10)計量,取決于定義用到對數的底。
      熵的單位不重要。(因為是求對數,所以是等比的。不理解這句話也無所謂。)
      熵值是一個>=0的值。
      如果為0,則表明結果可以準確預測。從下面的公式可以看出,其概率為1.

    • 熵的特征
      • 發生概率越小的信息,熵值越大。
      • 常識的熵為0。
      • 從計算損失的角度來說:熵值越大,說明損失越大。
    • 期望值
      在概率論和統計學中,一個離散性隨機變量的期望值(或數學期望、或均值,亦簡稱期望,物理學中稱為期待值)是試驗中每次可能結果的概率乘以其結果的總和。
      比如擲骰子, 其點數的期望值是3.5:
      E(x)=1?1/6+1?2/6+1?3/6+1?4/6+1?5/6+1?6/6=3.5

    • ?

    • 通俗的理解
      信息熵是:
      • 各個 (值的概率 * 值的長度) 的總和。
    • 數據集的信息熵的計算公式

    ?

    H(X)=E[I(X)]=E[?lnP(X)]=∑i=1nP(xi)I(xi)=?∑i=1nP(xi)logP(xi)(1)(2)(3)(4)whereH(X):數據集合X的信息熵值。E():求期望值。I():求信息值(驚奇值)。X:數據集合X。xi:數據集合X的標簽的一個枚舉值。I(xi):xi的資訊量(informationself).I(xi)=?log(P(xi))P(xi)?: 發生x_i的概率。x的機率質量函數(probability mass function)。P(xi)=count(xi)/len(X).

    ?

    • 熵的作用
      • 計算損失(Loss function)
        用于調整梯度遞減的步長。(本次熵(損失)比上次熵(損失)大,說明步長太大了。)
      • 用于決策樹
        熵越大,說明特征(feature)的劃分數據能力越強。

    博弈論

    • 傾向關系(preference relation)
      描述了玩家的傾向,x?y
    • 意味著“x至少和y一樣好”。

    不知道放到哪兒

    • 求最大化參數
      數學表示
      argmaxcP(c)

    • 解釋
      可以用于返回一個可能性對大的分類。
      返回當P(c)為最大值時c的值。

    例如:

    ?

    c∈{1,2}P(1)=0.9P(2)=0.1∴argmaxcP(c)=1

    ?

    • 返回最大值
      數學表示
      maxa∈AP(a)


    解釋
    在所有a∈A的計算中,返回最大值P(a)
  • 約束條件(Subject to)
    數學表示
    y=2x+1,s.t.?x>0


  • 解釋
    當約束條件x>0,成立時,有y=2x+1
  • 定義上相等
    數學表示
    A?B


  • 解釋
    A的定義為B。

  • 2補數(2's complement)
    一種使用2進制表示有符號數的方法。
    第一位為符號位,
    如果是0,則記做0;
    如果為1,則記做?2n?1, n is the size of the number


  • 例如: 0010為2; 1010為-6。

機器學習

激活函數

請看我的另外一個博文:
神經網絡學習筆記 - 激活函數的作用、定義和微分證明

損失函數

請看我的另外一個博文:
神經網絡學習筆記 - 損失函數的定義和微分證明

附錄

希臘字母的含義和發音

?大寫小寫English發音中文含義
1Ααalphaa:lf阿爾法?
2Ββbetabet貝塔?
3Γγgammaga:m伽馬?
4Δδdeltadelt德爾塔δ: delta value,偏差值
5Εεepsilonep'silon伊普西龍?
6Ζζzetazat截塔?
7Ηηetaeit艾塔?
8Θθthetθit西塔?
9Ιιiotaiot約塔?
10Κκkappakap卡帕?
11λlambdalambd蘭布達?
12Μμmumju?
13Ννnunju?
14Ξξxiksi克西ξ: slack variable,松弛變量
15Οοomicronomik'ron奧密克戎?
16πpipaiπ: 圓周率
17Ρρrhorou?
18σsigma'sigma西格馬?
19Ττtautau?
20Υυupsilonjup'silon宇普西龍?
21Φφphifai佛愛?
22Χχchiphai?
23Ψψpsipsai普西?
24Ωωomegao'miga歐米伽?

松弛變量(slack variable):在SVM中,為了處理異常點(跑到另一個分類中的點),設定的容忍值。

數學符號的含義和發音

?大寫小寫English發音中文含義
1?
??partial-偏分偏分
1
??infinity-無窮無窮

參照

  • Bayes' theorem
  • 希臘字母表(配讀音)
  • cs231n.github.io
  • 矩陣乘法的本質是什么?

如有希望介紹的數學概念,請寫到評論中,我有空會加上。

原文:https://www.cnblogs.com/steven-yang/p/6348112.html

總結

以上是生活随笔為你收集整理的机器学习中的基本数学知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。