buenas
Al implementar UCB tal cual se plantea en las diapositivas de clase, encuentro un problema:
Para todas las acciones que no han sido tomadas, Nt vale 0, esto hace que el argmax quede calculado sobre un vector que contiene Nans (en particular, al primer paso, todas las posiciones son Nans).
por como esta implementado el argmax, al tomar el maximo, si hay un nan, retorna ese, pero al seleccionar array == array.max() da todo False, y el flatnonzero falla.
La solución que encontré fue cambiar el array.max() por np.nanmax() y para el caso inicial (si todos son Nans o cuando previous_action es None), devolver una acción al azar.
A mi me parece razonable, pero quería validarlo, capaz hay algo que me estoy salteando, o una solución mejor.
Esta bien que si la acción previa no se conoce, tomar una al azar? es corecto cambiar la implementación dada de argmax?
Saludos
Rodrigo