"Derivación de fórmulas de aprendizaje automático e implementación de código" capítulo 22 Algoritmo EM

Notas de estudio "Derivación de fórmulas de aprendizaje automático e implementación de código", registre su propio proceso de aprendizaje, compre el libro del autor para obtener contenido detallado.

algoritmo EM

Como algoritmo iterativo, el algoritmo EM ( expectation maximization, 期望极大值算法) se utiliza para la estimación de máxima verosimilitud de los parámetros del modelo de probabilidad incluyendo variables ocultas .

El algoritmo EM incluye dos pasos: paso E, buscando la expectativa ( expectation); paso M, buscando el máximo ( maximization).

1 Estimación de máxima verosimilitud

La estimación de máxima verosimilitud ( maximum likelihood estimation, MLE) es un método clásico de estimación de parámetros en el campo de la estadística. Para una muestra aleatoria que satisface una cierta distribución de probabilidad, pero se desconocen los parámetros estadísticos en ella, la estimación de máxima verosimilitud me permite estimar el valor del parámetro a través de los resultados de varios experimentos.

Para ilustrar con un ejemplo clásico, por ejemplo, queremos saber la distribución de altura de los estudiantes en cierta universidad. Suponemos que la distribución de altura de los estudiantes en esta escuela obedece a una distribución normal N ( μ , σ 2 ) N(\mu,\sigma^{2})norte ( μ ,pag2 ), donde el parámetro de distribuciónμ \muμσ 2 \sigma^{2}pag2 desconocido. Hay decenas de miles de estudiantes en la escuela y definitivamente no es realista medirlos uno por uno, por lo que decidimos utilizar un método de muestreo estadístico para seleccionar al azar a 100 estudiantes para medir su altura.

Para estimar la altura de todos los estudiantes de la escuela hasta la altura de 100 personas, es necesario aclarar las siguientes preguntas. La primera pregunta es cuál es la probabilidad de sacar a estas 100 personas . Dado que todos se seleccionan de forma independiente, la probabilidad de atraer a 100 personas se puede expresar como el producto de las probabilidades individuales:
L ( θ ) = L ( x 1 , x 2 , ⋯ , xn ; θ ) = ∏ i = 1 np ( xi ∣ θ ) L(\theta )=L(x_{1},x_{2},\cdots,x_{n};\theta)=\prod_{i=1}^{n}p(x_ {i}\ medio\theta)L ( yo )=L ( x1,X2,,Xn;yo )=yo = 1npag ( xyoθ )
La fórmula anterior es la función de probabilidad, para facilitar el cálculo, tomaremos el logaritmo de la función de probabilidad:
H ( θ ) = ln ⁡ L ( θ ) = ln ⁡ ∏ i = 1 np ( xi ∣ θ ) = ∑ yo = 1 norte ln ⁡ pags ( xi ∣ θ ) H(\theta )=\ln_{}{L(\theta )}=\ln_{}{\prod_{i=1}^{n}p( x_{i}\mid \theta)}=\sum_{i=1}^{n} \ln_{}{p(x_{i}\mid \theta)}H ( yo )=enL ( yo )=enyo = 1npag ( xyoyo )=yo = 1nenpag ( xyoθ )
La segunda pregunta es por qué estas 100 personas fueron seleccionadas. De acuerdo con la teoría de la estimación de máxima verosimilitud, entre tantos estudiantes en la escuela, simplemente seleccionamos estos 100 estudiantes en lugar de los otros 100 estudiantes, precisamente porque la probabilidad de que estos 100 estudiantes aparezcan es extremadamente alta, es decir, la función de probabilidad correspondiente es extremadamente grande:
θ ^ = argmax L ( θ ) \hat{\theta} = argmax L(\theta )i^=a r g max xL ( θ )
Cómo resolver el último problema, directamente paraL ( θ ) L(\theta)L ( θ ) se deriva y se hace igual a 0.

Por lo tanto, el método de estimación de máxima verosimilitud puede considerarse como la deducción inversa de las condiciones a partir de los resultados del muestreo , es decir, se sabe que cierto parámetro hace que la probabilidad de estas muestras parezca extremadamente alta, y usamos directamente este parámetro como el verdadero valor de la estimación del parámetro.

2 algoritmo EM

