Saltar al contenido
coden

Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank

La propiedad de Markov, la matriz de transición y la evolución de la distribución en un modelo del tiempo, la distribución estacionaria y el teorema ergódico, el análisis de vocales de Márkov aplicado a «Máj» de Mácha, el PageRank y la generación de texto.

13 minutos Matěj Žalmánek 2026-10-15

Serie Fundamentos de IA Parte 38 de 52
  1. Mapa de la inteligencia artificial: qué es cada cosa y cómo encaja todo
  2. Breve historia de la inteligencia artificial: de Turing a los modelos de lenguaje
  3. Datos, modelo, entrenamiento, inferencia: los conceptos básicos en un solo ejemplo
  4. Cómo leer la notación matemática: símbolos, subíndices, sumatorios y cuantificadores
  5. Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA
  6. Funciones y aplicaciones: por qué todo modelo de IA es una función
  7. Lógica y demostraciones: las reglas con las que se razona en IA
  8. Grafos y árboles: la estructura sobre la que se apoyan la búsqueda y las redes neuronales
  9. Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica
  10. Derivadas, gradiente y regla de la cadena: cómo sabe un modelo en qué dirección aprender
  11. Descenso de gradiente: cómo aprende un modelo
  12. Qué es la probabilidad: del lanzamiento de un dado a los axiomas de Kolmogórov
  13. Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo
  14. Variable aleatoria y función de distribución: una sola función que lo dice todo sobre la distribución
  15. Función de densidad y función de probabilidad: por qué una variable continua tiene probabilidad cero en cada punto
  16. Esperanza, varianza y covarianza: dónde está una distribución, qué anchura tiene y qué se relaciona con qué
  17. Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
  18. Ley de los grandes números y teorema central del límite: por qué las medias se comportan de forma tan predecible
  19. Estadística y estimación de parámetros: máxima verosimilitud, MAP e intervalos de confianza
  20. Teoría de la información: entropía, entropía cruzada y divergencia KL, el origen de las funciones de pérdida
  21. Búsqueda en el espacio de estados: BFS, DFS, UCS y A* con animaciones
  22. Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search
  23. Satisfacción de restricciones: backtracking, propagación de restricciones y AC-3 con un sudoku y un mapa de regiones checas
  24. Lógica y sistemas basados en conocimiento: encadenamiento hacia delante y hacia atrás, resolución y sistemas expertos
  25. Planificación: STRIPS, el mundo de bloques, heurísticas a partir de la relajación y la planificación en los agentes de IA
  26. Búsqueda local y recocido simulado: un viajante por las capitales regionales checas
  27. Algoritmos genéticos: población, cruce, mutación y selección en una mochila para la excursión
  28. Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
  29. Optimización por colonia de hormigas: cómo un rastro de feromona encuentra un camino corto
  30. Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
  31. Neuroevolución: evolución de los pesos y la forma de las redes neuronales, y el algoritmo NEAT
  32. Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
  33. Lógica difusa y probabilidad: por qué «algo cálido» no significa «probablemente cálido»
  34. Lógica difusa: t-normas, implicaciones y reglas SI–ENTONCES
  35. Control difuso: Mamdani y Sugeno, del ventilador al péndulo invertido sobre un carro
  36. Agrupamiento difuso: el algoritmo fuzzy c-means y los puntos entre clusters
  37. Sistemas neuro-difusos (ANFIS): reglas difusas que aprenden de los datos
  38. Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank
  39. Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto
  40. Redes bayesianas: por qué está mojada la hierba y qué significa eso para el aspersor
  41. El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
  42. Tipos de aprendizaje automático: supervisado, no supervisado, semisupervisado y más
  43. Prompts, contexto y RAG: cómo darle a un modelo la información correcta
  44. Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo
  45. Redes generativas adversarias (GAN): el falsificador contra el detective
  46. Modelos de difusión: cómo el ruido puro se convierte en una imagen
  47. Procesos de decisión de Markov: estados, acciones, recompensas y ecuaciones de Bellman
  48. Q-learning y DQN: aprender el valor de las acciones, de la tabla a la red neuronal
  49. Gradiente de la política y PPO: aprender directamente la política
  50. Cómo funciona un agente de IA: un modelo de lenguaje en un bucle con herramientas
  51. Programación con agentes de IA: encargo, pruebas y revisión
  52. Evaluación y seguridad de los sistemas de IA: cómo medir y cómo vigilar

