Aula 6: Derivadas Parciais, Jacobiano e o Vetor Gradiente

Álgebra Linear e Otimização para Aprendizado de Máquina

Prof. Marcos Medeiros Raimundo

2026-09-13

Revisão e Introdução

Revisão da Aula 5: SVD e Geometria de Matrizes

  • SVD (\(X=U\Sigma V^T\)): Construída via Teorema Espectral aplicado a \(X^TX\) e \(XX^T\).
  • Significado: \(V\) e \(U\) são bases ortogonais; \(\sigma_i\) são as magnitudes do estiramento.
  • Eckart-Young-Mirsky: A melhor aproximação de posto \(k\) é obtida truncando a SVD nos \(k\) maiores \(\sigma_i\) (ótima em norma espectral e Frobenius).
  • Decomposição Polar (\(X=QS\)): Separa a transformação em rotação pura (\(Q\)) e estiramento (\(S\)).

Um Corte Real: da Álgebra Linear ao Cálculo

5 aulas construíram uma linguagem para dados estáticos — nunca precisaram perguntar “como ajustar algo para reduzir um erro”.

Mas as Equações Normais (Aula 3) vieram de “a projeção minimiza \(\|\mathbf{y}-X\mathbf{w}\|^2\)” — minimizar uma função é, por definição, Cálculo.

A Aula 3 usou essa ideia (via geometria) sem defini-la. Parte 2 do curso (“Cálculo da Otimização Diferenciável”) fecha essa lacuna, a partir de hoje.

Roteiro da Aula

1. O que é derivada parcial, e por que sozinha não basta para qualquer direção?

2. Como generalizar para o vetor-gradiente, calculado por extenso numa perda quadrática real?

3. O que é derivada direcional, e por que o gradiente é a direção de subida mais íngreme?

4. Como generalizar para uma função vetorial — o Jacobiano?

Problema Motivador

\(L(\boldsymbol{\beta})=\|X\boldsymbol{\beta}-\mathbf{y}\|^2\) (California Housing). Aula 3 resolveu de uma vez (\(X^TX\hat{\boldsymbol{\beta}}=X^T\mathbf{y}\)) — mas imagine milhões de parâmetros (rede neural): resolver o sistema está fora de cogitação.

Dado \(\boldsymbol{\beta}\) qualquer: em que direção mover \(\boldsymbol{\beta}\) para reduzir \(L\) mais rápido, usando só informação local?

Pergunta

Com 1 parâmetro já sabemos achar o mínimo. Com 4, o quê muda?

Dica: o que o Cálculo 1 ensina sobre mínimos, e o que precisa mudar com mais de uma variável?

  • □ Com 1 parâmetro, mínimo \(\iff\) derivada \(=0\) — mas “a derivada” de uma função de 4 variáveis não é um único número.
  • □ Com exatamente 2 parâmetros (em vez de 4), a pergunta “que direção reduz mais rápido” deixaria de fazer sentido — só haveria uma direção possível.
  • □ Rede neural com milhões de pesos: a mesma pergunta é exatamente o que o treinamento resolve a cada passo.
  • □ Equações Normais sempre resolvíveis (bastaria \(X^TX\) maior) \(\Rightarrow\) “direção de redução mais rápida” só importa em brinquedos.

Resposta

O que muda de 1 para 4 parâmetros — Resposta

  • ✔ Exatamente o problema que abre a aula: precisamos de um objeto matemático novo (o gradiente, um vetor) para substituir “a derivada” quando há várias variáveis.
  • ✗ Com 2 (ou qualquer número \(\ge2\)) parâmetros já existem infinitas direções possíveis no plano (ou espaço) de parâmetros — a pergunta faz sentido a partir de 2 variáveis, não só com muitas.
  • ✔ Mesma mecânica, outro modelo de ML (rede neural, treinamento via gradiente).
  • ✗ O tamanho de \(X^TX\) cresce com o quadrado do número de parâmetros, e invertê-la custa cubo do tamanho — para milhões de parâmetros isso é computacionalmente inviável, não uma questão de “brinquedo”.

