Serie de clasificación:
El primer artículo sobre listas se publicó en Learning to Rank: From Pairwise Approach to Listwise Approach. Ha habido varias variaciones desde entonces, pero siguen siendo las mismas. Este artículo se centra en los principios.
Lista de enlaces en papelNet , código de implementación de referencia: código de implementación
1. ¿Por qué se pierde por lista?
ventajas y desventajas por pares ventajas
:
- Algunos modelos de clasificación bien probados se pueden utilizar directamente.
- En algunos escenarios específicos, sus características por pares son fáciles de obtener.
defecto:
- El objetivo del aprendizaje es minimizar el error de clasificación de pares de documentos, en lugar de minimizar el error de clasificación de documentos. Los objetivos de aprendizaje son inconsistentes con los objetivos reales (MAE, NDCG).
- El proceso de capacitación puede llevar mucho tiempo porque la cantidad de pares de documentos generados puede ser muy grande.
Entonces, ¿cómo resuelve este artículo estos problemas?
Puntualmente, utilizamos cada <consulta, documento> como muestra de entrenamiento para entrenar un modelo de clasificación. Este método no considera la relación secuencial entre documentos; en el método parisino, se considera la correlación de dos documentos cualesquiera bajo la misma consulta, pero también tiene las deficiencias mencionadas anteriormente; en forma de lista, convertimos una <consulta,documentos> es entrenado como muestra, donde documentos es una lista de archivos relacionados con esta consulta .
El artículo también propone un método de distribución de probabilidad para calcular la función de pérdida por lista. Y propuso dos métodos: probabilidad de permutación y probabilidad superior. Ambos métodos se detallan a continuación.
2. Introducción al método
2.1 formato de entrada de pérdida
Supongamos que tenemos m consultas:
Q = ( q ( 1 ) , q ( 2 ) , q ( 3 ) , . . . , q ( m ) ) Q=(q^{(1)}, q^{(2 ) }, q^{(3)},...,q^{(m)})q=( q( 1 ) ,q( 2 ) ,q( 3 ) ,... ,q( m ) )
Hay n documentos que pueden estar relacionados con cada consulta (n puede ser diferente para diferentes consultas)
d (i) = (d 1 (i), d 2 (i), . . ., dn (i) ) d^{(i)} = (d^{(i)}_1, d^{(i)}_2, ..., d^{(i)}_n)d( yo )=( re1( yo ),d2( yo ),... ,dnorte( yo ))
Para todos los documentos bajo cada consulta, podemos obtener la puntuación de relevancia real de cada documento y consulta de acuerdo con el escenario de aplicación específico.
y (i) = (y 1 (i) , y 2 (i) , . . . . , yn ( i ) ) y^{(i)} = (y^{(i)}_1, y^{( i)}_2, ...., y^{(i)}_n)y( yo )=( y1( yo ),y2( yo ),.... ,ynorte( yo ))
Podemos obtener de cada par de documentos( q ( i ) , dj ( i ) ) (q^{(i)}, d^{(i)}_{j})( q( yo ) ,dj( yo )) obtiene la puntuación del documento,q ( i ) q^{(i)}q( i ) y conjunto de documentosd (i) d^{(i)}dDespués de calificar cada documento en ( i )
, se pueden obtener los vectores de características de todos los documentos bajo la consulta: x (i) = (x 1 (i), x 2 (i),..., xn (i)) x ^{(i)} = (x^{(i)}_1, x^{(i)}_2, ..., x^{(i)}_n)X( yo )=( x1( yo ),X2( yo ),... ,Xnorte( yo ))
y bajo la condición de que se conozca la verdadera puntuación de relevancia de cada documento:
y ( i ) = ( y 1 ( i ) , y 2 ( i ) , . . . , yn ( i ) ) y^{(i)} = (y^{(i)}_1, y^{(i)}_2, ..., y^{(i)}_n)y( yo )=( y1( yo ),y2( yo ),... ,ynorte( yo ))
Podemos construir muestras de entrenamiento:
T = { ( x ( i ) , y ( i ) ) } T=\begin{Bmatrix} (x^{(i)}, y^{(i)}) \end{Bmatrix }t={
( x( yo ) ,y( yo ) )}
Lo que necesita especial atención es que una de las muestras de entrenamiento aquí es (x (i), y (i)) (x^{(i)}, y^{(i)})( x( yo ) ,y( i ) ), y aquíx (i) x^{(i)}X( i ) es una lista de documentos relacionados con la consulta, que también es una característica importante que la distingue de puntual y por pares.
关于y (i) y^{(i)}y( i ) Descripciones relevantes en el artículo:
2.2 Cálculo de pérdidas
Ahora que tenemos muestras de entrenamiento, ¿cómo calcular la pérdida?
Suponiendo que ya tenemos la función de clasificación f ff, podemos calcular el vector de características x (i) x^{(i)}X( i )的得分情况:
z (i) = (f (x 1 (i)), f (x 2 (i)), . . ., f (xn (i))) z^{(i)} = (f(x_1^{(i)}), f(x_2^{(i)}), ..., f(x_n^{(i)}))z( yo )=( f ( x1( yo )) ,f ( x2( yo )) ,... ,f ( xnorte( yo )))
Obviamente nuestro objetivo de aprendizaje es minimizar el error entre la puntuación real y la puntuación prevista:
∑ i = 1 m L ( y ( i ) , z ( i ) ) \sum_{i=1}^{m} L( y ^{(i)}, z^{(i)})yo = 1∑mL ( y( yo ) ,z( i ) )
L es la función de pérdida de listwise.
2.2.1 Modelo probabilístico
Supongamos que para una determinada consulta, los documentos que pueden estar relacionados con ella son { 1 , 2 , 3 , . . . , n } \{1, 2, 3, ..., n\}{
1 ,2 ,3 ,... ,n } , suponiendo que el resultado de un determinado tipo esπ \piπ
π = < π ( 1 ) , π ( 2 ) , . . , π ( n ) > \pi=<\pi(1), \pi(2), .., \pi(n)>Pi=<pag ( 1 ) ,pag ( 2 ) ,.. ,pag ( n )>
Para n documentos, hay n! arreglos. Todas estas situaciones de clasificación se registran como Ω n \Omega_nOhnorte. Suponiendo que existe una función de clasificación, para cada documento podemos calcular la puntuación de relevancia s = ( s 1 , s 2 , . . . , sn ) s = (s_1, s_2, ..., s_n)s=( s1,s2,... ,snorte) . Obviamente, es posible que esto suceda en cada situación de clasificación, pero cada disposición tiene su valor de máxima probabilidad.
Podemos definir un cierto arreglo π \pi como esteProbabilidad de π (valor máximo de verosimilitud):
P s ( π ) = ∏ j = 1 n ϕ ( s π ( j ) ) ∑ k = jn ϕ ( s π ( k ) ) P_s(\pi) = \prod_{ j =1}^{n} \frac{\phi (s_{\pi(j)})}{\sum_{k=j}^{n}\phi(s_{\pi(k)})}PAGs( pag )=j = 1∏norte∑k = jnorteϕ ( sπ ( k ))ϕ ( spag ( j ))
donde ϕ \phiϕ representa la normalización de la puntuación.
Por ejemplo, hay tres documentos π = < 1, 2, 3 > \pi = <1,2,3>Pi=<1 ,2 ,3> , su función de clasificación calcula la puntuación de cada documento comos = ( s 1 , s 2 , s 3 ) s=(s_1, s_2, s_3)s=( s1,s2,s3) _ ( s 3 ) ⋅ ϕ ( s 3 ) ϕ ( s 3 ) P_s(\pi) =\frac{\phi(s_1) }
{\phi(s_1)+\phi(s_2)+\phi(s_3 )} \ cdot \frac{\phi(s_2)}{\phi(s_2)+\phi(s_3)} \cdot \frac{\phi(s_3)}{\phi(s_3)}PAGs( pag )=ϕ ( s1)+ϕ ( s2)+ϕ ( s3)ϕ ( s1)⋅ϕ ( s2)+ϕ ( s3)ϕ ( s2)⋅ϕ ( s3)ϕ ( s3)
Para otra clasificación, por ejemplo π ′ = < 3 , 2 , 1 > {\pi}' = <3,2,1>Pi′=<3 ,2 ,1> , entonces la probabilidad de este arreglo es:
P s ( π ) = ϕ ( s 3 ) ϕ ( s 3 ) + ϕ ( s 2 ) + ϕ ( s 1 ) ⋅ ϕ ( s 2 ) ϕ ( s 2 ) + ϕ ( s 3 ) ⋅ ϕ ( s 1 ) ϕ ( s 1 ) P_s(\pi) =\frac{\phi(s_3)}{\phi(s_3)+\phi(s_2)+\phi(s_1)} \cdot \frac{\phi(s_2) }{\phi(s_2)+\phi(s_3)} \cdot \frac{\phi(s_1)}{\phi(s_1)}PAGs( pag )=ϕ ( s3)+ϕ ( s2)+ϕ ( s1)ϕ ( s3)⋅ϕ ( s2)+ϕ ( s3)ϕ ( s2)⋅ϕ ( s1)ϕ ( s1)
Obviamente, el orden <3,2,1> tiene la puntuación más baja y el orden <1,2,3> tiene la puntuación más alta.
2.2.2. Probabilidad K superior
La complejidad computacional del método anterior para calcular la probabilidad de permutación alcanza n!n!n !, lo cual requiere demasiado tiempo, por lo que en el artículo se propone un método superior más eficiente. Lo ampliamos al top k aquí para analizarlo y resumirlo.
Lo anterior calcula la probabilidad de un determinado método de clasificación:
P s ( π ) = ∏ j = 1 n ϕ ( s π ( j ) ) ∑ k = jn ϕ ( s π ( k ) ) P_s(\pi) = \prod_ {j =1}^{n} \frac{\phi (s_{\pi(j)})}{\sum_{k=j}^{n}\phi(s_{\pi(k)})}PAGs( pag )=j = 1∏norte∑k = jnorteϕ ( sπ ( k ))ϕ ( spag ( j ))
Clasificado primero es nnEn n casos, el segundo esn − 1 n−1norte−1 situación, y así sucesivamente. Equivalente a usar topnnn para calcular.
Entonces arribaK ( K < n ) K(K<n)k ( k<n ) Definición:
P s ( π ) = ∏ j = 1 K ϕ ( s π ( j ) ) ∑ k = jn ϕ ( s π ( k ) ) P_s(\pi) = \prod_{j=1}^{ K} \frac{\phi(s_{\pi(j)})}{\sum_{k=j}^{n}\phi(s_{\pi(k)})}PAGs( pag )=j = 1∏k∑k = jnorteϕ ( sπ ( k ))ϕ ( spag ( j ))
De la misma manera, la complejidad computacional aquí es n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ . . . ∗ ( n − k + 1 ) n∗(n−1)∗(n−2)∗. . .*(n−k+1)norte∗( n.−1 )∗( n.−2 )∗...∗( n.−k+1 ) , que esN!/(N − k)!N!/(Nk)!norte ! / ( norte−k )! diferentes disposiciones, lo que reduce en gran medida la complejidad computacional.
SiK = 1 K = 1k=1 , se convierte en la situación número 1 del artículo. En este momento, hay n arreglos diferentes:
P s ( π ) = ϕ ( s π ( j ) ) ∑ k = jn ϕ ( s π ( k ) ) P_s( \ pi) = \frac{\phi (s_{\pi(j)})}{\sum_{k=j}^{n}\phi(s_{\pi(k)})}PAGs( pag )=∑k = jnorteϕ ( sπ ( k ))ϕ ( spag ( j ))
Para N!/(N − k)!N!/(Nk)!norte ! / ( norte−k )! diferentes permutaciones, hay N!/(N−k)! probabilidades de predicción de permutación, formando una distribución de probabilidad. Las probabilidades de permutación correspondientes luego se calculan en función de las puntuaciones de correlación reales para obtener la permutación real. Distribuciones de probabilidad. A partir de esto, se puede utilizar la entropía cruzada para calcular la distancia entre las dos distribuciones como función de pérdida:
L ( y ( i ) , z ( i ) ) = − ∑ j = 1 n { P y ( i ) ( j ) ∗ log ( P z ( i ) ( j ) ) } L(y^{(i)}, z^{(i)}) = - \sum_{j=1}^{n} \{P_{y^ {(i) }}(j) *log(P_{z^{(i)}}(j))\}L ( y( yo ) ,z( yo ) )=−j = 1∑norte{
PAGy( yo )( j )∗registro ( P _ _z( yo )( j ))}
Por ejemplo, hay tres documentos bajo una consulta <A, B, C> <A,B,C><un ,B ,C> :
2.2.3. ListaNet
Aquí está la forma final de ListNet:
en el documento, Listnet simplemente convierte el top K topK anteriort o p ϕ \phien KLa función ϕ se convierte en función exp:
P s ( π ) = exp ( s π ( j ) ) ∑ k = jn exp ( s π ( k ) ) P_s(\pi) = \frac{\exp (s_{\ pi) (j)})}{\sum_{k=j}^{n}\exp(s_{\pi(k)})}PAGs( pag )=∑k = jnorteexp ( sπ ( k ))exp ( spag ( j ))
¿No es esto simplemente calcular el softmax de la puntuación prevista? De hecho, este es el caso. Así es como se hace en el código de implementación. En ese momento, estaba confundido cuando miré el código directamente. ¿No es esto solo una operación softmax en la puntuación predicha por el documento? ? ¿Qué tiene que ver con el top-one? Sólo después de leer el artículo detenidamente sabrás lo que está pasando.
Cuando top-1, solo hay n permutaciones, lo que reduce en gran medida la cantidad de cálculo. Si arriba K ( K > 1 ) K (K>1)k ( k>1 ) , aumentará el número de permutaciones que deben calcularse.
Suponiendo que el parámetro de la función de clasificación f es w, la distribución de probabilidad de clasificación del primero es:
P z (i) (fw) (xj (i)) = exp (fw (xj (i))) ∑ k = jn exp ( fw ( xk ( i ) ) ) P_{z^{(i)}(f_w)}(x_j^{(i)}) = \frac{\exp (f_w(x_j^{(i) })) }{\sum_{k=j}^{n}\exp(f_w(x_k^{(i)}))}PAGz( yo ) (fw)( xj( yo ))=∑k = jnorteexp ( fw( xk( yo )))exp ( fw( xj( yo )) )
Todavía es necesario señalar aquí: la lista de todos los documentos que pueden estar relacionados con una determinada consulta se utiliza como muestra para la formación.
Disfunción final:
L ( y ( i ) , z ( i ) ( fw ) ) = − ∑ j = 1 n { P y ( i ) ( xj ( i ) ) ∗ log ( P z ( i ) ( fw ) ( xj ( i ) ) ) } L(y^{(i)}, z^{(i)}(f_w)) = - \sum_{j=1}^{n} \{P_{y^{( i) }}(x_j^{(i)}) *log(P_{z^{(i)}(f_w)}(x_j^{(i)}))\}L ( y( yo ) ,z( yo ) (fw))=−j = 1∑norte{
PAGy( yo )( xj( yo ))∗registro ( P _ _z( yo ) (fw)( xj( yo )))}
Resumen del editor:
en pocas palabras, la pérdida de Listwise se puede resumir esencialmente de la siguiente manera:
paso 1: softmax en todos los conjuntos que contienen muestras positivas y negativas; paso 2: use entropía cruzada para sumar todas las muestras para calcular la pérdida,
pero desde el principio De hecho, esto es sólo un compromiso para la velocidad de cálculo. Además, la verdad fundamental en entropía cruzada es la anterior yj (i) y^{(i)}_jyj( yo )Puntuación, de modo que cuanto mayor sea la puntuación de verdad fundamental, mayor será la pérdida causada por un gran error de predicción, por lo que se prestará más atención a la puntuación alta real pero a la puntuación baja prevista, mejorando así la puntuación máxima.
Detalles de implementacion
Descubrí un detalle al mirar el código fuente: el artículo habla de entropía cruzada, pero en la implementación del código encontré que se usa entropía cruzada, es decir, la divergencia KL está en rojo y la entropía cruzada está en verde.
Resumir
En pares, solo se considera el orden relativo de los dos pares de documentos, pero no se considera la posición del documento en la lista de búsqueda. El documento clasificado en la parte superior de los resultados del sitio de búsqueda es más importante. Si hay un error de juicio en el documento superior, el costo será obviamente alto para los documentos que se enumeran a continuación. La idea de mejora para este problema es introducir factores sensibles al costo, es decir, cada par de documentos tiene un peso diferente según su orden en la lista, cuanto mayor sea el peso, mayor será el peso, es decir, mayor será la lista de búsqueda. , si el pedido es incorrecto, el precio pagado es mayor (índice de evaluación NDCG), mientras que el método de lista considera todos los documentos bajo una consulta como una muestra, porque se deben combinar diferentes arreglos para obtener la distribución de probabilidad de arreglo para minimizar el error con la probabilidad real. distribución Esto Se consideran varias relaciones secuenciales entre documentos. Es mejor evitar esta situación.
Defina la función de pérdida desde la perspectiva de un modelo probabilístico.
En la práctica, todos los n documentos bajo una consulta que pueden estar relacionados con ella se utilizan en realidad como muestra de entrenamiento (en este momento se puede entender que tamaño de lote = n). Cabe señalar que al calcular la probabilidad top_1, está dentro de una consulta. Realice softmax en todos los documentos, en lugar de en todas las muestras que se están entrenando actualmente. Ésta es una diferencia importante entre puntual y por pares.
Enlace de referencia:
Compartir artículos— >Aprender a clasificar: del enfoque por parejas al enfoque por listas