Temario completo de la serie 52 de 83 temas publicados

Qué te llevarás
  • Qué es la propiedad de Markov y cómo la matriz de transición describe toda la cadena.
  • Por qué una cadena irreducible se estabiliza en su distribución estacionaria sin importar cómo empiece.
  • Cómo nació el PageRank de las cadenas de Markov y qué tienen en común con los modelos de lenguaje.

Conviene conocer antes: Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo, Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica

En 1913, el matemático ruso Andréi Márkov se sentó ante el Eugenio Oneguin de Pushkin e hizo algo que cualquier crítico literario consideraría una barbaridad: contó cuántas veces a una vocal le sigue otra vocal. Quería demostrar que la ley de los grandes números se cumple también para fenómenos que dependen unos de otros — y de paso inventó un modelo que hoy ordena las páginas en un buscador, predice el tiempo, genera texto y está detrás de toda una familia de algoritmos de inteligencia artificial. Con esta parte empieza el módulo sobre modelos probabilísticos.

Continúa las partes Probabilidad condicionada y teorema de Bayes y Álgebra lineal para aprendizaje automático.

1. Un proceso sin memoria

Definición — cadena de Markov

Una sucesión de variables aleatorias X0, X1, X2, … con valores en un conjunto finito de estados S es una cadena de Markov si para todo t y todos los estados se cumple la propiedad de Markov

P(Xt+1 = j | Xt = i, Xt−1, …, X0) = P(Xt+1 = j | Xt = i).

Si esta probabilidad no depende de t, la cadena es homogénea.

Dicho de forma sencilla

El futuro depende solo del presente, no de cómo llegaste a él. Si conoces el estado de hoy, sabes de mañana todo lo que se puede saber — la historia ya no añade nada. Es una simplificación, pero muy útil: en lugar de todo el pasado te basta con recordar un solo dato.

Lo que aporta la propiedad de Markov se ve en la probabilidad de una trayectoria completa. En general, la regla de la cadena la descompone en un producto de probabilidades condicionadas, cada una de las cuales depende de todo el pasado. La propiedad de Markov tacha de cada condición todo salvo el último estado:

P(X0 = x0, …, XT = xT) = π0(x0) · ∏t=1T P(xt | xt−1)

P(X0 = x0, …)
probabilidad de que la cadena recorra exactamente esta sucesión de estados
π0(x0)
distribución inicial — la matriz no dice desde dónde arranca la cadena; este dato tiene que venir de fuera
∏t=1T
producto sobre los pasos — los pasos se encadenan y cada uno tiene que «salir bien», por eso se multiplican
P(xt | xt−1)
probabilidad de transición de un paso, es decir, el elemento de la matriz de transición en la fila xt−1 y la columna xt — gracias a la propiedad de Markov depende solo del estado anterior, no de toda la historia; sin ella aquí pondría P(xt | x0, …, xt−1)
Así, toda la cadena queda descrita por la distribución inicial y una sola tabla de transiciones.

2. La matriz de transición

Definición — matriz de transición

Una cadena homogénea con n estados está determinada por su matriz de transición P = (pij), donde pij = P(Xt+1 = j | Xt = i). La matriz es estocástica: pij ≥ 0 y cada fila suma 1.

Dicho de forma sencilla

Una fila de la matriz es «qué pasa mañana si hoy toca esto». Tiene que sumar uno, porque mañana algo tiene que pasar.

Un modelo de juguete del tiempo con tres estados: tras un día soleado, con probabilidad 0,6 vuelve a hacer sol, con 0,3 está nublado y con 0,1 llueve; tras uno nublado, 0,3 / 0,4 / 0,3; tras uno lluvioso, 0,2 / 0,4 / 0,4. Como grafo:

0,3 0,1 0,6 soleado 0,3 0,3 0,4 nublado 0,2 0,4 0,4 lluvia
Diagrama de transiciones del tiempo

La misma información como matriz — la fila es el tiempo de hoy, la columna el de mañana:

Hoy ↓ / mañana →soleadonubladolluviasuma de la fila
soleado0,60,30,11
nublado0,30,40,31
lluvia0,20,40,41
Ejemplo — probabilidad de una trayectoria

Hoy hace sol (π0 = (1; 0; 0)). ¿Cuál es la probabilidad de que los tres días siguientes sean soleado, nublado, lluvia? Según la fórmula de la trayectoria

