Soluções — Aula 6: Derivadas Parciais, Gradiente e Jacobiano

Gabarito de exercicios.qmd

Autor

Prof. Marcos Medeiros Raimundo

Aula Exercícios

NotaTeste 1 — Derivada parcial: definição e interpretação
  • □ Se \(f(x_1,x_2)\) não dependesse de \(x_2\) (só de \(x_1\)), então \(\partial f/\partial x_2=0\) em todo ponto do domínio.
  • □ Na definição de derivada parcial (ver Convenções), o limite que define \(\partial f/\partial x_1\) é tomado só com valores positivos de \(h\) (\(h\to 0^+\)), nunca com valores negativos.
  • □ Numa função de perda de regressão logística com \(2\) parâmetros (peso e viés), calcular \(\partial L/\partial(\text{viés})\) (mantendo o peso fixo) segue exatamente a mesma definição usada para a perda quadrática desta aula.
  • □ Se todas as derivadas parciais de \(f\) existirem e forem iguais a zero num ponto \(\mathbf{x}\), isso garante que \(\mathbf{x}\) é um ponto de mínimo local de \(f\).
Dica(Resposta) Teste 1 — Derivada parcial: definição e interpretação
  • ✔ Verdadeiro — \(f(x_1,x_2)=g(x_1)\) (sem dependência de \(x_2\)) \(\Rightarrow\partial f/\partial x_2=\lim_{h\to0}[g(x_1)-g(x_1)]/h=0\) identicamente, pela própria definição de derivada parcial (ver Convenções em exercicios.qmd) aplicada literalmente.
  • ✗ Falso — A definição exige um limite bilateral \(h\to0\) (a mesma convenção da derivada de uma variável do Cálculo 1) — precisa existir e coincidir tanto pela direita quanto pela esquerda. Um limite unilateral não é o que a definição pede, e não garante a mesma propriedade (por exemplo, não garante a existência da derivada num ponto de “quina”, onde os limites laterais existem mas diferem).
  • ✔ Verdadeiro — A definição de derivada parcial não faz nenhuma suposição sobre a forma específica de \(f\) — vale para qualquer função diferenciável de várias variáveis, incluindo a entropia cruzada da regressão logística.
  • ✗ Falso — Gradiente nulo identifica um ponto crítico, não automaticamente um mínimo — pode ser máximo ou (em dimensão \(\ge2\)) ponto de sela. Essa distinção é exatamente o que fica em aberto no Fechamento desta aula, resolvida com a ferramenta da segunda derivada em várias variáveis (a Hessiana), tema de uma aula futura.
NotaTeste 2 — O gradiente como vetor: convenção linha/coluna
  • □ Se o gradiente de \(f:\mathbb{R}^n\to\mathbb{R}\) fosse definido como vetor-coluna em vez de vetor-linha, o valor numérico de cada derivada parcial dentro dele mudaria.
  • □ Para uma função \(f:\mathbb{R}^1\to\mathbb{R}\) (uma única variável), o gradiente de \(f\), segundo a definição de gradiente (ver Convenções), coincide exatamente com a derivada usual do Cálculo 1.
  • □ Numa camada linear de rede neural com perda escalar em relação aos pesos \(W\) (uma matriz, não um vetor), a mesma ideia de “coletar derivadas parciais” se generaliza, mas o resultado organizado é uma matriz de mesma forma que \(W\), não um vetor-linha.
  • □ Como o gradiente de \(f:\mathbb{R}^n\to\mathbb{R}\) é um vetor-linha \(1\times n\), isso implica que o gradiente é, ele mesmo, uma função escalar, não vetorial.
Dica(Resposta) Teste 2 — O gradiente como vetor: convenção linha/coluna
  • ✗ Falso — A convenção linha-vs-coluna é só uma questão de organização/disposição dos números já calculados — cada derivada parcial \(\partial f/\partial x_i\) tem o mesmo valor numérico independente de como as \(n\) derivadas são arranjadas (linha ou coluna, uma é a transposta da outra).
  • ✔ Verdadeiro — Com \(n=1\), o “vetor-linha” \(1\times1\) da definição de gradiente é, na prática, um único número — a derivada \(df/dx\) do Cálculo 1, sem generalização nenhuma sendo efetivamente exigida.
  • ✔ Verdadeiro — A ideia de “coletar derivadas parciais” (uma por entrada de \(W\)) generaliza para qualquer estrutura de parâmetros — o gradiente em relação a uma matriz de pesos organiza as derivadas parciais em relação a cada entrada de \(W\) numa estrutura da mesma forma que \(W\).
  • ✗ Falso — Confunde o codomínio de \(f\) (escalar, \(\mathbb{R}\)) com a natureza do gradiente (vetorial, \(n\) componentes) — o gradiente é um objeto vetorial mesmo quando \(f\) devolve um único número.
