¿Cómo generar recomendaciones usando el aprendizaje por refuerzo?

Estás leyendo la publicación: ¿Cómo generar recomendaciones usando el aprendizaje por refuerzo?

Los clientes sufren al buscar productos interesantes debido al crecimiento de la información en la World Wide Web. Para evitar este problema, se utilizan sistemas de recomendación para ayudar a los clientes a encontrar productos satisfactorios. Los motores de recomendación son un tipo de aprendizaje automático que se ocupa de clasificar o evaluar artículos o consumidores. Un sistema de recomendación es un sistema que anticipa las valoraciones que un usuario le dará a un determinado artículo. Estos pronósticos serán calificados y devueltos al usuario. Este artículo se centrará en el uso de un algoritmo de aprendizaje por refuerzo para construir un sistema de recomendación. Los siguientes son los temas a tratar.

Tabla de contenido

  1. Sobre el aprendizaje por refuerzo
  2. Cómo se utiliza el aprendizaje por refuerzo para la recomendación
  3. Construyendo un sistema de recomendación con RL

Los agentes de IA en el aprendizaje por refuerzo se comportan en un entorno altamente dinámico para completar ciertas tareas. Comprendamos más sobre el aprendizaje por refuerzo (RL).

Acerca del aprendizaje por refuerzo

El aprendizaje por refuerzo (RL) es un enfoque de aprendizaje automático que permite a un agente aprender en un entorno interactivo a través de prueba y error en función de los comentarios de sus acciones y experiencias. Basado en algoritmos de aprendizaje, el software emplea un enfoque de prueba y error para proporcionar retroalimentación en forma de castigos o incentivos para el oponente. La máquina de autoaprendizaje elige la mejor acción para proporcionar los mejores resultados.

Los agentes usan prueba y error para lograr ciertas tareas en un contexto dado. El objetivo de este proceso de aprendizaje es maximizar las recompensas acumulativas del entorno. RL difiere de los métodos de aprendizaje supervisados ​​y no supervisados. Porque RL es una tecnología para el aprendizaje en línea. En un contexto dinámico, el agente aprende sobre los datos. Los cambios en las etapas de acción existentes tienen un impacto inmediato en la acción siguiente.

Revista de análisis de la India

De acuerdo con el modelo de refuerzo fundamental descrito anteriormente, el primer paso es que el sistema obtenga el estado de entrada del entorno. El resultado de la acción se realiza entonces en el entorno. Finalmente, el ambiente se altera en respuesta a la actividad y asigna recompensas o castigos basados ​​en la nueva condición. Dependiendo del entorno, el agente puede visitar un número limitado de estados. Se recibirá un premio numérico después de visitar cada estado. Los castigos se representan con números negativos. Los agentes inteligentes se esfuerzan por maximizar las recompensas acumulativas y minimizar las sanciones.

🔥 Recomendado:  6 formas en las que el streaming se parece más a la televisión por cable

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

¿Cómo se utiliza el aprendizaje por refuerzo para la recomendación?

El objetivo es maximizar la suma predicha de los valores futuros para cada estado. El control On-Policy TD, a menudo conocido como la técnica SARSA, es un componente clave del algoritmo de refuerzo. Está formado por pares estado-acción, y podemos aprender alterando el valor estado Q(s, a) de un par estado-acción a otro.

Q-learning es una de las estrategias de aprendizaje por refuerzo más importantes. El aprendizaje por refuerzo es el proceso a través del cual los agentes aprenden a elegir comportamientos óptimos en su entorno específico.

Para alcanzar el estado objetivo, los agentes ejecutan una acción ‘a’ en cada condición para convertirse en un nuevo estado. Cada acción realizada por el agente debe realizarse para alcanzar el estado objetivo de la manera más eficiente posible. Cada estado de agente pasa a otro con la siguiente acción. La política de un agente se describe como una serie de actividades realizadas por un agente en nombre de un estado. Q-Learning es una variación de este enfoque. En lugar de calcular valores explícitos para cada estado, esta técnica calculará una función de valor Q(s, a) para representar los valores que actuaron en los estados.

