EM算法與變分推斷

符號說明

  • x x x:已觀測變量的集合 { x 1 , x 2 , x 3 , . . . , x N } \{x_1,x_2,x_3,...,x_N\} {x1?,x2?,x3?,...,xN?},長度為 N N N
  • z z z:隱變量(未觀測變量)
  • θ \theta θ:分布參數
  • ( x , z ) (x,z) (x,z):完整數據
  • p ( x ∣ θ ) p(x|\theta) p(xθ):似然函數

KL散度

  • KL散度用于衡量原始分布與近似分布的差異,從公式來看,其計算的是原始分布與近似分布之間的對數差的期望,公式如下
    D K L ( p ∣ ∣ q ) = E [ ln ? p ( x ) ? ln ? q ( x ) ] = ∑ i = 1 N p ( x i ) ln ? p ( x i ) q ( x i ) = ∫ x p ( x i ) ln ? p ( x i ) q ( x i ) d x D_{KL}(p||q)=E[\ln p(x)-\ln q(x)]=\sum_{i=1}^Np(x_i)\ln \frac{p(x_i)}{q(x_i)}=\int_x p(x_i) \ln \frac{p(x_i)}{q(x_i)}dx DKL?(p∣∣q)=E[lnp(x)?lnq(x)]=i=1N?p(xi?)lnq(xi?)p(xi?)?=x?p(xi?)lnq(xi?)p(xi?)?dx
  • KL散度大于等于0

EM算法

EM算法原理

  • EM算法常用于估計參數的隱變量,它是一種迭代式的方法,其基本想法是:如果參數 θ \theta θ已知,則可以根據訓練數據推斷出最優隱變量 z z z的值( E E E步)反之,若 z z z已知,則可以方便地對參數 θ \theta θ做極大似然估計( M M M步)
  • 假設我們要對參數 θ \theta θ做極大似然估計,則需要最大化對數似然
    ln ? p ( x , z ∣ θ ) \ln p(x,z|\theta) lnp(x,zθ),但由于隱變量 z z z是未知的,因此上式無法直接求解,我們可以通過對上式計算關于 z z z的期望來最大化已觀測數據x的邊緣似然,即最大化
    ln ? p ( x , z ∣ θ ) = ∫ z ln ? p ( x , z ∣ θ ) p ( z ∣ x , θ ) d z \ln p(x,z|\theta)=\int_z \ln p(x,z|\theta)p(z|x,\theta)dz lnp(x,zθ)=z?lnp(x,zθ)p(zx,θ)dz
  • 于是,EM算法的原型便是,以初始值 θ 0 \theta^0 θ0為起點,對上式可迭代執行以下步驟直至收斂:
    • 基于第 t t t步的 θ t \theta^t θt推斷隱變量 z z z的分布 p ( z ∣ x , θ ) p(z|x,\theta) p(zx,θ)
    • 基于已觀測變量 x x x p ( z ∣ x , θ ) p(z|x,\theta) p(zx,θ)對參數 θ \theta θ做極大似然估計得到 θ t + 1 \theta^{t+1} θt+1
  • 由此,我們可以得出EM算法的迭代方程
    θ t + 1 = arg?max ? θ ∫ z ln ? p ( x , z ∣ θ t ) p ( z ∣ x , θ t ) d z \theta^{t+1}=\argmax_\theta\int_z \ln p(x,z|\theta^t)p(z|x,\theta^t)dz θt+1=θargmax?z?lnp(x,zθt)p(zx,θt)dz

變分推斷

