理解高斯混合模型中期望最大化的M-Step

2021-01-10 網易

  在本篇文章中將解釋高斯混合模型(GMM)的關鍵部分背後的數學原理,即期望最大化(EM),以及如何將這些概念轉換為Python。 這個故事的重點是EM或M-Step。

  注意:這不是有關端到端GMM算法的全面說明。 要進行更深入的研究,請參閱我們以前翻譯的文章。

期望最大化

  GMM中有一系列步驟,通常稱為「期望最大化」,簡稱「 EM」。 要解釋如何理解EM數學,請首先考慮您可能要處理的模型。

  

  樣本由圖形上的點表示。這些點形成一些不同的斑點。每個斑點都有一個中心,每個點都與每個斑點的中心相距一定距離。給定GMM模型數據,目標通常是根據最接近的中心按其樣本點標記其他樣本。有些點距離一個或多個中心幾乎相等,因此,我們希望基於某種概率來標記點。

EM用到的符號

  要學習如何學習機器學習算法,您一生中需要一些希臘語。 因為算法中符號基本上都是以希臘文表示的。 儘管可能會想掩蓋基礎知識,但是對單個希臘字母的簡單掌握可以幫助您理解算法中的重要概念。

  算法可能會令人生畏且令人困惑。 例如,乍看之下,高度集中的希臘符號有時足以使人窒息。 但是不要浪費時間,我們在這裡只要考慮現在要使用的符號即可

  除此以外,我們也有一些英文字母在EM中代表GMM的意思。通常,英文字母圍繞著希臘字母,就像小領航魚圍著大鯊魚遊動。就像小魚一樣,英文字母有一個重要的作用,它為如何解釋算法提供了指導。

  

M-Step的數學解釋

  現在我們已經隔離了方程的每個組成部分,讓我們通過檢查M-Step,將它們組合成一些常用的數學短語,這些短語對於用EM語言進行對話很重要。

  簇,高斯,字母J或K,有時還包括C:通常都是同一件事-如果我們有3個簇,那麼您可能會聽到「每個高斯」,「每個j」,「每個高斯j」或 「對於每個K組件」-這些都是談論相同3個簇的不同方法。 在數據方面,我們可以繪製(x,y)樣本/點的數組,並查看它們如何形成簇。

  # a 2D array of samples [features and targets]
# the last column, targets [0,1,2], represent three clusters
# the first two columns are the points that make up our features
# each feature is just a set of points (x,y) in 2D space
# each row is a sample and cluster label
[[-7.72642091 -8.39495682 2. ]
[ 5.45339605 0.74230537 1. ]
[-2.97867201 9.55684617 0. ]
[ 6.04267315 0.57131862 1. ] ...]

  軟分類(Soft Assignments),概率,響應度(Responsibility):聚類的一個主要思想是我們希望為每個樣本找到一個數字,以告訴我們樣本屬於哪個聚類。 在GMM中,對於我們評估的每個樣本,我們可能會返回代表「每個高斯j的響應度」,每個「軟分類」或每個「概率」的值。

  這些階段通常都是關於同一件事的,但響應度與概率之間存在關鍵區別。

  # an array of assignment data about the 2D array of samples