P = 1 · psoleado→soleado · psoleado→nublado · pnublado→lluvia = 1 · 0,6 · 0,3 · 0,3 = 0,054.

Es decir, un 5,4 %. La suma sobre las 33 = 27 posibles ternas de días es 1 — justamente porque cada fila de la matriz suma 1.

3. Cómo evoluciona la distribución

Teorema — distribución tras n pasos

Si πt es el vector fila de la distribución de Xt, entonces πt+1 = πt P, y por tanto πt = π0 Pt. El elemento (i, j) de la matriz Pn es la probabilidad de pasar de i a j en n pasos.

Dicho de forma sencilla

Si hoy hace sol, la distribución de mañana es (0,6; 0,3; 0,1). La de pasado mañana es la media de las filas de la matriz ponderada por esa distribución — (0,47; 0,34; 0,19). Cada día, una multiplicación por la matriz, nada más.

πt+1(j) = ∑i πt(i) · pij

πt+1(j)
probabilidad de que mañana el estado sea j — una componente del nuevo vector fila
∑i
suma sobre todos los estados de hoy — a j se puede llegar desde cualquier sitio y esos caminos se excluyen entre sí, así que sus probabilidades se suman (ley de la probabilidad total)
πt(i)
qué tan probable es que hoy estemos en i — el peso del camino que pasa por i
pij
probabilidad de pasar de i a j — por la propiedad de Markov basta con conocer el estado de hoy
Para todos los j a la vez es el producto del vector fila por la matriz: πt+1 = πtP.
Ejemplo — la distribución de pasado mañana

Mañana (tras un hoy soleado) es π1 = (0,6; 0,3; 0,1). Para pasado mañana, componente a componente — una columna de la matriz multiplicada por el vector π1:

  • soleado: 0,6 · 0,6 + 0,3 · 0,3 + 0,1 · 0,2 = 0,36 + 0,09 + 0,02 = 0,47,
  • nublado: 0,6 · 0,3 + 0,3 · 0,4 + 0,1 · 0,4 = 0,18 + 0,12 + 0,04 = 0,34,
  • lluvia: 0,6 · 0,1 + 0,3 · 0,3 + 0,1 · 0,4 = 0,06 + 0,09 + 0,04 = 0,19.

La suma vuelve a ser 1. Para dentro de tres días, el mismo procedimiento da (0,422; 0,353; 0,225).

00,51 0246810 día (días desde hoy) probabilidad del estado P (0–1)
Distribución del tiempo día a día soleadonubladolluvia continua: hoy hace soldiscontinua: hoy llueve

Algo curioso: al cabo de más o menos una semana da igual si hoy hace sol o llueve. Las dos distribuciones se encuentran en los mismos valores y ya no cambian. La cadena ha «olvidado» dónde empezó.

Teorema — qué tan rápido olvida la cadena

Si la matriz P con n estados tiene n valores propios distintos 1 = λ1, λ2, …, λn y |λk| < 1 para k ≥ 2, entonces toda distribución inicial se descompone en vectores propios por la izquierda y

πt = π + a2λ2tu2 + … + anλntun,

donde π es la distribución estacionaria. La desviación respecto a π decrece, por tanto, como |λ2|t, donde λ2 es el segundo valor propio más grande en valor absoluto.

πt ≈ π + a2u2 · λ2t

πt
distribución tras t días
π
distribución estacionaria — corresponde al valor propio 1, que no cambia al elevarlo a potencias; por eso es la única parte que sobrevive
a2u2
desviación inicial en la dirección del segundo vector propio — solo aquí se nota desde dónde salió la cadena (sol o lluvia); en la componente soleado es positiva para un arranque soleado y negativa para uno lluvioso
λ2t
cada día la desviación se multiplica por λ2 — la velocidad del olvido; los términos restantes, con |λ| menores, desaparecen aún más rápido, por eso podemos omitirlos
Ejemplo — valores propios de la matriz del tiempo

La suma de los valores propios es la traza de la matriz, 0,6 + 0,4 + 0,4 = 1,4, y su producto es el determinante, que da 0,01. Un valor propio es 1 (las filas suman 1), así que los otros dos cumplen λ2 + λ3 = 0,4 y λ2λ3 = 0,01. Son las raíces de λ2 − 0,4λ + 0,01 = 0:

λ2,3 = 0,2 ± √0,03 = (2 ± √3)/10, es decir, λ2 ≈ 0,373 y λ3 ≈ 0,027.