NotaTeste 3 — Regras de derivação e o gradiente da perda quadrática
  • □ Se a perda fosse \(L(\boldsymbol{\beta})=\|X\boldsymbol{\beta}-\mathbf{y}\|^2+5\) (somando uma constante), o gradiente \(\nabla_{\boldsymbol{\beta}}L\) seria idêntico ao calculado para o problema-fio (ver Convenções), sem nenhuma mudança.
  • □ Se \(X\) fosse a matriz nula (todas as entradas zero), o gradiente \(\nabla_{\boldsymbol{\beta}}L=2(X\boldsymbol{\beta}-\mathbf{y})^TX\) seria o vetor-linha nulo, para qualquer \(\boldsymbol{\beta}\).
  • □ Numa perda com dois termos de erro para dois conjuntos de dados distintos, \(L(\boldsymbol{\beta})=\|X_1\boldsymbol{\beta}-\mathbf{y}_1\|^2+\|X_2\boldsymbol{\beta}-\mathbf{y}_2\|^2\) (ex.: dados coletados em dois períodos diferentes), o gradiente total é a soma dos dois gradientes, cada um pela fórmula do problema-fio.
  • □ Como a regra do produto foi enunciada para \(f(x)g(x)\) (ver Convenções), isso implica que ela não pode ser usada, de forma alguma, para derivar \(L=\mathbf{r}^T\mathbf{r}\) (um produto de vetores, não de duas funções escalares de \(x\)).
Dica(Resposta) Teste 3 — Regras de derivação e o gradiente da perda quadrática
  • ✔ Verdadeiro — Pela regra da soma, o gradiente de uma constante é zero — somar uma constante à perda não muda o gradiente em nenhum ponto.
  • ✔ Verdadeiro — \(X=\mathbf{0}\Rightarrow\mathbf{r}(\boldsymbol{\beta})=-\mathbf{y}\) (constante em \(\boldsymbol{\beta}\)) e \(\nabla_{\boldsymbol{\beta}}L=2\mathbf{r}^TX=2\mathbf{r}^T\cdot\mathbf{0}=\mathbf{0}\), para qualquer \(\boldsymbol{\beta}\).
  • ✔ Verdadeiro — Aplicação direta da regra da soma a dois termos, cada um já derivado individualmente pela fórmula do problema-fio (ver Convenções) — nenhuma ferramenta nova necessária.
  • ✗ Falso — \(\mathbf{r}^T\mathbf{r}=\sum_ir_i\cdot r_i\) é literalmente uma soma de produtos \(f(\boldsymbol{\beta})\cdot g(\boldsymbol{\beta})\) com \(f=g=r_i\) (cada \(r_i\) uma função escalar de \(\boldsymbol{\beta}\)) — a regra do produto se aplica termo a termo perfeitamente bem, dando \(\partial(r_i\cdot r_i)/\partial\beta_j=2r_i\,\partial r_i/\partial\beta_j\), exatamente o mesmo resultado obtido via regra da cadeia na derivação termo a termo (rota alternativa, não uma impossibilidade).
NotaTeste 4 — Derivada direcional
  • □ Se \(\mathbf{v}=-\mathbf{e}_j\) (o negativo do \(j\)-ésimo vetor da base canônica), então \(D_{\mathbf{v}}f(\mathbf{x})=-\partial f/\partial x_j\).
  • □ Se, em vez de exigir \(\|\mathbf{v}\|=1\), a definição permitisse qualquer \(\mathbf{v}\ne\mathbf{0}\), no limite em que \(\|\mathbf{v}\|\to 0\) o valor de \(\nabla f(\mathbf{x})\cdot\mathbf{v}\) (com a mesma fórmula, sem normalizar) tenderia a zero.
  • □ Numa superfície de perda de uma rede neural com \(2\) parâmetros, mover-se na direção perpendicular ao gradiente produz, em primeira ordem, taxa de variação da perda igual a zero.
  • □ Como a derivada direcional generaliza a derivada parcial (tomando \(\mathbf{v}=\mathbf{e}_j\)), isso implica que toda propriedade das derivadas parciais (poder ser calculada “mantendo as demais variáveis fixas”) se aplica igualmente à derivada direcional numa direção genérica \(\mathbf{v}\).
