Assignment 1 - task 1.2.1

Assignment 1 - task 1.2.1

de Rodrigo Jorgeluis Laguna Queirolo -
Número de respuestas: 0

buenas


Al implementar UCB tal cual se plantea en las diapositivas de clase, encuentro un problema:


ucb clase 2.1 transparencia 36

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.

Implementacion de argmax: return np.random.choice(np.flatnonzero(array == array.max()))

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