View in NBViewer Open in binder Download notebook View source


4.4. Mínimos quadrados não-linear

Contexto

\[y(x) = \varphi(x, \boldsymbol{\beta}),\]

onde \(\boldsymbol{\beta} = (\beta_1, \ldots, \beta_m)\) é um conjunto de parâmetros (desconhecidos) do modelo.

\[y(t_i) = \varphi(x_i ; \beta), \quad i=1, \ldots, N.\]

O problema de mínimos quadrados não linear

\[ E(\boldsymbol{\beta}) = \sum_{i=1}^N |y_i - \varphi(x_i,\boldsymbol{\beta})|^2. \] \[ r_i = y_i - \varphi(x_i,\boldsymbol{\beta}), \qquad i=1, \ldots, N. \] \[ \hat{\boldsymbol{\beta}} = \operatorname{argmin}_{\boldsymbol{\beta}} \sum_{i=1}^N |y_i - \varphi(x_i,\boldsymbol{\beta})|^2. \]

Condição para ser ponto de mínimo

\[\nabla E(\hat{\boldsymbol\beta}) = 0. \] \[ \frac{\partial}{\partial \beta_j} E(\hat{\boldsymbol\beta}) = 0, \qquad \forall j=1, \ldots, m. \] \[ \frac{\partial}{\partial \beta_j} E(\hat{\boldsymbol\beta}) = \frac{\partial}{\partial \beta_j}\left( \sum_{i=1}^N \left|y_i - \varphi(x_i, \boldsymbol\beta)\right|^2 \right) = \sum_{i=1}^N (y_i - \varphi(x_i, \boldsymbol\beta))\frac{\partial}{\partial \beta_j}\varphi(x_i, \boldsymbol{\beta}) = 0, \]

para \(j=1, \ldots, m.\)

\[\nabla E(\hat{\boldsymbol\beta}) = D\mathbf{r}(\hat{\boldsymbol\beta})^t \mathbf{r}(\hat{\boldsymbol\beta}) = 0. \quad\quad (2) \]

onde \(D\mathbf{r}(\boldsymbol\beta)^t\) é a transposta da matriz Jacobiana \(D\mathbf{r}(\boldsymbol\beta)\), cujas linhas são os gradientes da função vetorial cujos componentes são os resíduos:

\[ \mathbf{r}(\boldsymbol\beta) = \left(y_i - \varphi(x_i, \boldsymbol\beta)\right)_{i=1, \ldots, n}. \]

Interlúdio para o caso linear

\[\mathbf{r}(\boldsymbol\beta) = A \boldsymbol\beta - \mathbf{b}. \] \[ D\mathbf{r}(\boldsymbol\beta) = A. \] \[ A^t(A\boldsymbol\beta) = A^t\mathbf{b}. \]

Algoritmos

Gradiente descendente

  1. Dado um ponto \(\boldsymbol{\beta}^{(k)}\), em que o erro \(E(\boldsymbol{\beta}^{(k)})\) ainda não é suficientemente pequeno (caso contrário já teríamos resolvido o problemo), calculamos o gradiente

\[ \nabla E(\boldsymbol{\beta}^{(k)}) \]
  1. Dado um "tamanho de passo" \(\eta\), "andamos" na direção contrária, escolhendo o próximo ponto \(\boldsymbol{\beta}^{(k+1)}\) como

\[ \boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - \eta \nabla E(\boldsymbol{\beta}^{(k)}). \]

Deficiências do método de gradiente descendente

Gauss-Newton

  1. Pensar no objetivo \(E(\boldsymbol{\beta}) = \|\mathbf{r}\|^2 = 0\) como um objetivo para os resíduos:

\[ \mathbf{r}(\boldsymbol{\beta}) = \mathbf{0}; \]
  1. Dado o \(k\)-ésimo termo da sequência, obter uma aproximação afim da função \(\mathbf{r}\) perto do ponto \(\boldsymbol{\beta}^{(k)}\);

  2. Minimizar o erro quadrático da aproximação afim.

  3. Olhar para essa solução como o novo termo \(\boldsymbol{\beta}^{(k+1)}\) da sequência;

  4. Repetir o processo até alcançar um dos critérios de parada.

Aproximação afim

  1. A partir do ponto \(\boldsymbol{\beta}^{(k)}\), em que o erro \(E(\boldsymbol{\beta}^{(k)})\) ainda não é suficientemente pequeno (caso contrário já teríamos resolvido o problema), buscamos uma aproximação linear para os resíduos \(\mathbf{r}(\boldsymbol{\beta})\).

  2. Como aproximação linear, é natural tomarmos a linearização em torno do ponto dado:

\[ \mathbf{r}(\boldsymbol{\beta}) \approx \mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)}), \]

onde \(D\mathbf{r}(\boldsymbol{\beta}^{(k)})\) é a diferencial de \(\mathbf{r}\), cusas linhas são os gradientes de cada resíduo \(r_i\).

Iteração

  1. Agora, buscamos \(\boldsymbol{\beta}\) de forma a minimizar o erro quadrático segundo essa aproximação afim

\[ \boldsymbol{\beta}^{(k+1)} = \operatorname{argmin}_{\boldsymbol{\beta}} \|\mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)})\|^2. \]
  1. Isso nada mais é do que um problema de mínimos quadrados linear.

  2. Assumindo-se que as colunas de \(D\mathbf{r}(\theta^{(k)})\) sejam linearmente independentes (i.e. \(N\geq m\) e matriz com posto máximo), a solução é dada pelas equações normais