Dica(Resposta) Teste 4 — Derivada direcional
  • ✔ Verdadeiro — \(D_{\mathbf{v}}f(\mathbf{x})=\nabla f(\mathbf{x})\mathbf{v}\); com \(\mathbf{v}=-\mathbf{e}_j\), o produto dá \(-\partial f/\partial x_j\) diretamente (linearidade do produto interno).
  • ✔ Verdadeiro — O produto interno é linear em \(\mathbf{v}\) — se \(\mathbf{v}\to\mathbf{0}\), \(\nabla f(\mathbf{x})\cdot\mathbf{v}\to0\) trivialmente, qualquer que seja \(\nabla f(\mathbf{x})\). É exatamente por isso que a definição de derivada direcional exige \(\|\mathbf{v}\|=1\) — sem essa normalização, a derivada direcional não seria comparável entre diferentes direções (a magnitude de \(\mathbf{v}\) dominaria a comparação, não a direção).
  • ✔ Verdadeiro — \(D_{\mathbf{v}}f(\mathbf{x})=\nabla f(\mathbf{x})\cdot\mathbf{v}\); se \(\mathbf{v}\perp\nabla f(\mathbf{x})\), o produto interno é zero por definição de perpendicularidade — vale para qualquer função diferenciável, incluindo superfícies de perda de redes neurais.
  • ✗ Falso — “Manter as demais variáveis fixas” é uma característica específica de mover-se ao longo de um eixo coordenado (\(\mathbf{v}=\mathbf{e}_j\)) — para uma direção oblíqua genérica (com mais de uma componente não-nula), todas as coordenadas de \(\mathbf{x}\) mudam simultaneamente conforme \(h\) varia em \(\mathbf{x}+h\mathbf{v}\), nenhuma fica fixa. A generalização preserva a fórmula (via gradiente), não essa propriedade específica das parciais.
NotaTeste 5 — A direção de subida mais íngreme
  • □ Se, em vez do máximo de \(D_{\mathbf{v}}f(\mathbf{x})\), quiséssemos o mínimo (a direção de descida mais íngreme), a prova da proposição de subida mais íngreme (ver Convenções) mudaria só no sinal da condição de igualdade, dando \(\mathbf{v}^\star=-\nabla f(\mathbf{x})^T/\|\nabla f(\mathbf{x})\|\).
  • □ Se \(\nabla f(\mathbf{x})\) já fosse, ele mesmo, um vetor unitário (\(\|\nabla f(\mathbf{x})\|=1\)), o valor máximo de \(D_{\mathbf{v}}f(\mathbf{x})\) sobre todas as direções unitárias seria exatamente \(1\).
  • □ Num algoritmo que gera exemplos adversariais em visão computacional (perturbar uma imagem para enganar um classificador), buscar a perturbação de norma fixa que mais aumenta a perda do modelo é, essencialmente, aplicar a proposição de subida mais íngreme.
  • □ Como a igualdade na desigualdade de Cauchy-Schwarz exige vetores paralelos, isso implica que a direção de subida mais íngreme é única a menos de reflexão — existem exatamente duas direções, uma oposta à outra, que atingem o valor máximo de \(D_{\mathbf{v}}f(\mathbf{x})\).
Dica(Resposta) Teste 5 — A direção de subida mais íngreme
  • ✔ Verdadeiro — Por simetria do argumento de Cauchy-Schwarz: o mínimo de \(\langle\nabla f(\mathbf{x})^T,\mathbf{v}\rangle\) sobre \(\|\mathbf{v}\|=1\) ocorre quando os vetores são paralelos mas de sentidos opostos — o mesmo raciocínio da prova original, só buscando a igualdade do lado negativo da desigualdade \(-\|\nabla f\|\le\langle\nabla f^T,\mathbf{v}\rangle\).
  • ✔ Verdadeiro — A proposição de subida mais íngreme dá o valor máximo como \(\|\nabla f(\mathbf{x})\|\) diretamente — substituindo \(\|\nabla f(\mathbf{x})\|=1\), o máximo é \(1\).
  • ✔ Verdadeiro — O problema “encontrar, sob restrição de norma fixa, a perturbação que mais aumenta a perda” é exatamente o problema que a proposição resolve — a resposta é a direção do gradiente (normalizado), a mesma lógica usada (de forma simplificada) em métodos de geração de exemplos adversariais como o Fast Gradient Sign Method.
  • ✗ Falso — A condição de igualdade em valor absoluto (\(|\langle\nabla f^T,\mathbf{v}\rangle|=\|\nabla f\|\)) permite dois vetores paralelos (mesmo sentido ou oposto), mas só um deles atinge o máximo (o de mesmo sentido); o outro atinge o mínimo (valor \(-\|\nabla f\|\)), não outro máximo. Só existe uma única direção maximizadora, não duas.