Voltando à pergunta: o objeto que falta é o gradiente — um vetor, não um número — construído a partir de derivadas parciais, tema do Bloco 2.

Derivada Parcial

Variando uma Variável de Cada Vez

Ideia central: para entender como \(f(x_1,\dots,x_n)\) muda, fixe todas as variáveis exceto uma, e aplique a derivada de uma variável (Cálculo 1) só àquela.

Definição (Derivada Parcial — MathML Def. 5.5)

\(\dfrac{\partial f}{\partial x_i} = \lim_{h\to 0} \dfrac{f(x_1,\dots,x_i+h,\dots,x_n)-f(\mathbf{x})}{h}\) — as demais variáveis ficam fixas.

Cada \(\partial f/\partial x_i\) é a derivada de uma variável do Cálculo 1, aplicada à função com as demais variáveis “congeladas” — nenhuma ferramenta nova para calcular uma parcial isolada.

Aplicando à Perda Quadrática

Versão simplificada com \(2\) parâmetros, \(5\) bairros, \(2\) atributos (MedInc, HouseAge), para a conta caber à mão.

MedInc HouseAge MedHouseVal
0 3.5987 31.0 3.405
1 1.4267 37.0 0.523
2 4.0455 33.0 1.972
3 3.5500 36.0 2.128
4 2.3393 19.0 1.182

\(L(\beta_1,\beta_2)=\sum_i(\beta_1\texttt{MedInc}_i+ \beta_2\texttt{HouseAge}_i-\texttt{MedHouseVal}_i)^2\).

Em \((\beta_1,\beta_2)=(0{,}5;\,0{,}02)\): aproximar \(\partial L \partial\beta_1\) pelo limite com \(h\) pequeno, comparar com a derivada exata.

L(0.5, 0.02) = 2.612078
dL/db1: limite numérico (h=0.0001) = 5.641952 | fórmula exata 2*sum(r*MedInc) = 5.637009
dL/db2: limite numérico (h=0.0001) = 95.547400 | fórmula exata 2*sum(r*HouseAge) = 95.039800

Muito parecido com derivada por manipulação algébrica direta:

\(\partial L/\partial\beta_1=2\sum_i r_i\texttt{MedInc}_i\)

\(\partial L/\partial\beta_2=2\sum_i r_i\texttt{HouseAge}_i\) onde (\(r_i=\beta_1\texttt{MedInc}_i+\beta_2\texttt{HouseAge}_i- \texttt{MedHouseVal}_i\))

Pergunta

Se a perda dependesse só de \(\beta_1\), o que ocorre com \(\partial L/\partial\beta_2\)?

Dica: qual das duas variáveis deixaria de existir na função?

  • □ \(L\) dependendo só de \(\beta_1\) \(\Rightarrow\partial L/ \partial\beta_2\) deixa de fazer sentido (\(\beta_2\) nem aparece mais).
  • □ Se \(r_i=\)MedHouseVal\(_i\) (sinal trocado) para todos os \(5\) bairros em \((\beta_1,\beta_2)=(0,0)\), isso impediria calcular \(\partial L/\partial\beta_1\) nesse ponto.
  • □ Regressão logística com \(2\) parâmetros: mesmo procedimento (fixar um, derivar o outro) se aplica sem alteração conceitual.
  • □ Fórmula de derivada de 1 variável \(\Rightarrow\partial L/ \partial\beta_1\) nunca depende do valor de \(\beta_2\) no ponto.

Resposta