Asumir que la altura de todos los estudiantes en la escuela paga una distribución es demasiado general, de hecho, la distribución de hombres y mujeres es diferente, asumiendo que la altura de los niños obedece a la distribución N ( μ 1 , σ 1 2 ) N( \ mu^{}_{1},\sigma^{2}_{1})N ( metro1,pag12) , la distribución de altura de las niñas esN ( μ 2 , σ 2 2 ) N(\mu^{}_{2},\sigma^{2}_{2})N ( metro2,pag22) . Ahora, para estimar la estatura de los estudiantes en esta escuela, no podemos simplemente usar una suposición de distribución.

Suponga que 50 niños y 50 niñas se muestrean por separado y se estiman por separado. Supongamos que no sabemos si las muestras que muestreamos provienen de niños o niñas.

La altura del estudiante es una variable observada ( observable variable), y el sexo de la muestra es una variable oculta ( hidden variable).

Ahora necesitamos estimar dos cuestiones: una es si la muestra es un niño o una niña, pero cuáles son los parámetros de distribución normal de las estaturas correspondientes a niños y niñas. En este caso, la estimación de máxima verosimilitud no es aplicable.Para estimar la distribución de altura de los estudiantes masculinos y femeninos, primero es necesario estimar si el estudiante es masculino o femenino. Por el contrario, para estimar si el estudiante es hombre o mujer, se debe juzgar por la altura. Sin embargo, los dos dependen uno del otro y no pueden calcularse directamente mediante la estimación de máxima verosimilitud.

Para este problema de estimación de parámetros que involucran variables ocultas, generalmente se utiliza el algoritmo EM( expectation maximization) para resolverlo, es decir, el algoritmo de maximización de expectativas. Para el problema de estimación de altura antes mencionado, la idea de solución del algoritmo EM es: dado que los dos problemas dependen uno del otro, este debe ser un proceso de solución dinámica. Es mejor dar directamente el valor inicial de la distribución de alturas masculinas y femeninas, estimar la probabilidad de qué muestra es masculina/femenina de acuerdo con el valor inicial (paso E), y luego usar la máxima verosimilitud para estimar los parámetros de distribución de altura de estudiantes masculinos y femeninos ( paso M ), y luego se realizan ajustes dinámicos iterativos hasta que se cumple la condición de terminación.

El escenario de aplicación del algoritmo EM es resolver el problema de estimación de parámetros de un modelo de probabilidad que contiene variables ocultas. Dados los datos variables observados Y , los datos variables ocultos Z , la distribución de probabilidad conjunta P ( Y , Z ∣ θ ) P(Y,Z|\theta)P(Y,Z θ ) , yla distribución condicional en variables ocultasP ( Z ∣ Y , θ ) P(Z|Y,\theta)PAGS ( Z Y ,θ ) , use el algoritmo EM para modelar los parámetrosθ \thetaEl proceso de estimación de θ
es el siguiente: (1) Inicializar los parámetros del modeloθ ( 0 ) \theta^{(0)}i( 0 ) , iniciar iteración.
(2) Paso E: recuerdaθ ( i ) \theta^{(i)}i( yo ) porsegundoi parámetro de iteraciónθ \thetaValor estimado de θ en i+1 i+1i+1 Defina la función E, resuelva la función Q:
Q ( θ , θ ( i ) ) = EZ [ log ⁡ P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log ⁡ P ( Y , Z ∣ θ ) PAGS ( Z ∣ Y , θ ( yo ) ) Q(\theta,\theta^{(i)})=E_{Z}\left [ \log_{}{P(Y,Z\mid\ theta)}\mid Y,\theta^{(i)} \right ] =\sum_{Z}^{}\log_{}{P(Y,Z\mid\theta)}P(Z|Y,\ theta^{(i)})Q ( θ ,i( yo ) )=miZ[ registro _P(Y,Zyo )Y ,i( yo ) ]=Ziniciar sesiónP(Y,Zi ) PAGS ( Z Y ,i( i ) )
de los cualesP ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)})PAGS ( Z Y ,i( i ) )son los datos de observación dadosYYY y la estimación del parámetro actualθ ( i ) \theta^{(i)}iEn el caso de ( i ) , datos variables ocultosZZLa distribución de probabilidad condicional de Z. La clave del paso E es esta función Q, que se define como la función de probabilidad logarítmicalog ⁡ P ( Y , Z ∣ θ ) \log_{}{P(Y,Z\mid\theta)} de los datos completosiniciar sesiónP(Y,Zθ ) sobre los datos de observación dadosYYY y el parámetro actualθ ( i ) \theta^{(i)}iEn el caso de ( i ) , los datos no observadosZZLa distribución de probabilidad condicional de Z. (3) Paso M: Encuentre el parámetro θ \theta
que maximiza la función Qθ , determine eli + 1 i+1i+Estimaciones de parámetros para 1 iteraciónθ ( i + 1 ) \theta^{(i+1)}i( yo + 1 )
θ ( yo + 1 ) = argmax θ Q ( θ , θ ( yo ) ) \theta^{(i+1)}=\underset{\theta}{argmax}Q(\theta,\ theta^{(i)})i( yo + 1 )=ia r g máx _Q ( θ ,i( i ) )
(4) Repetir el paso E y el paso M hasta la convergencia.