NotaTeste 6 — O Jacobiano: definição e generalização
  • □ Se \(f:\mathbb{R}^n\to\mathbb{R}^m\) tivesse \(m=1\), o Jacobiano (ver Convenções) deixaria de ser uma matriz e passaria a ser um vetor-coluna \(n\times 1\).
  • □ Se \(f:\mathbb{R}^n\to\mathbb{R}^m\) for uma função constante (não depende de \(\mathbf{x}\)), seu Jacobiano é a matriz nula \(m\times n\), para todo \(\mathbf{x}\).
  • □ Numa camada convolucional de rede neural (mapeia um vetor de entrada para um vetor de ativações via convolução, não multiplicação matricial direta), o Jacobiano dessa camada em relação à entrada ainda é bem definido pela mesma definição de Jacobiano.
  • □ Como o Jacobiano do resíduo do problema-fio é constante (igual a \(X\), não depende de \(\boldsymbol{\beta}\)), isso implica que o Jacobiano de qualquer função vetorial é sempre constante, independente do ponto onde é avaliado.
Dica(Resposta) Teste 6 — O Jacobiano: definição e generalização
  • ✗ Falso — Pela própria definição de Jacobiano, \(f:\mathbb{R}^n\to\mathbb{R}^1\) tem Jacobiano igual a um vetor-linha (\(1\times n\)) — a mesma convenção do gradiente, não uma coluna.
  • ✔ Verdadeiro — Toda derivada parcial de uma função constante é zero (mesma lógica do item (a) do primeiro bloco de exercícios, generalizada componente a componente para \(f_1,\dots,f_m\)).
  • ✔ Verdadeiro — A definição de Jacobiano não faz nenhuma suposição sobre como \(f\) é implementada (multiplicação matricial direta, convolução, ou qualquer outra operação diferenciável) — só exige que \(f\) seja diferenciável e mapeie \(\mathbb{R}^n\to\mathbb{R}^m\).
  • ✗ Falso — O Jacobiano do resíduo é constante especificamente porque \(\mathbf{r}(\boldsymbol{\beta})\) é afim em \(\boldsymbol{\beta}\) — para uma função vetorial não-linear (por exemplo, envolvendo quadrados ou exponenciais de \(\boldsymbol{\beta}\)), o Jacobiano geral depende do ponto de avaliação. Generalizar do caso afim para “qualquer função” é o erro do item.
NotaTeste 7 — A regra da cadeia com Jacobiano
  • □ Se \(g(\mathbf{r})\) não fosse \(\mathbf{r}^T\mathbf{r}\), mas sim \(g(\mathbf{r})=\sum_i|r_i|\) (norma \(L_1\)), a mesma estrutura \(\nabla_{\boldsymbol{\beta}}L=\nabla_{\mathbf{r}}g\cdot J_{\mathbf{r}}(\boldsymbol{\beta})\) ainda se aplicaria em princípio, mas \(\nabla_{\mathbf{r}}g\) deixaria de existir em pontos onde algum \(r_i=0\).
  • □ Se \(X\) (o Jacobiano do resíduo) fosse a matriz identidade (hipoteticamente, mesmo número de observações e atributos), o gradiente do problema-fio se reduziria a \(\nabla_{\boldsymbol{\beta}}L=2(\boldsymbol{\beta}-\mathbf{y})^T\).
  • □ Numa rede neural com duas camadas, \(\mathbf{y}=f_2(f_1(\mathbf{x}))\), calcular o gradiente da perda em relação aos parâmetros da primeira camada exigiria compor o Jacobiano de \(f_2\) com o Jacobiano de \(f_1\), pela mesma lógica de regra da cadeia com Jacobiano vista nesta aula.
  • □ Como a regra da cadeia com Jacobiano envolve multiplicação de matrizes, e multiplicação de matrizes não é comutativa em geral, isso implica que a ordem \(\nabla_{\mathbf{r}}g\cdot J_{\mathbf{r}}(\boldsymbol{\beta})\) poderia ser trocada para \(J_{\mathbf{r}}(\boldsymbol{\beta})\cdot\nabla_{\mathbf{r}}g\) sem alterar o resultado, desde que as dimensões permitissem a multiplicação.