Derivada parcial: o que muda e o que não muda — Resposta

  • ✔ Sem \(\beta_2\) na expressão, não há “o que variar” — a derivada parcial em relação a uma variável ausente é indefinida, não zero.
  • ✗ \(\partial L/\partial\beta_1=2\sum_ir_i\texttt{MedInc}_i\) é uma soma perfeitamente calculável mesmo que \(r_i\) tenha esse valor específico — nada na definição exige um valor particular de \(r_i\).
  • ✔ Mesma mecânica (derivar mantendo as demais variáveis fixas), outro modelo de ML (regressão logística).
  • ✗ Justamente o oposto: \(r_i=\beta_1\texttt{MedInc}_i+ \beta_2\texttt{HouseAge}_i-\texttt{MedHouseVal}_i\) depende de \(\beta_2\), e \(r_i\) entra na fórmula de \(\partial L/\partial\beta_1\) — o valor da parcial em \(\beta_1\) muda conforme o valor de \(\beta_2\) no ponto avaliado (as variáveis não interagem na definição, mas interagem no valor calculado, através da função em si).

Voltando à pergunta: “fixar as demais variáveis” é uma operação na definição (qual variável varia), não uma afirmação de que as demais variáveis não influenciam o valor numérico da derivada — elas influenciam, através do ponto onde a derivada é avaliada. O Bloco 3 generaliza isso para todas as \(4\) variáveis de uma vez.

O Gradiente como Vetor e as Regras de Derivação

Coletando as Derivadas Parciais num Vetor

Definição (Gradiente — MathML Def. 5.5, completa)

\(\nabla_{\mathbf{x}}f=\dfrac{df}{d\mathbf{x}}=\begin{bmatrix} \dfrac{\partial f}{\partial x_1} \\ \vdots \\ \dfrac{\partial f}{\partial x_n} \end{bmatrix}\in \mathbb{R}^{n\times 1}\) — vetor-coluna, chamado gradiente (= Jacobiano, caso escalar).

Observação (convenção coluna)

Optamos pela convenção de vetor-coluna, que é a mais comum na literatura de aprendizado de máquina e otimização. Isso facilita a consistência com a notação de atualização de pesos \(\mathbf{w}_{t+1}=\mathbf{w}_t-\gamma\nabla L(\mathbf{w}_t)\) que veremos adiante.

As Regras Básicas de Derivação

Regras de derivação (MathML §5.2.1)

  • Soma: \(\partial(f+g)/\partial x=\partial f/\partial x+\partial g/\partial x\).
  • Produto: \(\partial(fg)/\partial x=(\partial f/\partial x)g+f (\partial g/\partial x)\).
  • Cadeia: \(\partial(g\circ f)/\partial x=(\partial g/\partial f) (\partial f/\partial x)\).

💡 Resumo de Regras de Derivação

Operação Derivada Parcial (\(\partial/\partial x_i\)) Gradiente (\(\nabla\))
Soma \(\partial(f+g)/\partial x_i = \partial f/\partial x_i + \partial g/\partial x_i\) \(\nabla(f+g) = \nabla f + \nabla g\)
Produto \(\partial(fg)/\partial x_i = f \partial g/\partial x_i + g \partial f/\partial x_i\) \(\nabla(fg) = f\nabla g + g\nabla f\)
Cadeia \(\partial(g \circ f)/\partial x_i = \dots\) \(\nabla(f \circ g) = \mathbf{J}_g^T \nabla f\)

Desenvolvimento: o Gradiente da Perda Quadrática

  • \(r_i=\sum_kX_{ik}\beta_k-y_i\)
  • \(\mathbf{r}(\boldsymbol{\beta}):=X\boldsymbol{\beta}- \mathbf{y}\)
  • \(L=\mathbf{r}^T\mathbf{r}=\sum_ir_i^2\).

Passo 1 (soma + cadeia): \(\partial L/\partial\beta_j=\sum_i \partial(r_i^2)/\partial\beta_j=\sum_i2r_i\cdot\partial r_i/ \partial\beta_j\).

Passo 2 (parte afim): \(\partial r_i/\partial\beta_j=X_{ij}\) diretamente.

Passo 3 (montagem): \(\partial L/\partial\beta_j=2\sum_iX_{ij}r_i= 2(X^T\mathbf{r})_j\Rightarrow\nabla_{\boldsymbol{\beta}}L= 2\mathbf{r}^TX=2(X\boldsymbol{\beta}-\mathbf{y})^TX\).

