El aprendizaje por refuerzo se trata de gamificar el proceso de aprendizaje.
Las herramientas de aprendizaje automático aquí utilizan un método de recompensa-castigo para enseñar a un sistema de IA. Si realiza el movimiento correcto, recibe una recompensa. Si comete un error, recibe una penalización.
En otras palabras, el aprendizaje por refuerzo obliga a un sistema a aprender y adaptarse rápidamente, o de lo contrario pierde recompensas numéricas significativas. Es un método de aprendizaje automático basado en retroalimentación en el que el agente de IA aprende a comportarse (correctamente) en un entorno tomando acciones y viendo los resultados de esas acciones.
En resumen, el agente aprende de la experiencia sin ninguna programación previa y no requiere supervisión humana.
¿Qué es el aprendizaje por refuerzo?
El aprendizaje por refuerzo (RL) es una técnica de aprendizaje automático que se centra en cómo los agentes de IA deben tomar acciones en un entorno para lograr los mejores resultados. Este entrenamiento se realiza en tiempo real con retroalimentación continua para maximizar la posibilidad de ser recompensado.
Es uno de los tres tipos básicos de aprendizaje automático. Los otros dos son el aprendizaje supervisado y el aprendizaje no supervisado.
El aprendizaje por refuerzo permite que una máquina aprenda de sus errores, similar a como lo hacen los humanos. Es un tipo de aprendizaje automático en el que la máquina aprende a resolver un problema mediante prueba y error. Además, la máquina aprende de sus acciones, a diferencia del aprendizaje supervisado, donde los datos históricos juegan un papel crítico.
El sistema de IA que pasa por el proceso de aprendizaje se llama agente o aprendiz. El sistema de aprendizaje explora y observa el entorno que lo rodea, al igual que nosotros. Si el agente realiza la acción correcta, recibe retroalimentación positiva o una recompensa positiva. Si toma una acción adversa, recibe retroalimentación negativa o una recompensa negativa.
Las características notables del aprendizaje por refuerzo (RL) son:
- El tiempo juega un papel crítico en los problemas de RL.
- La toma de decisiones del agente es secuencial.
- No hay un supervisor, y al agente no se le dan instrucciones. Solo hay recompensas.
- Las acciones del agente afectan directamente los datos subsiguientes que recibe.
- El agente es recompensado (positiva o negativamente) por cada acción.
- La mejor solución a un problema se decide en función de la recompensa máxima.
El objetivo del aprendizaje por refuerzo es elegir la mejor acción conocida para cualquier estado dado. Esto también significa que las acciones deben ser clasificadas y asignadas valores relativos entre sí. Dado que la mejor acción depende del estado actual del agente, el enfoque se centra más en los valores de los pares estado-acción.
Sin embargo, el aprendizaje por refuerzo no siempre es la respuesta a todas las situaciones. Por ejemplo, si tienes suficientes datos para resolver un problema, el aprendizaje supervisado será ideal. Además, el aprendizaje por refuerzo es un proceso que consume tiempo y requiere muchos recursos computacionales.
Relacionado: Aprende sobre el aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF) y cómo ayuda a entrenar grandes modelos de lenguaje (LLMs).
Elementos del aprendizaje por refuerzo
Aparte del agente y el entorno, hay cuatro elementos críticos en el aprendizaje por refuerzo: política, señal de recompensa, función de valor y modelo.
1. Política
La política es la estrategia que el agente utiliza para determinar la siguiente acción basada en el estado actual. Es uno de los elementos críticos del aprendizaje por refuerzo y puede definir por sí sola el comportamiento del agente.
Una política mapea los estados percibidos del entorno a las acciones tomadas en esos estados particulares. Puede ser determinista o estocástica y también puede ser una función simple o una tabla de búsqueda.
2. Señal de recompensa
En cada estado, el agente recibe una señal inmediata del entorno llamada señal de recompensa o simplemente recompensa. Como se mencionó anteriormente, las recompensas pueden ser positivas o negativas, dependiendo de las acciones del agente. La señal de recompensa también puede obligar al agente a cambiar la política. Por ejemplo, si las acciones del agente conducen a recompensas negativas, el agente se verá obligado a cambiar la política por el bien de su recompensa total.
3. Función de valor
La función de valor proporciona información sobre cuán favorables son acciones específicas y cuánta recompensa puede esperar el agente. En pocas palabras, la función de valor determina cuán bueno es un estado para que el agente esté en él. La función de valor depende de la política del agente y la recompensa, y su objetivo es estimar valores para lograr más recompensas.
4. Modelo
El modelo imita el comportamiento del entorno. Usando un modelo, puedes hacer inferencias sobre el entorno y cómo se comportará. Por ejemplo, si se proporciona un estado y una acción, puedes usar un modelo para predecir el siguiente estado y recompensa.
Dado que el modelo te permite considerar todas las situaciones futuras antes de experimentarlas, puedes usarlo para planificar. El enfoque utilizado para resolver problemas de aprendizaje por refuerzo con la ayuda del modelo se llama aprendizaje por refuerzo basado en modelos. Por otro lado, si intentas resolver problemas de RL sin usar un modelo, se llama aprendizaje por refuerzo sin modelo.
Mientras que el aprendizaje basado en modelos intenta elegir la política óptima basada en el modelo aprendido, el aprendizaje sin modelo exige que el agente aprenda de la experiencia de prueba y error. Estadísticamente, los métodos sin modelo son menos eficientes que los métodos basados en modelos.
Tipos de aprendizaje por refuerzo
Hay dos tipos de métodos de aprendizaje por refuerzo: refuerzo positivo y refuerzo negativo.
Refuerzo positivo
El aprendizaje por refuerzo positivo es el proceso de alentar o agregar algo cuando se exhibe un patrón de comportamiento esperado para aumentar la probabilidad de que se repita el mismo comportamiento.
Por ejemplo, si un niño aprueba un examen con calificaciones impresionantes, puede ser reforzado positivamente con un cono de helado.
Refuerzo negativo
El refuerzo negativo implica aumentar las posibilidades de que ocurra un comportamiento específico al eliminar la condición negativa.
Por ejemplo, si un niño falla un examen, puede ser reforzado negativamente al quitarle sus videojuegos. Esto no es precisamente castigar al niño por fallar, sino eliminar una condición negativa (en este caso, los videojuegos) que podría haber causado que el niño fallara el examen.
¿Cómo funciona el aprendizaje por refuerzo?
En pocas palabras, el aprendizaje por refuerzo es la búsqueda de un agente para maximizar la recompensa que recibe. No hay un humano para supervisar el proceso de aprendizaje, y el agente toma decisiones secuenciales.
A diferencia del aprendizaje supervisado, el aprendizaje por refuerzo no exige que etiquetes datos o corrijas acciones subóptimas. En cambio, el objetivo es encontrar un equilibrio entre exploración y explotación.
Exploración es cuando el agente aprende saliendo de su zona de confort, y hacerlo podría poner en riesgo su recompensa. La exploración a menudo es desafiante y es como entrar en territorio desconocido. Piénsalo como probar un restaurante al que nunca has ido. En el mejor de los casos, podrías terminar descubriendo un nuevo restaurante favorito y darle un gusto a tus papilas gustativas. En el peor de los casos, podrías terminar enfermo debido a comida mal cocida.
Explotación es cuando el agente permanece en su zona de confort y explota el conocimiento actualmente disponible. Es libre de riesgos ya que no hay posibilidad de atraer una penalización y el agente sigue repitiendo lo mismo. Es como visitar tu restaurante favorito todos los días y no estar abierto a nuevas experiencias. Por supuesto, es una elección segura, pero podría haber un mejor restaurante por ahí.
El aprendizaje por refuerzo es un equilibrio entre exploración y explotación. Los algoritmos de RL pueden hacerse para explorar y explotar en diferentes grados.
El aprendizaje por refuerzo es un proceso iterativo. El agente comienza sin ninguna pista sobre las recompensas que puede esperar de pares estado-acción específicos. Aprende a medida que pasa por estos estados múltiples veces y eventualmente se vuelve experto. En resumen, el agente comienza como un novato y lentamente se convierte en un profesional.
Ejemplo de aprendizaje por refuerzo
Dado que el aprendizaje por refuerzo es como la mayoría de los organismos aprenden, veamos cómo un perro aprende nuevos trucos y comparémoslos con este tipo de aprendizaje automático.
Charlie es un Golden Retriever. Como otros perros, no entiende inglés ni ningún idioma humano per se, aunque puede comprender la entonación y el lenguaje corporal humano con excelente precisión.
Esto significa que no podemos instruir directamente a Charlie sobre qué hacer, pero podemos usar golosinas para incitarlo a hacer algo. Podría ser algo tan simple como sentarse o rodar sobre comando o dar la mano. Para este ejemplo, consideremos el "acto de dar la mano".
Como probablemente sabes, las reglas son bastante simples. Si Charlie da la mano o hace algo similar, recibe una golosina. Si no obedece o se porta mal, no recibirá ninguna golosina.
En otras palabras, si Charlie realiza la acción deseada, recibe una golosina; de lo contrario, ninguna.
Después de algunas iteraciones de "golosina o no golosina", Charlie reconocerá el conjunto correcto de acciones para realizar para obtener una golosina. Cuando se portó mal, se dio cuenta de que tales acciones desfavorables llevaban a consecuencias desfavorables. En el futuro, cuando Charlie enfrente situaciones similares, sabrá cuál es la acción más deseable a tomar para maximizar la golosina o recompensa.
“RL significa que la IA ahora puede aplicarse a problemas de toma de decisiones secuenciales para lograr objetivos estratégicos, a diferencia de tareas perceptivas únicas como el reconocimiento de imágenes.”
Chris Nicholson
Fundador y CEO de Pathmind
Aplicando el concepto de aprendizaje por refuerzo a este ejemplo, Charlie se convierte en el agente. La casa en la que vive se convierte en su entorno, y la golosina que recibe es su recompensa. Sentarse es un estado, al igual que dar la mano. La transición de sentarse a dar la mano puede considerarse una acción.
Tu lenguaje corporal y entonación desencadenan la acción (o, en este contexto, reacción). El método de seleccionar una acción basada en el estado que te ayudará a obtener el mejor resultado se llama política.
Siempre que Charlie realiza la acción deseada y transiciona de un estado (sentado) a otro (dando la mano), recibe una golosina. Dado que Charlie es un buen chico, no lo castigamos si se porta mal. En lugar de una penalización o castigo, no recibirá una recompensa si no realiza la acción deseada, lo cual es algo más cercano a una penalización.
Esto es muy similar a cómo un agente aprende en el aprendizaje por refuerzo.
Aprendizaje por refuerzo en juegos
Los juegos y el aprendizaje por refuerzo comparten una larga historia. Los juegos son los dominios óptimos y desafiantes para probar algoritmos de aprendizaje por refuerzo.
Todos hemos jugado juegos de computadora o video en algún momento de nuestras vidas. Podría haber sido uno de los juegos de Atari de 8 bits, un juego de consola como Halo, o un juego de mesa como el ajedrez.
Independientemente del juego que jugaste, puede haber tomado algunos intentos entender las reglas antes de finalmente ganar un juego. En resumen, se necesita tiempo, estrategia y práctica para convertirse en un profesional. Y, por supuesto, hay motivación en forma de puntos o recompensas en el juego. Obtienes una recompensa positiva cuando completas una misión. Obtienes puntos negativos si te caes de un acantilado o te arrestan porque tu nivel de búsqueda es más alto de lo que debería ser.
Independientemente de la complejidad del juego, los conceptos anteriores siguen siendo universales. Si tu comportamiento en el juego está en línea con las instrucciones del juego, ganarás puntos y ganarás. De lo contrario, perderás puntos y fallarás. Las mismas reglas se aplican al aprendizaje por refuerzo.
Echemos un vistazo a cómo puedes enseñar a una máquina a jugar juegos.
El cerebro humano puede reconocer naturalmente el propósito de un juego, pero es difícil para las máquinas. Podrías aplicar el aprendizaje supervisado para enseñar a las máquinas, pero esto requiere datos de entrenamiento de jugadores humanos anteriores. Dado que nuestro conjunto de habilidades eventualmente alcanzará un límite, esto significa que el agente de RL nunca podría ser "mejor" que un humano.
En el aprendizaje por refuerzo, no hay un conjunto de datos de entrenamiento ni un valor de salida. El agente puede competir naturalmente, fallar y aprender de sus errores basándose en valores de recompensa y valores de penalización. Tomemos el juego de Pong como ejemplo.
.png)
Fuente: ponggame.org
El propósito de Pong es hacer rebotar la pelota con tu paleta para que termine detrás del oponente. Inicialmente, el agente no entenderá esto y fallará numerosas veces. Pero en algún momento, hará un movimiento correcto y será reforzado positivamente para repetir la acción.
Después de varios juegos de Pong, el agente de aprendizaje por refuerzo debería tener una comprensión general de la probabilidad de moverse ARRIBA con éxito frente a la probabilidad de moverse ABAJO. Estas acciones se refuerzan hasta que se maximiza la recompensa total. En términos de Pong, esto significa ganar el juego sin que tu oponente gane un solo punto.
Aprendizaje por refuerzo y AlphaGo
AlphaGo es el estándar de oro del aprendizaje por refuerzo avanzado en juegos. Desarrollado por DeepMind, este programa de aprendizaje profundo se convirtió en el mejor jugador de Go del mundo al derrotar a Ke Jie, uno de los mejores jugadores de Go del mundo.
Aquí hay un vistazo rápido a cómo AlphaGo se convirtió en el campeón mundial:
- AlphaGo, como cualquier agente de aprendizaje, comenzó con cero conocimiento del juego.
- Luego se le alimentó la estructura básica y la estrategia del juego usando miles de ejemplos de jugadores aficionados y profesionales.
- Logró un alto nivel de habilidad en tres días, y los evaluadores comenzaron a jugar el programa contra sí mismo.
- Esto llevó a una iteración constante, refuerzo y emparejamiento con algoritmos de búsqueda.
- AlphaGo pronto se convirtió en una versión diferente y más avanzada de sí mismo: Fan, Lee, Master y, finalmente, Zero.
- AlphaGo Master compitió contra el mejor jugador humano, el campeón mundial 18 veces Ke Jie.
En solo 40 días de autoentrenamiento, AlphaGo Zero superó a AlphaGo Master y alcanzó una calificación Elo superior a 5,000, que es esencialmente niveles sobrehumanos.
Proceso de decisión de Markov: Representando RL matemáticamente
El proceso de decisión de Markov (MDP) es cómo se representan matemáticamente los problemas de aprendizaje por refuerzo. Se utiliza para formalizar problemas de RL, y si el entorno es completamente observable, puede modelarse usando MDP.
En MDP, se utilizan los siguientes parámetros para obtener una solución para un problema de aprendizaje por refuerzo:
- Conjunto de posibles estados - S
- Conjunto de modelos
- Conjunto de posibles acciones- A
- Recompensa - R
- Política
- Valor - V
El estado del agente puede representarse usando el estado de Markov. El estado de Markov sigue la propiedad de Markov, lo que significa que el estado futuro es independiente del pasado y solo puede definirse con el presente.
Supongamos que el agente de RL está en un entorno de laberinto que consta de cuatro filas y cuatro columnas, lo que hace un número total de 16 bloques. Si el agente está en un bloque particular y sus dos bloques adyacentes tienen el mismo valor asignado (no confundirse con la recompensa), será difícil para el agente elegir entre ellos.
En tales situaciones, se utiliza la ecuación de Bellman. Es un componente crítico del aprendizaje por refuerzo y ayuda a resolver MDP. Resolver significa encontrar la política óptima y las funciones de valor.
Los elementos clave de la ecuación de Bellman son:
- Acción
- Estado
- Recompensa
- Factor de descuento
La ecuación de Bellman también está asociada con la programación dinámica. Se utiliza para calcular los valores de un problema de decisión en un punto dado, considerando los valores de los estados anteriores. Con la ecuación, puedes descomponer problemas complejos en subproblemas más simples y recursivos y encontrar soluciones óptimas.
Enfoques para implementar el aprendizaje por refuerzo
Generalmente hay tres formas de implementar un algoritmo de aprendizaje por refuerzo: basado en valor, basado en política o basado en modelo. Estos enfoques determinan cómo el agente tomará acción e interactuará con el entorno.
Aprendizaje por refuerzo basado en valor
Este enfoque se trata de encontrar la función de valor óptima, que es esencialmente el valor máximo en un estado bajo cualquier política.
Aprendizaje por refuerzo basado en política
En este enfoque, el agente intenta desarrollar una política para que la acción realizada en cada estado ayude a maximizar la recompensa futura.
El enfoque basado en política puede dividirse en dos:
- Determinista: En esta subdivisión, la misma acción es producida por la política en cualquier estado.
- Estocástico: Aquí, la probabilidad determina la acción producida.
Aprendizaje por refuerzo basado en modelo
En este enfoque, se crea un modelo virtual para cada entorno, y el agente lo explora para aprender. Dado que la representación del modelo es diferente para cada entorno, no hay un algoritmo o solución de RL particular para este enfoque.
Algoritmos de aprendizaje por refuerzo
Los algoritmos de aprendizaje por refuerzo pueden clasificarse en dos: algoritmos de RL sin modelo y algoritmos de RL basados en modelo. Q-learning y deep Q learning son ejemplos de algoritmos de RL sin modelo.
Q-learning
Q-learning es un método de RL basado en valor para proporcionar información. Se utiliza para el aprendizaje por diferencia temporal y determina cuán buena es una acción en un estado particular. Q-learning es un aprendiz fuera de política, lo que significa que el agente aprenderá la función de valor basada en la acción derivada de otra política.
¿Qué es el aprendizaje por diferencia temporal?
El aprendizaje por diferencia temporal es un enfoque para predecir una cantidad que depende de los valores futuros de una señal particular.
Q-learning comienza con la inicialización de la tabla Q. Luego, el agente selecciona una acción y la realiza. Se mide la recompensa por la acción y luego se actualiza la tabla Q. Una tabla Q es una tabla o matriz creada durante el Q-learning. Después de cada acción, se actualiza la tabla.
En Q-learning, el objetivo del agente es maximizar el valor de Q. En este método, el agente se esfuerza por encontrar la mejor acción a tomar en un estado particular. La Q representa calidad, que indica la calidad de la acción tomada por el agente.
Método de Monte Carlo
El método de Monte Carlo (MC) es una de las mejores formas en que un agente puede obtener la mejor política para obtener la mayor recompensa acumulativa. Este método solo puede usarse en tareas episódicas, que son tareas que tienen un final definido.
En el método MC, el agente aprende directamente de episodios de experiencia. Esto también significa que el agente inicialmente no tiene idea de qué acción lleva a la mayor recompensa, por lo que las acciones se eligen al azar. Después de seleccionar un montón de políticas aleatorias, el agente se dará cuenta de las políticas que conducen a las mayores recompensas y mejorará en la elección de políticas.
SARSA
State-action-reward-state-action (SARSA) es un método de aprendizaje por diferencia temporal en política. Esto significa que aprende la función de valor basada en la acción actual derivada de la política actualmente utilizada.
SARSA refleja el hecho de que la función principal utilizada para actualizar el valor Q depende del estado actual del agente (S), la acción elegida (A), la recompensa que obtiene por la acción (R), el estado al que entra el agente después de realizar la acción (S) y la acción que realiza en el nuevo estado (A).
Red neuronal Q profunda
Red neuronal Q profunda (DQN) es Q-learning con la ayuda de redes neuronales. Es ideal cuando los espacios de estado y acción son significativos, ya que definir una tabla Q será una tarea compleja y que consume tiempo. En lugar de una tabla Q, las redes neuronales determinan los valores Q para cada acción basada en el estado.
Aplicaciones del aprendizaje por refuerzo
El aprendizaje por refuerzo se utiliza para enseñar a los sistemas de IA a jugar juegos. Y están mejorando exponencialmente. Aparte de eso, se utiliza en finanzas para evaluar estrategias de trading y también puede usarse en química para optimizar reacciones químicas. Las empresas también pueden usar el aprendizaje por refuerzo profundo para enseñar a los robots a recoger y colocar bienes correctamente.
Aquí hay aplicaciones adicionales de RL:
- Planificación de estrategias empresariales
- Control de aeronaves y control de movimiento de robots
- Automatización industrial
- Procesamiento de datos
- NLP aumentado
- Sistemas de recomendación
- Ofertas y publicidad
- Control de semáforos
Desafíos del aprendizaje por refuerzo
El aprendizaje por refuerzo es un tipo poderoso de aprendizaje automático. Sin embargo, también tiene algunos desafíos relacionados.
Primero, el aprendizaje por refuerzo ocurre en un entorno de retorno retrasado. Si la tarea en cuestión es compleja, más tiempo le llevará al agente aprender y lograr recompensas máximas.
Por ejemplo, un agente podría tardar unas pocas horas en aprender el juego de Pong, pero AlphaZero tardó 40 días y millones de juegos en dominar Go. Aunque sigue siendo un logro sobresaliente, parece una curva de aprendizaje lenta al observar aplicaciones del mundo real como la robótica.
Escalar o ajustar las redes neuronales que controlan al agente también es un gran desafío. No hay otros medios de comunicación con el agente aparte de las recompensas y penalizaciones. Esto también significa que el agente podría encontrar una manera de maximizar las recompensas sin completar realmente la misión asignada.
Glosario de aprendizaje por refuerzo
La inteligencia artificial puede ser un tema bastante abrumador, especialmente cuando aprendes nuevos términos. Aquí hay una revisión de algunos de los términos utilizados en el aprendizaje por refuerzo y lo que significan.
- Agente: El sistema de IA que pasa por el proceso de aprendizaje. También llamado el aprendiz o tomador de decisiones. El algoritmo es el agente.
- Acción: El conjunto de todos los movimientos posibles que un agente puede realizar.
- Entorno: El mundo a través del cual el agente se mueve y recibe retroalimentación. El entorno toma el estado actual del agente y la acción como entrada y luego produce la recompensa y el siguiente estado.
- Estado: Una situación inmediata en la que se encuentra el agente. Puede ser un momento o posición específica en el entorno. También puede ser una situación actual y futura. En palabras simples, es el estado del agente en el entorno.
- Recompensa: Por cada acción realizada, el agente recibe una recompensa del entorno. Una recompensa podría ser positiva o negativa, dependiendo de la acción.
- Política: La estrategia que el agente utiliza para determinar la siguiente acción basada en el estado actual. En otras palabras, mapea estados a acciones para que el agente pueda elegir la acción con la mayor recompensa.
- Modelo: La visión del agente del entorno. Mapea los pares estado-acción a las distribuciones de probabilidad sobre estados. Sin embargo, no todos los agentes de RL usan un modelo de su entorno.
- Función de valor: En términos simples, la función de valor representa cuán favorable es un estado para el agente. El valor del estado representa la recompensa a largo plazo que el agente recibirá comenzando desde ese estado particular para ejecutar una política específica.
- Factor de descuento: El factor de descuento (γ) determina cuánto le importa al agente las recompensas en el futuro lejano en comparación con las del futuro inmediato. Es un valor entre cero y uno. Si el factor de descuento es igual a 0, el agente solo aprenderá sobre acciones que produzcan recompensas inmediatas. Si es igual a 1, el agente evaluará sus acciones basándose en la suma de sus recompensas futuras.
- Programación dinámica (DP): Una técnica algorítmica utilizada para resolver un problema de optimización descomponiéndolo en subproblemas. Sigue el concepto de que la solución óptima al problema general depende de la solución óptima a sus subproblemas.
Si estos términos te abruman, piensa en lo que sería el aprendizaje por refuerzo en la vida real. El agente eres tú, y el entorno son tus alrededores y las leyes de la física como la gravedad.
Si estás aprendiendo a caminar, el estado podría ser la posición de tus piernas. Si tomas la mejor acción, obtienes una recompensa, que es caminar unos pasos. De lo contrario, obtienes una penalización, que en este caso significa que te caes y te lastimas.
Es hora de jugar para los robots
A los humanos les encantan las recompensas. La gamificación es la forma más fácil de tentarnos a completar una tarea sin sentirnos desmotivados. Es por eso que jugar un deporte parece más divertido que hacer ejercicio en un gimnasio.
El aprendizaje por refuerzo está atrayendo a los agentes de IA a tomar las decisiones correctas a cambio de recompensas. Aún no hemos escuchado lo que los robots piensan sobre la gamificación, pero esperamos que les guste.
Algunos dicen que es la última invención que necesitaremos. Algunos sienten que es un objetivo inalcanzable. Se llama inteligencia general artificial y, en efecto, sería nuestro mayor invento o la mayor amenaza de todas.

Amal Joby
Amal is a Research Analyst at G2 researching the cybersecurity, blockchain, and machine learning space. He's fascinated by the human mind and hopes to decipher it in its entirety one day. In his free time, you can find him reading books, obsessing over sci-fi movies, or fighting the urge to have a slice of pizza.