Formalmente, el valor de Q(s, a) es el total descontado de las recompensas futuras obtenidas al realizar una acción en s y luego seleccionar las acciones óptimas. Para abordar los problemas de recomendación utilizando enfoques de Q-learning, primero debemos definir acciones, estados y procedimientos de recompensa y castigo relevantes.

Esta técnica se enfoca principalmente en analizar el desempeño en cada actividad en cada estado, lo que se conoce como valores Q. Los sistemas de recomendación emplean este enfoque de Q-learning para determinar la probabilidad del próximo trabajo y lograr un estado de alto desempeño; la mayoría de las sugerencias se basan en la aceptación/rechazo del cliente o el tiempo dedicado a una determinada actividad, por ejemplo.

El enfoque de Q-learning brinda un marco apropiado para las recomendaciones personalizadas, que pueden utilizarse directamente para cualquier tipo de problema de recomendación. Cada valor de recompensa/acción/estado es una estimación de cuán precisa puede ser la predicción. El carácter no determinista del problema se utiliza para actualizar las reglas del problema.

Esta regla tiene en cuenta el hecho de que realizar la misma acción en el mismo estado puede generar varias recompensas. A medida que el valor de n disminuye, la influencia de los valores de recompensa disminuye continuamente.

🔥 Recomendado:  ¿Cómo utilizar t-SNE para la reducción de dimensionalidad?

Hay varias preocupaciones en la sugerencia, entre otras formas convencionales de recomendación. Algunos no son muy efectivos. La principal desventaja es que las recomendaciones personalizadas no están disponibles; en cambio, se basan en el filtrado de contenido o en el filtrado basado en el tipo de usuario. Sin embargo, la sociedad y la tecnología se centran cada vez más en presentar el producto o servicio adecuado al mercado o consumidor adecuado.

Construyendo un sistema de recomendación con RL

Este artículo utiliza Deep Deterministic Policy Gradient (DDPG), un tipo de aprendizaje de refuerzo que combina Q-learning con gradientes de políticas. Como técnica actor-crítica, el DDPG tiene dos modelos: actor y crítico. En lugar de una distribución de probabilidad de acciones, el actor es una red de políticas que toma el estado como entrada y genera la acción precisa (continua). La crítica es una red de valor Q que acepta el estado y la acción como entrada y devuelve el valor Q como salida. La técnica DDPG es un enfoque “fuera” de la política. La palabra “determinista” en DDPG se refiere al hecho de que el actor calcula la acción directamente en lugar de usar una distribución de probabilidad entre acciones.

El sistema de recomendación se basará en el famoso conjunto de datos de clasificación de películas de IMDb. Debido a limitaciones de tiempo para entrenar el modelo DDPG usando un modelo DDPG previamente entrenado conocido como RecNN.

Instalación de RecNN

desde IPython.display importar clear_output! git clone https://github.com/awarebayes/RecNN! pip install -r ./RecNN/requirements.txt ! instalación pip ./RecNN ! pip instalar gdown clear_output()

Clonación del repositorio de GitHub para instalar el kit de herramientas de recomendación RecNN basado en Reinforcement Learning.

leyendo los datos

Este artículo utiliza el conjunto de datos de clasificación de películas de IMDB. Con el siguiente código descargando y descomprimiendo los metadatos y el modelo preentrenado.

! ¡Obtenga http://files.grouplens.org/datasets/movielens/ml-20m.zip! bajar https://drive.google.com/uc?id=1EQ_zXBR3DKpmJR3jBgLvt-xoOvArGMsL! descomprimir ml-20m.zip clear_output()

Si usa una computadora portátil de colaboración, asegúrese de que el acelerador de hardware esté configurado en GPU porque sería necesario para entrenar el modelo.

Importar bibliotecas necesarias

