Adrianistán

El blog de Adrián Arroyo


Reinforcement Learning (Aprendizaje por refuerzo): Q-Learning (parte 3)

Ya hemos visto en posts anteriores qué es al aprendizaje por refuerzo y como podemos modelar los problemas de este tipo con un MDP. Ahora veremos varias técnicas para calcular la función valor de cada estado y, con esta información, mejorar la política.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): MDPs y ecuación de Bellman

En el anterior post vimos una introducción a algunos conceptos del aprendizaje por refuerzo. Una cosa que se vio, es que los problemas se pueden modelar como MDP. En este post veremos como se hace, ya que nos permitirá visualizar mejor qué es lo que ocurre dentro de un problema de RL y nos da una base matemática para encontrar soluciones.

Seguir leyendo

Reinforcement Learning (Aprendizaje por refuerzo): ¿Qué es y cómo funciona? (parte 1)

Dentro del Machine Learning existen tres ramas: aprendizaje supervisado, no supervisado y por refuerzo. En esta serie de posts vamos a hacer una introducción a esta última rama, siguiendo el esquema habitual que se usa en libros y cursos pero simplificando ciertas cosas. Este post tendrá un caracter más teórico, pero necesario para poder desarrollar temas más avanzados.

Seguir leyendo

Soccerdoku en Prolog (usando clpz)

No soy especialmente futbolero. Sé las reglas y sé más o menos donde anda cada equipo pero no veo partidos. Sin embargo, con motivo de la Eurocopa 2020 vamos a resolver un problema lógico relacionado con el fútbol, el Soccerdoku. Y lo haremos en Prolog usando la librería clpz

Seguir leyendo

Teletexto #010

Bienvenidos a una nueva edición del Teletexto. Esta vez tengo guardadas cosas de hace bastante tiempo, así que, sin más dilación, comencemos.

Seguir leyendo

Llamar a Rust desde Prolog: swipl-rs

Prolog es un lenguaje muy interesante pero muchas veces, cuando programamos en él, sentimos que estamos aislados. No existen muchas librerías en Prolog y eso hace que muchas veces se nos quiten las ganas de tener que reimplementar algo en Prolog. Sin embargo, varios entornos Prolog nos ofrecen llamadas nativas (normalmente a C). Algunos de estos sistemas son SWI Prolog o GNU Prolog. En este post vamos a ir un paso más allá, y en vez de usar C para complementar a Prolog, usaremos Rust. Todo ello gracias a swipl-rs.

Seguir leyendo

Buscando en los datos del leak de Facebook con ElasticSearch

Recientemente hemos conocido la noticia de un leak de datos de Facebook. Principalmente son nombres y números de teléfono. Se trata de una brecha grave, ya que es una fuente perfecta para phising y estafas de este tipo. En este post vamos a ver como cargar estos datos en una base de datos optimizada para búsquedas como ElasticSearch y como hacer algunas consultas. No voy a enlazar los datos originales, ya que es una información peligrosa pero no es muy difícil encontrarlos.

Seguir leyendo

Teletexto #009

Primer Teletexto del año. Veamos los enlaces más interesantes que me han llegado desde el último teletexto.

Seguir leyendo

El formato RON: Rusty Object Notation

Hace poco he tenido la necesidad de refactorizar un código muy repetitivo y con un alto número de constantes. Este es un caso ideal para usar un formato externo, definido por nosotros, y donde vamos a conseguir separar el código "real" de la repetición.

Seguir leyendo

¿Qué son los tipos suma? Explicación en TypeScript y Rust

El sistema de tipos de un lenguaje de programación tiene que ser algo que nos ayude a nosotros a encontrar fallos antes de tiempo y a hacer el código lo más legible posible. En algunos lenguajes disponemos de tipos suma, los cuáles tienen varias ventajas que podemos aprovechar.

Seguir leyendo