La desviación de la probabilidad de sol respecto al valor estacionario 0,393, con arranque soleado, es tras 3, 4 y 5 días 0,0286; 0,0107; 0,0040 — cada día unas 0,373 veces la anterior. Al cabo de una semana es 0,0006, y con arranque lluvioso −0,0005: los dos comienzos difieren solo en la cuarta cifra decimal. La desviación baja a una centésima en ln 0,01 / ln 0,373 ≈ 4,7 días.

4. La distribución estacionaria

Definición — distribución estacionaria

Una distribución π es estacionaria si π P = π — es decir, π es un vector propio por la izquierda de la matriz P con valor propio 1.

Definición — cadena irreducible y aperiódica

Denotemos por pij(n) el elemento (i, j) de la matriz Pn, es decir, la probabilidad de pasar de i a j en n pasos.

  • La cadena es irreducible si para cada par de estados i, j existe n ≥ 1 con pij(n) > 0.
  • El periodo del estado i es d(i) = MCD{n ≥ 1 : pii(n) > 0} — el máximo común divisor de las longitudes de todos los caminos que vuelven a i. Si d(i) = 1, el estado es aperiódico; en una cadena irreducible todos los estados tienen el mismo periodo.

El tiempo cumple ambas cosas de inmediato: todos los elementos de P son positivos (basta n = 1) y pii > 0, así que se puede volver en 1 paso y el periodo es 1. En cambio, una cadena con dos estados que los alterna con regularidad (p12 = p21 = 1) es irreducible, pero tiene periodo 2: π0Pt con arranque (1; 0) salta indefinidamente entre (1; 0) y (0; 1), aunque la distribución estacionaria (½; ½) existe.

Teorema — teorema ergódico para cadenas finitas

Si una cadena finita es irreducible (desde cada estado se puede llegar a cada estado) y aperiódica, tiene una única distribución estacionaria π y para toda distribución inicial π0 Pt → π. Además, la fracción del tiempo que la cadena pasa en el estado j tiende con probabilidad 1 a πj, y el tiempo medio de retorno a j es 1/πj.

Dicho de forma sencilla

Si desde cualquier tiempo se puede llegar con el tiempo a cualquier otro y la cadena no gira en un círculo regular, se estabiliza en una única distribución — y eso, sin importar cómo empezó. La distribución estacionaria dice además qué parte de los días de un periodo largo hará cada tipo de tiempo.

Para nuestro modelo, la distribución estacionaria sale exactamente (24/61; 22/61; 15/61) ≈ (0,393; 0,361; 0,246): a la larga hace sol el 39 % de los días, está nublado el 36 % y llueve el 25 %. Tras un día de lluvia esperamos la siguiente lluvia, en promedio, 1/0,246 ≈ 4,07 días.

Ejemplo — la distribución estacionaria del tiempo a mano

Buscamos π = (a; b; c) con πP = π. Por columnas de la matriz:

  • a = 0,6a + 0,3b + 0,2c, es decir, 4a = 3b + 2c,
  • b = 0,3a + 0,4b + 0,4c,
  • c = 0,1a + 0,3b + 0,4c, es decir, 6c = a + 3b.

Las ecuaciones son dependientes (sumando las tres obtenemos a + b + c = a + b + c), así que omitimos la del medio. De la tercera, a = 6c − 3b; sustituyendo en la primera, 24c − 12b = 3b + 2c, es decir, b = 22c/15 y a = 6c − 66c/15 = 24c/15. La proporción es a : b : c = 24 : 22 : 15, y la condición a + b + c = 1 da

π = (24/61; 22/61; 15/61) ≈ (0,393; 0,361; 0,246).

El tiempo medio de retorno a la lluvia es 1/πlluvia = 61/15 ≈ 4,07 días.

Y la simulación de una sola realización aleatoria muestra el teorema ergódico en acción:

Simulaciónsoleadonubladolluvia
30 días0,5330,3330,133
1 año (365 días)0,4110,3560,233
10 años (3 650 días)0,4010,3600,239
distribución estacionaria0,3930,3610,246

La simulación sortea cada día por separado a partir de la fila del estado de hoy: un número aleatorio u de [0, 1) se compara con las sumas acumuladas de la fila. Tras un día soleado, u < 0,6 lleva a soleado, 0,6 ≤ u < 0,9 a nublado y el resto a lluvia:

stav = soleado
for den in 1 … N:
    u = número aleatorio de [0, 1)
    j = 0
    while u ≥ P[stav][j]:          # resta probabilidades hasta que u «caiga» en su casilla
        u = u − P[stav][j]
        j = j + 1
    stav = j
    počet[stav] += 1
podíly = počet / N                 # según el teorema ergódico → π

La propia distribución estacionaria se puede calcular sin sorteos, multiplicando repetidamente por la matriz:

import numpy as np

P = np.array([[0.6, 0.3, 0.1],
              [0.3, 0.4, 0.3],
              [0.2, 0.4, 0.4]])

pi = np.ones(3) / 3
for _ in range(100):          # método de la potencia: π ← π P
    pi = pi @ P
print(pi.round(3))            # [0.393 0.361 0.246]

5. Márkov, Oneguin y «Máj»

Márkov recorrió las primeras 20 000 letras de Eugenio Oneguin y marcó cada una como vocal o consonante. Las vocales eran el 43,2 %. Si las letras se sucedieran de forma independiente, a una vocal le seguiría otra vocal también en el 43,2 % de los casos. Pero Márkov contó solo un 12,8 %, frente a un 66,3 % tras una consonante. Las letras dependen unas de otras — y aun así la proporción de vocales en un texto largo converge de forma fiable. Esa fue su prueba de que la ley de los grandes números no necesita independencia.

Repitámoslo con la primera estrofa de «Máj» («Mayo»), el poema de Karel Hynek Mácha («Byl pozdní večer – první máj…»). Tiene 311 letras, y las vocales son el 37,6 %. La estimación de la matriz de transición a partir de los recuentos de pares:

Tras…vocalconsonante
vocal0,0510,949
consonante0,5750,425

En la estrofa hay solo 6 pares de vocales seguidas — al checo le gusta alternarlas con consonantes todavía más que al ruso. Y la distribución estacionaria de esta cadena da un 37,7 % de vocales: la cadena estimada a partir del texto se «estabiliza» prácticamente en la proporción que hay de verdad en el texto (la diferencia la marcan solo la primera y la última letra).

p̂ij = nij / ∑k nik

p̂ij
estimación de la probabilidad de transición — el acento circunflejo indica que es un número calculado a partir de los datos, no el valor real
nij
cuántas veces en el texto a i le siguió directamente j — se cuentan pares de letras vecinas, porque la cadena de Markov mira solo un paso hacia atrás
∑k nik
cuántas veces a i le siguió cualquier cosa — al dividir, la fila suma 1, como exige una matriz estocástica
La frecuencia relativa es a la vez la estimación por máxima verosimilitud: de todas las matrices, es la que da al texto observado la mayor probabilidad.
Ejemplo — recuentos de pares en la primera estrofa

311 letras dan 310 pares vecinos. Vocal–vocal 6, vocal–consonante 111, consonante–vocal 111, consonante–consonante 82. De ahí

p̂voc→voc = 6/117 = 0,051, p̂voc→con = 111/117 = 0,949, p̂con→voc = 111/193 = 0,575, p̂con→con = 82/193 = 0,425.

Una cadena con dos estados tiene una distribución estacionaria dada por una fórmula sencilla:

πvoc = pcon→voc / (pvoc→con + pcon→voc)

πvoc
proporción de vocales a largo plazo
pcon→voc
flujo hacia las vocales — cuanto más a menudo se pasa de una consonante a una vocal, más vocales hay
pvoc→con
flujo desde las vocales — cuanto más rápido se sale de una vocal, menos vocales hay
La fórmula se sigue del equilibrio de flujos: en el estado estacionario, πvoc · pvoc→con = πcon · pcon→voc y πvoc + πcon = 1.
Ejemplo — «Máj» y Oneguin según la fórmula

Máj: πvoc = 0,575 / (0,949 + 0,575) = 0,377. Con más precisión: hay tantas transiciones vocal→consonante como consonante→vocal (111), así que πvoc = (111/193) / (111/117 + 111/193) = 117/310. La proporción real de vocales es 117/311 — difiere solo en el denominador, porque la última letra de la estrofa («r») no inicia ningún par.

Oneguin: con los números de Márkov (vocal tras vocal 12,8 %, es decir, vocal→consonante 87,2 %; vocal tras consonante 66,3 %) sale πvoc = 0,663 / (0,872 + 0,663) = 0,432 — exactamente el 43,2 % de vocales que Márkov contó directamente.