問題背景

  • 通常而言,機器學習中需要解決的問題是由觀察到的變量 x x x來估計隱變量 z z z的分布以及參數 θ \theta θ,也就是求解 p ( z ∣ x , θ ) p(z|x,\theta) p(zx,θ)以及 θ \theta θ

    用公式來表達,變量集合 x x x的聯合分布為 p ( x ∣ θ ) = ∏ i = 1 N ∫ z p ( x i , z ∣ θ ) d z p(x|\theta)=\prod_{i=1}^N\int_zp(x_i,z|\theta)dz p(xθ)=i=1N?z?p(xi?,zθ)dz
    則其對應的對數似然函數就為
    ln ? p ( x ∣ θ ) = ln ? ∏ i = 1 N p ( x i , z ∣ θ ) = ∑ i = 1 N ln ? [ ∫ z p ( x i , z ∣ θ ) d z ] \ln p(x|\theta)=\ln \prod_{i=1}^Np(x_i,z|\theta)=\sum_{i=1}^N\ln\left[\int_z p(x_i,z|\theta)dz\right] lnp(xθ)=lni=1N?p(xi?,zθ)=i=1N?ln[z?p(xi?,zθ)dz]

  • 而概率模型中的參數估計通常以最大化對數似然函數為手段,對上式應用EM算法得到 θ t + 1 = arg?max ? θ ∫ z ln ? p ( x , z ∣ θ t ) p ( z ∣ x , θ t ) d z \theta^{t+1}=\argmax_\theta\int_z \ln p(x,z|\theta^t)p(z|x,\theta^t)dz θt+1=θargmax?z?lnp(x,zθt)p(zx,θt)dz p ( z ∣ x , θ t ) p(z|x,\theta^t) p(zx,θt)與隱變量 z z z的真實后驗分布相等時, ∫ z ln ? p ( x , z ∣ θ t ) p ( z ∣ x , θ t ) d z \int_z \ln p(x,z|\theta^t)p(z|x,\theta^t)dz z?lnp(x,zθt)p(zx,θt)dz近似于對數似然函數,然而,由于隱變量 z z z是未知的,我們很難得知它的真實分布,因此我們實際使用的 p ( z ∣ x , θ t ) p(z|x,\theta^t) p(zx,θt)未必是隱變量 z z z的真實后驗分布,而通常只是一個近似分布。

  • 因此,如何推斷 z z z的真實后驗分布 p ( z ∣ x , θ t ) p(z|x,\theta^t) p(zx,θt)成為了一個問題,此時我們便可以借助變分推斷。假設我們現在要使用近似分布 q ( z ) q(z) q(z)去逼近真實分布 p ( z ∣ x , θ t ) p(z|x,\theta^t) p(zx,θt),我們可以很容易驗證以下關系式
    ln ? p ( x ∣ θ ) = L ( q ) + K L ( q ∣ ∣ p ) \ln p(x|\theta)=L(q)+KL(q||p) lnp(xθ)=L(q)+KL(q∣∣p)其中 L ( q ) = ∫ z ln ? p ( x , z ∣ θ ) q ( z ) q ( z ) d z L(q)=\int_z \ln \frac{p(x,z|\theta)}{q(z)}q(z)dz L(q)=z?lnq(z)p(x,zθ)?q(z)dz K L ( q ∣ ∣ p ) = ∫ z ln ? q ( z ) p ( z ∣ x , θ ) q ( z ) d z KL(q||p)=\int_z\ln \frac{q(z)}{p(z|x,\theta)}q(z)dz KL(q∣∣p)=z?lnp(zx,θ)q(z)?q(z)dz

  • 證明如下,通過將對數似然函數進行變換可以得到
    ln ? p ( x ∣ θ ) = ln ? p ( x , z ∣ θ ) ? ln ? p ( z ∣ x , θ ) = ln ? p ( x , z ∣ θ ) q ( z ) ? ln ? p ( z ∣ x , θ ) q ( z ) \begin{aligned} \ln p(x|\theta) &= \ln p(x,z|\theta)-\ln p(z|x,\theta)\\ &= \ln \frac{p(x,z|\theta)}{q(z)}-\ln \frac{p(z|x,\theta)}{{q(z)}}\\ \end{aligned} lnp(xθ)?=lnp(x,zθ)?lnp(zx,θ)=lnq(z)p(x,zθ)??lnq(z)p(zx,θ)??對等式兩邊同時乘上 q ( z ) q(z) q(z)可得
    ln ? p ( x ∣ θ ) q ( z ) = ln ? p ( x , z ∣ θ ) q ( z ) q ( z ) ? ln ? p ( z ∣ x , θ ) q ( z ) q ( z ) \ln p(x|\theta)q(z) = \ln \frac{p(x,z|\theta)}{q(z)}q(z)-\ln \frac{p(z|x,\theta)}{{q(z)}}q(z) lnp(xθ)q(z)=lnq(z)p(x,zθ)?q(z)?lnq(z)p(zx,θ)?q(z)等式兩邊同時對 z z z求積分,由于 ln ? p ( x ∣ θ ) \ln p(x|\theta) lnp(xθ) z z z無關,因此積分后仍得原式,所以有
    ln ? p ( x ∣ θ ) = ∫ z ln ? p ( x , z ∣ θ ) q ( z ) q ( z ) d z ? ∫ z ln ? p ( z ∣ x , θ ) q ( z ) q ( z ) d z = ∫ z ln ? p ( x , z ∣ θ ) q ( z ) q ( z ) d z + ∫ z ln ? q ( z ) p ( z ∣ x , θ ) q ( z ) d z \begin{aligned} \ln p(x|\theta) &= \int_z \ln \frac{p(x,z|\theta)}{q(z)}q(z)dz-\int_z\ln \frac{p(z|x,\theta)}{{q(z)}}q(z)dz\\ &= \int_z \ln \frac{p(x,z|\theta)}{q(z)}q(z)dz+\int_z\ln \frac{q(z)}{p(z|x,\theta)}q(z)dz\\ \end{aligned} lnp(xθ)?=z?lnq(z)p(x,zθ)?q(z)dz?z?lnq(z)p(zx,θ)?q(z)dz=z?lnq(z)p(x,zθ)?q(z)dz+z?lnp(zx,θ)q(z)?q(z)dz? L ( q ) = ∫ z ln ? p ( x , z ∣ θ ) q ( z ) q ( z ) d z L(q)=\int_z \ln \frac{p(x,z|\theta)}{q(z)}q(z)dz L(q)=z?lnq(z)p(x,zθ)?q(z)dz K L ( q ∣ ∣ p ) = ∫ z ln ? q ( z ) p ( z ∣ x , θ ) q ( z ) d z KL(q||p)=\int_z\ln \frac{q(z)}{p(z|x,\theta)}q(z)dz KL(q∣∣p)=z?lnp(zx,θ)q(z)?q(z)dz,則關系式得證。

  • 觀察我們所得到的關系式,假如我們假設近似分布 q ( z ) q(z) q(z)無限接近于 p ( z ∣ x , θ ) p(z|x,\theta) p(zx,θ),那么KL散度便無限趨近于0,此時就有 ln ? p ( x ∣ θ ) ≈ L ( q ) \ln p(x|\theta)\approx L(q) lnp(xθ)L(q)于是,我們就將最大化對數似然的問題就轉化為找到一個q(z)能最大化 L ( q ) L(q) L(q)的問題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/12277.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12277.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12277.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pdffactory pro8.0虛擬打印機(附注冊碼)