Resultado

\(\nabla_{\boldsymbol{\beta}}\|X\boldsymbol{\beta}-\mathbf{y}\|^2= 2(X\boldsymbol{\beta}-\mathbf{y})^TX\).

Ponte com a Aula 3: \(\nabla L=\mathbf{0}\iff X^T(X\boldsymbol{ \beta}-\mathbf{y})=\mathbf{0}\iff X^TX\boldsymbol{\beta}=X^T\mathbf{y}\) — exatamente as Equações Normais. “Resíduo ortogonal” (Aula 3) e “gradiente zero” (hoje) são a mesma condição, duas portas diferentes.

Pergunta

Trocar o quadrado por \(L_1\) (\(\sum_i|r_i|\)): a derivação continua igual?

Dica: releia o Passo 1 — qual regra deixa de valer, exatamente?

  • □ Quebraria no Passo 1: \(h(t)=|t|\) não é diferenciável em \(t=0\), diferente de \(h(t)=t^2\).
  • □ Com \(1000\) parâmetros em vez de \(4\), os Passos 1-3 continuam valendo, dando \(\nabla_{\boldsymbol{\beta}}L=2(X\boldsymbol{\beta}- \mathbf{y})^TX\), \(X\in\mathbb{R}^{N\times1000}\).
  • □ Regressão Ridge: regra da soma do Passo 1 deriva o termo de regularização separadamente, soma ao gradiente já calculado.
  • □ Passo 2 usa “\(r_i\) afim” \(\Rightarrow\) fórmula só vale para o \(X\) específico do California Housing, não para qualquer \(X\) de mesmo formato.

Resposta

Trocar quadrado por \(L_1\) — Resposta

  • ✔ Exatamente o ponto de ruptura: a regra da cadeia do Passo 1 precisa de \(h\) diferenciável — \(|t|\) falha só em \(t=0\), diferente de \(h(t)=t^2\).
  • ✔ Nada no argumento usa \(n=4\) especificamente — a derivação vale para qualquer número de colunas de \(X\).
  • ✔ A regra da soma (MathML §5.2.1) permite derivar cada termo aditivo da perda separadamente — o gradiente da soma é a soma dos gradientes.
  • ✗ O Passo 2 usa que \(r_i\) é afim (qualquer \(X\), qualquer formato), não uma propriedade específica dos dados do California Housing — a fórmula vale para qualquer matriz de design real.

Voltando à pergunta: não, a substituição por \(L_1\) quebra precisamente a regra da cadeia do Passo 1 — \(|t|\) tem um “bico” em \(t=0\), sem derivada aí. Otimizar perdas assim (não-suaves) exige uma ferramenta diferente (subgradientes), fora do escopo desta aula — reservado para a Aula 15.

Derivada Direcional e a Direção de Subida Mais Íngreme

Definindo a Derivada Direcional

Ideia: Qual a “inclinação” de \(f\) se nos movermos a partir de \(\mathbf{x}\) na direção \(\mathbf{v}\)?