6. PageRank: el navegante aleatorio

En 1998, Sergey Brin y Larry Page, los fundadores de Google, propusieron cómo ordenar las páginas web por importancia. Imaginaron un navegante que hace clic al azar en los enlaces y se preguntaron: ¿en qué páginas pasará más tiempo?

Definición — PageRank

Sea la página i con ki enlaces salientes. El navegante aleatorio, con probabilidad d (normalmente 0,85), hace clic en uno de los enlaces elegido uniformemente al azar; si no, salta a cualquiera de las N páginas:

pij = (1 − d)/N + d/ki si i enlaza a j, y (1 − d)/N en caso contrario.

El PageRank es la distribución estacionaria de esta cadena. Los saltos garantizan que la cadena sea irreducible y aperiódica.

Dicho de forma sencilla

Una página importante es aquella a la que enlazan páginas importantes. La definición parece circular, pero la distribución estacionaria la resuelve: es exactamente «cuánto tiempo pasaré allí si hago clic indefinidamente». El salto ocasional a cualquier sitio evita que el navegante se quede atrapado en un círculo de páginas.

A 0,342 B 0,171 C 0,374 D 0,036 E 0,041 F 0,036
PageRank de una web pequeña; el área del círculo corresponde al PageRank

La más alta es C (0,374), a la que enlaza casi cada página. Más interesante es A: tiene un solo enlace entrante y aun así es la segunda (0,342) — porque ese enlace viene de C, y C no enlaza a ningún otro sitio. B, a la que enlaza solo A, recibe la mitad del peso de A (0,171). Las páginas D, E y F, que se enlazan sobre todo entre sí, se quedan en torno a 0,04. El PageRank real calculaba lo mismo para miles de millones de páginas, con el método de la potencia.

La ecuación π = πP desarrollada para una sola página da la conocida forma del PageRank:

PR(j) = (1 − d)/N + d ∑i→j PR(i) / ki

PR(j)
PageRank de la página j — la fracción del tiempo que el navegante pasa en ella; la suma sobre todas las páginas es 1
(1 − d)/N
aportación de los saltos aleatorios — la recibe cada página por igual, incluso aquella a la que nada enlaza; gracias a ella la cadena es irreducible y aperiódica
d
probabilidad de que el navegante haga clic en un enlace en lugar de saltar a otro sitio — 0,85 en el artículo original de Brin y Page
∑i→j
suma solo sobre las páginas que enlazan a j — un enlace es un «voto» para la página de destino
PR(i) / ki
el voto de la página i pesa tanto como importante es la propia i, y se reparte entre todos sus ki enlaces — una página con miles de enlaces da a cada uno muy poco
Ejemplo — comprobación de A, B y C

Para N = 6 y d = 0,85 es (1 − d)/N = 0,025. A A llega solo el enlace desde C, que tiene un único enlace (kC = 1); a B, solo desde A, que tiene dos:

  • PR(A) = 0,025 + 0,85 · 0,37351 / 1 = 0,34248,
  • PR(B) = 0,025 + 0,85 · 0,34248 / 2 ≈ 0,1706,
  • PR(C) = 0,025 + 0,85 · (PR(A)/2 + PR(B)/1 + PR(D)/2 + PR(E)/3 + PR(F)/1) = 0,025 + 0,85 · 0,41001 = 0,37351.

Los valores del método de la potencia cumplen la ecuación — así se sabe que la iteración ha terminado.

PR = [1/N] * N                              # empieza de forma uniforme
repeat:
    nové = [(1 − d)/N] * N                  # saltos aleatorios
    for i in stránky:
        if i no tiene enlaces:              # callejón sin salida: salta a cualquier sitio
            nové[j] += d · PR[i]/N  para todo j
        else:
            for j in odkazy[i]:
                nové[j] += d · PR[i]/k_i
    PR = nové
until PR casi no cambia

7. Cadenas, texto y modelos de lenguaje

Una cadena cuyos estados son letras se puede poner a generar. A partir de los pares de letras de la primera estrofa de «Máj» estimamos qué sigue a cada letra, y luego sorteamos. Así se ven 90 caracteres:

lal kou lasvavzvný dnkyl plásnětičaskol dnou ta javu snáscezepráro pl h jin trů bo kylalav

