|
541 | 541 | Para una matriz \(m \times n\): \(\text{rango}(\mathbf{A}) \leq \min(m, n)\). |
542 | 542 |
|
543 | 543 | Cuando \(\text{rango}(\mathbf{A}) = \min(m,n)\), \(\mathbf{A}\) tiene **rango completo**. De lo contrario es **deficiente en rango** y mapea un subespacio no nulo de entradas a cero. |
| 544 | + |
| 545 | +### El teorema Rango-Nulidad |
| 546 | + |
| 547 | +Este teorema conecta elegantemente los tres subespacios fundamentales. |
| 548 | + |
| 549 | +Para cualquier matriz \(\mathbf{A} \in \mathbb{R}^{m \times n}\): |
| 550 | + |
| 551 | +$$ |
| 552 | +\boxed{\text{rango}(\mathbf{A}) + \text{nulidad}(\mathbf{A}) = n} |
| 553 | +$$ |
| 554 | + |
| 555 | +donde \(\text{nulidad}(\mathbf{A}) = \dim(\text{null}(\mathbf{A}))\). |
| 556 | + |
| 557 | +{{< details title="Esquema de demostración" closed="true" >}} |
| 558 | +Sea \(r = \text{rango}(\mathbf{A})\) y sea \(\{\mathbf{v}_1, \ldots, \mathbf{v}_{n-r}\}\) una base para \(\text{null}(\mathbf{A})\). Extiende esto a una base de \(\mathbb{R}^n\) añadiendo \(r\) vectores \(\{\mathbf{w}_1, \ldots, \mathbf{w}_r\}\) del espacio fila de \(\mathbf{A}\) (que es ortogonal al espacio nulo). Las imágenes \(\{\mathbf{A}\mathbf{w}_1, \ldots, \mathbf{A}\mathbf{w}_r\}\) son linealmente independientes y generan \(\text{col}(\mathbf{A})\). Por tanto \(\dim(\text{col}(\mathbf{A})) = r\). La base total tiene \(r + (n - r) = n\) elementos, coincidiendo con \(\dim(\mathbb{R}^n) = n\). |
| 559 | + |
| 560 | +{{< callout type="info" >}} |
| 561 | +En otras palabras: las \(n\) dimensiones de entrada se dividen limpiamente en dos partes complementarias. Algunas (\(r\) dimensiones, el espacio fila) se mapean a salidas no nulas. Las demás (\(n - r\) dimensiones, el espacio nulo) se mapean a cero. Estas dos partes particionan el espacio de entrada completamente y sin solapamiento, por eso sus dimensiones deben sumar exactamente \(n\). |
| 562 | +{{< /callout >}} |
| 563 | +{{< /details >}} |
| 564 | + |
| 565 | +{{< callout >}} |
| 566 | +En términos de ML, si tienes una matriz de pesos \(\mathbf{W}\) de forma \(m \times n\) con \(n > m\) (una capa "sobreparametrizada"), entonces \(\text{nulidad}(\mathbf{W}) \geq n - m > 0\). Existe todo un subespacio de perturbaciones de pesos que produce cambio cero en la salida de la capa. Ésta es una razón por la que los modelos sobreparametrizados pueden podarse y comprimirse agresivamente, muchas direcciones de peso literalmente no hacen nada. |
| 567 | +{{< /callout >}} |
| 568 | + |
| 569 | +### La inversa |
| 570 | + |
| 571 | +Para una matriz **cuadrada** \(\mathbf{A} \in \mathbb{R}^{n \times n}\), la **inversa** \(\mathbf{A}^{-1}\) es la única matriz que satisface: |
| 572 | + |
| 573 | +$$ |
| 574 | +\mathbf{A}\mathbf{A}^{-1} = \mathbf{A}^{-1}\mathbf{A} = \mathbf{I}_n |
| 575 | +$$ |
| 576 | + |
| 577 | +El **teorema de la matriz invertible** establece que las siguientes condiciones son todas equivalentes, *si cualquiera se cumple, todas se cumplen, y la inversa existe*: |
| 578 | + |
| 579 | +- \(\text{rango}(\mathbf{A}) = n\) (rango completo) |
| 580 | +- \(\det(\mathbf{A}) \neq 0\) |
| 581 | +- \(\text{null}(\mathbf{A}) = \{\mathbf{0}\}\) (espacio nulo trivial) |
| 582 | +- Las columnas de \(\mathbf{A}\) son linealmente independientes |
| 583 | +- Las filas de \(\mathbf{A}\) son linealmente independientes |
| 584 | +- La ecuación \(\mathbf{A}\mathbf{x} = \mathbf{b}\) tiene solución única para todo \(\mathbf{b} \in \mathbb{R}^n\) |
| 585 | + |
| 586 | +{{< callout type="important" >}} |
| 587 | +Las seis condiciones son formas equivalentes de decir lo mismo, la transformación es completamente reversible. Si la matriz colapsa alguna dimensión, hay un espacio nulo no trivial, el determinante es cero, ya no puedes deshacer la transformación. Todos los caminos llevan a la misma conclusión: la invertibilidad es una propiedad de todo o nada. |
| 588 | +{{< /callout >}} |
| 589 | + |
| 590 | +Propiedades de la inversa: |
| 591 | +- *Doble inversa*: \((\mathbf{A}^{-1})^{-1} = \mathbf{A}\) |
| 592 | +- *Inversa del producto*: \((\mathbf{AB})^{-1} = \mathbf{B}^{-1}\mathbf{A}^{-1}\) (el orden se invierte, igual que con la transpuesta) |
| 593 | +- *Conmutatividad transpuesta-inversa*: \((\mathbf{A}^\top)^{-1} = (\mathbf{A}^{-1})^\top\) |
| 594 | +- *Determinante*: \(\det(\mathbf{A}^{-1}) = \frac{1}{\det(\mathbf{A})}\) |
| 595 | + |
| 596 | +#### Cálculo de la inversa |
| 597 | + |
| 598 | +Para matrices \(2 \times 2\), como \(\mathbf{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix}\) con \(\det(\mathbf{A}) = ad - bc \neq 0\), existe una fórmula explícita que se deriva de la definición de inversa y el cálculo del determinante. |
| 599 | + |
| 600 | +Buscamos \(\mathbf{A}^{-1} = \begin{bmatrix} p & q \\ r & s \end{bmatrix}\) tal que \(\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}\): |
| 601 | + |
| 602 | +$$ |
| 603 | +\begin{aligned} |
| 604 | + \begin{bmatrix} a & b \\ c & d \end{bmatrix}\begin{bmatrix} p & q \\ r & s \end{bmatrix} &= \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \\ |
| 605 | + \begin{bmatrix} ap+br & aq+bs \\ cp+dr & cq+ds \end{bmatrix} &= \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} |
| 606 | +\end{aligned} |
| 607 | +$$ |
| 608 | + |
| 609 | +De la primera columna tenemos que: \(ap + br = 1\) y \(cp + dr = 0\). Resolviendo, encontramos que: |
| 610 | +$$ |
| 611 | +\begin{aligned} |
| 612 | + p &= \frac{d}{ad-bc} \\ |
| 613 | + r &= \frac{-c}{ad-bc} |
| 614 | +\end{aligned} |
| 615 | +$$ |
| 616 | + |
| 617 | +De la segunda columna: \(aq + bs = 0\) y \(cq + ds = 1\). Resolviendo: |
| 618 | +$$ |
| 619 | +\begin{aligned} |
| 620 | + q &= \frac{-b}{ad-bc} \\ |
| 621 | + s &= \frac{a}{ad-bc} |
| 622 | +\end{aligned} |
| 623 | +$$ |
| 624 | + |
| 625 | +Reemplazando: |
| 626 | +$$ |
| 627 | +\begin{aligned} |
| 628 | + \mathbf{A}^{-1} &= \begin{bmatrix} p & q \\ r & s \end{bmatrix} \\ |
| 629 | + \mathbf{A}^{-1} &= \begin{bmatrix} \frac{d}{ad-bc} & \frac{-b}{ad-bc} \\ \frac{-c}{ad-bc} & \frac{a}{ad-bc} \end{bmatrix} \\ |
| 630 | + \mathbf{A}^{-1} &= \frac{1}{ad - bc} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix} |
| 631 | +\end{aligned} |
| 632 | +$$ |
| 633 | + |
| 634 | +Sabiendo que \(\det(\mathbf{A}) = ad - bc\), entonces: |
| 635 | + |
| 636 | +$$ |
| 637 | +\boxed{\mathbf{A}^{-1} = \frac{1}{\det(\mathbf{A})} \begin{bmatrix} d & -b \\ -c & a \end{bmatrix}} |
| 638 | +$$ |
| 639 | + |
| 640 | +{{< callout type="info" >}} |
| 641 | +Para invertir una matriz \(2 \times 2\), intercambia las entradas diagonales, niega las entradas fuera de la diagonal, y divide todo por el determinante. El determinante aparece en el denominador, exactamente por eso un determinante nulo hace indefinida la inversa (división por cero). |
| 642 | +{{< /callout >}} |
| 643 | + |
| 644 | +Para \(n > 2\), la inversa se calcula en la práctica mediante [**eliminación de Gauss-Jordan**](https://es.wikipedia.org/wiki/Eliminaci%C3%B3n_de_Gauss-Jordan) sobre la matriz aumentada \([\mathbf{A}\,|\,\mathbf{I}]\). |
| 645 | + |
| 646 | +## Perspectiva de Machine Learning e IA |
| 647 | + |
| 648 | +Las operaciones matriciales no son meros primitivos computacionales, son el vocabulario conceptual de la investigación moderna en Machine Learning, por ejemplo: |
| 649 | + |
| 650 | +**Estructura de bajo rango en el ajuste fino**. [Hu et al. (2021)](https://arxiv.org/abs/2106.09685) introdujeron *LoRA (Low-Rank Adaptation)*, que observa que las matrices de actualización de pesos \(\Delta\mathbf{W}\) durante el ajuste fino de grandes modelos de lenguaje son empíricamente de bajo rango. En lugar de almacenar la \(\Delta\mathbf{W} \in \mathbb{R}^{d \times d}\) completa, LoRA la descompone como \(\Delta\mathbf{W} = \mathbf{B}\mathbf{A}\) donde \(\mathbf{B} \in \mathbb{R}^{d \times r}\), \(\mathbf{A} \in \mathbb{R}^{r \times d}\), con \(r \ll d\). Esto es válido precisamente porque una matriz de rango \(r\) tiene una factorización natural en dos matrices delgadas, el concepto de rango que acabamos de ver. LoRA reduce los parámetros entrenables más de 10000 veces en modelos de la escala de GPT-3. |
| 651 | + |
| 652 | +## Errores comunes y depuración |
| 653 | + |
| 654 | +1. **Confundir las convenciones de forma entre frameworks**. NumPy usa la convención `(batch, características)`. El `nn.Linear(in_features, out_features)` de PyTorch almacena su matriz de pesos con forma `(out_features, in_features)` y calcula `x @ W.T + b` internamente, por lo que \(\mathbf{W}\) se almacena transpuesta respecto a la convención matemática. Si inicializas pesos manualmente, verifica con una pasada hacia adelante sobre datos ficticios antes de confiar en los gradientes. |
| 655 | + |
| 656 | +2. **Invertir matrices casi singulares**. `np.linalg.inv()` devuelve un resultado incluso para matrices casi singulares, los números serán astronómicamente grandes y numéricamente sin sentido. Prefiere siempre `np.linalg.solve(A, b)` sobre `np.linalg.inv(A) @ b` para resolver sistemas lineales. Revisa `np.linalg.cond(A)` antes de invertir; los números de condición superiores a \(10^{12}\) son una señal de alerta. |
| 657 | + |
| 658 | +3. **Usar `det == 0` para detectar singularidad**. En punto flotante, el determinante de una matriz verdaderamente singular casi nunca es exactamente cero,será algún número muy pequeño como `1e-17`. No uses el determinante como prueba de singularidad en el código. En su lugar usa `np.linalg.matrix_rank(A) < n` o `np.linalg.cond(A) > umbral`. |
| 659 | + |
| 660 | +4. **Asumir que la multiplicación de matrices es conmutativa**. El error algebraico más común al implementar atención desde cero. \(\mathbf{AB} \neq \mathbf{BA}\). Incluso cuando ambos productos están bien definidos y tienen la misma forma (matrices cuadradas), producirán resultados diferentes. Ante la duda, rastrea las formas explícitamente y razona sobre la semántica de cada multiplicación. |
0 commit comments