Se puede ver en el proceso del algoritmo EM que la clave es determinar la función Q en el paso E. El paso E estima la distribución de la variable de estado oculta bajo la condición de fijar los parámetros del modelo, mientras que el paso M estima los parámetros del modelo fijando las variables ocultas. Los dos se llevan a cabo de forma interactiva hasta la condición de convergencia del algoritmo.

Proceso iterativo dinámico del algoritmo EM:
Por favor agregue una descripción de la imagen

3 modelo de tres monedas

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

4 Realice el modelo de tres monedas basado en numpy

import numpy as np

## EM算法过程定义
def em(data, thetas, max_iter=50, eps=1e-3): # data观测数据,thetas初始化的估计参数值,eps收敛阈值

    ll_old = 0 # 初始化似然函数值
    for i in range(max_iter):
        # E步:求隐变量分布
        log_like = np.array([np.sum(data*np.log(theta), axis=1) for theta in thetas]) # 对数似然 2*5
        like = np.exp(log_like) # 似然 2*5
        ws = like/like.sum(0) # 隐变量分布 2*5
        ll_new = np.sum([w*l for w, l in zip(ws, log_like)]) # 期望

        # M步:更新参数值
        vs = np.array([w[:, None] * data for w in ws]) # 概率加权 2*5*2
        thetas = np.array([v.sum(0)/v.sum() for v in vs]) # 2*2

        # 打印结果
        print(f'Iteration:{
      
      i+1}')
        print(f'theta_B = {
      
      thetas[0,0]:.2}, theta_C = {
      
      thetas[1,0]:.2}, {
      
      ll_new}')

        # 满足条件退出迭代
        if np.abs(ll_new - ll_old) < eps:
            break
        ll_old = ll_new
    
    return thetas

El algoritmo EM resuelve el problema de las tres monedas:

# 观测数据,5次独立实验,每次试验10次抛掷的正反面次数
observed_data = np.array([(5, 5), (9, 1), (8, 2), (4, 6), (7, 3)]) # 比如第一次试验为5次正面5次反面
# 初始化参数值,硬币B出现正面的概率0.6,硬币C出现正面的概率为0.5
thetas = np.array([[0.6, 0.4], [0.5, 0.5]])
# EM算法寻优
thetas = em(observed_data, thetas, max_iter=30)
thetas
Iteration:1
theta_B = 0.71, theta_C = 0.58, -32.68721052517165
Iteration:2
theta_B = 0.75, theta_C = 0.57, -31.258877917413145
Iteration:3
theta_B = 0.77, theta_C = 0.55, -30.760072598843628
Iteration:4
theta_B = 0.78, theta_C = 0.53, -30.33053606687176
Iteration:5
theta_B = 0.79, theta_C = 0.53, -30.071062062760774
Iteration:6
theta_B = 0.79, theta_C = 0.52, -29.95042921516964
Iteration:7
theta_B = 0.8, theta_C = 0.52, -29.90079955867412
Iteration:8
theta_B = 0.8, theta_C = 0.52, -29.881202814860167
Iteration:9
theta_B = 0.8, theta_C = 0.52, -29.873553692091832
Iteration:10
theta_B = 0.8, theta_C = 0.52, -29.870576075992844
Iteration:11
theta_B = 0.8, theta_C = 0.52, -29.86941691676721
Iteration:12
theta_B = 0.8, theta_C = 0.52, -29.868965223428773

array([[0.7967829 , 0.2032171 ],
       [0.51959543, 0.48040457]])

El algoritmo converge en la séptima iteración y, finalmente, las probabilidades de que la moneda B y la moneda C salgan caras son 0,80 y 0,52, respectivamente.

Dirección de Notebook_Github

Supongo que te gusta

Origin blog.csdn.net/cjw838982809/article/details/131969878
Recomendado
Clasificación