PdfFactory pro是一款非常受歡迎的PDF虛擬打印機,可以幫助用戶將你的其他文檔保存為PDF格式。請為用戶提供打印/發送/加密等多種實用功能,以及一套完善的PDF打印方案。 使用說明 下載pdfFactory Pro壓縮包,解壓后,雙擊exe文件&am…

LeetCode_LCR002做題總結(可變字符序列使用)

LCR 002. 二進制求和 方法一方法二遺落知識點字符串長度stringStringBuffer && StringBuilder 方法一 轉換成十進制數,求和之后再轉換成二進制數 class Solution {public String addBinary(String a, String b) {return Integer.toBinaryString(Integer.p…

算法提高之木棒

算法提高之木棒 核心思想:dfs 剪枝優化 1.搜索順序優化:len從小到大遍歷2**.剪枝(失敗后):** (1) 跳過所有和第i根木棍相同長度的木棍(2) 如果當前木棍是新木棒的第一根就失敗了 則之后不會搜到方案 return false(3) 下一根失敗但是上一根成…

java獲取到泛型信息后,需要包裝到另一個父類型中。比如讀取類型R,包裝成Res<R>

問題 對于json解析來說&#xff0c;我們一般是通過jackson的TypeReference或者XXX.class來制定類型&#xff08;其他json框架同理&#xff09;&#xff0c;比如下列代碼&#xff1a; ResponseBody<XxxClass> body JsonUtils.parseObject(response, new TypeReference&…

vue + element-plus項目做管理系統常用的組件,以及一些方便開發的設置

1.簡化路徑 //vite.consfig.ts import { defineConfig, ConfigEnv } from vite import vue from vitejs/plugin-vue import path from path export default defineConfig(({ command }: ConfigEnv) > {return {plugins: [vue(),],resolve: {alias: {: path.resolve(__dirn…

EEL中 python端的函數名是如何傳遞給js端的

python端的函數名是如何傳遞給js端的 核心步驟&#xff1a;將函數名列表注入到動態生成的 eel.js 中&#xff0c;這樣前端一開始引用的eel.js本身已經包含有py_function的函數名列表了。你打開開發者工具看看瀏覽器中的 eel.js文件源代碼就知道了。 具體實現&#xff1a; # 讀…

全面解析OpenAI的新作——GPT-4o

5月14日凌晨1點、太平洋時間的上午 10 點&#xff0c;OpenAI的GPT-4o的橫空出世&#xff0c;再次鞏固了其作為行業顛覆者的地位。GPT-4o的發布不僅僅是一個產品的揭曉&#xff0c;它更像是向世界宣告AI技術已邁入了一個全新的紀元&#xff0c;連OpenAI的領航者薩姆奧特曼也不禁…

樓宇智慧公廁建設新方案-集成更簡單!成本價更低!

在當今的大廈和寫字樓中&#xff0c;公廁面臨著諸多痛點。 辦公樓公廁常常存在廁位難找的問題&#xff0c;使用者不得不花費時間逐一查看&#xff0c;導致效率低下&#xff1b;環境質量也令人擔憂&#xff0c;異味、臟污等情況時有發生&#xff0c;影響使用者的心情和健康&…

【simulink】Scrambling 加擾

https://ww2.mathworks.cn/help/comm/ug/additive-scrambling-of-input-data-in-simulink.html 草圖 simulink 代碼圖

leetcode-11. 盛最多水的容器(雙指針)

11. 盛最多水的容器 /*** param {number[]} height* return {number}*/ var maxArea function (height) {// 時間復雜度 O(n)// 空間復雜度 O(1)let len height.length;let left 0,right len - 1;let res 0;while (left < right) {let area Math.min(height[left], h…

QT狀態機10-QKeyEventTransition和QMouseEventTransition的使用

1、QMouseEventTransition的使用 首先明白 QMouseEventTransition 繼承自 QEventTransition類。 關于QEventTransition類的使用,可參考 QT狀態機9-QEventTransition和QSignalTransition的使用 回顧 QT狀態機9-QEventTransition和QSignalTransition的使用 中的狀態切換代碼,如…

零基礎10 天入門 Web3之第3天

10 天入門 Web3之第3天 什么是以太坊&#xff0c;以太坊能做什么&#xff1f;Web3 是互聯網的下一代&#xff0c;它將使人們擁有自己的數據并控制自己的在線體驗。Web3 基于區塊鏈技術&#xff0c;該技術為安全、透明和可信的交易提供支持。我準備做一個 10 天的學習計劃&…

AI+新能源充電樁數據集

需要的同學私信聯系&#xff0c;推薦關注上面圖片右下角的訂閱號平臺 自取下載。 隨著我國新能源汽車市場的蓬勃發展&#xff0c;充電樁的需求量日益增加&#xff0c;充電樁的智能化程度不僅影響充電站運營商的經營效益&#xff0c;也大大影響著用戶的充電體驗。AI技術可以涵蓋…

Flutter 中的 Listener 小部件:全面指南

Flutter 中的 Listener 小部件&#xff1a;全面指南 在Flutter中&#xff0c;Listener是一個可以監聽多種類型事件的通用組件&#xff0c;它可以用來監聽如滾動、震動、焦點等事件。Listener通常與GestureDetector等組件結合使用&#xff0c;以實現對用戶交互的響應。本文將提…

python “名稱空間和作用域” 以及 “模塊的導入和使用”

七、名稱空間和作用域 可以簡單理解為存放變量名和變量值之間綁定關系的地方。 1、名稱空間 在 Python 中有各種各樣的名稱空間&#xff1a; 全局名稱空間&#xff1a;每個程序的主要部分定義了全局的變量名和變量值的對應關系&#xff0c;這樣就叫做全局名稱空間 局部名稱…

04-單片機商業項目編程,從零搭建低功耗系統設計

一、本文內容 上一節《03-單片機商業項目編程&#xff0c;從零搭建低功耗系統設計-CSDN博客》我們確定了設計思路&#xff0c;并如何更有效的保持低功耗&#xff0c;這節我們就準備來做軟件框架設計。在AI飛速發展的時代&#xff0c;我們也會利AI來輔助我們完成&#xff0c;讓自…

淺談C++ overload(重載) override(覆蓋) overwrite(重寫)

目錄 1. 名詞辨析2 含義解析1 overload重載2 override覆蓋3 overwrite重寫 3 區別4 代碼示例 1. 名詞辨析 關于這3個名詞的中文翻譯&#xff1a; overload翻譯為重載&#xff0c;基本是沒有歧義的&#xff1b;override和overwrite的翻譯&#xff0c;我在參考了cppreference中…

.NET周刊【5月第2期 2024-05-12】

國內文章 C#在工業數字孿生中的開發路線實踐 https://mp.weixin.qq.com/s/b_Pjt2oii0Xa_sZp_9wYWg 這篇文章探討了C#在工業數字孿生技術中的應用&#xff0c;介紹了三種基于C#的數字孿生系統實現方案&#xff1a; WPF Unity&#xff1a;結合WPF技術和Unity引擎&#xff0c…

接口、會話控制

文章目錄 接口介紹RESTful APIjson-server接口測試工具apipost公共參數和文檔功能 會話控制cookie介紹和使用運行流程瀏覽器中操作Cookieexpress中cookie操作 Sessionsession運行流程&#xff1a;session中間件配置session 和 cookie 的區別CSRF跨站請求偽造 tokenJWT介紹與演示…

idea控制臺日志控制

1.清除控制臺log日志 測試的時候&#xff0c;控制臺打印的日志比較多&#xff0c;速度有點慢而且不利于查看運行結果&#xff0c;所以接下來我們把這個日志處理下: 取消初始化spring日志打印&#xff0c;resources目錄下添加logback.xml&#xff0c;名稱固定&#xff0c;內容如…