O Truque: Reduzir para 1 variável. Defina \(g(h) = f(\mathbf{x} + h\mathbf{v})\). A derivada direcional é simplesmente \(g'(0)\).

A Matemática (Regra da Cadeia): \(g'(h) = \sum_{i=1}^n \underbrace{\frac{\partial f}{\partial x_i}(\mathbf{x} + h\mathbf{v})}_{\text{sensibilidade}} \cdot \underbrace{\frac{dx_i}{dh}}_{v_i} = \sum_{i=1}^n \frac{\partial f}{\partial x_i}(\mathbf{x} + h\mathbf{v}) v_i\)

Importante

Resultado: \(D_{\mathbf{v}}f(\mathbf{x}) = \nabla f(\mathbf{x}) \cdot \mathbf{v}\) (Produto interno entre o gradiente e a direção).

Generalização: Se \(\mathbf{v} = \mathbf{e}_j\) (eixo \(j\)), recuperamos a derivada parcial \(\partial f / \partial x_j\).

A Direção de Subida Mais Íngreme

Proposição

\(\nabla f(\mathbf{x})\ne\mathbf{0}\): entre todo \(\mathbf{v}\) unitário, \(D_{\mathbf{v}}f(\mathbf{x})\) é máxima em \(\mathbf{v}^\star=\nabla f(\mathbf{x})^T/\|\nabla f(\mathbf{x})\|\), valor máximo \(\|\nabla f(\mathbf{x})\|\).

Prova: \(D_{\mathbf{v}}f=\langle\nabla f(\mathbf{x})^T,\mathbf{v} \rangle\). Cauchy-Schwarz: \(|\langle\nabla f^T,\mathbf{v}\rangle|\le \|\nabla f\|\cdot1\), igualdade sse \(\mathbf{v}\parallel\nabla f^T\) (mesmo sentido, para o máximo).

\(\mathbf{v}^\star=\nabla f^T/\|\nabla f\|\Rightarrow D_{\mathbf{v}^\star}f=\|\nabla f\|^2/\|\nabla f\|=\|\nabla f\|\) — bate com a cota, logo é o máximo. \(\blacksquare\)

Gradiente (transposto) = direção de subida mais íngreme, normalizado; sua norma = taxa de aumento ótima. \(-\nabla f^T/\|\nabla f\|\) = descida mais íngreme (Aula 8, Gradiente Descendente).

Verificação Numérica e Geométrica

Exemplo do Bloco 2, em \((\beta_1,\beta_2)=(0{,}5;\,0{,}02)\): \(\nabla L \approx[5{,}637\ \ 95{,}040]\) (norma \(\approx95{,}207\)). Calcular \(D_{\mathbf{v}}L\) para todos os ângulos, confirmar máximo na direção do gradiente.

gradiente 2D em b0: [ 5.637  95.0398], norma = 95.2068
ângulo do gradiente: 86.61 graus
max(D_v) sobre a grade de ângulos: 95.2061 (em theta = 86.83 graus)

Painel direito: \(D_{\mathbf{v}}L\) varia como cosseno, máximo \(=\|\nabla L\|\approx95{,}207\) exatamente no ângulo do gradiente (\(\approx86{,}6°\)); mínimo (mesma magnitude, sinal oposto) na direção oposta.

Painel esquerdo: gradiente (seta ampliada) aponta para fora, sentido de crescimento. Eixos em escalas diferentes \(\Rightarrow\) ortogonalidade às curvas não fica visualmente exata aqui (é exata em eixos de mesma escala — o fato matemático não depende do desenho).

Pergunta

\(\nabla f(\mathbf{x})=\mathbf{0}\): o que a Proposição diz sobre a direção de subida?

Dica: releia a hipótese exata da Proposição.

  • □ \(\nabla f(\mathbf{x})=\mathbf{0}\Rightarrow\) Proposição não se aplica (hipótese exige \(\nabla f\ne\mathbf{0}\)) — nenhuma direção aumenta \(f\) a taxa positiva de primeira ordem.
  • □ \(D_{\mathbf{v}_1}f=D_{\mathbf{v}_2}f\) para \(\mathbf{v}_1\ne \mathbf{v}_2\) unitários \(\Rightarrow\nabla f(\mathbf{x})=\mathbf{0}\) necessariamente.
  • □ Rede neural com múltiplos mínimos locais: em qualquer ponto de gradiente não-nulo, existe direção de subida mais íngreme única, independente do número de mínimos locais na superfície inteira.
  • □ Derivada direcional generaliza a parcial \(\Rightarrow\) o máximo de \(D_{\mathbf{v}}f\) é sempre igual a alguma parcial individual.

Resposta

Gradiente nulo e direção de subida — Resposta

  • ✔ Exatamente a hipótese que a prova usa (na divisão por \(\|\nabla f(\mathbf{x})\|\)) — sem ela, a proposição não garante nada, e de fato \(\nabla f=\mathbf{0}\) é o critério de ponto crítico (tema da Aula 7).
  • ✗ Contraexemplo direto: se \(\nabla f(\mathbf{x})=\mathbf{0}\), \(D_{\mathbf{v}}f(\mathbf{x})=\mathbf{0}\) para toda direção $ $ (inclusive direções distintas) — a igualdade entre direções não força gradiente nulo em geral, só quando todas as direções empatam.
  • ✔ A proposição é local (depende só do gradiente naquele ponto) — o número de mínimos locais da superfície inteira é irrelevante para a direção de subida mais íngreme naquele ponto específico.
  • ✗ O valor máximo é \(\|\nabla f(\mathbf{x})\|\) (a norma do vetor inteiro), quase sempre maior que qualquer componente individual \(|\partial f/\partial x_j|\) isolada (pela própria definição de norma euclidiana somando quadrados de todas as componentes).

Voltando à pergunta: num ponto de gradiente nulo, a Proposição simplesmente não se aplica — não existe direção de subida garantida de primeira ordem. Esse é, precisamente, o critério de ponto crítico que abre a Aula 7 (convexidade e a Hessiana).

O Jacobiano: Generalizando para Funções Vetoriais

Quando a Função Devolve Vários Números de Uma Vez

Gradiente (Bloco 3): \(f:\mathbb{R}^n\to\mathbb{R}\). Mas \(\mathbf{r}(\boldsymbol{\beta}):=X\boldsymbol{\beta}-\mathbf{y}\) (Bloco 3) é \(\mathbb{R}^4\to\mathbb{R}^{16\,640}\) — um número por observação.

Definição (Jacobiano — MathML Def. 5.6)

\(f:\mathbb{R}^n\to\mathbb{R}^m\Rightarrow J=\nabla_{\mathbf{x}}f\in \mathbb{R}^{n\times m}\), \(J(j,i)=\partial f_i/\partial x_j\). Caso \(m=1\): \(J\) = vetor-coluna = o gradiente já definido.

Convenção (Denominator Layout): colunas = gradientes de \(f_i\), linhas = variáveis \(\mathbf{x}\).

O Jacobiano do Resíduo: \(J_{\mathbf{r}}(\boldsymbol{\beta})=X^T\)

Passo 1: Derivada de uma componente \(r_i(\boldsymbol{\beta}) = \sum_k X_{ik}\beta_k - y_i \implies \frac{\partial r_i}{\partial \beta_j} = X_{ij}\)

Passo 2: Montando a matriz (Denominator Layout) \(J_{\mathbf{r}}\) coleta as parciais \(\partial r_i / \partial \beta_j\) nas posições \((j, i)\): \(J_{\mathbf{r}} = \begin{bmatrix} \partial r_1/\partial \beta_1 & \dots & \partial r_m/\partial \beta_1 \\ \vdots & \ddots & \vdots \\ \partial r_1/\partial \beta_n & \dots & \partial r_m/\partial \beta_n \end{bmatrix} = X^T\)

Conclusão: O Jacobiano do resíduo é a transposta da matriz de design.

Nota

Propriedade: Para qualquer função afim \(\mathbf{r} = A\boldsymbol{\beta} + \mathbf{c}\), o Jacobiano é constante: \(J_{\mathbf{r}} = A^T\).

A Regra da Cadeia com Jacobiano Recupera o Bloco 3

MathML resolve exatamente este problema (mínimos quadrados de modelo linear) como exemplo de regra da cadeia com Jacobiano (Exemplo 5.11, tradução/adaptação nossa; usam \(\mathbf{e}=\mathbf{y}-\Phi \boldsymbol{\theta}=-\mathbf{r}\)).

Regra da cadeia com Jacobiano (MathML Exemplo 5.11)

\(L(\boldsymbol{\beta})=g(\mathbf{r}(\boldsymbol{\beta}))\), \(g(\mathbf{r})=\mathbf{r}^T\mathbf{r}\Rightarrow\nabla_{\boldsymbol{ \beta}}L=\nabla_{\mathbf{r}}g\cdot J_{\mathbf{r}}(\boldsymbol{\beta})\).

\(\nabla_{\mathbf{r}}g(\mathbf{r})=2\mathbf{r}^T\) (mesma regra do Passo 1, Bloco 3); \(J_{\mathbf{r}}(\boldsymbol{\beta})=X\) (Bloco 5).

\(\nabla_{\boldsymbol{\beta}}L=(2\mathbf{r}^T)(X)=2(X\boldsymbol{\beta}- \mathbf{y})^TX\) — idêntico ao Bloco 3, por rota diferente (sem repetir a soma termo a termo).

Vantagem citada pelo MathML: a rota direta (expandir tudo) “continua prática para funções simples, mas fica impraticável para composições profundas” — o caso de redes neurais com várias camadas (Aula 10, Diferenciação Automática).

Verificando o Jacobiano do Resíduo Numericamente

Confirmar \(J_{\mathbf{r}}(\boldsymbol{\beta})=X\): a \(j\)-ésima coluna de \(J_{\mathbf{r}}\) (diferença finita) deve coincidir com a \(j\)-ésima coluna de \(X\).

coluna 0 (MedInc): erro máximo |J_numerico - X[:,0]| = 1.15e-10
coluna 1 (HouseAge): erro máximo |J_numerico - X[:,1]| = 1.34e-10
coluna 2 (AveRooms): erro máximo |J_numerico - X[:,2]| = 2.29e-10
coluna 3 (AveBedrms): erro máximo |J_numerico - X[:,3]| = 1.47e-10

erro máximo entre as 4 colunas: 2.29e-10

Erro máximo \(\sim10^{-10}\) (puro truncamento) nas \(4\) colunas — confirma \(J_{\mathbf{r}}(\boldsymbol{\beta})=X\) exatamente, para qualquer \(\boldsymbol{\beta}\) (Jacobiano de função afim não depende do ponto).

Pergunta

Modelo com 2 saídas: como muda a forma do Jacobiano do resíduo?

Dica: quantas linhas/colunas tem um Jacobiano \(m\times n\), e o que muda quando \(m\) aumenta?

  • □ Resíduo com \(2\) saídas por observação \(\Rightarrow\) Jacobiano com o dobro de linhas do atual (mesmas \(4\) colunas, mesmas \(16\,640\) observações).
  • □ \(X\) com \(1000\) atributos (1 saída): \(J_{\mathbf{r}}\) continua matriz, agora com \(1000\) colunas.
  • □ Rede neural, camada de saída com \(10\) neurônios: Jacobiano (numerator layout) tem \(10\) linhas.
  • □ Gradiente = caso particular do Jacobiano (\(m=1\)) \(\Rightarrow\nabla_{\boldsymbol{\beta}}L=\nabla_{\mathbf{r}}g\cdot J_{\mathbf{r}}\) só vale porque \(L\) é uma perda quadrática especificamente.

Resposta

Jacobiano com múltiplas saídas — Resposta

  • ✔ Cada saída adicional por observação vira uma linha adicional no Jacobiano (numerator layout: linhas = \(f\)) — \(2\) saídas por observação, \(16\,640\) observações, dobra as linhas.
  • ✔ O número de colunas do Jacobiano é sempre o número de parâmetros (aqui, atributos) — \(1000\) atributos \(\Rightarrow\) \(1000\) colunas, independente do número de saídas.
  • ✔ Numerator layout: linhas = elementos de \(f\) (aqui, os \(10\) neurônios de saída) — exatamente a Definição 5.6.
  • ✗ A regra da cadeia com Jacobiano (MathML Exemplo 5.11, adaptado) vale para qualquer composição \(L=g(\mathbf{r}(\boldsymbol{ \beta}))\) com \(g\) e \(\mathbf{r}\) diferenciáveis — a perda quadrática é só o caso usado nesta aula, não uma exigência da regra.

Voltando à pergunta: o Jacobiano generaliza exatamente nessa direção — mais saídas, mais linhas; mais parâmetros, mais colunas — sem exigir nenhuma mudança na definição, só na contagem de \(m\) e \(n\).

Verificação Numérica

O Compromisso na Escolha de \(h\)

Blocos anteriores já usaram diferença finita central sem discutir como escolher \(h\). Implementações de gradiente/Jacobiano são código — têm bugs. Competência desta aula: verificar numericamente, não só calcular.

  • \(h\) grande: erro de truncamento \(O(h^2f''')\) (Taylor, padrão de Cálculo Numérico).
  • \(h\) pequeno: erro de arredondamento \(O(\epsilon_{\text{máquina}}/h)\) (subtração de números quase iguais).

Prática usual: \(h\sim\epsilon_{\text{máquina}}^{1/3}\approx 10^{-5}\)–\(10^{-6}\) (faixa já usada, sem justificar, nos chunks anteriores).

Caso especial honesto: \(L(\boldsymbol{\beta})\) é exatamente quadrática \(\Rightarrow f'''=0\Rightarrow\) erro de truncamento zero para esta perda — só arredondamento aparece, sem o “U” clássico.

Exemplo Numérico: Erro de Verificação em Função de \(h\)

h maior -> erro menor (só arredondamento, cresce conforme h diminui):
  h=1.00e-02   erro=4.547e-11
  h=1.22e-04   erro=5.828e-09
  h=1.49e-06   erro=5.909e-07
  h=1.82e-08   erro=2.451e-05
  h=2.23e-10   erro=1.460e-03
  h=2.72e-12   erro=1.528e-01

Erro cresce monotonicamente conforme \(h\to0\) (sem “U”, sem truncamento). Para função com \(f'''\ne0\) (a maioria das perdas de redes neurais), o “U” reaparece — \(h\) grande demais também tem custo.

Faixa \(h\in[10^{-6},10^{-4}]\) (Blocos 2-5, sombreada): pequena o bastante para não expor arredondamento, grande o bastante para funcionar mesmo em funções não-quadráticas — escolha prática segura por padrão.

Fechamento e Ponte para a Aula 7

Retomando as Perguntas de Abertura

1. \(\partial f/\partial x_j\): taxa de variação num eixo só — sozinha não cobre outras direções (derivada direcional, pergunta 3).

2. Gradiente = vetor-linha das parciais (Def. 5.5). Para \(L=\|X\boldsymbol{\beta}-\mathbf{y}\|^2\): \(\nabla_{\boldsymbol{\beta}}L =2(X\boldsymbol{\beta}-\mathbf{y})^TX\) — anulamento = Equações Normais.

3. \(D_{\mathbf{v}}f=\nabla f\cdot\mathbf{v}\); Cauchy-Schwarz (Aula 1) prova máximo em \(\mathbf{v}=\) gradiente normalizado, valor \(\|\nabla f\|\).

4. Jacobiano (Def. 5.6): matriz \(m\times n\), gradiente = caso \(m=1\). \(J_{\mathbf{r}}(\boldsymbol{\beta})=X\) recupera o Bloco 3 via regra da cadeia — rota que escala para redes neurais (Aula 10).

Ponte para a Aula 7

\(\nabla L=\mathbf{0}\) identifica ponto crítico — nenhuma direção de primeira ordem aumenta/diminui \(f\) ali (a Proposição do Bloco 4 deixa de se aplicar exatamente nesse caso).

Mas ponto crítico não é, automaticamente, mínimo — pode ser máximo ou sela. Para \(L(\boldsymbol{\beta})=\|X\boldsymbol{\beta}- \mathbf{y}\|^2\), funciona porque \(X^TX\) é PSD (Aula 4) — garantia extra, não do gradiente sozinho.

O que decide mínimo/máximo/sela, em geral: a segunda derivada em várias variáveis, a Hessiana — Aula 7 (Convexidade e a Hessiana).

Exercícios Soluções