¿Cómo se puede aplicar RL (método de gradiente de política) al problema de selección de subconjunto, donde cada prueba consiste en seleccionar un subconjunto de elementos de un conjunto más grande?

Probablemente no usaría enfoques de gradiente de políticas para encontrar la solución a tal problema. Si el número de artículos es lo suficientemente pequeño, haría una búsqueda exhaustiva. Si son grandes, entonces probablemente comenzaría probando la escalada (primero encuentre el mejor elemento individual; luego busque el mejor elemento para incluir con él; luego repita hasta que agregar un elemento no mejore el rendimiento). Después de eso, consideraría cualquier número de algoritmos de búsqueda un poco más completos (¿tal vez algún tipo de mejor búsqueda con retroceso?) O probaría métodos de optimización estocástica como algoritmos genéticos.

Sin embargo, si está empeñado en usar un método de gradiente de política, entonces lo que necesita para comenzar es definir una distribución de política parametrizada que seleccione aleatoriamente un subconjunto. Puede elegir cualquier número de políticas parametrizadas, pero una simple es aquella que determina independientemente si cada elemento del conjunto completo se incluirá o no en el subconjunto. Eso equivale a tener un parámetro que define una distribución de Bernoulli para cada elemento de la lista. Para generar una selección de subconjunto, “voltee la moneda” para cada artículo de acuerdo con cada distribución de Bernoulli y los artículos que aterrizaron en uno son los artículos seleccionados para el subconjunto.

Naturalmente, uno de los requisitos clave para un gradiente de política es que puede calcular el gradiente de la probabilidad de registro para cualquier selección de “acción” (en este caso, una selección de subconjunto). Para este conjunto de distribuciones independientes de Bernoulli, eso es bastante sencillo. Tenga en cuenta que la probabilidad de registro es

[matemáticas] \ log \ Pr (A | \ theta) = \ log \ prod_i ^ n \ theta_i ^ {A_i} (1- \ theta_i) ^ {1-A_i} = \ sum_i ^ n \ log \ left [\ theta_i ^ {A_i} (1- \ theta_i) ^ {1-A_i} \ right] [/ math]

Donde [math] A [/ math] es la asignación conjunta de “acción” a cada elemento que se incluye en el subconjunto o no, [math] A_i [/ ​​math] es un 1 o 0 que indica si el elemento [math] i [/ math ] está en el subconjunto o no, [math] n [/ math] es el número de elementos posibles, y [math] \ theta_i [/ ​​math] es el parámetro de Bernoulli para determinar si el elemento [math] i [/ math] será incluido al azar en el subconjunto o no.

Entonces la derivada parcial wrt cada parámetro que forma el gradiente es

[matemáticas] \ frac {\ partial} {\ partial \ theta_j} \ log \ Pr (A | \ theta) = \ sum_i ^ n \ frac {\ frac {\ partial} {\ partial \ theta_j} \ theta_i ^ {A_i } (1- \ theta_i) ^ {1-A_i}} {\ theta_i ^ {A_i} (1- \ theta_i) ^ {1-A_i}} = \ frac {-1 ^ {A_j + 1}} {\ theta_j ^ {A_j} (1- \ theta_j) ^ {1-A_j}} [/ math]

Si hay algún tipo de características de contexto y estado sobre las que está tratando de generalizar la política de selección, puede hacer que cada parámetro de Bernoulli sea una función de esas características, y puede aplicar la regla de cadena de diferenciación para generar el gradiente de la política.

Como de costumbre, la muestra de gradiente para cualquier acción muestreada de un sistema de un paso con la recompensa recibida [math] r [/ math] es solo:

[matemáticas] r \ nabla _ {\ theta} \ log \ Pr (A | \ theta) [/ matemáticas]

EDITAR: Cambié la expresión a derivada parcial, que es lo que quise publicar, no el gradiente.