\[ \left(D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)})\right)\boldsymbol{\beta}^{(k+1)} = D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t\left(D\mathbf{r}(\boldsymbol{\beta}^{(k)})\boldsymbol{\beta}^{(k)}) - \mathbf{r}(\boldsymbol{\beta}^{(k)})\right). \]
  1. Nesse caso, o processo iterativo pode ser escrito na forma

\[ \boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - \left( D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)})\right)^{-1} D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t\mathbf{r}(\boldsymbol{\beta}^{(k)}). \]

Observação: No caso de uma matriz quadrada (\(m=N\)) invertível, obtemos o método de Newton \(\boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - D\mathbf{r}(\boldsymbol{\beta}^{(k)})^{-1}\mathbf{r}(\boldsymbol{\beta}^{(k)})\).

Deficiências do Gauss-Newton

  1. O método pode divergir: Isso pode acontecer quando \(\boldsymbol\beta^{(k+1)}\) não está muito próximo de \(\boldsymbol\beta^{(k)}\), de modo que o passo seja muito grande;

  2. O método pode ter que ser abortado: A hipótese de que as colunas de \(D\mathbf{r}(\boldsymbol\beta^{(k)})\) sejam linearmente independentes pode falhar em alguma iteração, de modo que o cálculo de \(\theta^{(k+1)}\) não seja possível.

Levenberg-Marquardt

Implementação dos objetivos

\[ \|\mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)})\|^2 + \lambda\|\boldsymbol\beta - \boldsymbol\beta^{(k)}\|^2. \] \[ \|\mathbf{r}(\boldsymbol{\beta})\|^2 + \lambda\|\boldsymbol\beta - \boldsymbol\beta^{(k)}\|^2. \]

Iteração

\[ \boldsymbol\beta^{(k+1)} = \operatorname{argmin}_{\boldsymbol\beta}\left[\|\mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)})\|^2 + \lambda^{(k)}\|\boldsymbol\beta - \boldsymbol\beta^{(k)}\|^2\right]. \]

Resolução

\[ \|\mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)})\|^2 + \lambda\|\boldsymbol\beta - \boldsymbol\beta^{(k)}\|^2 \\ = \left\| \begin{matrix} \mathbf{r}(\boldsymbol{\beta}^{(k)}) + D\mathbf{r}(\boldsymbol{\beta}^{(k)})(\boldsymbol{\beta} - \boldsymbol{\beta}^{(k)}) \\ \sqrt{\lambda}(\boldsymbol\beta - \boldsymbol\beta^{(k)})\end{matrix}\right\|^2 \\ = \left\| \left[\begin{matrix} D\mathbf{r}(\boldsymbol{\beta}^{(k)}) \\ \sqrt{\lambda}I\end{matrix}\right]\boldsymbol{\beta} - \left(\begin{matrix} D\mathbf{r}(\boldsymbol{\beta}^{(k)})\boldsymbol{\beta}^{(k)} - \mathbf{r}(\boldsymbol{\beta}^{(k)}) \\ \sqrt{\lambda}\boldsymbol\beta^{(k)}\end{matrix}\right)\right\|^2. \] \[\boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - \left( D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)}) + \lambda^{(k)}I \right)^{-1} D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t \mathbf{r}(\boldsymbol{\beta}^{(k)}).\]

Amortecimento

\[\boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - \left( D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)}) + \lambda^{(k)}I \right)^{-1} D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t \mathbf{r}(\boldsymbol{\beta}^{(k)}).\] \[\left( D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)}) + \lambda^{(k)}I \right)\left(\boldsymbol{\beta}^{(k+1)} - \boldsymbol{\beta}^{(k)}\right) = - D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t \mathbf{r}(\boldsymbol{\beta}^{(k)}).\]

Sobre o parâmetro de amortecimento

Maiores informações podem ser encontradas em Boyd.

Outros métodos

Métodos livres de derivada

Exercícios

  1. Verifique a formula do gradiente da função erro \(E(\boldsymbol\beta) = \|\mathbf{r}(\boldsymbol\beta)\|^2\), onde \(\mathbf{r}(\boldsymbol\beta)\) é o vetor \(\mathbf{r}(\boldsymbol\beta) = \left(y_i - \varphi(x_i, \boldsymbol\beta)\right)_{i=1}^N\).

  2. Obtenha a fórmula

\[\boldsymbol{\beta}^{(k+1)} = \boldsymbol{\beta}^{(k)} - \left( D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t D\mathbf{r}(\boldsymbol{\beta}^{(k)}) + \lambda^{(k)}I \right)^{-1} D\mathbf{r}(\boldsymbol{\beta}^{(k)})^t \mathbf{r}(\boldsymbol{\beta}^{(k)}).\]

a partir da forma normal \(A^tA\boldsymbol{\beta} = A^t\mathbf{y}\) como descrito no método de Levenberg-Marquardt.

  1. Escreva explicitamente a fórmula iterativa \(\beta^{(k+1)} = \beta^{(k)} + \ldots\) quando temos apenas um parâmetro \(\beta\in \mathbb{R}\) e o modelo tem a forma \(y = \varphi(x, \beta) = x^2 + \sin(\beta x)\).

Referência

  1. S. Boyd, L. Vandenberghe, Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares, Cambridge University Press, 2018.