Soluções — Aula 6: Derivadas Parciais, Gradiente e Jacobiano
Gabarito de exercicios.qmd
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.
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.
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).
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.
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.
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.
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).
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\) dá \(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.