Un sinsentido — pero un sinsentido que «suena a checo»: alterna vocales y consonantes, tiene palabras cortas y sílabas como «lás» o «kol». Claude Shannon hizo el mismo experimento en 1948 con el inglés y mostró que, con un contexto más largo (ternas de letras, pares de palabras), el texto parece cada vez más natural.

Ejemplo — la fila «l» del modelo de bigramas

Pasamos el texto de la estrofa a minúsculas y sustituimos la puntuación por espacios. A la letra «l» le sigue en él otro carácter 31 veces: 13 veces un espacio, 7 veces «a», 6 veces «á», 2 veces «o» y una vez cada una «i», «h», «u». Según la fórmula de la estimación, por tanto,

P(espacio | l) = 13/31 ≈ 0,42, P(a | l) = 7/31 ≈ 0,23, P(á | l) = 6/31 ≈ 0,19, P(o | l) = 2/31 ≈ 0,06 y las demás 1/31 ≈ 0,03.

La generación hace entonces lo mismo que la simulación del tiempo: a partir de la fila del carácter actual sortea el siguiente. Tras una «l», lo más frecuente es que la palabra termine — «byl», «lhal», «kol», «bol».

Definición — modelo de n-gramas

Un modelo de n-gramas predice el siguiente símbolo a partir de los n − 1 anteriores: P(wt | wt−n+1, …, wt−1). Es una cadena de Markov cuyo estado son los últimos n − 1 símbolos.

Dicho de forma sencilla

La memoria de una cadena se puede «estirar» metiendo más pasado en el estado. Un modelo de lenguaje con ventana de contexto es, formalmente, también una cadena de Markov: su estado es todo el texto de la ventana. La diferencia es que hay una cantidad astronómica de estados, así que las probabilidades de transición no están en una tabla, sino que las calcula una red neuronal.

Ejemplo — cuántos estados tiene un modelo de n-gramas

Con un vocabulario de V símbolos, un modelo de n-gramas tiene |V|n−1 estados y |V| probabilidades en cada fila. La estrofa de «Máj» usa 32 caracteres distintos (letras y espacio):

  • bigramas (n = 2): 32 estados, una matriz de 32 × 32 = 1 024 números — más de los caracteres que tiene la estrofa, así que la mayoría salen cero;
  • trigramas: 322 = 1 024 estados y más de 32 mil números — la mayoría de los pares de letras ni aparecen en la estrofa y sus filas se quedan vacías;
  • un modelo de lenguaje con un vocabulario de 50 000 tokens y una ventana de 1 000 tokens: 50 0001 000 ≈ 104 699 estados.

Por eso un contexto más largo necesita o bien datos enormes, o bien un modelo que no saque las probabilidades de una tabla, sino que las estime con una función — una red neuronal.

8. Adónde llevan las cadenas de Markov

  • Modelos ocultos de Markov — ¿y si no vemos el estado y solo vemos sus manifestaciones? De eso trata la próxima parte.
  • Los procesos de decisión de Markov añaden acciones y recompensas: sobre ellos se apoya el aprendizaje por refuerzo.
  • Los métodos de Monte Carlo basados en cadenas de Markov (MCMC) construyen una cadena cuya distribución estacionaria es aquella de la que queremos muestrear — típicamente la distribución a posteriori en la estadística bayesiana. El criterio de Metropolis de la parte sobre el recocido simulado es justamente una cadena así.

9. Resumen

  • Una cadena de Markov no tiene memoria: el siguiente estado depende solo del actual. La describe una matriz de transición estocástica P.
  • La distribución evoluciona multiplicando por la matriz, πt = π0 Pt.
  • Una cadena irreducible y aperiódica se estabiliza en una única distribución estacionaria π = π P, sin importar cómo empiece; para el tiempo, (0,393; 0,361; 0,246).
  • Márkov mostró la dependencia entre letras con el Oneguin; en «Máj», a una vocal le sigue otra vocal solo en el 5 % de los casos.
  • El PageRank es la distribución estacionaria del navegante aleatorio; tanto los modelos de n-gramas como los modelos de lenguaje actuales son cadenas de Markov con un estado grande.

¿Quieres probarlo tú? Pide a un agente de IA que construya un modelo de bigramas de palabras con todo «Máj» o con tus propios correos electrónicos y que genere frases con él — y luego prueba con trigramas.

¿Lo ves de otra manera? Escribe a support@coden-app.com.

Un Agente en tu ordenador, controlado desde el móvil