Máquinas de factorización: ¿cómo hacen los FM para hacer predicciones y aprender?

Las máquinas de factorización se introdujeron por primera vez en 2010 en el siguiente documento: http://www.csie.ntu.edu.tw/~b970…. Entonces, por supuesto, se podría obtener una respuesta decente para esta pregunta con solo leer ese documento. Sin embargo, también proporcionaré información más específica específicamente para la capacitación y predicción de máquinas de factorización. Mi descripción solo será para máquinas de factorización de [math] 2 [/ math], aunque se puede ampliar para máquinas de factorización que modelan interacciones [math] s [/ math] -wise ([math] s> 2 [/ math] ) también.

Definiciones:

Tenemos un conjunto de [math] n [/ math] puntos de datos de verdad básica [math] D = \ {x_i, y_i \} | _ {i = 1} ^ {n} [/ math]. Cada [math] x_i [/ ​​math] es un vector [math] f \ times 1 [/ math] que representa los valores de las características [math] f [/ math] para una entrada, y cada [math] y_i [/ ​​math ] es el valor de salida de verdad de tierra real para la entrada [math] x_i [/ ​​math]. Para cada característica [math] j \ in \ {1,…, f \} [/ math], hay un parámetro de sesgo [math] w_j [/ math] y un [math] k [/ math] -dimensional parámetro latente vector [matemáticas] v_ {j, d} | _ {d = 1} ^ {k} [/ matemáticas]. El modelo también se compone de un parámetro de sesgo global [math] w_0 [/ math] para compensar todas las predicciones y ponerlas en el rango correcto. El modelo debe aprender los valores de estos parámetros para minimizar una función de pérdida [matemática] L (\ {y_i, \ hat {y_i} \} | _ {i = 1} ^ {n}) [/ matemática], donde [ math] \ hat {y_i} [/ math] es el valor predicho del modelo para la entrada [math] x_i [/ ​​math], parametrizado por los parámetros del modelo [math] \ Theta [/ math]. La razón por la cual el modelo se llama “máquina de factorización” se debe a cómo se aprenden y usan los parámetros [math] v_ {j, d} [/ math] durante la predicción.

Predicción:

La ecuación más fácilmente comprensible que denota la predicción de la máquina de factorización para una entrada [math] x_i [/ ​​math] es [math] \ hat {y_i} = w_0 + \ sum \ limits_ {j = 1} ^ {f} {w_jx_ {i, j}} + \ sum \ limits_ {j = 1} ^ {f} {x_ {i, j} \ sum \ limits_ {m = j + 1} ^ {f} { x_ {i, m }}} [/ math], donde [math] [/ math] representa el producto escalar de los vectores [math] a [/ math] y [math] b [/ math]. Por lo tanto, el peso asignado a la interacción de un par de características se factoriza entre los parámetros de cada característica, dando el nombre de “máquina de factorización” para el modelo. La complejidad asintótica del cálculo directo de la ecuación anterior está en [math] \ mathcal {O} (kf ^ 2) [/ math] porque todas las interacciones por pares deben calcularse. Pero el documento muestra que reformular la ecuación sustituyendo [matemáticas] \ sum \ limits_ {j = 1} ^ {f} {x_ {i, j} \ sum \ limits_ {m = j + 1} ^ {f} { x_ {i, m}}} ​​[/ math] con el equivalente [math] \ frac {1} {2} \ sum \ limits_ {d = 1} ^ {k} {[(\ sum \ limits_ {j = 1} ^ {f} {v_ {j, d} x_ {i, j}}) ^ 2- \ sum \ limits_ {j = 1} ^ {f} {v_ {j, d} ^ 2x_ { i, j} ^ 2}]} [/ math] reduce el tiempo de ejecución asintótico a [math] \ mathcal {O} (kf) [/ math]. Además, dado que las máquinas de factorización están destinadas a ser utilizadas con datos dispersos (cada entrada debe tener solo unos pocos valores de características distintos de cero), la implementación de una representación dispersa de los datos reduce el tiempo de ejecución de la predicción mucho más.

Formación:

Para poder hacer predicciones de entradas a través de una máquina de factorización, primero debemos dejar que la máquina de factorización aprenda todos sus parámetros dados algunos datos de entrenamiento. Se pueden utilizar muchos enfoques para aprender los parámetros de la máquina de factorización. Por ejemplo, el artículo original menciona el uso del descenso de gradiente estocástico; Otras alternativas posibles son alternar mínimos cuadrados o L-BFGS. Cada uno de estos métodos mueve gradualmente los valores de los parámetros en la dirección opuesta de [math] \ nabla _ {\ Theta} L (\ hat {y_i}, y_i) [/ math] (el gradiente de la función de pérdida con respecto a los parámetros ), iterando sobre los datos. Por ejemplo, si [matemática] L (\ {\ hat {y_i}, y_i \} | _ {i = 1} ^ {n}) = \ sum \ limits_ {i = 1} ^ {n} {(\ hat {y_i} -y_i) ^ 2} [/ math] y estábamos usando el descenso de gradiente, entonces actualizaríamos los parámetros (aplicando la regla de la cadena) como [math] \ Theta (t + 1) = \ Theta (t) – \ lambda (\ hat {y_i} -y_i) \ nabla _ {\ Theta} \ hat {y_i} [/ math], donde [math] \ lambda [/ math] sería una forma de controlar la tasa de aprendizaje. Para [math] \ nabla _ {\ Theta} \ hat {y_i} [/ math], puede ser útil saber lo siguiente: [math] \ frac {\ partial} {\ partial w_0} \ hat {y_i} = 1 [/ math], [math] \ frac {\ partial} {\ partial w_j} \ hat {y_i} = x_ {i, j} [/ math] y [math] \ frac {\ partial} {\ partial v_ {j, d}} \ hat {y_i} = x_ {i, j} \ sum \ limits_ {m = 1} ^ {f} {v_ {m, d} x_ {i, m}} – v_ {j, d} x_ {i, j} ^ 2 [/ matemáticas]. Continuaremos actualizando los parámetros hasta que no cambien mucho (lo que indica que hemos llegado a un mínimo local para la pérdida). Además, para evitar el sobreajuste, probablemente también incluiríamos términos de regularización en la función de pérdida, así como emplear la validación cruzada para encontrar los valores ideales para la dimensionalidad de los vectores latentes [math] v [/ math].