importar pandas como pd importar numpy como np de scipy.spatial importar distancia importar matplotlib.pyplot como plt importar recnn de tqdm.auto importar tqdm importar pickle importar gc importar json importar antorcha de torch.utils.data importar Dataset, DataLoader importar torch.nn como nn importar antorcha.nn.funcional como F importar antorcha.optim como optim

La abstracción principal de la biblioteca para los conjuntos de datos se llama entorno, que es similar a cómo lo nombran otras bibliotecas de aprendizaje por refuerzo. FrameEnv proporciona una longitud estática, mientras que SeqEnv implementa una longitud dinámica, así como un codificador de representación de estado secuencial. Primero, veamos FrameEnv. Debe especificar incrustaciones y directorios de calificación para inicializar un env. El almacenamiento en caché es otra opción.

🔥 Recomendado:  Cómo crear un excelente comunicado de prensa para impulsar su SEO

cuda = torch.device(‘cuda’) frame_size = 10 meta = json.load(open(‘/content/drive/MyDrive/Datasets/omdb.json’)) tqdm.pandas() frame_size = 10 batch_size = 1 dirs = recnn.data.env.DataPath( base=””, incrustaciones=”ml20_pca128.pkl”, ratings=”ml-20m/ratings.csv”, cache=”cache_frame_env.pkl”, use_cache=True ) env = recnn.data .env.FrameEnv(dirs, frame_size, batch_size)

Revista de análisis de la India

Ahora almacene TensorFlow en la GPU.

Dado que DDPG es una técnica actor-crítica, tiene dos modelos: actor y crítico. Este artículo está utilizando el modelo actor. Trate de usar el modelo crítico, dejándolo a usted.

ddpg = recnn.nn.models.Actor(1290, 128, 256).to(cuda) test_batch = next(iter(env.test_dataloader)) estado, acción, recompensa, next_state, done = recnn.data.get_base_batch(test_batch)

Crear una función personalizada

Para almacenar el puntaje de recomendación, cree una función personalizada que tomará la entrada de los metadatos y la procesará a través del modelo y, por último, almacenará los resultados en un marco de datos de pandas.

def rank_score(gen_action, metric): puntuaciones = []
para i en env.base.key_to_id.keys(): si i == 0 o i == ‘0’: continúe con las puntuaciones.append([i, metric(env.base.embeddings[env.base.key_to_id[i]], gen_action)]) puntuaciones = lista (ordenada (puntuaciones, clave = lambda x: x[1])) puntajes = puntajes[:10]
identificadores = [i[0] para i en puntajes]para i en rango(10): puntajes[i].extender([meta[str(scores[i][0])][‘omdb’][key] para clave en [‘Title’,
‘Genre’, ‘Language’, ‘Released’, ‘imdbRating’]]) índices = [‘id’, ‘score’, ‘Title’, ‘Genre’, ‘Language’, ‘Released’, ‘imdbRating’]
tabla_dict = dict([(key,[i[idx] para i en puntajes]) para idx, ingrese enumerate(indexes)]) table = pd.DataFrame(table_dict) return table

Generar recomendaciones

ddpg_model = ddpg(estado) ddpg_model = ddpg_model[np.random.randint(0, state.size(0), 1)[0]].separar().cpu().numpy()

Uso de la función personalizada con diferentes técnicas de cálculo de distancia para obtener las mejores recomendaciones con algunas muestras aleatorias.

rank_score(ddpg_model, distancia.euclidiana)

Revista de análisis de la India

rank_score(ddpg_model, distancia.correlación)

Revista de análisis de la India

Conclusión

El propósito del aprendizaje por refuerzo es desarrollar un modelo de acción apropiado que maximice la recompensa total acumulada del agente. La principal desventaja es que no se dispone de recomendaciones personalizadas; se trata de filtrado de contenido o filtrado basado en el tipo de usuario. Con este artículo, hemos entendido la implementación de Reinforcement Learning para construir un sistema de recomendación.

Referencias

Tabla de Contenido