Dica(Resposta) Teste 7 — A regra da cadeia com Jacobiano
  • ✔ Verdadeiro — Mesma ruptura que ocorre ao trocar \(t^2\) por \(|t|\) na derivação da perda quadrática (a norma \(L_1\) tem “bicos” exatamente nos pontos onde alguma coordenada é zero), agora localizada no gradiente de \(g\) em relação a \(\mathbf{r}\) (não mais no gradiente de \(L\) em relação a \(\boldsymbol{\beta}\) diretamente).
  • ✔ Verdadeiro — \(X=I\Rightarrow\mathbf{r}(\boldsymbol{\beta})=\boldsymbol{\beta}-\mathbf{y}\); substituindo em \(\nabla_{\boldsymbol{\beta}}L=2\mathbf{r}^TX=2\mathbf{r}^T\cdot I=2\mathbf{r}^T=2(\boldsymbol{\beta}-\mathbf{y})^T\) diretamente.
  • ✔ Verdadeiro — A rota da regra da cadeia com Jacobiano é a que “escala para composições profundas de funções” — a base matemática da retropropagação em redes neurais, tema de uma aula futura.
  • ✗ Falso — Multiplicação de matrizes não é comutativa — mesmo nos raros casos em que as dimensões permitiriam multiplicar nos dois sentidos, os valores resultantes seriam, em geral, diferentes (e, na prática, \(\nabla_{\mathbf{r}}g\) é \(1\times m\) e \(J_{\mathbf{r}}\) é \(m\times n\): só a ordem \(\nabla_{\mathbf{r}}g\cdot J_{\mathbf{r}}\) é sequer dimensionalmente válida em geral, dando \(1\times n\); a ordem trocada exigiria \(n=1\) para sequer fazer sentido).
NotaTeste 8 — Verificação numérica
  • □ Se a perda fosse cúbica em \(\boldsymbol{\beta}\) (não quadrática), o erro de truncamento da diferença finita central para essa perda seria, em geral, diferente de zero, ao contrário do que ocorre para a perda quadrática do problema-fio (ver Convenções).
  • □ No limite em que \(h\) é escolhido igual a zero exatamente (não um valor pequeno, mas literalmente \(h=0\)), a fórmula de diferença finita central \([f(x+h)-f(x-h)]/(2h)\) deixa de estar definida.
  • □ Ao implementar do zero uma camada de rede neural (sem diferenciação automática disponível ainda), verificar o gradiente analítico por diferença finita central, na escala \(h\sim10^{-5}\)\(10^{-6}\), é prática recomendada antes de confiar na implementação para treinar o modelo.
  • □ Como o erro de arredondamento da diferença finita cresce conforme \(h\) diminui, isso implica que aumentar \(h\) o máximo possível (por exemplo, \(h=1\)) é sempre a escolha mais segura para verificar um gradiente.
Dica(Resposta) Teste 8 — Verificação numérica
  • ✔ Verdadeiro — O erro de truncamento da diferença finita central é \(O(h^2f'''(x))\) (ver Convenções); para um polinômio cúbico genérico, \(f'''\ne0\) (é uma constante não-nula) — diferente do caso quadrático desta aula, onde \(f'''\equiv0\) identicamente.
  • ✔ Verdadeiro — \(h=0\)\(0/0\) (numerador e denominador ambos zero) — uma indeterminação, não um valor definido; é exatamente por isso que a definição de derivada parcial exige o limite \(h\to0\), não a avaliação em \(h=0\).
  • ✔ Verdadeiro — É a prática padrão de “gradient checking” em implementações de aprendizado de máquina do zero — exatamente o que esta aula demonstrou no problema-fio, generalizável a qualquer implementação nova de gradiente.
  • ✗ Falso — Para uma função com terceira derivada não-nula (a maioria das perdas reais, item (a) deste bloco), \(h\) grande demais reintroduz erro de truncamento significativo — o compromisso entre erro de arredondamento (pequeno \(h\)) e erro de truncamento (grande \(h\)) tem um ponto ótimo intermediário, não um extremo “quanto maior, melhor”. O caso quadrático desta aula (sem termo de truncamento) é a exceção, não a regra geral.