# each column represents a cluster
# each row represents data about each sample
# in each row, we have the probability that a sample belongs to one of three clusters - it adds up to 1 (as it should)
# but the sum of each column is a big number number (not 1)
print(assignments)
# sample output: an array of assignment data
[[1.00000000e+000 2.82033618e-118 1.13001412e-070]
[9.21706438e-074 1.00000000e+000 3.98146031e-029]
[4.40884339e-099 5.66602768e-053 1.00000000e+000]...]
print(np.sum(assignments[0])
# sample output: the sum across each row is 1
1
print(np.sum(assignments[:, 0])
# sample output: the sum in each col is a big number that varies
# Little Gamma: the really small numbers in each column
# Big Gamma: the sum of each column, or 33.0 in this sample33.0

  大寫伽瑪,小寫伽瑪,J,N,x和i:EM中的核心任務是為每個群集優化三組參數,或者「對於每個j,優化w(),mew( )和方差()。」 換句話說,群集的權重(),群集的中心點()和群集的方差()是多少?

  對於權重(),我們將「大寫伽瑪」除以特徵總數。 從更早的時候開始,我們就知道每個聚類j的大寫伽瑪只是將給定聚類的每個樣本的分配值相加的結果(該數字之和不等於1)。 如下圖所示

  對於EM期間高斯的權重參數,請考慮一些簡單的事情,例如添加數字列表,然後將其除以樣本總數。

  對於mew (),不是像我們之前那樣將所有小寫伽瑪加到一個小寫伽瑪中,而是對每個聚類j和每個樣本i將小寫伽瑪與特徵x進行矩陣乘法。 如下圖所示

  請記住,mew只是每個簇的中心點-如果我們有3個簇,而我們的樣本都是x,y坐標,那麼mew將是3個x,y坐標的數組,每個簇一個。

  # for figure 4 - mew (mu)
# same array of assignment data as before
# each column is a cluster of little gammas
print(assignments)
[[1.00000000e+000 2.82033618e-118 1.13001412e-070]
[9.21706438e-074 1.00000000e+000 3.98146031e-029]
[4.40884339e-099 5.66602768e-053 1.00000000e+000]...]
# the little gammas of cluster 0 is just column 0
[[1.00000000e+000 ]
[9.21706438e-074 ]
[4.40884339e-099 ]...]
# same array of sample data as before
# the first two columns are the x,y coordinates
# the last column is the cluster label of the sample
print(features)
[[-7.72642091 -8.39495682 2. ]
[ 5.45339605 0.74230537 1. ]
[-2.97867201 9.55684617 0. ]
[ 6.04267315 0.57131862 1. ] ...]
# for features, we just need its points
[[-7.72642091 -8.39495682 ]
[ 5.45339605 0.74230537 ]
[-2.97867201 9.55684617 ]
[ 6.04267315 0.57131862 ] ...]
# if using numpy (np) for matrix multiplication
# for cluster 0 ...
big_gamma = np.sum(assignments[:, 0]
mew = np.matmul(assignments[:, 0], features) / big_gamma
# returns an array of mew
[[-2.66780392 8.93576069]
[-6.95170962 -6.67621669]
[ 4.49951001 1.93892013]]

  對於方差(),請考慮到現在,我們有了點和中心點-隨著方差的出現,我們基本上正在評估每個樣本的點(每個i的x)到每個群集的中心點(每個i的mew)的距離。 用EM語言來說,有些人可能會說「 xi減去mewi乘以Big Gamma j。」

  # for figure 5 - variance
# a sampling of variance for cluster 0 of n clusters
# given arrays for features and assignments...
x_i = features
big_gamma = np.sum(assignments[:, 0]
mew = np.matmul(assignments[:, 0], features) / big_gamma
numerator = np.matmul(assignments[:, 0], (x_i - mew) ** 2)
variance = numerator / big_gamma
# returns an array of variance
[[0.6422345 1.06006186]
[0.65254746 0.9274831 ]
[0.95031461 0.92519751]]

  以上步驟都是關於EM中的M-Step或最大化-所有關於權值、mew和方差的都是關於優化的;但是,初始賦值數組呢?我們如何得到每個樣本的概率數組這是EM中的E-Step,也就是期望。

  在E-Step中,我們嘗試用貝葉斯規則猜出每個點的分配-這會產生一組值,這些值指示每個點對高斯的響應度或概率。最初會與猜測值(後驗值)相差很遠,但是在通過E-Step和M-Step循環之後,這些猜測會變得更好,更接近客觀的地面真理。

  GMM算法重複M-Step 和 E-Step直到收斂。例如,收斂性可能是迭代的最大次數,或者當每輪猜測之間的差異變得非常小時。希望最終的結果是,數據中的每個樣本都有一個軟分配的標籤。

總結

  在這篇文章中,我介紹了M-Step的高斯混合模型算法的期望最大化階段的導航部分的理解。雖然從表面上看,數學似乎太複雜而無法處理,但我們可以通過理解其各個部分來處理其複雜性。例如,一些關鍵的理解,如發音的希臘符號和應用它們的操作與NumPy是重要的,以掌握總體概念。

  作者:Justin Chae

  deephub翻譯組

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • 高斯混合模型(GMM):理念、數學、EM算法和python實現
    高斯混合模型是一種流行的無監督學習算法。GMM方法類似於K-Means聚類算法,但是由於其複雜性,它更健壯,更有用。K-means聚類使用歐式距離函數來發現數據中的聚類。只要數據相對於質心呈圓形分布,此方法就可以很好地工作。
  • 對於自然辯證法的逐步思考(step by step,基於對生命的新理解)
    對於自然辯證法的逐步思考(step by step,基於對生命的理解)自然辯證法≈物質辯證法+意識辯證法自然辯證法≈物質辯證法+意識辯證法*i自然≈物質+意識*i注意:以上表述,與「人體結構與功能的四元數矢量模型」密切相關(系列相關閱讀資料:飢餓源於菌群、菌心說學說、雙腦論模型、柔性辟穀技術、人和動物的共性和區別、和合思想與和合主義等)。世界是「二分(法)」的嗎?形上學?
  • 金融時序預測:狀態空間模型和卡爾曼濾波
    平穩性=高斯噪聲和一個趨勢=累積高斯噪聲之和。 在這裡,我們將通過查看每個信號的自相關函數來檢查每個信號的平穩性特徵。我們期望對於一個平穩信號,ACF 在每個時間 lag (τ) 時變為0,因為我們期望不依賴於時間。
  • 「最新研究」新型冠狀病毒傳播的高斯分布模型
    由於接觸時間,患病時間的隨機性,導致新增確診病例隨時間的變化曲線接近高斯分布。因此有:其中,M為最大累計確診病例數;μ為發病時間的數學期望值,它代表新增病例數的處於拐點的時間;σ為高斯分布的標準差,它決定了高斯分布的幅度,也和疫情的持續時間相關。我們猜測,2σ比較接近病毒的有效傳染期(潛伏期),這可以通過各地的疫情數據加以確認。
  • 金融時序預測:狀態空間模型和卡爾曼濾波(附代碼)
    平穩性=高斯噪聲和一個趨勢=累積高斯噪聲之和。在這裡,我們將通過查看每個信號的自相關函數來檢查每個信號的平穩性特徵。我們期望對於一個平穩信號,ACF 在每個時間 lag (τ) 時變為0,因為我們期望不依賴於時間。我們在這裡看到,平穩信號有很少的lags超過ACF的 CI。
  • 高斯分布
    二維正態分布的等概率曲線是一個橢圓3.n維正態分布的邊緣分布和條件分布都是正態分布高斯分布是概率論和統計學最重要的分布,在機器學習各種模型的也是處處可見。因此,有必要對高斯分布做深一步的理解。xi,我們可以利用最大似然估計法(MLE)估計其均值和方差
  • 自適應濾波算法理解與應用
    2) 逆模型:在這類應用中,自適應濾波器的作用是提供一個逆模型,該模型可在某種意義上最好擬合未知噪聲裝置。理想地,在線性系統的情況下,該逆模型具有等於未知裝置轉移函數倒數的轉移函數,使得二者的組合構成一個理想的傳輸媒介。該系統輸入的延遲構成自適應濾波器的期望響應。在某些應用中,該系統輸入不加延遲地用做期望響應。   3) 預測:在這類應用中,自適應濾波器的作用是對隨機信號的當前值提供某種意義上的一個最好預測。於是,信號的當前值用作自適應濾波器的期望響應。信號的過去值加到濾波器的輸入端。
  • 正態分布和高斯分布的作用_高斯分布的定義_誤差服從高斯分布
    (Normal distribution),也稱「常態分布」,又名高斯分布(Gaussian distribution),最早由A.棣莫弗在求二項分布的漸近公式中得到。C.F.高斯在研究測量誤差時從另一個角度導出了它。P.S.拉普拉斯和高斯研究了它的性質。是一個在數學、物理及工程等領域都非常重要的概率分布,在統計學的許多方面有著重大的影響力。   正態曲線呈鍾型,兩頭低,中間高,左右對稱因其曲線呈鐘形,因此人們又經常稱之為鐘形曲線。   若隨機變量X服從一個數學期望為μ、方差為σ^2的正態分布,記為N(μ,σ^2)。
  • 從最大似然估計開始,你需要打下的機器學習基石
    例如,我們可以使用一個隨機森林模型來分類客戶是否會取消訂閱服務(稱為流失建模),或者我們可以用線性模型根據公司的廣告支出來預測公司的收入(這是一個線性回歸的例子)。每個模型都包含自己的一組參數,這些參數最終定義了模型本身。我們可以把線性模型寫成 y = mx + c 的形式。在廣告預測收入的例子中,x 可以表示廣告支出,y 是產生的收入。m 和 c 則是這個模型的參數。
  • 透徹理解高斯分布
    正態分布是與中的定量現象的一個方便模型。各種各樣的心理學測試分數和現象比如計數都被發現近似地服從正態分布。概率分布函數與概率密度函數的關係:連續型隨機變量X的概率分布函數F(x),如果存在非負可積函數f(x),使得對任意實數x,有f(x)為X的概率密度高斯分布通過概率密度函數來定義高斯分布:
  • 高斯分布與曼德布羅特分布
    但是,有一些模型存在一種極為天真的東西。在所有這些模型中,勝者一直是勝者,忽略了隨機性。然而,失敗者可能一直是失敗者,而勝者可能被某個憑空冒出來的人取代,所以沒有人是安全的。1957年美國最大的500家公司中,只有74家在40年後仍然位列標普500指數。只有少數公司因為合併而消失,其餘的要麼衰敗,要麼破產。大公司像蒼蠅一樣不斷墜落,這個事實真正的原因就在於隨機性。
  • 混合時空圖卷積網絡:更精準的時空預測模型|KDD2020
    圖2展示了現實世界中的例子。為了利用這一轉換關係,我們設計了將流量轉化為通行時間的轉換器,該轉換器由兩層網絡構成,分別用於提取全局共享信息和學習不同路段的精細化信息。歸一化圖拉普拉斯(normalized graph Laplacian)矩陣和縮放變換的圖拉普拉斯(scaled graph Laplacian)矩陣分別表示為:其中為單位陣,為複合鄰接矩陣,對角陣為的度矩陣(degree matrix),是的最大特徵值。圖卷積層通過的切比雪夫多項式(Chebyshev polynomials)參數化。
  • [PRML]線性回歸模型--線性基函數模型
    條件高斯分布混合的擴展允許多峰條件分布。在監督學習中如回歸和分類,我們不是尋找輸入變量的分布模型。線性模型的條件高斯噪聲的似然函數的最大化等價於最小化平方和誤差函數如果數據集足夠大,那麼使用順序算法(sequential algorithms)可能是值得的,也稱為在線算法(on-line algorithms),在這種算法中,每次考慮一個數據點,並在每次這樣的展示後更新模型參數。順序學習也適用於實時應用,在這種應用中,數據觀察是在一個連續的流中到達的,並且必須在看到所有數據點之前做出預測。
  • 高斯濾波器詳解
    然後就是遍歷,根據高斯分布的函數,計算模板中每個係數的值。需要注意的是,最後歸一化的過程,使用模板左上角的係數的倒數作為歸一化的係數(左上角的係數值被歸一化為1),模板中的每個係數都乘以該值(左上角係數的倒數),然後將得到的值取整,就得到了整數型的高斯濾波器模板。
  • 更快的計算,更高的內存效率:PyTorch混合精度模型AMP介紹
    Tensor Core可以加速AI核心的大型矩陣運算,並在單個運算中執行混合精度矩陣乘法和累加計算。 在一個NVIDIA GPU中並行運行數百個Tensor Core,這可以極大地提高吞吐量和運行效率。簡單地說; 它們是專用於特定類型矩陣操作的專用內核。我們可以將兩個FP16矩陣相乘並將其添加到FP16 / FP32矩陣中,從而得到FP16 / FP32矩陣。
  • 使用PyTorch從理論到實踐理解變分自編碼器VAE
    變分自動編碼器(Variational Auto Encoders ,VAE)是種隱藏變量模型[1,2]。該模型的思想在於:由模型所生成的數據可以經變量參數化,而這些變量將生成具有給定數據的特徵。因此,這些變量被稱為隱藏變量。
  • [PRML]線性分類模型--概率判別模型
    儘管有這些限制,具有固定非線性基函數的模型在應用中扮演著重要的角色,並且對這種模型的討論將引入許多關鍵的概念,以便理解它們更複雜的對等物。3 邏輯回歸從考慮二分類問題開始處理廣義線性模型。在統計學術語中,這種模型稱為邏輯回歸,但應強調這是一種分類模型,而不是回歸模型。
  • 機器學習 | 二:高斯分布
    指隨機過程中,任何時刻的取值都為隨機變量,如果這些隨機變量服從同一分布,並且互相獨立,那麼這些隨機變量是獨立同分布。
  • 不妨試試看線性混合效應模型
    學習任務是:用lme4構建線性混合效應模型,找到表達量與距離相關的基因。為什麼要用線性混合效應模型我們希望找到表達量與距離相關的基因,但因為來自同一個患者的表達量是相關的,所以這128個樣本不滿足普通線性回歸的獨立性假設,需要用到線性混合效應模型