Logo Passei Direto
Buscar
Material
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

UNIVERSIDADE FEDERAL DO PARÁ
INSTITUTO DE GEOCIÊNCIAS
PROGRAMA DE PÓS-GRADUAÇÃO EM GEOFÍSICA
DISSERTAÇÃO DE MESTRADO
Inversão da forma de onda completa usando
diferenciação automática
FELIPE LOUZEIRO AZEVEDO
Belém – Pará
2023
FELIPE LOUZEIRO AZEVEDO
Inversão da forma de onda completa usando
diferenciação automática
Dissertação apresentada ao Programa de Pós-Graduação
em Geofísica do Instituto de Geociências da Universidade
Federal do Pará para obtenção do título de Mestre em
Geofísica.
Área de concentração:
Geofísica Aplicada
Linha de pesquisa:
Modelagem e inversão de dados geofísicos
Orientador: Dr. Jessé Carvalho Costa
Belém – Pará
2023
Dados Internacionais de Catalogação na Publicação (CIP) de acordo com ISBD
Sistema de Bibliotecas da Universidade Federal do Pará
Gerada automaticamente pelo módulo Ficat, mediante os dados fornecidos pelo(a)
autor(a)
A994i Azevedo, Felipe Louzeiro.
 Inversão da forma de onda completa usando
diferenciação automática / Felipe Louzeiro Azevedo. — 2023.
 109 f. : il. color.
 Orientador(a): Prof. Dr. Jessé Carvalho Costa
 Dissertação (Mestrado) - Universidade Federal do Pará,
Instituto de Geociências, Programa de Pós-Graduação em
Geofísica, Belém, 2023.
 1. Prospecção sísmica. 2. Inversão (Geofísica). 3.
Inversão da forma de onda completa. 4. Diferenciação
numérica. 5. Método dos estados adjuntos. I. Título.
CDD 550
Powered by TCPDF (www.tcpdf.org)
FELIPE LOUZEIRO AZEVEDO
Inversão da forma de onda completa usando diferenciação
automática
Dissertação apresentada ao Programa de Pós-Graduação
em Geofísica da Universidade Federal do Pará para ob-
tenção do título de Mestre em Geofísica.
Data de aprovação: 20/06/2023
Banca examinadora:
Dr. Jessé Carvalho Costa (Orientador)
Universidade Federal Pará
Dra. Ana Paula de Oliveira Muller
TG/PETROBRAS
Prof. Dr. Ricardo Biloti
IMECC/UNICAMP
AGRADECIMENTOS
Gostaria de agradecer primeiramente ao professor Jessé Costa por ter sido a base que
possibilitou o desenvolvimento deste trabalho.
Agradeço também ao Bruno Silva pela orientação adjunta disponibilizada durante as
etapas de construção deste trabalho.
Por fim, não poderia deixar de agradecer a FUNCAMP pelo suporte financeiro e ao
laboratório da CPGF pela infraestrutura fornecida.
RESUMO
Nesta dissertação, mostra-se que a diferenciação automática pode ser um método alternativo
para validar a derivação do gradiente da função objetivo usada na inversão da forma de onda
completa. A derivação do gradiente da função objetivo da inversão da forma de onda usa,
tradicionalmente, o método dos estados adjuntos. Essa abordagem precisa ser deduzida,
implementada e validada sob supervisão humana para cada problema específico. Isso pode
ser dispendioso quando o problema direto envolve alta complexidade computacional e é
uma fonte de erro comum na implementação da inversão do campo de onda. Desta forma, a
diferenciação automática pode ser uma técnica atraente na implementação da inversão, ou
pelo menos para validação do cálculo do gradiente pelo método de estados adjuntos. Neste
trabalho, deriva-se o gradiente da função objetivo de quadrados mínimos para inversão do
registro do campo de onda acústico escalar utilizando os métodos dos estados adjuntos e
da diferenciação automática. Essas abordagens são validadas em modelos de velocidades
sintéticos e os resultados mostram que a diferenciação automática produz gradiente
semelhante ao gradiente obtido pelo método dos estados adjuntos, porém mostrando
diferenças no custo computacional e principalmente na demanda de armazenamento. As
estimativas dos modelos de velocidades com os métodos de otimização de máxima descida,
de gradiente conjugado não linear e de quasi-Newton de memória limitada usando os
dois gradientes atingem precisões semelhantes. Além disso, destaca-se que as camadas de
absorção precisam ser considerada durante o cálculo do gradiente usando a diferenciação
automática. A execução serial da implementação do gradiente por diferenciação automática
apresentou um custo computacional inferior com relação ao custo requerido para calcular o
gradiente pelo método dos estados adjuntos para o modelo de velocidade de pequena escala.
No entanto, o requerimento de memória para calcular o gradiente da função objetivo por
diferenciação automática exigiu uma ordem de magnitude a mais do que a exigida para
calcular o gradiente pelo método dos estados adjuntos. Por outro lado, para o modelo de
velocidade Marmousi, o cálculo do gradiente usando diferenciação automática se mostrou
mais caro em relação ao custo necessário para calcular o gradiente pelo método dos estados
adjuntos. Para esse experimento a demanda de armazenamento requerida para calcular o
gradiente por diferenciação automática apresentou duas ordens de magnitude a mais com
relação a exigida pelo método dos estados adjuntos.
Palavras-chave: diferenciação automática; método dos estados adjuntos; gradiente;
inversão da forma de onda completa.
ABSTRACT
In this dissertation, I show that automatic differentiation can be an alternative method to
validate the gradient derivation of the objective function used at full waveform inversion.
Traditionally, the gradient derivation of the waveform inversion objective function is derived
adjoint state method. This approach needs to be manually implemented and verified for
each specific problem. This takes human effort and can be prone of error when the forward
problem involves higher computational complexity. To reduce the human intervention in
the gradient computation, automatic differentiation can be an attractive technique. Even
if only for the validation of the human derived gradient implementation. In this work, the
gradient of the least-squares objective function for acoustic scalar waveform inversion is
derived using the adjoint state method and automatic differentiation. These approaches are
validated on synthetic velocity models, and the results show that automatic differentiation
produces a gradient similar to the gradient obtained by the adjoint state method, but with
differences in computational cost and, mainly, storage demand. Velocity model estimates
with steepest descent, nonlinear conjugate gradient, and memory-limited quasi-Newton
optimization methods using both gradients achieve similar accuracies. Furthermore, I
highlighte that absorption layers need to be considered during the gradient calculation using
automatic differentiation. The serial execution of the automatic differentiation gradient
implementation has lower computational cost compared to calculating the gradient using
the adjoint state method for small-scale velocity model. However, the memory requirement
to calculate the objective function gradient using automatic differentiation is an order of
magnitude higher than that required for calculating the gradient using the adjoint state
method. On the other hand, for the Marmousi velocity model, calculating the gradient
using automatic differentiation is more expensive in terms of cost compared to calculating
the gradient using the adjoint state method. For this experiment, the storage demand
required to calculate the gradient by automatic differentiation is two orders of magnitude
higher compared to the requirement by the adjoint state method.
Keywords: automatic differentiation; adjoint state method; gradient; full waveform
inversion.
LISTA DE FIGURAS
3.1 Grafo computacional para função 𝑓 = (ℎ ∘ 𝑠1)(x) = ℎ(𝑠1(x)). . . . . . . . . 32
3.2 Grafo computacional para função rosenbrock. . . . . . . . . . . . . . . . . 33
3.3 Grafo computacional para calcular a derivada da função rosenbrock em
relação a variável de entrada 𝑥1 usando o modo direto. . . . . . . . . . . . 34
3.4 Grafo computacional para calcular o gradiente da função rosenbrock usando
o modo reverso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.5 Domínio discreto: (a) malha espacial bidimensional com Δ𝑥 e Δ𝑧 descre-
vendo os espaçamentos nas direções dos eixos𝑥𝑖 e 𝑧𝑗, respectivamente, e o
círculo preto representa a coordenada discreta e (b) malha temporal com
os pontos discretos 𝑡𝑛 com o tamanho do passo no tempo sendo Δ𝑡. . . . . 40
3.6 Código fonte escrito em Julia para a calcular o valor da função rosenbrock,
Eq. 3.17. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.7 Código para calcular o gradiente da função rosenbrock usando a ferramenta
de diferenciação automática Enzyme.jl. . . . . . . . . . . . . . . . . . . . . 45
3.8 Fluxograma para calcular o gradiente da função objetivo de quadrados
mínimos usando a função autodiff do pacote de diferenciação automática
Enzyme.jl. O bloco A mostra como o valor da função objetivo é calculado,
que exige resolver a equação da onda para obter o dado modelado. Enquanto
que, o bloco B ilustra como o gradiente da função objetivo é obtido através
do pacote de diferenciação automática Enzyme.jl, que também retorna com
o valor da função objetivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1 Geometria de aquisição usada para realizar as modelagens com os modelos
de velocidades com anomalias gaussianas e Marmousi. As fontes e os
receptores são representados pelos círculos e triângulos, respectivamente.
Os receptores são mantidos fixos durante a aquisição e coordenada para a
primeira fonte é indicado pelo círculo vermelho na extremidade esquerda
do modelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.2 Modelo de velocidade com anomalias gaussianas: (a) verdadeiro e (b) inicial. 51
4.3 Dados sísmicos sintéticos obtidos para o modelo de velocidade com anomalias
gaussianas para o tiro 25: (a) verdadeiro, (b) calculado e (c) residual. . . . 51
4.4 Gradiente da função objetivo de quadrados mínimos obtido para o modelo
de velocidade com anomalias gaussianas: (a) usando o método dos estados
adjuntos e (b) usando a diferenciação automática. Em (c) é mostrado a
diferença entre os gradientes obtidos pelo método dos estados adjuntos e
pela diferenciação automática. . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.5 Modelo de velocidade Marmousi: (a) verdadeiro e (b) inicial. . . . . . . . . 53
4.6 Dados sísmicos sintéticos obtidos para o modelo de velocidade de Marmousi
para o tiro 20 apenas: (a) verdadeiro, (b) calculado e (c) residual. . . . . . 53
4.7 Gradiente da função objetivo de quadrados mínimos obtido para o modelo
de velocidade Marmousi com: (a) o método dos estados adjuntos e (b) a
diferenciação automática. Em (c) é mostrado a diferença entre os gradientes
obtidos pelo método dos estados adjuntos e pela diferenciação automática. 54
4.8 Gradiente obtido pela diferenciação automática sem considerar as bordas
de absorção. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.9 Custo computacional para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo
de velocidade com anomalias gaussianas: a) para a condição de fronteira de
absorção simples e b) para a condição de fronteira de absorção PML. . . . 56
4.10 Demanda de alocação para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo
de velocidade com anomalias gaussianas: a) para a condição de fronteira de
absorção simples e b) para a condição de fronteira de absorção PML. . . . 57
4.11 Custo computacional para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de
velocidade Marmousi: a) para a condição de fronteira de absorção simples e
b) para a condição de fronteira de absorção PML. . . . . . . . . . . . . . . 58
4.12 Demanda de alocação para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de
velocidade Marmousi: a) para a condição de fronteira de absorção simples e
b) para a condição de fronteira de absorção PML. . . . . . . . . . . . . . . 58
4.13 Comparação das demandas de alocação de memória para a computação dos
gradientes pelo método dos estados adjuntos (curva azul) e pela diferenciação
automática (curva verde) usando modelos de velocidades com domínios de
maior escala. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.14 Resultados da FWI com os métodos SD, NLCG e L-BFGS usando o gradiente
calculado: (a), (c) e (e) pelo método dos estados adjuntos e (b), (d) e (f)
pela diferenciação automática; (a) e (b) modelos de velocidades estimados
com o método SD, (c) e (d) modelos de velocidades estimados com o método
NLCG e (e) e (f) modelos de velocidades estimados com o método L-BFGS. 62
4.15 Comparação das curvas de convergência das inversões com métodos (a) SD
, (b) NLCG e (c) L-BFGS usando os gradientes calculados pelo método
dos estados adjuntos (curvas azuis) e pela diferenciação automática (curvas
verdes) para o modelo de velocidade com anomalias gaussianas. As curvas
de convergência são apresentadas nas escalas: (a), (c) e (e) decimal e (b),
(d) e (f) logarítmica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
4.16 Distribuição percentual do método de busca linear da inversão com os
métodos SD, NLCG e L-BFGS para o modelo de velocidade com anomalias
gaussianas usando os gradientes calculados, respectivamente: (a), (c) e
(e) pelo método dos estados adjuntos e (b), (d) e (f) pela diferenciação
automática. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.17 Resultados da FWI com os métodos SD, NLCG e L-BFGS usando o gradiente
calculado: (a), (c) e (e) pelo método dos estados adjuntos e (b), (d) e (f)
pela diferenciação automática; (a) e (b) modelos de velocidades estimados
com o método SD, (c) e (d) modelos de velocidades estimados com o método
NLCG e (e) e (f) modelos de velocidades estimados com o método L-BFGS 66
4.18 Comparação das curvas de convergência das inversões com métodos (a) SD,
(b) NLCG e (c) L-BFGS usando os gradientes calculado pela método dos
estados adjuntos (curvas azuis) e pela diferenciação automática (curvas
verdes) para o modelo de velocidade Marmousi. As curvas de convergência
são apresentadas nas escalas: (a), (c) e (e) decimal e (b), (d) e (f) logarítmica. 68
4.19 Distribuição percentual do método de busca linear da inversão com os
métodos SD, NLCG e L-BFGS para o modelo de velocidade Marmousi
usando os gradientes calculados, respectivamente: (a), (c) e (e) pelo método
dos estados adjuntos e (b), (d) e (f) pela diferenciação automática. . . . . . 70
A–1 Domínio arbitrário Ω limitado pela superfície 𝜕Ω e destacando o vetor
normal unitário externo n sob um elemento de superfície 𝑑𝜕Ω. . . . . . . . 81
SUMÁRIO
1 INTRODUÇÃO 1
2 REVISÃO TEÓRICA DA INVERSÃO DA FORMA DE ONDA COM-
PLETA 4
2.1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 FORMULAÇÃO DO PROBLEMA DIRETO . . . . . . . . . . . . . . . . 6
2.3 FORMULAÇÃO DO PROBLEMA INVERSO . . . . . . . . . . . . . . . 8
2.4 EQUAÇÃO DA ONDA ACÚSTICA COMO PROBLEMA DIRETO . . . 9
2.5 PROBLEMA INVERSO PARA EQUAÇÃO DA ONDA ACÚSTICA . . . 11
2.6 MÉTODOS DE OTIMIZAÇÃO LOCAL . . . . . . . . . . . . . . . . . . . 12
2.6.1 Método de máxima descida . . . . . . . . . . . . . . . . . . . 13
2.6.2 Método de gradiente conjugado não linear . . . . . . . . . . 13
2.6.3 Método de Memória Limitado BFGS . . . . . . . . . . . . . 14
2.7 MÉTODO DE BUSCA LINEAR COM AS CONDIÇÕES DE WOLFE . . 16
2.7.1 A primeira condição de Wolfe . . . . . . . . . . . . . . . . . 17
2.7.2 A segunda condição de Wolfe . . . . . . . . . . . . . . . . . . 17
2.7.3 Algoritmo de busca linear com as condições de Wolfe . . . 18
2.8 A DIREÇÃO DE BUSCA: COMPRIMENTO DE PASSO INICIAL . . . 19
2.8.1 Normalização da direção de busca . . . . . . . . . . . . . . . 19
2.8.2 Comprimento de passo inicial . . . . . . . . . . . . . . . . . . 19
2.8.3 As novas condições de Wolfe padrão . . . . . . . . . . . . . 20
2.9 PRECONDICIONAMENTO PELA O MATRIZPSEUDO-HESSIANA . . 20
2.9.1 Complexidade do cálculo da matriz hessiana . . . . . . . . 20
2.9.2 Cálculo da matriz pseudo-hessiana . . . . . . . . . . . . . . . 21
2.9.3 Cálculo da inversa da matriz pseudo-hessiana . . . . . . . . 22
2.9.4 Escalonando a inversa da matriz pseudo-hessiana . . . . . 22
2.10 ALGORITMO DE OTIMIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . 23
2.10.1 Algoritmo SD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10.2 Algoritmo NLCG . . . . . . . . . . . . . . . . . . . . . . . . . 24
3 DERIVAÇÃO DO GRADIENTE POR DIFERENCIAÇÃO AUTOMÁ-
TICA 25
3.1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 REVISÃO DA DIFERENCIAÇÃO AUTOMÁTICA . . . . . . . . . . . . 27
3.2.1 Diferenciação numérica: diferenças finitas . . . . . . . . . . 27
3.2.2 Diferenciação automática: número dual . . . . . . . . . . . 29
3.2.3 Como a diferenciação automática trabalha . . . . . . . . . . 30
3.2.4 Um exemplo simples com a função rosenbrock . . . . . . . 32
3.3 DERIVAÇÃO DO GRADIENTE USANDO DIFERENCIAÇÃO AUTO-
MÁTICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4 O CÁLCULO DO GRADIENTE USANDO A FERRAMENTA DE DIFE-
RENCIAÇÃO AUTOMÁTICA ENZYME . . . . . . . . . . . . . . . . . . 42
3.4.1 A linguagem de programação Julia . . . . . . . . . . . . . . 42
3.4.2 Como usar o pacote diferenciação automática Enzyme.jl . 44
3.4.3 Implementação do cálculo do gradiente usando Enzyme.jl 46
4 EXPERIMENTOS NUMÉRICOS 49
4.1 VALIDAÇÃO E ASPECTOS IMPORTANTES DA DERIVAÇÃO DO
GRADIENTE USANDO DIFERENCIAÇÃO AUTOMÁTICA . . . . . . 49
4.1.1 Experimento para um modelo de velocidade com anoma-
lias gaussianas . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.1.2 Experimento para um modelo de velocidade Marmousi . 52
4.1.3 Aspectos importantes no cálculo do gradiente por dife-
renciação automática . . . . . . . . . . . . . . . . . . . . . . . 54
4.1.4 Custo e demanda de alocação de memória . . . . . . . . . . 55
4.2 ANÁLISE DOS RESULTADOS DA FWI CONVENCIONAL E DA FWI
POR DIFERENCIAÇÃO AUTOMÁTICA . . . . . . . . . . . . . . . . . . 60
4.2.1 Experimento para o modelo de velocidade com anomalias
gaussianas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2.2 Experimento para o modelo de velocidade Marmousi . . . 66
5 CONCLUSÃO 71
REFERÊNCIAS 73
APÊNDICES 80
A– DERIVAÇÃO DO GRADIENTE USANDO O MÉTODO DOS ESTA-
DOS ADJUNTOS 81
A–1 DERIVAÇÃO IMPLÍCITA DO GRADIENTE . . . . . . . . . . . . . . . 81
A–2 DERIVAÇÃO EXPLÍCITA DO GRADIENTE . . . . . . . . . . . . . . . 83
B– DERIVAÇÃO DO GRADIENTE USANDO O MÉTODO DOS ESTA-
DOS ADJUNTOS DISCRETO 88
B–1 DERIVAÇÃO DO GRADIENTE DISCRETO . . . . . . . . . . . . . . . 88
C– DERIVAÇÃO DO GRADIENTE USANDO DIFERENCIAÇÃO AU-
TOMÁTICA 94
C–1 DERIVAÇÃO DO GRADIENTE . . . . . . . . . . . . . . . . . . . . . . . 94
D– ALGORITMO NLCG 97
1 INTRODUÇÃO
A inversão da forma de onda completa visa recuperar os parâmetros físicos da sub-
superfície da Terra a partir do ajuste do campo de onda sísmico medido na superfície
(Tarantola, 1984; Virieux and Operto, 2009). A função de ajuste geralmente é uma medida
de erro entre o campo de onda observado e o campo de onda modelado. O campo de onda
modelado é obtido resolvendo normalmente a equação da onda que tem como parâmetro
uma estimativa inicial dos parâmetros físicos. A equação da onda pode ser formulada
para descrever a propagação de onda em diferentes modelos da subsuperfície, como, meios
acústico, viscoacústico, elástico, viscoelástico e meios anisotrópicos. Independente da
aproximação de onda escolhida a solução do problema inverso correspondente é frequente-
mente obtido usando métodos iterativos (Nocedal and Wright, 2006). Muitos dos métodos
iterativos exigem informações somente do gradiente da medida de erro, da função objetivo,
por exemplo, métodos de máxima descida e de gradiente conjugado não linear. Uma
estratégia eficiente para calcular o gradiente da função objetivo é usar o método dos
estados adjuntos (Plessix, 2006; Chavent, 2010). No entanto, o cálculo do gradiente da
função objetivo através do método dos estados adjuntos precisa ser derivado manualmente
para cada problema de modelagem, bem como para funções objetivos diferentes. Além
disso, a derivação do gradiente de cada função objetivo precisa ser implementada que
demanda um custo humano no processo; o cálculo do gradiente de uma função objetivo
de um problema inverso simples (como, a inversão do campo de onda acústico escalar)
já é procedimento que demanda tempo e está sujeito a erros derivação. Portanto, pode
ser desencorajador investigar problemas inversos onde o cálculo do gradiente da função
objetivo contém sutilezas de derivação matemática nada triviais. Neste sentido, usar uma
abordagem de derivação automatizada para calcular o gradiente pode encurtar o tempo
de desenvolvimento do projeto, além disso, permitir uma avaliação inicial do gradiente da
função objetivo usada na inversão.
A diferenciação automática ou algorítmica é uma técnica de derivação automatizada
baseada na regra da cadeia que permite calcular as derivadas de uma função matemática
de forma exata (Gebremedhin and Walther, 2020). Em outra palavras, uma ferramenta
de diferenciação automática aplica a regra da cadeia em uma sequência de instruções de
um programa de computador de uma função matemática para gerar um outro programa
que avalia as derivadas desta função. De acordo com Vlasenko et al. (2016) a ideia
geral subjacente de uma ferramenta diferenciação automática é a construção de um grafo
computacional acíclico que representa a sequência de instruções de uma função matemática
e a aplicação da regra da cadeia a esse grafo. Aplicação da regra da cadeia pelo grafo
computacional pode ser realiza basicamente de duas formas (Sambridge et al., 2007): i)
no mesmo sentido na qual o valor da função é avaliado, que é chamado de modo direto de
1
2
diferenciação automática ou ii) no sentido reverso na qual o valor da função objetivo é
avaliado, esse é chamado de modo reverso de diferenciação automática. Para uma função
de valor escalar o modo reverso permite calcular as derivadas com relação a todos os
argumentos de entrada da função exigindo somente uma passagem pelo grafo, ou seja, o
modo reverso de diferenciação automática permite calcular o gradiente da função. Por
outro lado, o modo direto de diferenciação automática é indicado para calcular derivadas
de funções que dispõem o número de variáveis de saída muito maior em relação ao número
de variáveis de entrada. A derivação do gradiente pelo modo reverso de diferenciação
automática é igual ao gradiente calculado pelo método dos estados adjuntos (Richardson,
2018; Sun et al., 2019; Zhu et al., 2021).
Objetivo deste trabalho é mostrar que a diferenciação automática pode ser um método
alternativo para validar o cálculo do gradiente da função objetivo da inversão da forma de
onda completa. Para isso, apresenta-se a formulação do problema inverso para a equação da
onda acústica escalar mas também o cálculo do gradiente da função objetivo de quadrados
mínimos usando os métodos dos estados adjuntos e da diferenciação automática. Experi-
mentos em modelos de velocidades sintéticos mostram que tanto a diferenciação automática
quanto o método dos estados adjuntos geram gradientes semelhantes, mas apresentam
diferenças no custo computacional e principalmente na demanda de armazenamento. A
inversão com os métodos de otimização de máxima descida, de gradiente conjugado não
linear e de quasi-Newton de memória limitada obtiveram precisão semelhantes usando
esses dois gradientes. Além disso, é necessário considerar as camadas de absorção no
cálculo do gradiente por diferenciação automática.
Este trabalho é organizado como segue. No capítulo 2, apresenta-se a revisão teórica
da inversão da forma de onda completa. Descreve-se o problema direto na seção 2.2
e o problema inverso na seção 2.3. Na seção 2.4, o problema direto é especificado sob
aproximação acústicaescalar. O método dos estados adjuntos para calcular o gradiente
da função objetivo é mostrado na seção 2.5. Enquanto que, nas seções 2.6 e 2.7 são
apresentados os métodos de otimização iterativos e o método de busca linear com as
condições de Wolfe, respectivamente. Nas seções 2.8 e 2.9 são apresentados, primeiramente,
uma estratégia para introduzir uma estimativa de comprimento do passo e como calcular a
inversa da matriz pseudo-hessiana. Por último, descreve-se os algoritmos para os métodos
de máxima descida e de gradiente conjugado não linear, seção 2.10.
No capítulo 3, realiza-se uma breve introdução aos conceitos da diferenciação automática
com destaque para os dois principais elementos da diferenciação automática: modo direto
e modo reverso, seção 3.2. Na seção 3.3, mostra-se detalhes da derivação do gradiente
usando o modo reverso de diferenciação automática. Na seção 3.4, descreve-se detalhes
do código para calcular o valor da função objetivo e como calcular o gradiente usando a
ferramenta de diferenciação automática Enzyme.jl.
3
No capítulo 4, os gradientes obtidos pela ferramenta de diferenciação automática
Enzyme.jl e com o método dos estados adjuntos são validados usando dois modelos de
velocidade sintéticos. Na seção 4.1, destaca-se alguns aspectos importantes, como custo e
memória exigido para calcular o gradiente tanto por diferenciação automática quanto pelo
método dos estados adjuntos. Na seção 4.2, avalia-se de forma quantitativa e qualitativa
os resultados da inversão usando o gradiente calculado por diferenciação automática e pelo
método dos estados adjuntos para um modelo de velocidade simples e para o modelo de
velocidade Marmousi.
2 REVISÃO TEÓRICA DA INVERSÃO DA FORMA DE
ONDA COMPLETA
Neste capítulo, faz-se uma revisão teórica da inversão da forma de onda completa,
destacando a formulação do problema direto e inverso. Em seguida, especifica-se a equação
da onda acústica escalar e a solução do problema inverso usando o método dos estados
adjuntos. Além disso, o método de busca linear baseado nas condições de Wolfe são
também descritos. Discute-se, também, os métodos de otimização de máxima descida,
gradiente conjugado não linear e o método de quasi-Newton de memória limitado. Por
fim, discute-se a estratégia de precondicionamento com a matriz pseudo-hessiana e os
algoritmos de máxima descida e de gradiente conjugado não linear.
2.1 INTRODUÇÃO
A inversão da forma de onda completa (na sigla em inglês FWI) é um desafio importante
em geofísica que tem como objetivo recuperar as propriedades físicas da subsuperfície
da Terra a partir do ajuste do campo de onda sísmico medido na superfície (Tarantola,
1984; Virieux and Operto, 2009). A solução desse problema envolve a minimização da
função objetivo que normalmente é definida como a soma quadrática do erro entre o dado
sísmico observado e o dado modelado, obtido resolvendo a equação da onda tomando
como parâmetro um modelo inicial das propriedades físicas da subsuperfície. Para resolver
o problema da FWI, é necessário calcular o gradiente da função objetivo, que indica a
sensibilidade da função objetivo a mudanças nos parâmetros do modelo e fornece um
meio de ajustar o modelo inicial para reduzir o desajuste entre o dado sísmico observado
e o dado sísmico calculado. Em outra palavras, o gradiente é usado para melhorar a
correspondência entre o dado sísmico observado e o dado sintético. Tradicionalmente, o
cálculo do gradiente da função objetivo é obtido usando o método dos estados adjuntos
(Plessix, 2006; Chavent, 2010).
O método dos estados adjuntos permite calcular o gradiente da função objetivo re-
solvendo uma equação da onda adicional, a equação da onda adjunta (Plessix, 2006).
Para calcular o gradiente, primeiro, um campo de onda direto é propagado a partir da
fonte usando um modelo inicial da subsuperfície. Então, o erro entre dado observado e
calculado é retropropagado a partir dos receptores usando o mesmo operador da equação
da onda, pois o operador da equação de onda é auto-adjunto. Uma vez calculado o campo
de onda adjunto, ele é multiplicado pela variação de primeira ordem do operador de
modelagem sísmica direto em relação aos parâmetros do modelo em cada passo de tempo.
O produto resultante a cada etapa de tempo é então somado para obter o gradiente da
função objetivo em relação aos parâmetros do modelo. Esse gradiente pode então ser
4
5
usado para atualizar os parâmetros do modelo e iniciar uma nova iteração do algoritmo
de otimização escolhido na FWI (Nocedal and Wright, 2006). Portanto, o método dos
estados adjuntos é computacionalmente eficiente porque requer apenas duas propagações
do campo de onda, uma em tempo direto e outra em tempo reverso, independentemente
do número de parâmetros do modelo. Isso contrasta com a abordagem direta para calcular
o gradiente, onde as derivadas de Fréchet são montadas (Fichtner, 2011), que exige tantas
propagações do campo de onda quantos os parâmetros do modelo.
Além disso, o operador de modelagem da equação da onda estabelece uma relação não
linear com os parâmetros do modelo e por isso é normalmente aproximado usando métodos
numéricos. O método das diferenças finitas é uma metodologia muito comum utilizada
para resolver a equação da onda (Cohen and Joly, 1996). Assim, a função objetivo é
inerentemente não linear devido a não linearidade do problema direto, que reflete na não
linearidade entre o dado sísmico modelado e os parâmetros do modelo (Tarantola, 1984).
Como resultado, os métodos tradicionais de inversão linear são inadequados para resolver
o problema da FWI, e métodos de otimização iterativos não linear, como os métodos
de máxima descida, de gradiente conjugada não linear e de quasi-Newton de memória
limitada (Nocedal and Wright, 2006), devem ser usados para encontrar a melhor estimava
dos parâmetros da subsuperfície que minimiza o custo funcional.
Os algoritmos iterativos usados na FWI podem apresentar baixa convergência se o
gradiente sofre de baixa iluminação, resultante do fenômeno de espalhamento geométrico.
Uma estratégia muito eficiente para melhorar a taxa de convergência dos métodos de
otimização iterativos usado na FWI é precondicionar o gradiente com a chamada matriz
pseudo-hessiana (Shin et al., 2001). No contexto da FWI, a matriz pseudo-hessiana é a
autocorrelação entre os elemento da diagonal da matriz hessiana aproximada (Fichtner,
2011), que é simplesmente a derivada parcial de primeira ordem do operador de modelagem
direto em relação aos parâmetros do modelo. Isso implica que a matriz pseudo-hessiana é
montada durante a modelagem direta em contraste com a computação da matriz hessiana
ou da matriz hessiana aproximada, que é muito cara para calcular diretamente no problema
da FWI (Ma and Hale, 2011).
O desenvolvimento da FWI utilizando o método do estados adjuntos é datado no fim dos
anos 1970 com o trabalho de Bamberger et al. (1979). Eles desenvolveram uma abordagem
utilizando o método dos estado adjuntos para realizar a inversão dos coeficientes da equação
de onda acústica unidimensional a partir de medições realizada somente na fronteira. A
partir desse ponto, a FWI evoluiu e expandiu para considerar modelos bidimensionais
(Gauthier et al., 1986) e tridimensionais (Vígh and Starr, 2008; Borisov and Singh, 2015),
além de incorporar outros modelos de propagação de onda, como a equação da onda para
meios elásticos (Tarantola, 1986; Mora, 1988; Brossier et al., 2009). Além disso, a FWI
também se mostrou ser bem sucedida em aplicações no domínio da frequência (Pratt,
1999; Pratt and Shipp, 1999; Brossier et al., 2009) e utilizando dados reais (Pica et al.,
6
1990; Crase et al., 1990, 1992; Sears et al., 2010; Plessix et al., 2012). A FWI também
provou ser uma estratégia eficiente no monitoramento de reservatórios de petróleo e gás
(Routh et al., 2012; Hicks et al., 2016) e para monitorar a injeção de dióxido de carbono
em estruturas geológicas (Egorov et al., 2018; Fawad and Mondol, 2022).
No entanto, a FWI ainda precisa lidarcom grandes desafios. Um problema muito
investigado na FWI é conhecidos como cycle-skipping. O cycle-skipping surge quando o
modelo inicial da FWI não contém comprimento de onda longo que esteja dentro de meio
período do comprimento de onda dominante da fonte sísmica (Denes Vigh and Kapoor,
2009). Em outras palavras, o modelo inicial da FWI está distante do modelo verdadeiro,
que reflete na defasagem de tempo entre o dado sísmico observado e o dado sintético maior
do que meio período da frequência dominante da fonte. Li and Demanet (2016) destaca
que a disponibilidade de dados sísmico de baixa frequência é crucial para o sucesso FWI
no regime acústico. Essas frequências mais baixas desempenham um papel fundamental
ao determinar os componentes de baixo número de onda do modelo (ou comprimento de
onda longo), que são essenciais para evitar a convergência da FWI para mínimos locais
incorretos, resultando em modelos imprecisos da subsuperfície. Para evitar o cycle-skipping
varias estratégias foram desenvolvidas, como métodos de multiescalas (Bunks et al., 1995;
Mao et al., 2016; Feng et al., 2021) e a utilização de métricas de similaridade diferentes
da norma de mínimos quadrados, por exemplo, medidas de custo inspiradas na distância
de transporte ótimo (Métivier et al., 2016a,b; Yang and Engquist, 2017; Métivier et al.,
2018; Poncet et al., 2018; Sambridge et al., 2022). Outras estratégias utilizadas para
mitigar cycle-skipping são a inversão de forma de onda de reflexão, na sigla em inglês RWI
(Brossier et al., 2015) e inversão de forma de onda estendida, na sigla em inglês EWI,
(Symes, 2008).
2.2 FORMULAÇÃO DO PROBLEMA DIRETO
Muitos dos problemas de modelagem sísmica são formulados como um problema
direto não linear. Esse, normalmente assume como modelo físico a equação da onda. A
modelagem da equação da onda constitui uma relação não linear entre o parâmetro do
meio m e o campo de onda u, que é formalmente definido por:
L(m)u = f , (2.1)
onde L é o operador de modelagem, ou seja, o operador da equação da onda, m é o
parâmetro do meio, que descreve a distribuição das propriedades físicas da subsuperfície,
u é a solução do problema direto não linear e f é o termo de fonte.
O experimento numérico da equação da onda deve ser capaz de reproduzir o fenômeno
da propagação da onda, de modo que o dado sísmico sintético seja uma aproximação
7
adequado1 para o dado sísmico de campo registrado. Na modelagem usando a equação da
onda o dado sísmico sintético pode ser obtido da seguinte forma:
d = 𝑆𝑟u , (2.2)
onde 𝑆𝑟 é operador de amostragem que extrai a amplitude de u na posição dos receptores.
O dado sísmico sintético depende de m, d = d(m), pois o campo de onda é função de m,
ou seja, u = u(m).
De acordo com Hirsch (2007) o fenômeno da propagação de onda é descrito por
equações diferenciais parciais hiperbólicas e esse, torna-se completo (possui solução) após
a introdução de condições iniciais para campo de onda. Isto é,
u
⃒⃒⃒
𝑡≤0
= 0 , (2.3)
onde u = u(x, 𝑡), sendo x e 𝑡 as variáveis espaciais e temporal, respectivamente, e 0 é o
vetor nulo. A condição inicial (Eq. 2.3) é especificada de forma geral para o campo de onda
e é suficiente se o operador de modelagem L é construído por equações diferenciais parciais
de primeira ordem, mas se o operador L representa um sistema de equações diferenciais
parciais de segunda ordem, então é necessário mais uma condição inicial. Isto é,
𝜕𝑡u
⃒⃒⃒
𝑡≤0
= 0 , (2.4)
onde 𝜕𝑡 denota a derivada temporal.
Na modelagem numérica é possível introduzir condições de fronteiras para representar
fronteiras físicas do mundo real. Duas representações para fronteiras físicas normalmente
empregadas na modelagem numérica são: as condições de fronteira de Dirichlet (condições
de fronteira de superfície livre) e as condições de fronteira de Neumann (condições de
superfície rígida), respectivamente,
u
⃒⃒⃒
x∈𝜕Ω
= 0 , (2.5)
∇u · n
⃒⃒⃒
x∈𝜕Ω
= 0 , (2.6)
onde n é o vetor normal unitário à superfície 𝜕Ω que limita o domínio Ω. As condições de
fronteira de superfície livre, por exemplo, pode descrever a superfície de transição entre o
mar e o ar livre. No entanto, na simulação numérica é desejável que o domínio interesse
seja capaz de representar o semi-espaço ou o espaço ilimitado. Desta forma, condições de
fronteira adicionais devem ser impostas. Muitas formulações foram propostas na literatura
para esse propósito (Clayton and Engquist, 1977; Reynolds, 1978; Higdon, 1986; Cerjan
et al., 1985; Sochacki et al., 1987; Komatitsch and Tromp, 2003; Komatitsch and Martin,
1Consegue descrever eventos sísmicos, tais como, reflexão, difração, onda direta, múltiplas.
8
2007). Independente da formulação usada, todas são projetadas para atenuar a influencia
das reflexões do campo de onda quando ele se propaga para além da fronteira do domínio
computacional. As reflexões devido as bordas do domínio computacional são chamadas de
reflexões artificiais ou espúrias. Portanto, o objetivo das fronteiras artificiais é mitigar a
inserção de informações indesejáveis ao dado sísmico modelado. Neste trabalho, usa-se
variações das chamadas condições de fronteira de absorção (na sigla em inglês ABC) de
camada de amortecimento (Sochacki et al., 1987) e as ABC de camada perfeitamente
casada, na sigla em inglês PML, (Komatitsch and Tromp, 2003).
2.3 FORMULAÇÃO DO PROBLEMA INVERSO
Na inversão da forma de onda completa, o objetivo é estimar o parâmetro do meio
m a partir do ajuste do dado sísmico observado, d̃. Isso é normalmente formulada como
um problema inverso de quadrados mínimos não linear que minimiza a função objetivo
(Tarantola, 1984),
𝐽(m) = 12 ‖ d(m)− d̃ ‖
2
2 , (2.7)
onde d = 𝑆𝑟u(m) é o dado modelado e 𝐽(m) é a função objetivo e ‖ · ‖2 denota a norma
Euclidiana de um vetor. A função objetivo 𝐽(m) é não linear, pois o problema direto é
não linear ou em outras palavras d = d(m).
A solução para o problema da FWI é obtida usando métodos iterativos, pois 𝐽(m)
é não linear e consequentemente métodos diretos são proibitivos. Os métodos iterativos
normalmente usados para resolver o problema da FWI pertence a classe de métodos
de otimização local, tais como, os métodos de descida do gradiente, os métodos de
quasi-Newton e método de Newton (Nocedal and Wright, 2006). Por exemplo, para
resolver o problema inverso pelo método de Newton, considere uma pertubação no modelo
m→m + 𝛿m e depois avalie a expansão da serie de Taylor de segunda ordem da função
objetivo na vizinhança de m e aplique a condição de otimilidade para 𝐽(m + 𝛿m), que
resulta a seguinte expressão linear (Fichtner, 2011; Métivier et al., 2012):
⎡⎣(︃ 𝜕d
𝜕m
)︃† (︃
𝜕d
𝜕m
)︃
+
(︃
𝜕2d
𝜕m2
)︃† (︁
d− d̃
)︁⎤⎦ 𝛿m = −
⎡⎣(︃ 𝜕d
𝜕m
)︃† (︁
d− d̃
)︁⎤⎦ , (2.8)
onde os termos dentro dos colchetes à esquerda da igualdade é a operador hessiano completo
H, variação de segunda ordem da função objetivo em relação a m, ou seja,
H = 𝜕
2𝐽(m)
𝜕m2
=
(︃
𝜕d
𝜕m
)︃† (︃
𝜕d
𝜕m
)︃
+
(︃
𝜕2d
𝜕m2
)︃† (︁
d− d̃
)︁
(2.9)
e os termos dentro dos colchetes à direita da igualdade é o vetor gradiente g, variação de
9
primeira ordem da função objetivo em relação a m, ou seja,
g = 𝜕𝐽(m)
𝜕m
=
(︃
𝜕d
𝜕m
)︃† (︁
d− d̃
)︁
, (2.10)
onde † denota a transposta de um operador, 𝜕d/𝜕m é o operador das derivadas de Fréchet
ou matriz de sensibilidade, 𝜕2d/𝜕m2 representa as derivadas de segunda ordem e d− d̃ é
vetor resíduo. Portanto, a solução para a relação linear (Eq. 2.8) é dada por:
𝛿m = −H−1g , (2.11)
onde H−1 representa a inversa do operador hessiano completo e 𝛿m é chamado de direção
de busca de Newton.
Portanto, a minimização iterativa da função objetivo de quadrados mínimos não linear
do problema da FWI é obtido atualizando o modelo m na direção de busca 𝛿m. Isto é,
o modelo atualizado na (𝑘 + 1)-ésima iteração pode ser escrito pelo esquema iterativo
abaixo:
m𝑘+1 = m𝑘 + 𝛼𝑘𝛿m𝑘
= m𝑘 − 𝛼𝑘H−1𝑘 g𝑘 , (2.12)
onde m𝑘 é o parâmetro do meio, 𝛼𝑘 é o comprimento de passo (um escalar positivo),que
define o quanto se deve avançar na direção de busca para atualizar o m𝑘, e 𝛿m𝑘 é a direção
de busca de Newton, que define a direção provável da melhor estimava de m𝑘+1, H−1𝑘 é a
inversa da matriz hessiana completa, g𝑘 é o vetor gradiente e 𝑘 é o índice que descreve as
iterações da inversão. A Eq. 2.12 ainda pode ser reescrita de formal geral, que segue
m𝑘+1 = m𝑘 + 𝛼𝑘p𝑘 , (2.13)
onde p𝑘 é chamado de vetor direção de busca.
2.4 EQUAÇÃO DA ONDA ACÚSTICA COMO PROBLEMA DIRETO
A formulação de onda para meios acústicos com densidade constante é aproximação
mais simples para descrever o operador de modelagem sísmica L. Esta formulação de onda
é normalmente descrita usando equações diferenciais parciais de segunda ordem, na qual
permite conectar o parâmetro do meio m(x) = [𝑣(x)] com a solução u = [𝑝(x, 𝑡)] através
do operador de modelagem não linear L = 𝑣(x)−2𝜕𝑡𝑡−∇2. Isto é, com as condições iniciais
10
e de fronteira definidas,
1
𝑣2(x)
𝜕2𝑝(x, 𝑡)
𝜕𝑡2
−∇2𝑝(x, 𝑡) = 𝑓(x𝑠, 𝑡) , (2.14)
𝜕𝑡𝑝(x, 𝑡)
⃒⃒⃒
𝑡≤0
= 0 , (2.15)
𝑝(x, 𝑡)
⃒⃒⃒
𝑡≤0
= 0 , (2.16)
∇𝑝(x, 𝑡) · n
⃒⃒⃒
𝜕Ω
= 0 , (2.17)
𝑝(x, 𝑡)
⃒⃒⃒
𝜕Ω
= 0 , (2.18)
onde 𝜕Ω é a fronteira do domínio, denotada como Ω. A aproximação acústica representa
pela Eq. 3.23 é derivada das leis dinâmica da conservação de massa, do balanço de
momento linear e do balanço de energia, conservação de entropia Thompson (1988). Onde
𝑝(x, 𝑡) é o campo de onda de pressão, 𝑣(x) é a velocidade de propagação da onda, 𝑓(x𝑠, 𝑡)
é o termo de fonte, que representa as forças de corpo, ∇2 é operador Laplaciano, que
descreve as variações espaciais de segunda ordem e x e 𝑡 são as variáveis espaciais e
temporal, respectivamente.
A aquisição de dados sísmico marinho ou terrestre de campo, in situ, é um processo
que depende da utilização de fontes artificiais. Tais fontes permite injetar energia no
meio, o qual se deseja investigar. As informações das propriedades físicas e das estruturas
geológicas da subsuperfície da Terra estão contidas na porção de energia que retorna da
subsuperfície. O registro na superfície de parte desta energia por intermédio de receptores
(hidrofones ou geofones para aquisição marinho ou terrestre, respectivamente) constitui o
dado sísmico de campo. Além disso, o dado sísmico é melhor descrito como o produto da
interação da energia da fonte com o contraste de impedância acústico entre os diferentes
materiais do meio (Ikele and Amundsen, 2005). Assim, para realizar a simulação de
dados sísmicos sintéticos, deve-se especificar a força de corpo f = [𝑓(x𝑠, 𝑡)]; representando,
terremotos, explosões e canhões de ar comprimido no levantamento de dados sísmicos. Uma
abordagem muito comum é escrever 𝑓(x𝑠, 𝑡) como o produto de uma função dependente
exclusivamente do tempo 𝑤(𝑡) com o delta de Dirichlet 𝛿(x− x𝑠), ou seja,
𝑓(x𝑠, 𝑡) = 𝑤(𝑡)𝛿(x− x𝑠) , (2.19)
onde 𝑤(𝑡) é a função que descreve o sinal da fonte e x𝑠 a posição de aplicação da fonte.
O sinal gerado pela fonte têm as seguinte características (Bulcão, 2014): i) impulsivo, ii)
transiente, iii) de banda limitada e iv) causal. Uma função que atende esses requisitos é a
função do tipo Ricker (Ricker, 1953):
𝑤(𝑡) = [1− 2𝜏 ] exp (−𝜏) , (2.20)
11
onde 𝜏 = (𝜋𝑓𝑝(𝑡− 𝑡0)× (𝜋𝑓𝑝(𝑡− 𝑡0), 𝑓𝑝 é frequência pico do sinal da fonte gerado, 𝑓𝑚𝑎𝑥 é
a componente de frequência máxima da forma de onda gerada, que é estimado de acordo
com 𝑓𝑚𝑎𝑥 =
√
2, 5𝜋𝑓𝑝, 𝑡 é o eixo do tempo, 𝑡− 𝑡0 é o tempo defasado e 𝑡0 = 1/𝑓𝑝.
Para meios heterogêneos a solução analítica da Eq. (3.23) não está acessível. Desta
forma, deve-se recorrer a métodos numéricos para determinar uma solução aproximada
para equação da onda acústico não linear. Muitos métodos numéricos podem ser usados
para resolver a Eq. 3.23, como, métodos pseudo-espectrais (Fornberg, 1987; Huang, 1992),
métodos de expansão rápida (kosloff et al., 1989; Tessmer, 2011; Chu and Stoffa, 2012)
e métodos das diferenças finitas (Alford et al., 1974; Moczo et al., 2007; Strikwerda,
2004). Neste trabalho, recorre-se ao método das diferenças finitas devido sua eficiência
e simplicidade. No método das diferenças finitas três aspectos são importantes ressaltar.
O primeiro é a questão da estabilidade numérica, que se refere à capacidade do método
de produzir soluções precisas e confiáveis sem amplificar erros numéricos ou oscilações
indesejáveis. Em outras palavras, uma solução numérica é considerada estável se pequenas
perturbações nos dados de entrada não produzem grandes mudanças na solução obtida. A
estabilidade numérica requer a escolha adequada de um tamanho do passo de tempo, que
depende da velocidade máxima do modelo e do espaçamento entre os pontos do domínio
discretizado. O segundo aspecto é a dispersão numérica, produzido quando se utiliza uma
discretização espacial com um espaçamento grande em relação ao comprimento de onda
que está sendo modelado. Isso pode resultar em erros na propagação da onda e alterar
a forma e a amplitude da onda ao longo do tempo. A dispersão numérica depende da
frequência máxima do sinal da fonte e da aproximação usada para discretizar a equação
da onda. Existem várias técnicas para mitigar a dispersão numérica, incluindo o uso
de malhas mais refinadas e a utilização de esquemas de diferenças finitas de alta ordem.
Por fim, a questão das condições de fronteira, uma vez que o modelo discreto é limitado
espacialmente, como discutido anteriormente.
2.5 PROBLEMA INVERSO PARA EQUAÇÃO DA ONDA ACÚSTICA
O funcional de quadrados mínimos para medir o desajuste entre os campos de onda de
pressão calculado e observado é definido da seguinte forma (Tarantola, 1984):
𝐽(𝑣; 𝑝) = 12
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡
∑︁
𝑟
[𝑝(x𝑟, 𝑡; x𝑠)− 𝑝(x𝑟, 𝑡; x𝑠)]2 , (2.21)
onde 𝑝(x𝑟, 𝑡) é o campo de onda observado nas estações de registro na posição x𝑟 e 𝑝(x𝑟, 𝑡)
é o campo de onda modelado pela equação de onda e também registrado na posição x𝑟.
A solução do problema inverso é obtida minimizando o funcional de quadrados mínimos,
𝐽(𝑣; 𝑝), com relação a 𝑣(x) e satisfazendo a equação de onda Eq.(3.23). Isto é, o problema
inverso é formulado como um problema de quadrados mínimos com restrição. A solução do
12
problema inverso geralmente é obtido através de métodos iterativos. Esses normalmente
requerem informações do gradiente da função objetivo. Um abordagem eficiente para
derivar o gradiente de 𝐽(𝑣; 𝑝) é usar o método dos estados adjuntos, na sigla inglês ASM,
(Chavent, 2010). O método dos estados adjuntos evita calcular o operador das derivadas
de Fréchet ou matriz Jacobiana (Tarantola, 1984; Plessix, 2006). Formalmente, o gradiente
do funcional de quadrados mínimos é dado por (ver apêndice A–):
∇𝐽(𝑣; 𝑝) = 2
𝑣3(x)
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡𝜆(x, 𝑡; x𝑠)
𝜕2𝑝(x, 𝑡; x𝑠)
𝜕𝑡2
, (2.22)
onde ∇𝐽(𝑣) é visto como a correlação cruzada de atraso zero entre a derivada temporal
de segunda ordem do campo da fonte, solução da equação da onda, e o multiplicador de
Lagrange 𝜆(x, 𝑡) que agora é campo de onda adjunto. O campo de onda adjunto é solução
da equação de onda adjunta, dado por (com as condições finais e de fronteira definidas):
1
𝑣2(x)
𝜕2𝜆(x, 𝑡)
𝜕𝑡2
−∇2𝜆(x, 𝑡) = 𝑟(x𝑟, 𝑡) , (2.23)
𝜕𝑡𝜆(x, 𝑡)
⃒⃒⃒
𝑡≥𝑇
= 0 (2.24)
𝜆(x, 𝑡)
⃒⃒⃒
𝑡≥𝑇
= 0 , (2.25)
∇𝜆(x, 𝑡) · n
⃒⃒⃒
𝜕Ω
= 0 (2.26)
𝜆(x, 𝑡)
⃒⃒⃒
𝜕Ω
= 0 , (2.27)
onde 𝑟(x𝑟, 𝑡) é o termo de fonte adjunta, ou seja, é o resíduo entre o dado modelado,
𝑝(x𝑟, 𝑡), e o dado observado, 𝑝(x𝑟, 𝑡),
𝑟(x𝑟, 𝑡) = [𝑝(x, 𝑡)− 𝑝(x, 𝑡)] 𝛿(x− x𝑟) , (2.28)
onde 𝛿(x − x𝑟) é o delta de Dirichlet e x𝑟 são as coordenadas das estações de registro.
Portanto, o método dos estados adjuntos permite calcular o gradiente resolvendo um
problema em tempo direto, equação da onda, e outro em tempo reverso, equação da onda
adjunta.
2.6 MÉTODOS DE OTIMIZAÇÃO LOCAL
Um pré-requisito para um algoritmo de otimização local é ter acesso ao gradiente da
função objetivo. Anteriormente, mostrou-se que o métodode Newton é um algoritmo
de otimização local que requer o gradiente da função objetivo mas também a matriz
hessiana completa, o esquema iterativo descrito pela Eq. 2.12. Entretanto, para um
problema de larga escala, como é o caso do problema da FWI, a computação da matriz
13
hessiana completa é proibitiva (Ma and Hale, 2011). Essa limitação inviabiliza o acesso às
informações de segunda ordem e sugere o uso de algoritmos que requerem uma aproximação
da matriz hessiana completa e (ou somente) do gradiente. Os métodos de otimização local
que exigem somente à informação do gradiente são chamados de métodos de descida do
gradiente (Nocedal and Wright, 2006), como, o método de máxima descida e o método
do gradiente conjugado não linear. Enquanto que, os métodos de otimização local que
usam uma aproximação da matriz hessiana ou da inversa da matriz hessiana são chamados
de métodos de quasi-Newton (Nocedal and Wright, 2006), como, o método de Broyden,
Fletcher, Goldfarb e Shanno (BFGS) e o método de memória limitado BFGS. Neste
trabalho, use-se os métodos de máxima descida, de gradiente conjugado não linear e de
memória limitado BFGS.
2.6.1 Método de máxima descida
Uma escolha simples para a direção de busca é escolher o oposto da direção do gradiente
(Nocedal and Wright, 2006), ou seja,
p𝑘 = −g𝑘 , (2.29)
onde g𝑘 = ∇𝐽(m𝑘) denota o vetor gradiente da função objetivo, Eq. 2.21. Essa escolha
define o método chamado de máxima descida, na sigla em inglês SD. Esse têm a menor
complexidade em termos de custo computacional e de requerimento de memória, visto que
somente o gradiente precisa ser calculado e armazenado na memória em cada iteração.
Entretanto, o algoritmo SD possui uma taxa de convergência muito lenta, principalmente,
quando o comprimento de passo, 𝛼𝑘, assume valores muito pequenos, portanto, ele
geralmente exige muitas iterações para convergir.
2.6.2 Método de gradiente conjugado não linear
O método de gradiente conjugado não linear (na sigla em inglês NLCG) é uma extensão
do método de gradiente conjugado (CG) para problemas de otimização não linear ou
não-quadrático (Nocedal and Wright, 2006). Esse é definido de forma similar ao método
gradiente conjugado, ou seja, ele diminui o valor da função objetivo ao longo da direção
conjugada (Nocedal and Wright, 2006):
p𝑘 = −g𝑘 , 𝑘 = 0 (2.30)
p𝑘 = −g𝑘 + 𝛽𝑘p𝑘−1 . 𝑘 > 0 (2.31)
No método CG existe um expressão geral para calcular o parâmetro escalar 𝛽𝑘. Mas, isso
não é verdade no método NLCG, onde diferentes expressões podem ser escolhidas (Hager
14
and Zhang, 2006). No trabalho proposto por Dai and Yuan (2001) é sugerido um método
híbrido, dado pela combinação das fórmulas HS (Hestenes and Stiefel, 1952) e DY (Dai
and Yuan, 1999), respectivamente, que segue:
𝛽𝐻𝑆𝑘 =
g𝑘 · (g𝑘 − g𝑘−1)
(g𝑘 − g𝑘−1) · p𝑘−1
, (2.32)
𝛽𝐷𝑌𝑘 =
g𝑘 · g𝑘
(g𝑘 − g𝑘−1) · p𝑘−1
(2.33)
e
𝛽𝑘 = max
(︁
0, min
(︁
𝛽𝐻𝑆𝑘 , 𝛽
𝐷𝑌
𝑘
)︁)︁
, (2.34)
onde o ponto nas expressões acima denota o produto interno para vetores. No método
NLCG a primeira iteração, 𝑘 = 0, é simplesmente a direção de busca de máxima descida
(Eq. 2.30), enquanto que, para as iterações 𝑘 ≥ 1 é definida a direção conjugada, Eq. 2.31.
No método NLCG a direção de busca não é necessariamente conjugada com relação
a alguma matriz fixa, como acontece no método CG. Entretanto, ele satisfaz a seguinte
condição de conjugação fraca (Hager and Zhang, 2006):
p𝑘 · (g𝑘 − g𝑘−1) = 0 , 𝑘 > 1. (2.35)
Para o método HS a propriedade de conjugação (Eq. 2.35) sempre se mantém, indepen-
dentemente do método de busca linear. Enquanto que, o método DY tem convergência
global quando implementado com um método de busca linear baseado nas condições de
Wolfe padrão (Dai and Yuan, 1999).
O custo computacional do método NLCG não excede o requerido pelo método SD, pois
esse requer somente calcular o gradiente. Entretanto, possui requerimento de memória
diferente pois o cálculo do parâmetro 𝛽𝑘 requer salvar na memória o gradiente e a direção
de busca da iteração anterior.
2.6.3 Método de Memória Limitado BFGS
O método de memória limitada BFGS é uma variante do método quasi-Newton BFGS,
onde BFGS é um acrônimo dos nomes de seus descobridores Broyden, Fletcher, Goldfarb
e Shanno. Os métodos quasi-Newton diferem do método de Newton por usar uma matriz
hessiana aproximada ou sua inversa no lugar da matriz hessiana verdadeira (Nocedal and
Wright, 2006). Nos métodos quasi-Newton a direção de busca é definida por (Nocedal and
Wright, 2006):
p𝑘 = −𝐵−1𝑘 g𝑘 , (2.36)
15
onde 𝐵𝑘 é a matriz hessiana aproximada na k-ésima iteração. Uma escolha útil para
implementação dos método de quasi-Newton é reescrever a inversa da matriz hessiana
aproximada na forma 𝐻𝑘 = 𝐵−1𝑘 . Assim, a direção de busca é redefinida por (Nocedal and
Wright, 2006):
p𝑘 = −𝐻𝑘g𝑘 , (2.37)
onde 𝐻𝑘 é a inversa da matriz hessiana aproximada na k-ésima iteração. Essa escolha
permite calcular a direção de busca, Eq. 2.37, como uma multiplicação matriz-vetor. O
que os métodos de quasi-Newton fazem é calcular a Eq. 2.37, ou seja, o produto 𝐻𝑘g𝑘
usando um procedimento recursivo.
No método BFGS a matriz 𝐻𝑘 é obtida pela seguinte expressão (Nocedal and Wright,
2006):
𝐻𝑘+1 =
(︁
𝐼 − 𝜌𝑘v𝑘s†𝑘
)︁
𝐻0𝑘
(︁
𝐼 − 𝜌𝑘v𝑘s†𝑘
)︁
+ 𝜌𝑘s𝑘s†𝑘 , (2.38)
onde
s𝑘 = m𝑘+1 −m𝑘 , (2.39)
v𝑘 = g𝑘+1 − g𝑘 , (2.40)
𝜌𝑘 =
1
v†𝑘s𝑘
, (2.41)
com † representando a transposta e 𝐼 a matriz identidade. A variável s𝑘 armazena as
variações dos parâmetros do meio, enquanto que, a variável v𝑘 armazena as variações dos
gradientes. No método BFGS ou uma variação deste a aproximação atualizada da inversa
da matriz hessiana aproximada, 𝐻𝑘+1, deve ser uma matriz definida positiva e simétrica e
deve satisfaz a equação secante (Nocedal and Wright, 2006):
𝐻𝑘+1v𝑘 = s𝑘 . (2.42)
De acordo com Nocedal and Wright (2006) a equação secante só é capaz de mapear s𝑘
para v𝑘 se a condição de curvatura s†𝑘v𝑘 > 0 for satisfeita.
Portanto, o método BFGS estima a inversa da matriz hessiana aproximada usando o
histórico das variações dos modelos e dos gradientes para atualizar uma dada aproximação
inicial, 𝐻0𝑘 , que normalmente é a matriz identidade.
Para problemas de larga escala o cálculo da inversa da matriz hessiana aproximada não
pode ser realizada a um custo razoável, pois 𝐻𝑘 precisa ser armazenada em cada iteração.
Para contornar esse problema, Nocedal (1980) propõe aproximar implicitamente 𝐻𝑘 usando
somente 𝑚 estágios anteriores dos pares de vetores {s𝑖, v𝑖} para 𝑖 = 𝑘 −𝑚, · · · , 𝑘 − 1,
16
com 𝑚 definido o número de pares que precisam ser armazenados. Inicialmente chamado
de método quasi-Newton amostrado, esse método agora é conhecido como método de
memória limitada BFGS ou simplesmente L-BFGS. O método L-BFGS aproxima 𝐻𝑘 pela
seguinte fórmula (Nocedal and Wright, 2006):
𝐻𝑘 =
(︁
𝑉 †𝑘−1 · · ·𝑉
†
𝑘−𝑚
)︁
𝐻0𝑘 (𝑉𝑘−1 · · ·𝑉𝑘−𝑚)
+ 𝜌𝑘 −𝑚
(︁
𝑉 †𝑘−1 · · ·𝑉
†
𝑘−𝑚+1
)︁
s𝑘−𝑚s†𝑘−𝑚
(︁
𝑉 †𝑘−𝑚+1 · · ·𝑉𝑘−1
)︁
+ 𝜌𝑘 −𝑚 + 1
(︁
𝑉 †𝑘−1 · · ·𝑉
†
𝑘−𝑚+2
)︁
s𝑘−𝑚+1s†𝑘−𝑚+1
(︁
𝑉 †𝑘−𝑚+2 · · ·𝑉𝑘−1
)︁
+ · · ·
+ 𝜌𝑘−1s𝑘−1s†𝑘−1 , (2.43)
onde
𝑉𝑖 =
(︁
𝐼 − 𝜌𝑖v𝑖s†𝑖
)︁
para 𝑖 = 𝑘 −𝑚, · · · , 𝑘 − 1 .
De acordo com Nocedal and Wright (2006) valores apropriados para 𝑚 deve está entre 3 e
20. Neste trabalho, para permitir um compromisso entre eficiência, custo computacional e
requerimento de memória, usou-se 𝑚 = 5.
Além disso, para que método L-BFGS seja estável é necessário que a o método de busca
linear satisfaça as condições de Wolfe padrão ou as condições de Wolfe forte (Nocedal and
Wright, 2006).
2.7 MÉTODO DE BUSCA LINEAR COM AS CONDIÇÕES DE WOLFE
Uma estratégia de busca linear é um procedimento normalmente usado por muitos dos
métodos de otimização local. Independente do método de busca linear escolhido, todos
compartilham o mesmo objetivo, encontrar o comprimento de passo ótimo para escalar a
direção de busca. Uma estratégia de busca linear eficazpara determinar o comprimento de
passo é importante para diminuir o custo da otimização. Infelizmente, como o problema
da FWI é um problema de larga escala, então, métodos de busca linear exatos não podem
ser usados para determinar o comprimento de passo ótimo, pois tais métodos requerem
muitas avaliações da função objetivo e do gradiente. Uma alternativa normalmente e muito
eficiente usada para determinar o comprimento de passo são os métodos de busca linear
baseado nas condições de Wolfe (Nocedal and Wright, 2006). As condições de Wolfe são
critérios tomados sobre o comprimento de passo a fim de avaliar se a redução do valor da
função objetivo é suficiente para melhorar a convergência da otimização. O método de
Newton por usar a matriz hessiana completa supostamente possui uma direção de busca
adequada. Em outras palavras, ele é dito ser bem escalado e isso implica que a direção de
busca de Newton já possui o comprimento de passo ótimo. Assim, o comprimento de passo
para o método de Newton deve ser sempre constante e unitário (Nocedal and Wright, 2006).
17
Mas, isso não é verdade para métodos de descida do gradiente (SD e NLCG), portanto, tais
métodos exigem algoritmos de busca linear eficiente para estabelecer um comprimento de
passo que assegure que direção de busca reduzirá o valor da função objetivo. Os métodos
quasi-Newton usam um aproximação da matriz hessiana completa, assim, também exigem
uma estratégia de busca linear para fornecer um comprimento de passo aceitável. Nesses,
um comprimento de passo unitário como valor de partida é sempre a melhor escolha.
2.7.1 A primeira condição de Wolfe
A condição de diminuição suficiente ou primeira condição de Wolfe (ou condição
de Armijo) deve estipular um comprimento de passo, 𝛼𝑘, para causar uma diminuição
suficiente no valor da função objetivo, conforme a seguinte desigualdade (Nocedal and
Wright, 2006):
𝐽(m𝑘 + 𝛼𝑘p𝑘) ≤ 𝐽(m𝑘) + 𝑐1𝛼𝑘∇𝐽(m𝑘) · p𝑘 , (2.44)
onde 𝑐1 ∈ [0, 1] especifica uma tolerância não negativa e normalmente assume valor de
10−4. O lado direito da Eq. 2.44 é uma aproximação linear de 𝐽(m𝑘 + 𝛼𝑘p𝑘) se 𝑐1 = 1.
Então, para 𝑐1 = 1 o decrescimento do valor da função objetivo deve ser dado por essa
aproximação de primeira ordem. Entretanto, se 𝑐1 = 0 então qualquer diminuição no valor
da função objetivo, 𝐽(m𝑘), é aceitável. A primeira condição de Wolfe não é suficiente para
garantir a convergência para um mínimo local da função objetivo. Além disso, ela é sempre
satisfeita para valores suficientemente pequenos de 𝛼𝑘, que pode conduzir à convergência
muito lenta ou prematura, se o 𝛼𝑘 já estiver muito pequeno. Para contornar comprimento
de passo muito pequenos um outro critério é usado, chamado de condição de curvatura.
2.7.2 A segunda condição de Wolfe
A condição de curvatura ou segunda condição de Wolfe exige que 𝛼𝑘 satisfaça a seguinte
desigualdade (Nocedal and Wright, 2006):
∇𝐽(m𝑘 + 𝛼𝑘p𝑘) · p𝑘 ≥ 𝑐2∇𝐽(m𝑘) · p𝑘 . (2.45)
onde 𝑐2 ∈ [𝑐1, 1] especifica uma tolerância não negativa. Valores típicos de 𝑐2 são 0.1 para
direção de busca de gradiente conjugado e 0.9 para direção de busca de quasi-Newton. A
Eq. 2.45 avalia uma derivada direcional na iteração 𝑘 e um outra na iteração 𝑘 + 1. A
condição de curvatura garante que a inclinação da função objetivo avaliado m𝑘 + 𝛼𝑘p𝑘
deve ser maior que 𝑐2∇𝑓(m𝑘). Isso, pode ser visto da seguinte forma: se a inclinação
𝑓(m𝑘 + 𝛼𝑘p𝑘) for muito negativa, então deve-se estar longe do mínimo e assim o valor da
função objetivo pode ser reduzido. Caso contrário, se a inclinação de 𝑓(m𝑘 + 𝛼𝑘p𝑘) não
for tão negativa ou mesmo positiva, então não se pode esperar muito mais decréscimo da
18
função objetivo nessa direção. A condição de curvatura pode assumir um critério ainda
mais restritivo para inclinação da função objetivo avaliado em m𝑘 + 𝛼𝑘p𝑘. Esse novo
critério é chamado de condição de curvatura forte e é dada por (Nocedal and Wright,
2006):
|∇𝐽(m𝑘 + 𝛼𝑘p𝑘) · p𝑘| ≤ −𝑐2∇𝐽(m𝑘) · p𝑘 . (2.46)
onde |.| denota o modulo de um número. Essa condição não deixa a inclinação de
𝑓(m𝑘 + 𝛼𝑘p𝑘) ser muito positiva, portanto, confinando possíveis valores de 𝛼𝑘 que produza
diminuição do valor da função objetivo na direção do mínimo da função.
As condições de decrescimento suficiente, Eq. 2.44, e de curvatura, Eq. 2.45, são
chamada de condições de Wolfe padrão, enquanto que, as condições de decrescimento
suficiente, Eq. 2.44, e de curvatura forte, Eq. 2.46, são conhecidas como condições de
Wolfe forte (Nocedal and Wright, 2006; Métivier et al., 2016a).
2.7.3 Algoritmo de busca linear com as condições de Wolfe
O algoritmo de busca linear com as condições de Wolfe deve ser projetado para encontrar
o comprimento de passo que satisfaça a condição de decrescimento suficiente, Eq. 2.44, e
a condição de curvatura, Eq. 2.45, em conjunto. No trabalho de Métivier et al. (2016a) é
projetado um o algoritmo de busca linear para encontrar o 𝛼 que satisfaça as condições de
Wolfe padrão e segue:
1. Inicializa o comprimento de passo máximo 𝛼𝑚𝑎𝑥 e mínimo 𝛼𝑚𝑖𝑛 para zero.
2. Verifica se o valor do tamanho de passo inicial 𝛼 satisfaz as condições de Wolfe
padrão. Se isso acontecer então pare e retorne com o 𝛼.
3. Se a primeira condição de Wolfe não for satisfeita, então faça
• 𝛼𝑚𝑎𝑥 = 𝛼;
• 𝛼 = 0.5(𝛼𝑚𝑖𝑛 + 𝛼𝑚𝑎𝑥) e;
• volte para etapa 2.
4. Se a segunda condição de Wolfe não for satisfeita, então faça
• 𝛼𝑚𝑖𝑛 = 𝛼;
• Se 𝛼𝑚𝑎𝑥 = 0, então tome 𝛼 = 10𝛼;
• Se 𝛼𝑚𝑎𝑥 ̸= 0, então tome 𝛼 = 0.5(𝛼𝑚𝑖𝑛 + 𝛼𝑚𝑎𝑥) e;
• volte para etapa 2.
19
5. Se depois de um número máximo de avaliações o algoritmo de busca linear não
encontrar o comprimento de passo 𝛼 adequado, então a busca linear falhou e, portanto,
pare a inversão.
Além disso, vale ressaltar que o algoritmo de busca linear implementadoa aqui usa
a estratégia de comunicação reversa de modo similar como projetado em Métivier et al.
(2016a).
2.8 A DIREÇÃO DE BUSCA: COMPRIMENTO DE PASSO INICIAL
Uma estratégia muito eficiente e simples para melhorar a convergência dos algoritmos
SD e NLCG é normalizar a direção de busca. Essa abordagem trás duas vantagens: 1)
permite inserir uma estimava inicial do comprimento de passo com unidade de velocidade
(metros/segundo) e 2) assegura estabilidade do método de busca linear baseado nas
condições de Wolfe padrão.
2.8.1 Normalização da direção de busca
A normalização da direção de busca, que garante a introdução de uma estimava inicial
do comprimento de passo com dimensão de velocidade e estabiliza as condições de Wolfe
padrão é definida por:
p̄𝑘 =
p𝑘
‖ p𝑘 ‖∞
, (2.47)
onde ‖ p ‖∞ representa a norma infinita do vetor p, isto é, o máximo valor do absoluto do
vetor direção de busca, e p̄ é o vetor direção de busca normalizado. O valor máximo de p̄
é unitário e isso permite introduzir fatores de escala.
2.8.2 Comprimento de passo inicial
O vetor direção de busca normalizado permite introduzir uma escala para direção de
busca. Como os métodos de otimização aqui pretendem estimar a velocidade da onda
acústica do meio, então, uma escala adequada deverá assumir dimensão de velocidade.
Isso é realizado da seguinte forma:
p̄𝑘 = 𝜂 p̄𝑘 , (2.48)
onde 𝜂 é a estimava inicial do comprimento de passo, que pondera o vetor direção de
busca normalizado. O valor de 𝜂 deve ter unidade de metros por segundo. A magnitude
de 𝜂 deve ser determinada de forma empírica a depender do modelo de velocidade a ser
estimado.
20
2.8.3 As novas condições de Wolfe padrão
A partir desta nova definição para o vetor direção de busca, Eq. 2.48, deve-se perguntar
como essa escolha deve afetar as condições Wolfe? Inserindo o novo vetor direção de busca,
p̄, nas Eqs. 2.44 e 2.45, pode-se afirmar que a condição de decrescimento suficiente é
modificada,
𝐽(m𝑘+1) ≤ 𝐽(m𝑘) +
𝜂
‖ p𝑘 ‖𝐼𝑛𝑓
𝑐1𝛼𝑘∇𝐽(m𝑘) · p𝑘 , (2.49)
enquanto que, a condição curvatura não é alterada,
𝜂
‖ p𝑘 ‖𝐼𝑛𝑓
∇𝐽(m𝑘+1) · p𝑘 ≥
𝜂
‖ p𝑘 ‖𝐼𝑛𝑓
𝑐2∇𝐽(m𝑘) · p𝑘. (2.50)
Como discutido anteriormente a respeito da condição de decrescimento suficiente, que
quando 𝑐1 = 1 e 𝛼𝑘 = 1 temos que o lado direito da desigualdade, Eq. 2.49, é uma
aproximação de primeira ordem para função univariável 𝐽(m𝑘+1). Agora, observe que a
quantidade 𝜂/ ‖ p𝑘 ‖𝐼𝑛𝑓 é sempre positiva e diferente de zero, assim, essa quantidade afasta
o lado direito da desigualdade, Eq. 2.49, de ser uma aproximação linear para 𝐽(m𝑘+1).
Portanto, o termo 𝜂/ ‖ p𝑘 ‖𝐼𝑛𝑓 parece funcionar como um peso para 𝑐1 considerando
a escala de magnitude do gradiente ao longo de cada iteração 𝑘, alterando a primeira
condição de Wolfe. Enquanto que, a nova direção de busca não altera a segunda condição
de Wolfe, visto que 𝜂/ ‖ p𝑘 ‖𝐼𝑛𝑓 aparece em ambos os lados da desigualdade, Eq. 2.50.
2.9 PRECONDICIONAMENTO PELA O MATRIZ PSEUDO-HESSIANA
Uma estratégia muito importante para acelerar a convergência dos algoritmos iterativos
de otimização não linear é precondicionar o gradiente pelo o que é chamado de matriz
pseudo-hessiana (Chen and Sacchi, 2017). Esta estratégia pode ajudar a recuperar a
energia atenuada devido ao fenômeno de espalhamento geométrico (Ikele and Amundsen,
2005). Tal abordagem melhora as amplitudes das regiões do gradiente mais afetadas pelo
espalhamento geométrico, portanto equilibrado a iluminação do mesmo e consequentemente
realçando as estruturas mais profundas do modelo a ser estimado durante a otimização
(Abreu and Porsani, 2017). No trabalho de (Shin et al., 2001) é proposto o método
de precondicionamento usando os elementos da diagonal principal do matriz hessiana
aproximada, sendo chamada de matriz pseudo-hessiana.
2.9.1 Complexidade do cálculo da matriz hessiana
A construção da matriz hessiana completo para muitos dos problemas inversos em
geofísica, torna-se impraticável devido ao alto custo computacional e ao elevado requeri-
mento de memória exigido na sua computação (Ma and Hale, 2011). O requerimento de
21
memória é o maior obstáculo para calcular diretamente a matriz hessiana. Para quantificar
o tamanho deste obstáculo, reescreve-se a matriz hessiana, Eq. 2.9, explicitando os índices
das fontes 𝑠 = 1, · · · , 𝑁𝑠 e dos receptores 𝑟 = 1, · · · , 𝑁𝑟, tem-se
𝐻𝑖𝑗 =
𝜕2𝐽
𝜕𝑚𝑖𝜕𝑚𝑗
=
∑︁
𝑠
∑︁
𝑟
[︃(︃
𝜕𝑑𝑟
𝜕𝑚𝑖
)︃(︃
𝜕𝑑𝑟
𝜕𝑚𝑗
)︃
+
(︃
𝜕2𝑑𝑟
𝜕𝑚𝑖𝜕𝑚𝑗
)︃(︁
𝑑𝑟 − 𝑑𝑟
)︁]︃
, (2.51)
onde 𝑖 = 1, · · · , 𝑁 e 𝑗 = 1, · · · , 𝑁 são os índices do parâmetro do modelo m, com 𝑁
representando o número total de parâmetros do modelo, 𝑁𝑠 é o número total de estações
de tiro e 𝑁𝑟 é o número total de estações de registro. A matriz 𝐻𝑖𝑗 precisa ser construída
e armazenada uma única vez e consequentemente invertida para resolver o problema da
FWI, Eq. 2.12, que não é uma operação trivial mesmo com todo avanço na tecnologia dos
microprocessadores atuais. Normalmente o termo de segunda ordem, última da parcela na
Eq. 2.51, é desprezado o que conduz à (Fichtner, 2011)
�̄�𝑖𝑗 =
∑︁
𝑠
∑︁
𝑟
[︃(︃
𝜕𝑑𝑟
𝜕𝑚𝑖
)︃(︃
𝜕𝑑𝑟
𝜕𝑚𝑗
)︃]︃
, (2.52)
onde �̄�𝑖𝑗 é chamada de matriz hessiana aproximada. O requerimento de memória exigido
para armazenar �̄�𝑖𝑗 é proibitivo para 𝑁 grande, como é o caso do problema da FWI. Por
exemplo, se cada elemento da matriz �̄�𝑖𝑗 for alocado com precisão dupla e para um modelo
de velocidade de tamanho 300 por 1000, ou seja, 𝑁 = 3×105 pontos, então, são necessários
670.55 gigabytes de memória para armazenar a matriz hessiana aproximada. Enquanto que,
o custo computacional para calcular �̄�𝑖𝑗 precisaria de 300000 modelagens da equação da
onda. Portanto, é necessário reduzir custo e a memória no cálculo e armazenamento de �̄�𝑖𝑗 .
Isso, foi conseguido por conjunto de simplificações, inicialmente introduzida no trabalho
de Pratt et al. (1998) e Tarantola (1988) e por último por Shin et al. (2001). A redução do
custo computacional obtidas por eles para calcular a matriz hessiana aproximada, partindo
de 𝑁 × 𝑁 foi 𝑁𝑠 × 𝑁 → 𝑁𝑠 × 𝑁𝑟 → 𝑁𝑠, respectivamente. Tais suposições resulta na
chamada matriz pseudo-hessiana, que precisa de somente de uma modelagem da equação
da onda por tiro para ser computada (Shin et al., 2001). Enquanto que, a demanda de
armazenamento para matriz pseudo-hessiana depende somente da dimensão do modelo de
velocidade.
2.9.2 Cálculo da matriz pseudo-hessiana
Como já mencionamos, o precondicionamento do gradiente é uma estratégia importante
para acelerar a taxa de convergência dos algoritmos e consequentemente diminuir a
demanda computacional exigida na FWI. O operador de precondicionamento usado para
precondicionar o gradiente é visto como a auto-correlação de atraso zero dos elementos da
22
diagonal principal da matriz hessiana aproximada (Eq. 2.52), que segue (Shin et al., 2001):
𝑃 =
∑︁
𝑠
(︃
𝜕L
𝜕m
u
)︃† (︃
𝜕L
𝜕m
u
)︃
, (2.53)
onde 𝑃 é chamado de matriz pseudo-hessiana, L é o operador de modelagem sísmica, u é
o vetor solução para o problema direto e o símbolo † denota a transposta. Assim, matriz
pseudo-hessiana para a equação de onda escalar (3.23), onde o operador de modelagem
L = 𝑣(x)−2𝜕𝑡𝑡 − ∇2, o vetor dos parâmetro do meio m(x) = [𝑣(x)] e o vetor solução
u = [𝑝(x, 𝑡)], assume a forma:
𝑃 =
∑︁
𝑠
∫︁ 𝑇
0
(︃
2
𝑣3(x)
𝜕2𝑝
𝜕𝑡2
)︃(︃
2
𝑣3(x)
𝜕2𝑝
𝜕𝑡2
)︃
𝑑𝑡 , (2.54)
onde 𝑣(x) é o modelo de velocidade e 𝑝 = 𝑝(x, 𝑡) é o campo de onda avaliado em todo
espaço e em todo tempo de modelagem.
2.9.3 Cálculo da inversa da matriz pseudo-hessiana
A aproximação da inversa da matriz pseudo-hessiana é dado por (Guan et al., 2021):
𝑃 −1𝑘 =
1
𝑃𝑘 + 𝜖 max (𝑃𝑘)
, (2.55)
onde 𝜖 é um parâmetro empírico e deve ser escolhido entre 10−5 e 10−2 e 𝑚𝑎𝑥(𝐻) é um
escalar correspondendo ao máximo valor da matriz pseudo-hessiana, 𝑃𝑘. O parâmetro 𝜖
garante que em regiões com pobre iluminação na matriz pseudo-hessiana ou sua inversa
não sofrerá de mal-condicionamento, isto é, instabilidade numérica.
2.9.4 Escalonando a inversa da matriz pseudo-hessiana
O gradiente precondicionado definitivo para ser usado pelos algoritmos de SD, NLCG
e L-BFGS precisam ser ajustados. Para obter a escala adequada usa-se a razão entre o
quadrado da norma Euclidiana dos gradientes sem precondicionamento e precondicionado
(Guan et al., 2021), que segue
𝑃 −1𝑘 =
‖ ∇𝐽(m𝑘) ‖22
‖ 𝑃 −1𝑘 ∇𝐽(m𝑘) ‖22
𝑃 −1𝑘 , (2.56)
onde 𝑃 −1𝑘 é o inverso do matriz pseudo-hessiana normalizado, ‖ ∇𝐽(m𝑘) ‖22 representa o
quadrado da norma Euclidiana do gradiente sem precondicionamento e ‖ 𝑃 −1𝑘 ∇𝐽(m𝑘) ‖22
descreve o quadrado da norma Euclidiana do gradiente precondicionado.
23
2.10 ALGORITMO DE OTIMIZAÇÃO
Nesta seção, apresenta-se somente os algoritmos de máxima descida e de gradiente
conjugado não linear implementados neste trabalho. Enquanto que, a algoritmo para o
método L-BFGS usado neste trabalho é o famoso algoritmo L-BFGS-B (Byrd et al., 1995;
Zhu et al., 1997).
2.10.1 Algoritmo SD
O fluxo de trabalho do algoritmo de máxima descida é resumido abaixo:
1. Entre com o modelo de velocidade, o comprimento de passo inicial, a estimava
inicial para o comprimento de passo, o número máximo de iterações para a busca
linear, o número máximo de iterações para a inversão e o fator de tolerância para
convergência;
2. Calcule o gradiente e o valor da função objetivo para o modelo de velocidade inicial.
Se precondicionamento foi requerido, então, a matriz pseudo-hessiana é calculada,
Eq. 2.53;
3. Se precondicionamento é necessário, então, normalize o gradiente com a inversa da
matriz pseudo-hessiana, Eq. 2.55;
4. Guarde em memória o modelo de velocidade e o gradiente;
5. Inicialize as iterações para inversão;
6. Calcule o valor da função objetivo relativo e avalie o critério de convergência;
7. Calcule a direção de busca normalizada, Eq. 2.47, e escale com a estimava inicial
para o comprimento de passo, 𝜂, ou seja, Eq. 2.48;
8. Inicialize as iterações para busca linear;
9. Calcule o comprimento de passo, 𝛼, com algoritmo de busca linear usando o gradientee o valor da função objetivo calculado na etapa 2;
10. Se o algoritmo de busca linear não convergir, então, atualize o modelo de velocidade
e calcule o novo gradiente e valor do custo funcional. A matriz pseudo-hessiana
também será calculado se precondicionamento foi requerido. Esta etapa é repetida
até o método de busca linear convergir ou atingir o número máximo de iterações,
neste caso a inversão é interrompida;
11. Se a etapa 10 foi bem-sucedida na estimava do 𝛼, então, interrompa o laço das
iterações da busca linear e atualize o comprimento de passo, o valor do custo funcional,
o gradiente e o modelo de velocidade;
24
12. Novamente, se precondicionamento foi exigido, então, calcule a inversa da matriz
pseudo-hessiana e normalize o gradiente;
13. Por fim, são avaliados outros critérios de convergência e se esses não foram atendidos,
então, volte a etapa 5 e repita tudo novamente até satisfazer um dos critérios de
convergência;
2.10.2 Algoritmo NLCG
O fluxo de trabalho do algoritmo de gradiente conjugada não linear é resumido abaixo:
1. Repita as etapas de 1 a 12 do algoritmo de máxima descida;
2. Calcule o fator de escala, Eq. 2.34, para atualizar a direção conjugada usando as
fórmulas de Hestenes-Stiefel, Eq. 2.32, e Dai-Yuan Eq. 2.33;
3. Calcule a direção de busca conjugada, Eq. 2.31, e atualize a direção de busca
conjugada em memória. Essa será normalizada na etapa 7;
4. Novamente, se os critérios de convergência adicionais não foram atendidos, então,
volte a etapa 5 e repita tudo novamente até satisfazer um dos critérios de convergência;
Vale ressaltar que as fórmulas HS ou DY, ou a combinação dessas, Eq. 2.34, são
escolhas fundamentais para evitar que a direção de busca seja sobre normalizada. Isso
pode ser observado substituindo a Eq. 2.48 na Eq. 2.31 e calculando o 𝛽 usando a Eq.
2.32 ou Eq. 2.33, onde a direção de busca usada no cálculo do 𝛽 é dado pela Eq. 2.48. No
apêndice D– é apresentado o algoritmo NLCG usando o algoritmo de busca linear (seção
2.7.3) sem a estratégia de comunicação reversa; para mais detalhes sobre as condições de
Wolfe ver Kochenderfer and Wheeler (2018).
3 DERIVAÇÃO DO GRADIENTE POR DIFERENCIAÇÃO
AUTOMÁTICA
Neste capítulo, apresenta-se uma breve revisão da técnica de diferenciação automática,
destacando os modos direto e reverso de diferenciação automática. Para uma descrição
detalhada, sugere-se Griewank and Walther (2008); Elliott (2018); Gebremedhin and
Walther (2020). Para reforçar os conceitos sobre diferenciação automática apresentados,
usa-se um caso de estudo com a função rosenbrock. Em seguida, deriva-se a expressão do
gradiente da função objetivo usando a técnica de diferenciação automática. Posteriormente,
discute-se como o código da função objetivo de quadrados mínimos deve ser estruturado
para atender os requisitos da ferramenta de diferenciação automática aqui empregado,
Enzyme.jl. Por fim, mostra-se como usar o pacote de diferenciação automática Enzyme.jl
para calcular o gradiente da função objetivo.
3.1 INTRODUÇÃO
O cálculo de derivadas é uma operação fundamental em muitas áreas da ciência e da
engenharia, como otimização (Nocedal and Wright, 2006), aprendizado de máquina (Bishop,
2006) e problemas inversos (Fichtner, 2011). Neste contexto as derivadas são normalmente
utilizadas para ajustar parâmetros em modelos matemáticos. Por exemplo, problemas
inversos baseados na inversão do campo de onda sísmico são frequentemente resolvidos
minimizando uma função de mérito, ou seja, requer avaliar o gradiente da função de
objetivo (Fichtner, 2011). A diferenciação automática é uma técnica que permite calcular
derivadas de funções matemáticas de forma automatizada, fornecendo uma alternativa
aos métodos numéricos tradicionais, como o método das diferenças finitas (Klein et al.,
2002). Na abordagem tradicional a derivada de uma função diferenciável é desenvolvida
normalmente da forma manual que pode se tornar muito complexo e propenso a erros,
especialmente no caso de funções que podem ter uma derivação computacionalmente
complexa.
A diferenciação automática, ainda é uma abordagem pouco usada em aplicações
da inversão do campo de onda sísmico completo, FWI. Essa questão foi levantada por
Sambridge et al. (2007), na qual, utilizou a técnica de diferenciação automática para
resolver os problemas de minimização de energia livre de Gibas, da inversão da função
dos receptores e de traçamento de raios sísmico. Sambridge et al. (2007), mostrou que a
diferenciação automática tem potencial para calcular a sensibilidade de funcionais em uma
variedade de problemas específicos de geociências, porém sugere a necessidade de avaliar
essa técnica em problemas de larga escala. Tal questão foi investigada por Zhu et al. (2021),
onde empregou a diferenciação automática para resolver o problema inverso relacionado à
25
26
estimativa do modelo de velocidade Marmousi. Ele afirma que a diferenciação automática
produz os mesmos resultados que o método dos estados adjuntos. Entretanto, no trabalho
de Richardson (2018) foi mostrado que, para um modelo unidimensional, a diferenciação
automática produz gradiente semelhante ao gerado pelo método dos estados adjuntos. Em
seus experimentos ele mostrou que o gradiente calculado pelo método dos estados adjuntos
parece ficar sobre-estimado com relação ao calculado pela diferenciação automática.
O pressuposto, que a diferenciação automática é um método de derivação exato (ou
seja, dentro da precisão de máquina) só é valido se a função avaliada tem uma solução
analítica. Todavia, se a função avaliada é resultante de um procedimento numérico, como
a solução de uma equação de diferenciação, então, a derivada calculada pela diferenciação
automática pode não ser tão precisa (Nocedal and Wright, 2006). Por exemplo, a função
objetivo utilizada na inversão do campo de onda sísmico requer a solução da equação da
onda, que para meios não homogêneos é resolvida usando métodos numéricos em especial
o método das diferenças finitas. Tal procedimento introduz um erro de aproximação que
normalmente é pequeno. Esse é também propagado para a função objetivo. No entanto,
mesmo que erro de aproximação inserido na função objetivo seja pequeno, sua derivada
pode não ser. Portanto, o gradiente gerado pela diferenciação automática de uma função
objetivo resultante de um procedimento numérico pode não ser mais exato.
Além disso, mesmo com todo avanço alcançado nas estratégias para tornar as ferramen-
tas de diferenciação automática mais otimizadas, como, a estratégia de checkpointing (ver
Griewank and Walther (2000); Bücker et al. (2006)) ainda é notório que para problemas de
larga escala tais ferramentas devem contornar o alto custo computacional e principalmente
o elevado requerimento memória exigidos no cálculo do gradiente. O custo computacional
pode ser atenuado principalmente com estratégia de paralelismo, mas são limitadas as
ferramentas de diferenciação automática que permitem utilizar estratégias de paralelismo
sem comprometer o código original. O Enzyme (ou a interface Enzyme.jl) é um exemplo
de ferramenta de diferenciação automática que supostamente1 suporta paralelismo em
sistema de memória compartilhado e distribuído, assim como computação em unidade de
processamento gráfico, na sigla inglês GPUs, (Moses et al., 2021). Neste primeiro contato
com Enzyme, acredita-se que para o problema da FWI o paralelismo para sistema de
memória distribuído com a interface de passagem de mensagem (na sigla em inglês MPI)
é a melhor escolha, pois normalmente em problemas de modelagem inversa o laço dos
tiros é distribuído entre os processos. Isso não exigirá alterações do trecho do código
destinado a realizar o cálculo do gradiente usando diferenciação automática. Entretanto,
o requerimento de memória ainda é um grande obstáculo para aplicações que envolve
muitos parâmetros, como é o caso da FWI. Existem outros desafios, aqui ressalta-se a
necessidade de estruturação do código de modelagem a depender das limitações de cada
ferramenta dediferenciação automática. Não obstante, a diferenciação automática tem
1O paralelismo com muiltethreads em Julia não foi bem sucedido
27
algumas vantagens, como: i) reduz consideravelmente o tempo de desenvolvimento em
comparação ao exigido pelo método dos estados adjuntos, que precisa ser implementado e
verificado manualmente, ii) pode facilitar análise de outras funções objetivos com pouco
custo de implementação adicional e iii) pode ser usado para validar gradientes de funções
objetivos de problemas inversos com alto complexidade de derivação matemática.
3.2 REVISÃO DA DIFERENCIAÇÃO AUTOMÁTICA
A diferenciação automática (na sigla em inglês AD) é um conjunto de técnicas para
avaliar derivadas de qualquer ordem a partir da aplicação da regra da cadeia sobre
instruções de um programa de computador de uma função matemática. Em outras
palavras, a diferenciação automática gera um programa que calcula valores numéricos
para derivadas de uma função através da transformação de um programa que calcula
valores numéricos desta função (Bartholomew-Biggs et al., 2000). As derivadas procuradas
podem ser de primeira ordem (como, o gradiente ou a Jacobiana) ou de segunda ordem
(como, a Hessiana). A grande vantagem dos códigos derivados a partir da diferenciação
automática em comparação com as diferenças finitas é que eles fornecem valores derivados
livres de erro de truncamento (Margossian, 2018). Isto é, em contraste com a diferenciação
numérica a diferenciação automática fornece derivadas exatas, até a precisão da máquina.
As ferramentas de diferenciação automática usam diferentes estratégias para calcular
derivadas. As mais comuns são (Griewank and Walther, 2008): a estratégia de transforma-
ção de código fonte, como, usada pelas ferramentas diferenciação automática TAPENADE
(Hascoët and Pascual, 2013) e Enzyme (Moses et al., 2021), e a estratégia de operador de
overloading, como, usada pelas ferramentas diferenciação automática ADOL-C (Walther
et al., 2003) e PyTorch (Paszke et al., 2019). Independente da estratégia usada para avaliar
a derivada; o modo direto e o modo reverso de diferenciação automática são normalmente
fornecidos por tais ferramentas. A descrição dos modos direto e reverso podem ser realizada
basicamente de duas formas: através da visualização do grafo computacional (Oberbichler
et al., 2021) ou através da perspectiva de matrizes (Margossian, 2018).
3.2.1 Diferenciação numérica: diferenças finitas
O método das diferenças finitas pode ser derivado usando a expansão em série Taylor
(Strikwerda, 2004). Como o próprio nome sugere, o método das diferenças finitas permite
calcular a derivada de uma função diferenciável usando valores da função que diferem por
um tamanho de passo finito. Para isso, considere uma função contínua univariável 𝑢(𝑥)
e com um número suficiente de derivadas e iniciando com a expansão de Taylor de 𝑢 na
28
vizinhança do ponto arbitrário 𝑥𝑖:
𝑢(𝑥𝑖 + 𝑚Δ𝑥) = 𝑢(𝑥𝑖) + 𝑚Δ𝑥
(︃
𝑑𝑢
𝑑𝑥
)︃
𝑖
+ (𝑚Δ𝑥)
2
2!
(︃
𝑑2𝑢
𝑑𝑥2
)︃
𝑖
+ (𝑚Δ𝑥)
3
3!
(︃
𝑑3𝑢
𝑑𝑥3
)︃
𝑖
+ · · · ,
(3.1)
onde Δ𝑥 é o tamanho de passo e 𝑚 é um número inteiro que define os outros pontos
em torno de 𝑥𝑖 de modo que 𝑥𝑖+𝑚 = 𝑥𝑖 + 𝑚Δ𝑥. A partir da Eq. 3.1, pode-se calcular
aproximações de diferenças finitas de uma dada ordem para primeira e segunda derivadas
mas também para derivadas de mais alta ordem. Assim, tomando primeiramente 𝑚 = 1 e
posteriormente 𝑚 = −1 na expansão de Taylor para função 𝑢(𝑥) acima e após isolar as
primeiras derivadas, respectivamente, obtém-se(︃
𝑑𝑢
𝑑𝑥
)︃
𝑖
= 𝑢(𝑥𝑖 + Δ𝑥)− 𝑢(𝑥𝑖)Δ𝑥 +
[︃
−Δ𝑥2
(︃
𝑑2𝑢
𝑑𝑥2
)︃
𝑖
+ · · ·
]︃
, (3.2)(︃
𝑑𝑢
𝑑𝑥
)︃
𝑖
= 𝑢(𝑥𝑖)− 𝑢(𝑥𝑖 −Δ𝑥)Δ𝑥 +
[︃
−Δ𝑥2
(︃
𝑑2𝑢
𝑑𝑥2
)︃
𝑖
+ · · ·
]︃
. (3.3)
Essas são as expressões para as aproximações por diferenças finitas avançada e para trás,
respectivamente. A subtração da Eq. 3.3 pela Eq. 3.2 resulta na chamada aproximação
de diferenças finitas centrada,(︃
𝑑𝑢
𝑑𝑥
)︃
𝑖
= 𝑢(𝑥𝑖 + Δ𝑥)− 𝑢(𝑥𝑖 −Δ𝑥)2Δ𝑥 +
[︃
(Δ𝑥)2
3
(︃
𝑑3𝑢
𝑑𝑥3
)︃
𝑖
+ · · ·
]︃
. (3.4)
De forma análogo, pode-se obter aproximações de diferenças finitas para segunda derivada
de 𝑢(𝑥) no ponto 𝑥𝑖. Se a Eq. 3.2 for somada com a Eq. 3.3 e o termo de segunda
derivada for isolado, obtém-se uma aproximação de diferenças finitas de segunda ordem
para segunda derivada, ou seja,(︃
𝑑2𝑢
𝑑𝑥2
)︃
𝑖
= 𝑢(𝑥𝑖 + Δ𝑥)− 2𝑢(𝑥𝑖) + 𝑢(𝑥𝑖 −Δ𝑥)(Δ𝑥)2 +
[︃
(Δ𝑥)2
12
(︃
𝑑4𝑢
𝑑𝑥4
)︃
𝑖
+ · · ·
]︃
. (3.5)
Os termos dentro dos colchetes nas Eqs. 3.2, 3.3, 3.4 e 3.5 são os outros termos
da expansão que devem ser desprezados. O truncamento da aproximação de diferenças
finitas introduz um erro de aproximação. A ordem do deste erro, chamado de erro de
truncamento, é dada pela potência do Δ𝑥, que se encontra dentro dos colchetes. Assim,
por exemplo, a aproximação de diferenças finitas avançada de segunda ordem tem um erro
de truncamento de primeira ordem, que significa quando Δ𝑥 se aproxima de zero o erro
de truncamento diminui de forma linear. Enquanto que, aproximação de diferenças finitas
centrada de segunda ordem para primeira ou segunda derivada o erro de truncamento
diminui de forma quadrática quando Δ𝑥 se aproxima de zero. Matematicamente, maior
será a precisão da aproximação de diferenças finitas da derivada da função quanto menor o
29
tamanho de passo, Δ𝑥. Entretanto, de modo prático Δ𝑥 não pode assumir valores muito
pequeno, pois um valor de tamanho de passo muito pequeno leva a erros na precisão de
ponto flutuante. Por outro lado, um valor de tamanho de passo muito grande resulta em
uma aproximação imprecisa. Portanto, as aproximações de diferenças finitas introduzem
um erro devido ao truncamento da expansão da série de Taylor da função.
3.2.2 Diferenciação automática: número dual
A diferenciação automática é um conjunto de técnicas que permite avaliar a derivada
de uma função diferenciável de forma exata. Isso pode ser mostrado usando o chamado
número dual (Kochenderfer and Wheeler, 2018). Os números duais são números da forma
𝑥 = a + b𝜖 , (3.6)
onde a, b são números reais e 𝜖 ≠ 0 é um número pequeno tal que 𝜖2 = 0 quando 𝜖 tende a
zero. No número dual a é chamado de componente real e b é chamado de componente dual.
Agora, introduzindo o número dual na função diferenciável 𝑢(𝑥) e usando a expansão em
série de Taylor em torno do ponto a:
𝑢(a + b𝜖) = 𝑢(a) + 𝜖b
(︃
𝑑𝑢
𝑑𝑥
)︃
a
+ (𝜖b)
2
2!
(︃
𝑑2𝑢
𝑑𝑥2
)︃
a
+ (𝜖b)
3
3!
(︃
𝑑3𝑢
𝑑𝑥3
)︃
a
+ · · · (3.7)
e colocando o 𝜖2 em evidência de todos os termos com derivada de segunda ordem e ordem
mais alta,
𝑢(a + b𝜖) = 𝑢(a) + 𝜖b
(︃
𝑑𝑢
𝑑𝑥
)︃
a
+ 𝜖2
[︃
b2
2!
(︃
𝑑2𝑢
𝑑𝑥2
)︃
a
+ 𝜖b
3
3!
(︃
𝑑3𝑢
𝑑𝑥3
)︃
a
+ 𝜖
2b4
4!
(︃
𝑑4𝑢
𝑑𝑥4
)︃
a
+ · · ·
]︃
.
Finalmente, usando 𝜖2 = 0 da definição do número dual, obtém-se
𝑢(a + b𝜖) = 𝑢(a) + 𝜖b
(︃
𝑑𝑢
𝑑𝑥
)︃
a
. (3.8)
Se na expressão acima b = 1, então pode-se avaliar o valor da função e de sua derivada
simplesmente usando um número dual da forma a + 𝜖 como argumento da função. Isto é,
𝑢(a + 𝜖) = 𝑢(a) + 𝜖
(︃
𝑑𝑢
𝑑𝑥
)︃
a
. (3.9)
A solução obtida na Eq. 3.9 é exata, pois os termos de segunda ordem e de ordem
mais alta não são desprezados como na diferenciação numérica (ou seja, não existe erro de
truncamento como no método das diferenças finitas), mas são eliminados por definição do
número dual. Mais adiante será discutido que a diferenciação automática fornece o valor
30
exato da derivada de uma função analítica, no entanto, se a função é resultante de um
procedimento de diferenciação numérica, então a diferenciação automática não avalia mais
o valor analítico para derivada da função.
3.2.3 Como a diferenciação automática trabalha
Considere uma função de valor escalar arbitrária 𝑦 = 𝑓(x) escrita como uma composição
das funções ℎ = ℎ(s) e s = s(x) da seguinte forma:
𝑓(x) = (ℎ ∘ s)(x) = ℎ(s) , (3.10)
onde x é a variável de entrada e 𝑦 é a variávelde saída. A derivação da função 𝑓 em
relação a x é obtido aplicando a regra da cadeia na definição 3.10,
𝜕𝑓
𝜕𝑥𝑖
= 𝜕ℎ
𝜕𝑠𝑝
𝜕𝑠𝑝
𝜕𝑥𝑖
=
∑︁
𝑝
𝜕ℎ
𝜕𝑠𝑝
𝜕𝑠𝑝
𝜕𝑥𝑖
. (3.11)
A derivada de 𝑓 em relação a x pode ser obtida avaliando as derivadas parciais da Eq.
3.11 da direita para a esquerda, chamado de modo direto, ou a partir da esquerda para a
direita, chamado de modo reverso. As ferramentas de diferenciação automática avaliam as
derivadas usando basicamente esses dois modos.
Modo direto de diferenciação automática
O modo direto de diferenciação automática associa a cada variável intermediária v𝑞
uma variável denotada por v̇𝑞, que contém os valores numéricos para as derivadas parciais
de v𝑞 em relação a cada uma das variáveis independentes x (Giering and Kaminski, 2000).
Isto é,
v̇𝑞 =
𝜕v𝑞
𝜕𝑥𝑝
, (3.12)
onde v̇𝑞 armazena o valor numérico da derivada de cada variável intermediária com relação
as variáveis de entrada 𝑥𝑝. Por exemplo, se a função têm duas variáveis de entrada 𝑥1 e
𝑥2, então, deve-se avaliar v̇𝑞 = 𝜕v𝑞/𝜕𝑥1 e v̇𝑞 = 𝜕v𝑞/𝜕𝑥2. Se as variáveis intermediárias v𝑞
tem dependências de outras variáveis intermediárias e se o valor de v𝑞 é conhecido, então,
pode-se encontrar o valor da derivada correspondente de v𝑞 a partir da regra da cadeia
v̇𝑞 =
∑︁
𝑝
𝜕v𝑞
𝜕v𝑝
v̇𝑝 , (3.13)
onde v̇𝑝 é chamado de semente e a expressão acima é conhecido como modo direto de
diferenciação automática. Novamente, por exemplo, para avaliar a derivada de uma função
31
com duas variáveis de entrada 𝑥1 e 𝑥2 deve-se primeiro definir a semente v̇1 = 𝜕v1/𝜕𝑥1 = 1
e v̇2 = 𝜕v2/𝜕𝑥1 = 0 para calcular a derivada da função com relação a variável 𝑥1.
Enquanto que, a derivada da função com relação a variável 𝑥2 é obtida definido a semente
v̇1 = 𝜕v1/𝜕𝑥2 = 0 e v̇2 = 𝜕v2/𝜕𝑥2 = 1.
Modo reverso de diferenciação automática
No modo reverso de diferenciação automática, uma variável adjunta v̄𝑞 (inicialmente
zero) é associada a cada variável intermediária v𝑞. As variáveis adjuntas v̄𝑞 possuem o
valor numérico da derivada parcial da variável dependente 𝑦 em relação a v𝑞 do ponto
correspondente da avaliação da função (Giering and Kaminski, 2000). Isto é,
v̄𝑞 =
𝜕𝑦
𝜕v𝑞
, (3.14)
onde v̄𝑞 armazena o valor da derivada da variável dependente 𝑦 em relação as variáveis
intermediárias v𝑞. Se v𝑞 depende de outras variáveis intermediárias, então, pode-se calcular
o gradiente de 𝑦 em relação as variáveis de entrada usando a regra da cadeia
v̄𝑞 =
∑︁
𝑝
v̄𝑝
𝜕v𝑝
𝜕v𝑞
, (3.15)
onde v̄𝑝 são as variáveis adjuntas associada a cada variável intermediária v𝑝. No modo
reverso as v𝑞 são atualizadas na ordem inversa na qual o valor função é avaliando. Se a
função é de valor escalar então existe somente uma semente, definida como v̄𝑞 = 𝜕𝑦/𝜕𝑦 = 1.
Na prática, o modo reverso de diferenciação automática é escrito da seguinte forma (Utke
et al., 2008):
v̄𝑞 = v̄𝑞 + v̄𝑝
𝜕v𝑝
𝜕v𝑞
. (3.16)
Grafo computacional
Uma forma muito comum usada para visualizar a aplicação da regra da cadeia em uma
função composta é usar um grafo computacional acíclico. Este é uma representação visual
das operações realizadas na Eq. 3.11. O grafo computacional consiste basicamente em
nós e arestas. Os nós representam variáveis intermediárias, obtidas por meio de operações
elementares. As arestas faz a ligação entre as variáveis intermediárias e indica uma relação
de dependência explícita entre os nós. Assim, cada aresta do grafo computacional tem
uma derivada parcial local. Por exemplo, considere 𝑝 = 1 na definição 3.10, ou seja,
32
𝑓 = (ℎ ∘ 𝑠1)(x) = ℎ(𝑠1(x)) e renomeando 𝑤 = ℎ(𝑢), 𝑢 = 𝑠1(x). A regra da cadeia para 𝑓 é
𝜕𝑓
𝜕𝑥𝑖
= 𝜕𝑤
𝜕𝑢
𝜕𝑢
𝜕𝑥𝑖
.
A expressão acima pode ser visualizado através do grafo computacional, como mostrado
na Figura 3.1. No grafo computacional os círculos são chamados de nós e as setas são
𝑢x 𝑤
𝜕𝑢
𝜕x
𝜕𝑤
𝜕𝑢
Figura 3.1: Grafo computacional para função 𝑓 = (ℎ ∘ 𝑠1)(x) = ℎ(𝑠1(x)).
chamadas de arestas, Figura 3.1. A relação de dependência entre os nós são indicadas pelo
sentido das setas e isso implica em um derivada local, como mostrado na Figura 3.1. Isso
será mostrado com mais detalhes usando um estudo de caso com a função rosenbrock.
3.2.4 Um exemplo simples com a função rosenbrock
Considere a função rosenbrock bidimensional
𝑦 = 𝑓(𝑥1, 𝑥2) = (𝑎− 𝑥1)2 + 𝑏
(︁
𝑥2 − 𝑥21
)︁2
, (3.17)
onde 𝑥1 e 𝑥2 são as variáveis de entrada, 𝑦 é a variável de saída e 𝑎 e 𝑏 são duas constantes.
Usando um conjunto de variáveis intermediárias denotadas por 𝑣𝑖 com 𝑖 = 1, 2, · · · , 9,
pode-se decompor a função rosenbrock da seguinte forma:
v1 = 𝑥1 ,
v2 = 𝑥2 ,
v3 = 𝑎− v1 ,
v4 = v23 ,
v5 = v21 , (3.18)
v6 = v2 − v5 ,
v7 = v26 ,
v8 = 𝑏v7 ,
v9 = v4 + v8 = 𝑦 ,
onde v1 e v2 são atribuídas as variáveis independentes e v9 é atribuída a variável dependente.
Definida a sequência de operações elementares, v𝑖 com 𝑖 = 1, · · · , 9, pode-se construir um
grafo computacional para função rosenbrock, como mostrado na Figura 3.2. Na Figura 3.2,
33
v𝑖 representam as variáveis intermediárias, onde v1 e v2 são as variáveis de entrada e v9 é a
variável de saída. As constantes 𝑎 e 𝑏 são representadas pelos quadrados. A sequência de
operações elementares da função rosenbrock são descritas no grafo pelas elipses na Figura
3.2. As arestas são representadas pelas setas, onde o sentido indica a relação dependência
do nó de destino em relação ao nó de partida. Por exemplo, a variável intermediária v3 é
𝑣9 = 𝑣4 + 𝑣8
𝑣4 = 𝑣23 𝑣8 = 𝑏𝑣7
𝑣3 = 𝑎− 𝑣1 𝑣7 = 𝑣26
𝑣1 = 𝑥1
𝑣6 = 𝑣2 − 𝑣5
𝑣2 = 𝑥2
𝑏
𝑎 𝑣5 = 𝑣21
𝜕𝑣9
𝜕𝑣4
= 1 𝜕𝑣9
𝜕𝑣8
= 1
𝜕𝑣4
𝜕𝑣3
= 2𝑣3 𝜕𝑣8𝜕𝑣7 = 𝑏
𝜕𝑣3
𝜕𝑣1
= −1
𝜕𝑣7
𝜕𝑣6
= 2𝑣6
𝜕𝑣5
𝜕𝑣1
= 2𝑣1
𝜕𝑣6
𝜕𝑣5
= −1
𝜕𝑣6
𝜕𝑣2
= 1
Figura 3.2: Grafo computacional para função rosenbrock.
função da variável intermediária v1, ou seja, v3 = v3(v1). Assim, a aresta que liga os nós
das variáveis intermediárias v1 e v3 possui uma derivada local, 𝜕v3/𝜕v1 = −1. As derivadas
parciais locais, 𝜕v𝑞/𝜕v𝑝, são usadas para avaliar a derivada da função 𝑓 . O valor da função
rosenbrock é obtido passando pelo grafo computacional no sentido da base para o topo,
sendo 𝑦 = v9 = v4 + v8. Assim, assumido 𝑎 = 1 e 𝑏 = 1 o valor da função rosenbrock para
𝑥1 = 2 e 𝑥2 = 3 é igual 2.
Modo direto de diferenciação automática
Aqui, mostra-se como o modo direto de AD trabalha para função rosenbrock: primeiro
usando a descrição do grafo computacional e depois avaliando explicitamente a regra
da cadeia. Na Figura 3.3 é mostrado o grafo computacional para calcular a derivada
da função rosenbrock em relação a variável 𝑥1 usando o modo direto de AD. No modo
direto de AD o valor da derivada da função rosenbrock em relação a qualquer variável de
entrada é realizada passando pelo grafo no mesmo sentido na qual o valor da função é a
valiado, como mostrado na Figura 3.2. Na base do grafo computacional são mostradas as
derivadas das variáveis intermediárias v1 e v2 com relação a variável de entrada v1 = 𝑥1,
34
�̇�9
�̇�4 �̇�8
�̇�3 �̇�7
�̇�1
�̇�6
�̇�2
𝑏
𝑎 �̇�5
�̇�9 = 𝜕𝑣9𝜕𝑣4 �̇�4 +
𝜕𝑣9
𝜕𝑣8
�̇�8 = −2𝑣3 − 4𝑏𝑣6𝑣1
�̇�4 = 𝜕𝑣4𝜕𝑣3 �̇�3 = −2𝑣3
�̇�3 = 𝜕𝑣3𝜕𝑣1 = −1
�̇�8 = 𝜕𝑣8𝜕𝑣7 �̇�7 = −4𝑏𝑣6𝑣1
�̇�1 = 𝜕𝑣1𝜕𝑣1 = 1
�̇�7 = 𝜕𝑣7𝜕𝑣6 �̇�6 = −4𝑣6𝑣1
�̇�5 = 𝜕𝑣5𝜕𝑣1 = 2𝑣1
�̇�6 = 𝜕𝑣6𝜕𝑣5 �̇�5 = −2𝑣1
�̇�2 = 𝜕𝑣2𝜕𝑣1 = 0 Sementes
Figura 3.3: Grafo computacional para calcular a derivada da função rosenbrock em relação
a variável de entrada 𝑥1 usando o modo direto.
respectivamente, ou seja, as sementes,
v̇1 =
𝜕v1
𝜕𝑥1
= 1 e v̇2 =
𝜕v2
𝜕𝑥1
= 0 .
No modo direto de AD a derivada de uma variável intermediária pode ser realizada ao
mesmo tempo na qual o valor da variável é avaliado. Além disso, observe como as derivadas
parciais locais são requeridas para calcular as derivadas das variáveis intermediárias, bem
como das derivadas das variáveisintermediárias na relação de dependência entre os nós do
grafo computacional. Por exemplo, para calcular a derivada da variável intermediária v4 é
necessário saber o valor da derivada local 𝜕v4/𝜕v3 e da variável intermediária v3, obtida
durante a avaliação da função, como foi mostrado na Figura 3.2. Portanto, o modo direto
de AD são necessárias uma avaliação pelo grafo computacional para calcular os valores das
variáveis intermediárias e uma outra avaliação para determinar as derivadas dessas e isso
pode ser realizado ao mesmo tempo. Isso, deve ser repetido para calcular a derivada da
função rosenbrock em relação a variável 𝑥2. A derivada da função rosenbrock em relação a
variável 𝑥1 é
�̇�9 =
𝜕𝑓
𝜕𝑥1
= 𝜕𝑣9
𝜕𝑣4
�̇�4 +
𝜕𝑣9
𝜕𝑣8
�̇�8 = −2𝑣3 − 4𝑏𝑣6𝑣1 ,
que assumindo os valores para 𝑎, 𝑏, 𝑥1 e 𝑥2 como definidos anteriormente, obtém-se
𝜕𝑓/𝜕𝑥1 = 10. De forma análogo, pode-se calcular a derivada da função rosenbrock em
relação 𝑥2, que segue
�̇�9 =
𝜕𝑓
𝜕𝑥2
= 2𝑏𝑣6 .
35
Novamente, assumido os mesmos valores para 𝑎, 𝑏, 𝑥1 e 𝑥2 se obtém 𝜕𝑓/𝜕𝑥2 = −2.
A Tabela 3.1 resume o cálculo da derivada de 𝑓 em relação a 𝑥1 para os valores 𝑎 = 1,
𝑏 = 1, 𝑥1 = 2 e 𝑥2 = 3. Para calcular a derivada da função rosenbrock em relação a
variável de entrada 𝑥1 duas avaliações pelo grafo computacional são necessárias, chamado
de traços. O traço direto avalia o valor de cada variável intermediária para obter o valor
da função. Enquanto que, o traço da derivada direta (também chamado de tangente)
descreve a passagem pelo grafo computacional para calcular o valor da derivada da função
em relação a variável de entrada 𝑥1.
Tabela 3.1: Modo direto de diferenciação automática para calcular a derivada da função
rosenbrock em relação a variável de entrada 𝑥1.
Traço direto Evolução Traço da derivada direta ou tangente Evolução
v1 = x1 2 v̇1 = 𝜕v1𝜕v1 = 1 1
v2 = x2 3 v̇2 = 𝜕v2𝜕v1 = 0 0
v3 = a − v1 −1 v̇3 = 𝜕v3𝜕v1 = −1 −1
v4 = v23 1 v̇4 =
𝜕v4
𝜕v1 =
𝜕v4
𝜕v3 v̄3 = −2v3 2
v5 = v21 4 v̇5 = 𝜕v5𝜕v1 = 2v1 4
v6 = v2 − v5 −1 v̇6 = 𝜕v6𝜕v1 =
𝜕v6
𝜕v5 v̇5 = −2v1 −4
v7 = v26 1 v̇7 = 𝜕v7𝜕v1 =
𝜕v7
𝜕v6 v̇6 = −4v6 v1 8
v8 = bv27 1 v̇8 = 𝜕v8𝜕v1 =
𝜕v8
𝜕v7 v̇7 = −4𝑏𝑣6𝑣1 8
v9 = v4 + v8 2 v̇9 = 𝜕v9𝜕v1 =
𝜕v9
𝜕v4 v̇4 +
𝜕v9
𝜕v8 v̇8 = −2v3 − 4bv6 v1 10
Uma outra maneira de calcular as derivadas da função rosenbrock em relação a 𝑥1 e 𝑥2
sem construir o grafo computacional é aplica diretamente a regra da cadeia na sequência
de operações elementares, ou seja, v𝑖 com 𝑖 = 1, · · · , 9. Isso é apresentado abaixo:
𝜕𝑦
𝜕𝑥1
= 𝜕𝑦
𝜕v9
𝜕v9
𝜕𝑥1
,
= 𝜕𝑦
𝜕v9
(︃
𝜕v9
𝜕v4
(︃
𝜕v4
𝜕v3
(︃
𝜕v3
𝜕v1
𝜕v1
𝜕𝑥1
)︃)︃
+ 𝜕v9
𝜕v8
(︃
𝜕v8
𝜕v7
(︃
𝜕v7
𝜕v6
(︃
𝜕v6
𝜕v5
(︃
𝜕v5
𝜕v1
𝜕v1
𝜕𝑥1
)︃)︃)︃)︃)︃
, (3.19)
𝜕𝑦
𝜕𝑥2
= 𝜕𝑦
𝜕v9
𝜕v9
𝜕𝑥2
,
= 𝜕𝑦
𝜕v9
(︃
𝜕v9
𝜕v8
(︃
𝜕v8
𝜕v7
(︃
𝜕v7
𝜕v6
(︃
𝜕v6
𝜕v2
𝜕v2
𝜕𝑥1
)︃)︃)︃)︃
, (3.20)
com as expressões para calcular as derivadas da função rosenbrock em relação as variáveis
𝑥1 e 𝑥2 dadas pelas Eqs. 3.19 e 3.20, respectivamente. Abaixo é mostrado os valores das
derivadas parciais para a expressão que avalia a derivada de 𝑓 em relação a 𝑥1:
36
𝜕𝑦
𝜕𝑥1
= 𝜕𝑦
𝜕v9
(︃
𝜕v9
𝜕v4
(︃
𝜕v4
𝜕v3
(︃
𝜕v3
𝜕v1
𝜕v1
𝜕𝑥1
)︃)︃
+ 𝜕v9
𝜕v8
(︃
𝜕v8
𝜕v7
(︃
𝜕v7
𝜕v6
(︃
𝜕v6
𝜕v5
(︃
𝜕v5
𝜕v1
𝜕v1
𝜕𝑥1
)︃)︃)︃)︃)︃
,
1
2v1
−1
2v6
𝑏1
1
−1
2v3
1
1
que resulta em 𝜕𝑓/𝜕𝑥1 = −2𝑣3 − 4𝑏𝑣6𝑣1.
No modo direto de AD, o custo computacional de avaliar as derivadas de 𝑓 é proporcional
ao número de variáveis de entrada multiplicado pelo número de operações intermediárias
que define a sequência de operações elementares (Sambridge et al., 2007).
Modo reverso de diferenciação automática
Novamente, recorre-se a função rosenbrock para mostrar como o modo reverso de
AD trabalha, primeiro usando a descrição do grafo computacional e depois avaliando
explicitamente a regra da cadeia. No modo reverso de AD o valor do gradiente da função
rosenbrock em relação variável de entrada, x, é obtido passando pelo grafo computacional
no sentido reverso na qual o valor da função é a valiado, como mostrado na Figura 3.4.
Na Figura 3.4 é mostrado o grafo computacional para calcular o gradiente da função
rosenbrock em relação a variável x usando o modo reverso de AD.
O modo reverso de AD inicia no topo do grafo computacional, ou seja, partindo do
valor da semente
v̄9 =
𝜕𝑦
𝜕𝑦
= 𝜕v9
𝜕v9
= 1 .
Para obter o valor do gradiente da função a semente é propagada de forma reversa para
todas as dependências. Por exemplo, para calcular a variável adjunta v̄4 é necessário ter o
valor da semente v̄9, bem como da derivada local 𝜕v9/𝜕v4. O valor de v̄9 acumulado em
v̄4 é usado para calcular a variável adjunta v̄3, como mostrado na Figura 3.4. Assim, o
gradiente da função rosenbrock é calculado partindo do topo do grafo computacional até
chegar na base do grafo computacional, que segue
∇𝑓(x) = [v̄1, v̄2]† =
[︃
𝜕𝑓
𝜕𝑥1
,
𝜕𝑓
𝜕𝑥2
]︃†
= [−2𝑣3 − 4𝑏𝑣6𝑣1, 2𝑏v6]† ,
onde † denotada a transposta. Desta forma, usando novamente os valores para 𝑎 = 1, 𝑏 = 1,
𝑥1 = 2 e 𝑥2 = 3, então, o gradiente da função rosenbrock é dado por: ∇𝑓 = [10,−2]†.
A Tabela 3.2 resume o cálculo do gradiente de 𝑓 em relação a x para os valores 𝑎 = 1,
𝑏 = 1, 𝑥1 = 2 e 𝑥2 = 3. Novamente, para calcular o gradiente da função rosenbrock em
relação a variável de entrada, x, duas avaliações pelo grafo computacional são também
37
𝑣9
𝑣4 𝑣8
𝑣3 𝑣7
𝑣1
𝑣6
𝑣2
𝑏
𝑎 𝑣5
𝑣9 += 𝜕𝑣9𝜕𝑣9 = 1
𝑣4 += 𝑣9 𝜕𝑣9𝜕𝑣4 = 1
𝑣3 += 𝑣4 𝜕𝑣4𝜕𝑣3 = 2𝑣3
𝑣8 += 𝑣9 𝜕𝑣9𝜕𝑣8 = 1
𝑣1 += 𝑣3 𝜕𝑣3𝜕𝑣1 + 𝑣5
𝜕𝑣5
𝜕𝑣1
= −2𝑣3 − 4𝑏𝑣6𝑣1
𝑣7 += 𝑣8 𝜕𝑣8𝜕𝑣7 = 𝑏
𝑣5 += 𝑣6 𝜕𝑣6𝜕𝑣5 = −2𝑏𝑣6
𝑣6 += 𝑣7 𝜕𝑣7𝜕𝑣6 = 2𝑏𝑣6
𝑣2 += 𝑣6 𝜕𝑣6𝜕𝑣2 = 2𝑏𝑣6
Semente
Figura 3.4: Grafo computacional para calcular o gradiente da função rosenbrock usando o
modo reverso.
necessárias. Como no modo direto de AD, o modo reverso de AD precisa avaliar o valor
Tabela 3.2: Modo reverso de diferenciação automática para calcular o gradiente da função
rosenbrock em relação x.
Traço direto Evolução Traço adjunto ou reverso Evolução
v1 = x1 2 v̄1 += v̄3 𝜕v3𝜕v1 + v̄5
𝜕v5
𝜕v1 = −2v3 − 4bv6 v1 10
v2 = x2 3 v̄2 += v̄6 𝜕v6𝜕v2 = 2𝑏𝑣6 −2
v3 = a − v1 −1 v̄3 += v̄4 𝜕v4𝜕v3 = 2𝑣3 −2
v4 = v23 1 v̄4 += v̄9 𝜕v9𝜕v4 = 1 1
v5 = v21 4 v̄5 += v̄6 𝜕v6𝜕v5 = 2bv6 2
v6 = v2 − v5 −1 v̄6 += v̄7 𝜕v7𝜕v6 = 2bv6 −2
v7 = v26 1 v̄7 += v̄8 𝜕v8𝜕v7 = b 1
v8 = bv27 1 v̄8 += v̄9 𝜕v9𝜕v8 = 1 1
v9 = v4 + v8 2 v̄9 += 𝜕v9𝜕v9 = 1 1
de cada variável intermediária para obter o valor da função, também chamado de traço
direto. No entanto, o cálculo do valor do gradiente da função em relação a variável x é
obtido através da passagem pelo grafo computacional no sentido reverso do traço direto,
chamado de traço adjunto ou reverso. Diferente do modo direto de AD, o modo reverso
de AD não pode avaliar ao mesmo tempo os valores das variáveis intermediárias para
calcular o valor da função e as variáveis intermediárias adjuntas para calcular o gradiente.
38
No modo reverso de AD as variáveis intermediárias precisam ser armazenadas bem como
o conjunto de instruções que as produziram; que é conhecido como tape (Griewank and
Walther, 2008).
Novamente, pode-se calcular as derivadas da função rosenbrock em relação a 𝑥1 e
𝑥2 sem construir o grafo computacional. Aplicando a regra da cadeia na sequência de
operações elementares, que segue
𝜕𝑦
𝜕𝑥1
= 𝜕𝑦
𝜕v1
𝜕v1
𝜕𝑥1
,
=
(︃(︃(︃
𝜕𝑦
𝜕v9
𝜕v9
𝜕v4
)︃
𝜕v4
𝜕v3
)︃
𝜕v3
𝜕v1
+
(︃(︃(︃(︃
𝜕𝑦
𝜕v9
𝜕v9
𝜕v8
)︃
𝜕v8
𝜕v7
)︃
𝜕v7
𝜕v6
)︃
𝜕v6
𝜕v5
)︃
𝜕v5
𝜕v1
)︃
𝜕v1
𝜕𝑥1
, (3.21)
𝜕𝑦
𝜕𝑥2
= 𝜕𝑦
𝜕v2
𝜕v2
𝜕𝑥2
,
=
(︃(︃(︃(︃
𝜕𝑦
𝜕v9
𝜕v9
𝜕v8
)︃
𝜕v8
𝜕v7
)︃
𝜕v7
𝜕v6
)︃
𝜕v6
𝜕v2
)︃
𝜕v2
𝜕𝑥2
, (3.22)
com as expressões para calcular as derivadas da função rosenbrock em relação as variáveis
𝑥1 e 𝑥2 dadas pelas Eqs. 3.21 e 3.22, respectivamente. Abaixo é mostradoos valores das
derivadas parciais para a expressão que avalia a derivada de 𝑓 em relação a 𝑥1:
𝜕𝑦
𝜕𝑥1
=
(︃(︃(︃
𝜕𝑦
𝜕v9
𝜕v9
𝜕v4
)︃
𝜕v4
𝜕v3
)︃
𝜕v3
𝜕v1
+
(︃(︃(︃(︃
𝜕𝑦
𝜕v9
𝜕v9
𝜕v8
)︃
𝜕v8
𝜕v7
)︃
𝜕v7
𝜕v6
)︃
𝜕v6
𝜕v5
)︃
𝜕v5
𝜕v1
)︃
𝜕v1
𝜕𝑥1
,
12v1
−1
2v6
𝑏
1
1
−1
2v3
1
1
que é o mesmo resultado obtido para derivada de 𝑓 em relação a 𝑥1 avaliando a Eq. 3.19,
ou seja, 𝜕𝑓/𝜕𝑥1 = −2𝑣3 − 4𝑏𝑣6𝑣1.
No modo reverso de AD, o custo computacional de avaliar as derivadas de 𝑓 é proporci-
onal ao número de variáveis de saída multiplicado pelo número de operações intermediárias
que define a sequência de operações elementares (Sambridge et al., 2007).
3.3 DERIVAÇÃO DO GRADIENTE USANDO DIFERENCIAÇÃO AUTOMÁTICA
A derivação do gradiente usando a abordagem de diferenciação automática pode ser
realizada sobre um funcional discretizado, que requer a discretização da equação da onda.
Aqui, a equação da onda é discretizada usando um esquema explícito de diferenças finitas
dado por aproximações de diferenças finitas centradas de segunda ordem para a derivada
de tempo e de alta ordem para as derivadas espaciais. Assim, começando com a equação
39
da onda acústica escalar com densidade constante para um meio bidimensional
1
𝑣2(𝑥, 𝑧)
𝜕2𝑝(𝑥, 𝑧, 𝑡)
𝜕𝑡2
−∇2𝑝(𝑥, 𝑧, 𝑡) = 𝑤(𝑡)𝛿(𝑥− 𝑥𝑠)𝛿(𝑧 − 𝑧𝑠) , (3.23)
onde 𝑝(𝑥, 𝑧, 𝑡) é o campo de onda de pressão, 𝑣(𝑥, 𝑧) é a velocidade de propagação da onda
compressional, 𝑤(𝑡) representa a função do sinal da fonte, 𝛿(𝑥− 𝑥𝑠) e 𝛿(𝑧 − 𝑧𝑠) são deltas
de Dirichlet e ∇2𝑝(𝑥, 𝑧, 𝑡) é o operador Laplaciano aplicado ao campo de pressão e é dado
por
∇2𝑝(𝑥, 𝑧, 𝑡) = 𝜕
2𝑝(𝑥, 𝑧, 𝑡)
𝜕𝑥2
+ 𝜕
2𝑝(𝑥, 𝑧, 𝑡)
𝜕𝑧2
, (3.24)
que descreve as variações espaciais de segunda ordem do campo de pressão ao longo das
dimensões espaciais 𝑥 e 𝑧, respectivamente.
A equação de onda discretizada pode ser obtida usando o método das diferenças finitas
(Strikwerda, 2004) e para isso considere que uma coordenada no espaço contínuo (𝑥, 𝑧)
é representada por uma coordenada (𝑥𝑖, 𝑧𝑗) no espaço discreto, círculo preto na Figura.
3.5. Considere também que o tempo contínuo descrito pela variável 𝑡 seja representada no
tempo discreto por 𝑡𝑛, como mostrado na Figura 3.5. Assim, o campo de pressão contínuo
𝑝(𝑥, 𝑧, 𝑡) para o espaço discreto (𝑥𝑖, 𝑧𝑗) = (𝑖Δ𝑥, 𝑗Δ𝑧) e para um instante discreto de tempo
𝑡𝑛 = 𝑛Δ𝑡 é representado por:
𝑝𝑛𝑖,𝑗 = 𝑝(𝑥𝑖, 𝑧𝑗, 𝑡𝑛) = 𝑝(𝑖Δ𝑥, 𝑗Δ𝑧, 𝑛Δ𝑡) , (3.25)
onde 𝑝𝑛𝑖,𝑗 denota o campo de pressão na malha, Δ𝑥 e Δ𝑧 são os espaçamentos ao longo das
dimensões 𝑥𝑖 e 𝑧𝑗, respectivamente, e Δ𝑡 é o tamanho do passo no tempo. Assim, pode-se
usar uma aproximação de diferenças finitas centrada de segunda ordem para derivada
temporal na equação da onda, que segue
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛−1
𝑖,𝑗
=
𝑝𝑛𝑖,𝑗 − 2𝑝𝑛−1𝑖,𝑗 + 𝑝𝑛−2𝑖,𝑗
(Δ𝑡)2 +𝒪
2 , (3.26)
onde 𝒪2 = 𝒪(Δ𝑡2) é o erro de truncamento da aproximação da derivada de tempo do
campo de pressão. Enquanto que, as derivadas espaciais na equação da onda, ou seja, o
operador Laplaciano, usa-se uma aproximação de diferenças finitas centrada de ordem 2𝑀 ,
que segue
(︁
∇2𝑝
)︁𝑛−1
𝑖,𝑗
= 𝑐0
[︃
1
(Δ𝑥)2 +
1
(Δ𝑧)2
]︃
𝑝𝑛−1𝑖,𝑗
+
𝑀−1∑︁
𝑙=1
𝑐𝑙
[︃
𝑝𝑛−1𝑖−𝑙,𝑗 + 𝑝𝑛−1𝑖+𝑙,𝑗
(Δ𝑥)2
]︃
+
𝑀−1∑︁
𝑙=1
𝑐𝑙
[︃
𝑝𝑛−1𝑖,𝑗−𝑙 + 𝑝𝑛−1𝑖,𝑗+𝑙
(Δ𝑧)2
]︃
+𝒪2𝑀 , (3.27)
40
Δ𝑥
Δ𝑧
∙
𝑥𝑖
𝑧𝑗
(a) Malha espacial.
−Δ𝑡 +Δ𝑡
-
𝑡𝑛
∙ ∙ ∙∙∙
(b) Malha temporal.
Figura 3.5: Domínio discreto: (a) malha espacial bidimensional com Δ𝑥 e Δ𝑧 descrevendo
os espaçamentos nas direções dos eixos 𝑥𝑖 e 𝑧𝑗 , respectivamente, e o círculo preto representa
a coordenada discreta e (b) malha temporal com os pontos discretos 𝑡𝑛 com o tamanho do
passo no tempo sendo Δ𝑡.
onde 𝑐𝑙 são os coeficientes do operador de diferenças finitas, 𝑀 é a metade do comprimento
do operador de diferenças finitas e 𝒪2𝑀 = 𝒪(Δ𝑥2𝑀 , Δ𝑧2𝑀) é o erro de truncamento das
aproximações das derivadas espaciais.
Finalmente, pode-se resolver a equação da onda acústica usando um esquema explícito
de diferenças finitas, que atualiza o campo de onda de pressão através da seguinte relação
recursiva:
𝑝𝑛𝑖,𝑗 = 2𝑝𝑛−1𝑖,𝑗 − 𝑝𝑛−2𝑖,𝑗 + 𝑣2𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛−1
𝑖,𝑗
+ 𝑊 𝑛−1,𝑠𝑖,𝑗
]︂
+𝒪22𝑀 , (3.28)
onde 𝑝𝑛𝑖,𝑗 é campo de onda na malha de diferenças finitas, (∇2𝑝)
𝑛
𝑖,𝑗 é uma matriz quadrada
simétrica, 𝑊 𝑛,𝑠𝑖,𝑗 representa o termo de fonte discreto, sendo uma matriz com dimensão da
malha de zeros exceto nas coordenadas das fontes e 𝒪22𝑀 = 𝒪(Δ𝑡2, Δ𝑥2𝑀 , Δ𝑧2𝑀) é o erro
de truncamento das aproximação de diferenças finitas.
Agora, pode-se definir a função objetivo de quadrados mínimos discretizada, que mede
a diferença entre o campo de pressão modelado 𝑝𝑛𝑖,𝑗 e campo de pressão observado 𝑝𝑛𝑟 , da
seguinte forma:
𝐽(𝑣𝑖,𝑗) =
1
2
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁2
, (3.29)
onde 𝑆𝑟 é um matriz para amostragem do campo de onda discreto nas coordenadas
41
dos receptores, 𝑠 e 𝑛 são os índices que representam as fontes e as etapas de tempo,
respectivamente, e 𝑁𝑠, 𝑁𝑟 e 𝑁𝑡 denotam o número de fontes, o número de receptores e o
tempo total de modelagem, respectivamente. A função objetivo é função do modelo de
velocidade discreto através de 𝑝𝑛𝑖,𝑗 = 𝑝𝑛𝑖,𝑗(𝑣𝑖,𝑗).
O gradiente da função objetivo com relação ao modelo de velocidade pode ser obtido
aplicando a regra da cadeia no modo reverso para função composta 𝐽 = 𝐽(𝑝𝑛𝑖,𝑗(𝑣𝑖,𝑗)), que
segue (Sun et al., 2019):
[∇𝐽(𝑣𝑖,𝑗)]𝑛𝑖,𝑗 =
𝑁𝑡∑︁
𝑛=0
(︃
𝜕𝐽
𝜕𝑝𝑛𝑖,𝑗
)︃
𝜕𝑝𝑛𝑖,𝑗
𝜕𝑣𝑖,𝑗
. (3.30)
A expansão da derivada parcial (𝜕𝐽/𝜕𝑝𝑛𝑖,𝑗) é realizada de acordo com a relação recursiva
para calcular o campo 𝑝𝑛𝑖,𝑗, Eq. 3.28, onde a atualização do campo de pressão no instante
𝑛 depende dos campos avaliados em dois instantes de tempo passados. O gradiente da
função objetivo de quadrados mínimos é obtido avaliando as derivadas parciais que são
formadas da expansão de (𝜕𝐽/𝜕𝑝𝑛𝑖,𝑗), como mostrado no apêndice C–, e dada por (Sun
et al., 2019):
[∇𝐽(𝑣𝑖,𝑗)]𝑛𝑖,𝑗 =
2
𝑣𝑖,𝑗
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛
𝑖,𝑗
(Δ𝑡)2 , (3.31)
onde (𝜕2𝑝/𝜕𝑡2)𝑛𝑖,𝑗 é derivada de segunda ordem de tempo do campo de pressão discreto
e 𝜆𝑛𝑖,𝑗 é o campo obtido pela retropropagação do resíduo e calculado através da relação
recursiva abaixo:
𝜆𝑛𝑖,𝑗 = 2𝜆𝑛+1𝑖,𝑗 − 𝜆𝑛+2𝑖,𝑗 + 𝑣2𝑖,𝑗 (Δ𝑡)
2
⎡⎣(︁∇2𝜆)︁𝑛+1
𝑖,𝑗
+ 1
𝑣2𝑖,𝑗 (Δ𝑡)
2 𝑆
†
𝑟
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁⎤⎦ . (3.32)
O gradiente da função objetivo discretizada obtida pelo o método dos estados adjuntos
discreto é igual ao gradiente calculado por AD, Eq. 3.31, ver o apêndice B–. O gradiente
derivado pelo o método dos estados adjuntos discreto é obtido de forma análoga ao proce-
dimento realizado para calcular o gradiente do funcional contínuo, porém, a abordagem
discreta usa a equação da onda discretizada, como mostrado no apêndice B–.
Uma questão importante que deve ser destacada sobre as ferramentas de AD, quando são
usadas para determinar o gradiente de uma função matemática, é se a função matemática
tem uma solução analítica ou ela é resultante de um procedimento numérico. Se a função
possui um valor analítico, então, calcular o gradiente para esta função usando diferenciação
automática deve retornar o valor do gradiente exato até a precisão da máquina. No entanto,
se a função é obtida como solução de um procedimento numérica, por exemplo, a solução
de uma equação diferencial parcial, então o valor numérico da função pode conter erros
de truncamento que podem afetar a precisão da derivada calculada (Nocedal and Wright,
42
2006). Nocedal and Wright (2006), ainda destaca que normalmente o erro de truncamento
tem uma valor pequeno, mas a derivada deste erro pode não ser tão pequeno. Isso, pode
resultar em um erro potencialmente grande quandoa derivada é aplicada a uma função
oriunda de um procedimento numérico.
3.4 O CÁLCULO DO GRADIENTE USANDO A FERRAMENTA DE DIFERENCIA-
ÇÃO AUTOMÁTICA ENZYME
O Enzyme é uma ferramenta de diferenciação automática baseado em compilador que
opera em representação intermediária (na sigla em inglês IR) na máquina virtual de baixo
nível, na sigla em inglês LLVM, (Moses et al., 2021). A ferramenta de AD Enzyme utiliza
a estratégia de transformação de código para realizar a derivação automática de uma
função matemática. A estratégia de transformação de código utilizada pelo Enzyme é
diferente da abordagem de operadores de overloading usada por outras ferramentas de AD,
como, o PyTorch, que envolve a definição de novos operadores para calcular as derivadas
das funções. Enquanto que, a primeira usa um código fonte de uma função para produzir
um novo código que avalia as derivadas. A ferramenta Enzyme possui flexibilidade para
linguagens de programação que usam o compilador LLVM, tais como: Julia, C/C++
(Clang) e mais recentemente Fortran (Flang). O pacote Enzyme.jl é uma interface de alto
nível em Julia para o Enzyme (Moses et al., 2021). Além disso, o Enzyme (ou Enzyme.jl)
possui suporte a paralelismo em sistemas de memória compartilhado, distribuído e em
unidade de processamento gráfico (Moses et al., 2021).
A estrutura do código fonte depende diretamente das limitações da ferramenta de
diferenciação automática escolhida. Em outras palavras, quanto mais características da
linguagem de computador a ferramenta de AD consegue manusear (ou seja, ter suporte)
menos modificações serão necessárias no código fonte. Por exemplo, o pocote de AD
Zygote.jl não suporta mutação. Isso, pode exigir grande alterações do código original
principalmente quando se trata de um programa de modelagem da equação da onda. Pois,
esse é geralmente implementada através de algoritmos iterativos. O Enzyme.jl possui
suporte para muito das características da linguagem de programação Julia, como, controle
de fluxo, mutação e construtores, o que fornece grande liberdade para estruturação do
código fonte.
3.4.1 A linguagem de programação Julia
Julia é uma linguagem de programação de alto desempenho, dinâmica e de código
aberto, projetada para aplicações científicas. Foi desenvolvida em 2009 por um grupo de
pesquisadores em ciência da computação: Jeff Bezanson, Stefan Karpinski, Viral B. Shah
e Alan Edelman. A primeira versão de código aberto do Julia foi lançado em fevereiro
de 2012. O Julia foi criado com o objetivo de oferecer uma linguagem de programação
43
que combinasse a facilidade de uso do MATLAB com o desempenho de linguagens de
programação de baixo nível, como C e Fortran (Bezanson et al., 2012a). Uma visão mais
precisa é descrita por Bezanson e sua equipe quando explicaram porquê criaram uma nova
linguagem:
We want a language that’s open source, with a liberal license. We want the
speed of C with the dynamism of Ruby. We want a language that’s homoiconic,
with true macros like Lisp, but with obvious, familiar mathematical notation
like Matlab. We want something as usable for general programming as Python,
as easy for statistics as R, as natural for string processing as Perl, as powerful
for linear algebra as Matlab, as good at gluing programs together as the shell.
Something that is dirt simple to learn, yet keeps the most serious hackers happy.
We want it interactive and we want it compiled (Bezanson et al., 2012b).
A linguagem Julia tem uma sintaxe limpa e intuitiva, com recursos poderosos para
manipulação de arranjos e operações numéricas. Ela também possui recursos avançados,
como tipagem dinâmica, gerenciamento de memória automático e suporte para programação
paralela e distribuída. Além disso, a linguagem Julia é construída em torno de um
compilador Just-in-Time (na sigla inglês JIT), que permite a compilação de código em
tempo de execução e a otimização do código para a arquitetura do processador. O JIT
funciona em duas etapas principais:
• Compilação: Quando o código Julia é executado pela primeira vez, o JIT compila
o código em um formato intermediário chamado código de baixo nível (LLVM IR).
• Otimização: O JIT realiza diversas otimizações no código LLVM IR, incluindo a
eliminação de código redundante e o reordenamento de operações para maximizar a
utilização da CPU. O código LLVM IR é então compilado para o código de máquina
nativo, que é executado pelo processador.
O JIT é responsável pelo alto desempenho na linguagem de programação Julia que
pode ser comparável ao de linguagens de programação de baixo nível, como C e Fortran.
Das muitas características da linguagem de programação Julia, aqui, vale ressaltar
somente sobre a mutação em Julia. Mutação em Julia, refere-se à capacidade de modificar
o conteúdo de uma variável do tipo array durante a execução de um programa sem
precisar de alocação de memória adicional. As funções em Julia chamadas de mutantes são
indicadas com um ponto de exclamação no final. A mutação é importante para cálculos
numéricos, pois é possível reutilizar a memória e evitar alocações excessivas que levam a
trabalhos adicionais para o coletor de lixo (Karlsson, 2021).
Mais adiante será discutido que o pocote de AD Enzyme.jl possui suporte tanto para
funções não mutantes quanto para funções mutantes. Há algumas vantagens no uso de
44
funções mutantes. A primeira, pode evitar alocação dinâmica e a criação de variáveis
adicionais. Desta forma, pode ser mais eficiente em termo de alocação de memória. A
segunda, refere-se a capacidade de extrair informações encapsulada na função.
3.4.2 Como usar o pacote diferenciação automática Enzyme.jl
A ferramenta de diferenciação automática Enzyme é uma aplicação de código aberto que
usa a infraestrutura de compilador LLVM para calcular automaticamente o gradiente de um
programa de computador de uma função matemática em linguagens de programação, como
C, C++, Fortran, Rust e Julia. A ferramenta Enzyme usa a estratégia de transformação
de código para calcular automaticamente a derivada de uma função matemática. Essa
abordagem envolve a transformação do código original da função para construir um código
adicional que permite o cálculo automático da derivada da função. Para realizar essa
transformação, o Enzyme utiliza o compilador LLVM para representar o código fonte em
um formato intermediário, IR. Em seguida, o Enzyme utiliza a IR do código fonte para
calcular automaticamente as derivadas da função desejada. O código resultante (ou seja, o
código que avalia a derivada da função original) não é acessível ao usuário. Com o Enzyme
é possível manusear mutação, arranjos, estruturas mutáveis e controle de fluxo. Além
disso, ele também tem suporte a GPUs e pode manusear paralelismo, tais como MPI,
OpenMP e threads em Julia (Moses et al., 2021).
Em Julia, a ferramenta de AD Enzyme é acessível através da interface Enzyme.jl. Para
ilustrar como usar Enzyme.jl para calcular o gradiente da função objetivo, 2.21, novamente,
recorre-se a função rosenbrock, 3.17. Na Figura 3.6 é mostrado o código em Julia para
calcular o valor da função rosenbrock.
function rosenbrock!(a::Float64, b::Float64, x::Array {Float64,1}, y::Array{Float64,1})
𝑦[1] = (𝑎− 𝑥[1])∧2 + 𝑏 * (𝑥[2]− 𝑥[1]∧2)∧2
return nothing
end
Figura 3.6: Código fonte escrito em Julia para a calcular o valor da função rosenbrock, Eq.
3.17.
A implementação acima para a função rosenbrock usa o conceito de mutação em
Julia. Desta forma, a variável 𝑦 que retorna com o valor da função precisa ser alocada
externamente. Esse característica é explorada na implementação da função objetivo, Eq.
2.21, para retornar o valor da função objetivo e da matriz pseudo-hessiana, Eq. 2.54.
Para calcular o gradiente da função rosenbrock, usa-se a função autodiff do pacote
de AD Enzyme.jl. Além disso, são necessários usar três comandos: Reverse, Const e
Duplicated. O comando Reverse seleciona o modo reverso de diferenciação automática.
O comando Const indica que o argumento não participa do cálculo do gradiente, ou45
seja, o argumento é assumido constante. O comando Duplicated exigi dois argumentos
mutáveis com a mesma dimensão. O primeiro argumento é a variável na qual será avaliado
a diferenciação e o segundo argumento retornará com o valor do gradiente. Esse comando
também pode ser usado para retornar o valor da função objetivo, como apresentado na
Figura 3.7. Além disso, vale ressaltar que a ordem dos argumentos na função autodiff
segue a ordem como eles estão no código da função original. Por exemplo, no código
da função rosenbrock as variáveis de entradas 𝑎, 𝑏, 𝑥 e 𝑦 são representadas na função
autodiff por: 𝑎, 𝑏, 𝑥 e �̄�, respectivamente.
# variáveis de entradas:
1. 𝑥 = [2.0; 3.0]
# gradiente:
2. 𝑔 = [0.0; 0.0]
# constantes:
3. 𝑎 = 1.0; 𝑏 = 1.0;
# sementes:
4. �̄� = [0.0]
5. 𝑔 = [1.0]
# calcula o gradiente da função rosenbrock:
6. Enzyme.autodiff(Enzyme.Reverse,
7. rosenbrock!,
8. Const(a),
9. Const(b),
10. Duplicated(x,g),
11. Duplicated(�̄�,𝑔))
Figura 3.7: Código para calcular o gradiente da função rosenbrock usando a ferramenta
de diferenciação automática Enzyme.jl.
Na Figura 3.7, 𝑥 é um vetor das variáveis de entrada, 𝑔 é um vetor com a mesma
dimensão de 𝑥, onde será escrito o valor do gradiente da função rosenbrock. Novamente,
fazendo uma ligação com a implementação da função objetivo, Eq. 2.21, o vetor 𝑥
corresponderia o modelo de velocidade, que deve incluir o domínio estendido, ou seja,
com as bordas de absorção. Consequentemente, o vetor 𝑔 deve ter a mesma dimensão do
domínio estendido. Enquanto que, �̄� e 𝑔 são as variáveis adjuntas com 𝑔 sendo chamado de
semente. Ambos também devem ter as mesmas dimensões, mas são vetores de comprimento
unitário, pois a finalidade de fornecer a semente para a função autodiff é ter acesso ao
valor da função avaliada. No caso da implementação da função objetivo, Eq. 2.21, vale
ressaltar que a função autodiff deve ser escrita dentro do laço dos tiros e as variáveis
�̄� e 𝑔 devem ser sempre inicializada para cada tiro, com zero e um, respectivamente. A
estrutura da implementada da função objetivo, Eq. 2.21, para ser fornecida a função
autodiff do pocote Enzyme.jl é mostrado abaixo.
46
3.4.3 Implementação do cálculo do gradiente usando Enzyme.jl
Esta seção é destinada a apresentar a estrutura do algoritmo para calcular o valor
da função objetivo de quadrados mínimos, Eq. 2.21, e como o pacote de diferenciação
automática Enzyme.jl pode ser usado para calcular o seu gradiente. Para facilitar a
descrição de ambos, considere a equação da onda discretizada, Eq. 3.28, reescrita da
seguinte forma (Ren et al., 2020):
𝑝𝑛+1𝑖,𝑗 −
[︁
2 + 𝑣2𝑖,𝑗 (Δ𝑡)
2∇2
]︁
𝑝𝑛𝑖,𝑗 + 𝑝𝑛−1𝑖,𝑗 = 𝑊
𝑛,𝑠
𝑖,𝑗 . (3.33)
Para escrever equação acima na forma compacta primeiramente, define-se os vetores
u𝑛 = [𝑝𝑛1,1, · · · , 𝑝𝑛𝑁𝑥,1, 𝑝
𝑛
1,2, · · · , 𝑝𝑛𝑁𝑥,2, · · · , 𝑝
𝑛
1,𝑁𝑧 , · · · , 𝑝
𝑛
𝑁𝑥,𝑁𝑧 ]
† , (3.34)
v𝑛 = [𝑊 𝑛1,1, · · · , 𝑊 𝑛𝑁𝑥,1, 𝑊
𝑛
1,2, · · · , 𝑊 𝑛𝑁𝑥,2, · · · , 𝑊
𝑛
1,𝑁𝑧 , · · · , 𝑊
𝑛
𝑁𝑥,𝑁𝑧 ]
† , (3.35)
com dimensão 𝑁 = 𝑁𝑥 × 𝑁𝑧, onde 𝑁 é o número total de pontos da malha e 𝑁𝑥 e
𝑁𝑧 denotam o número total de pontos para os eixos vertical e horizontal da malha,
respectivamente. Agora escrevendo o termo entre colchetes na Eq. 3.33 na forma:
G = 2I + AD, onde A = 𝑑𝑖𝑎𝑔{𝑣2𝑖𝑗 (Δ𝑡)
2} é uma matriz diagonal de dimensão 𝑁 ×𝑁 , D
é uma matriz simétrica do operador Laplaciano discretizado com dimensão 𝑁 ×𝑁 e I é a
matriz identidade também com dimensão 𝑁 ×𝑁 . Assim, pode-se reescrever a Eq. 3.33 na
forma
u𝑛+1 −Gu𝑛 + u𝑛−1 = v𝑛 . (3.36)
Para escrever a equação da onda acima na forma ainda mais compacta, define-se novos
vetores w =
[︁
u0, u1, · · · , u𝑁𝑡
]︁†
e b =
[︁
v0, v1, · · · , v𝑁𝑡
]︁†
, portanto,
Bw = b , (3.37)
onde B é uma matriz esparsa da forma
B =
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
I
−G I
I −G I
. . . . . . . . .
I −G I
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
. (3.38)
O algoritmo da função objetivo de quadrados mínimos fornecido a função de AD
autodiff do pacote Enzyme.jl é resumindo abaixo:
1. Entre com o modelo de velocidade, 𝑣, e o dado observado, d̃;
47
2. Define e inicialize o campo de onda, u;
3. Define e inicialize o dado calculado, d;
4. Resolve a equação da onda acústica, Eq. 3.36;
5. Registre o dado calculado para o 𝑟-ésimo receptor e armazene a 𝑛-ésima amostra a
cada intervalo de amostragem temporal. Isto é,
𝑑𝑛𝑟 = 𝑆𝑛𝑆𝑟u , (3.39)
onde 𝑆𝑟 é uma matriz que extrai o valor do campo u nas posições dos receptores e
𝑆𝑛 é uma matriz que registra o valor do campo u a cada intervalo de amostragem
temporal;
6. Calcule o valor da função objetivo de quadrados mínimos, ou seja,
𝐽(𝑣) = 12
∑︁
𝑛
∑︁
𝑟
(︁
𝑑𝑛𝑟 − 𝑑𝑛𝑟
)︁2
. (3.40)
Algoritmo 1: Estrutura da função objetivo de quadrados mínimos fornecida a
função autodiff do pocote de AD Enzyme.jl.
1: Entradas: Modelo de velocidade 𝑣, dado observado d̃;
2: u = 0 Inicialize o campo de onda
3: d = 0 Inicialize o dado calculado
4: para cada etapa de tempo 𝑘
5: u𝑘+1 = Gu𝑘 − u𝑘−1 + v𝑘 Resolva a equação da onda
6: 𝑑𝑛𝑟 = 𝑆𝑛𝑆𝑟u𝑘 Registre o dado modelado
7: fim
8: 𝐽(𝑣) = 12
∑︀
𝑛
∑︀
𝑟(𝑑𝑛𝑟 − 𝑑𝑛𝑟 )2 Calcule a função objetivo
9: Resultado: Valor da função objetivo, 𝐽(𝑣);
A partir do código da função objetivo (ou seja, algoritmo 1), pode-se determinar seu
gradiente automaticamente usando a função autodiff, como é ilustrado no fluxograma
abaixo. Na Figura 3.8, o bloco A ilustra a implementação da função objetivo de quadrados
mínimo, ou seja, o algoritmo 1. Enquanto que, o bloco B mostra como calcular o gradiente
da função objetivo usando a função autodiff do pacote de AD Enzyme.jl. Portanto, a
função autodiff tem como entra o código da função objetivo, algoritmo 1, e ela retorna
tanto o valor da função 𝐽(𝑣) quanto seu gradiente.
Para calcular o gradiente da função objetivo em um experimento de múltiplos tiros, o
fluxograma mostrado na Figura 3.8 deve ser chamado para cada tiro, com ressalva que
a semente deve ser ativada para cada chamada da função autodiff, como foi discutido
na seção anterior. Assim, para cada tiro a semente é ativada e o gradiente deste tiro se
48
Entradas𝑣 d̃
w
Bw = b
𝐽(𝑣) = 12
∑︁
𝑛
∑︁
𝑟
(︁
𝑆𝑛𝑆𝑟w− d̃
)︁2
Valor de 𝐽(𝑣)
autodiff
Gradiente de 𝐽(𝑣)
A B
Figura 3.8: Fluxograma para calcular o gradiente da função objetivo de quadrados mínimos
usando a função autodiff do pacote de diferenciação automática Enzyme.jl. O bloco A
mostra como o valor da função objetivo é calculado, que exige resolver a equação da onda
para obter o dado modelado. Enquanto que, o bloco B ilustra como o gradiente da função
objetivo é obtido através do pacote de diferenciação automática Enzyme.jl, que também
retorna com o valor da função objetivo.
torna a entrada da função autodiff para o próximo tiro onde é acumulado para gerar o
gradiente completo.
4 EXPERIMENTOS NUMÉRICOS
Neste capítulo, apresenta-se os resultados do cálculo do gradiente da função objetivo
de quadrados mínimos e da inversão usando os gradientes calculados pela diferenciação
automática e pelo método dos estados adjuntos. Posteriormente, são avaliados o custo
computacional e o requerimento de memória exigidos na computação dos gradientes obtidos
pela AD e pelo ASM. Por último, analisa-se quantitativamente as estimativas dos modelos
de velocidades, as curvas de convergência e o comportamento do método de busca linear
para os métodos de máxima descida, gradiente conjugado não linear e de memória limitada
BFGS.
4.1 VALIDAÇÃO E ASPECTOS IMPORTANTES DA DERIVAÇÃO DO GRADIENTE
USANDO DIFERENCIAÇÃO AUTOMÁTICA
As análises da implementação do código adjunto derivado pelo método dos estados
adjuntos e da computação do gradiente obtido com a ferramenta de AD Enzyme.jl são
realizadas através de dois modelos de velocidades sintéticos: modelo de velocidade com
anomalias gaussianas e o modelo de velocidade Marmousi. A geometria de aquisição
usada para realizar a modelagem com ambos modelos de velocidades foi assumida do tipostream fixo, uma ilustração esquemática é mostrado na Figura 4.1. Neste tipo geometria se
mantém fixo a linha dos receptores no topo do modelo e variam as coordenadas de aplicação
da fonte. Na Figura 4.1, os receptores e as fontes são representados pelos retângulos e
círculos, respectivamente, e o círculo vermelho denota a coordenada para o primeiro tiro e
os demais tiros são tomados no sentido da extremidade esquerda para extremidade direita
do modelo.
N N N N N N N · · · N N N N N N N
N Receptores
FontesDomínio do modelo de velocidade
Figura 4.1: Geometria de aquisição usada para realizar as modelagens com os modelos
de velocidades com anomalias gaussianas e Marmousi. As fontes e os receptores são
representados pelos círculos e triângulos, respectivamente. Os receptores são mantidos
fixos durante a aquisição e coordenada para a primeira fonte é indicado pelo círculo
vermelho na extremidade esquerda do modelo.
Na Tabela 4.1 são mostrados os principais parâmetros usados para realizar a modelagem
49
50
tanto para o modelo de velocidade com anomalias gaussianas quanto para o modelo de
velocidade Marmousi. A linha de aquisição para a modelagem com o modelo de velocidade
com anomalias gaussianas contém 99 receptores espaçados em 10 metros cada e localizados
na profundidade de 20 metros. O tempo de modelagem, intervalo de amostragem temporal,
número de amostras do traço registrado e a frequência pico da fonte do tipo Ricker usadas
foram, respectivamente: 2 segundos, 0, 004 segundos, 501 e 10 Hz. Para o modelo de
velocidade Marmousi a linha de aquisição usada para realizar a modelagem contém 199
receptores espaçados em 20 metros cada e localizados na profundidade de 10 metros. Cada
traço contém 2001 amostras com cada amostra gravada a cada 0, 002 segundos para um
tempo total de modelagem de 4 segundos. A frequência pico usada para a fonte do tipo
Ricker foi 8 Hz.
Tabela 4.1: Parâmetros de aquisição para os modelos de velocidades com anomalias
gaussianas e Marmousi.
Parâmetros Valores/Anomalias gaussianas Valores/Marmousi
Números de tiros 49 40
Números de receptores 99 199
Frequência pico da fonte 10 Hz 8.0 Hz
Número de amostras por traço 501 2001
Tempo total de modelagem 2 seg 4 seg
Intervalo de amostragem temporal 0.004 seg 0.002 seg
Espaçamento entre receptores 10 m 20 m
Espaçamento entre tiros 20 m 100 m
Profundidade dos tiros 20 m 10 m
Profundidade dos receptores 20 m 10 m
Posição inicial dos tiros 20 m 50 m
Neste trabalho, adotou-se dois tipos de implementações para as condições de fronteiras
absorventes: ABC simples (Sochacki et al., 1987) e ABC PML. No entanto, todos os
resultados apresentado neste capítulo usam a primeira condição, exceto, na seção 4.1.4
onde se faz uma análise de custo e de demanda de memória para calcular os gradientes
tanto por AD quanto pelo ASM usando as duas condições de fronteiras absorventes.
4.1.1 Experimento para um modelo de velocidade com anomalias gaussianas
O primeiro modelo para teste é um modelo de velocidade com duas anomalias gaussianas
e ele é mostrado na Figura 4.2a. Esse contém 101 amostras na horizontal e 51 amostras
na vertical, espaçadas de 10 em 10 metros tanto na horizontal quanto na vertical. As
velocidades mínima e máxima estão associados as duas anomalias, com magnitude de 1500
𝑚/𝑠 e 2500 𝑚/𝑠, respectivamente. Na Figura 4.2b é mostrado o modelo de velocidade
51
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(a)
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(b)
Figura 4.2: Modelo de velocidade com anomalias gaussianas: (a) verdadeiro e (b) inicial.
inicial correspondente ao modelo de velocidade com anomalias gaussianas verdadeiro. Esse
foi assumido como homogêneo com velocidade de 2000 𝑚/𝑠.
Na Figura 4.3 são apresentados o dado observado, o dado calculado e o resíduo para
o tiro 25 apenas. O dado observado, Figura 4.3a, é obtido através de uma modelagem
sobre o modelo de velocidade verdadeiro, Figura 4.2a, enquanto que, o dado calculado
é obtido realizando uma modelagem sobre o modelo de velocidade inicial, Figura 4.2b.
A diferença entre o dado calculado e o dado observado é o resíduo, Figura 4.3c, sendo a
fonte da modelagem do campo de onda adjunto, Eq. 2.23. Observe, que no dado residual
a onda direta, evento linear exibido nas Figuras 4.3a e 4.3a, foi anulado, pois o meio de
fundo (modelo de velocidade inicial) tem a mesma velocidade que o modelo verdadeiro na
região entre fonte e receptores.
200 400 600 800
Coordenada lateral (m)
0.0
0.5
1.0
1.5
2.0
Te
m
po
 (
s)
(a)
200 400 600 800
Coordenada lateral (m)
0.0
0.5
1.0
1.5
2.0
Te
m
po
 (
s)
(b)
200 400 600 800
Coordenada lateral (m)
0.0
0.5
1.0
1.5
2.0
Te
m
po
 (
s)
(c)
Figura 4.3: Dados sísmicos sintéticos obtidos para o modelo de velocidade com anomalias
gaussianas para o tiro 25: (a) verdadeiro, (b) calculado e (c) residual.
Na Figura 4.4 são apresentados os gradientes obtidos pelo ASM, Figura 4.4a, e pela
52
AD, Figura 4.4b, para o modelo de velocidade com anomalias gaussianas. Na Figura 4.4c
é mostrado a diferença entre os dois gradientes.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1.0
0.5
0.0
0.5
1.0
(a) Gradiente ASM.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1.0
0.5
0.0
0.5
1.0
(b) Gradiente AD.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
0.1072
0.0588
0.0104
0.0380
0.0864
(c) Diferença entre os gradientes ASM e AD.
Figura 4.4: Gradiente da função objetivo de quadrados mínimos obtido para o modelo
de velocidade com anomalias gaussianas: (a) usando o método dos estados adjuntos e (b)
usando a diferenciação automática. Em (c) é mostrado a diferença entre os gradientes
obtidos pelo método dos estados adjuntos e pela diferenciação automática.
Os gradientes obtidos pelas duas abordagens parecem ser muito semelhantes do ponto
de vista qualitativo, como mostrado nas Figuras 4.4a e 4.4b. No entanto, percebe-se uma
certa diferença entre eles, principalmente, na região superior a esquerda, como pode ser
observado na Figura 4.4c. Do ponto de vista quantitativo, avaliou-se a máxima diferença
relativa entre os dois gradientes usando uma variação da expressão apresentada por Cao
and Liao (2015):
𝜖𝑔 = max
(︃
|g𝐴𝑆𝑀 − g𝐴𝐷|
‖ g𝐴𝑆𝑀 ‖2
)︃
, (4.1)
onde g𝐴𝑆𝑀 refere-se ao gradiente obtido pelo ASM e g𝐴𝐷 refere-se ao gradiente obtido
pela AD. Assim, a máxima diferença entre os dois gradientes obtida foi 𝜖𝑔 = 4, 3× 10−2,
que implica em 95, 7 por cento de semelhança.
4.1.2 Experimento para um modelo de velocidade Marmousi
O segundo modelo é um corte na região central do modelo de velocidade compressional
Marmousi II (Martin et al., 2006), com 401 amostras na horizontal e 201 amostras na
53
vertical e com intervalo de amostragem horizontal e vertical de 10 metros. A velocidade
mínima tem magnitude de 1500 𝑚/𝑠, que corresponde a lamina d’água com espessura
de 100 metros. Enquanto que, a velocidade máxima tem magnitude de 4450 𝑚/𝑠, que
corresponde as três camadas na base das falhas lítricas, como mostrados nas Figura 4.5a. O
modelo de velocidade inicial correspondente ao modelo de velocidade Marmousi verdadeiro
é mostrado na Figura 4.5b, com velocidade variando verticalmente de 1500 𝑚/𝑠, na camada
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2237
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(a)
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2237
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(b)
Figura 4.5: Modelo de velocidadeMarmousi: (a) verdadeiro e (b) inicial.
d’água, para 3400 𝑚/𝑠, na parte mais profunda do modelo.
Na Figura 4.6a é mostrado o dado observado obtido através da modelagem da equação
da onda, Eq. 3.23, usando o modelo de velocidade Marmousi, Figura 4.5a. O dado calculado
é mostrado na Figura 4.6b e a diferença entre esse e o dado observado é apresentado na
Figura 4.6c. A Figura 4.6 mostra somente os dados obtidos para o tiro 20. Novamente,
500 1000 1500
Coordenada lateral (m)
0.0
1.0
2.0
3.0
4.0
Te
m
po
 (
s)
(a)
500 1000 1500
Coordenada lateral (m)
0.0
1.0
2.0
3.0
4.0
Te
m
po
 (
s)
(b)
500 1000 1500
Coordenada lateral (m)
0.0
1.0
2.0
3.0
4.0
Te
m
po
 (
s)
(c)
Figura 4.6: Dados sísmicos sintéticos obtidos para o modelo de velocidade de Marmousi
para o tiro 20 apenas: (a) verdadeiro, (b) calculado e (c) residual.
observe que no dado residual está livre das ondas diretas, pois tanto o modelo de velocidade
54
Marmousi verdadeiro quanto o modelo de fundo (modelo de velocidade inicial) têm a
mesma velocidade na camada d’água.
Na Figura 4.7 são mostrados os gradientes obtidos pelo ASM, Figura 4.7a, e pela
AD, Figura 4.7b, para o modelo de velocidade Marmousi. A diferença entre estes dois
gradientes é apresentada na Figura 4.7c.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1.0
0.5
0.0
0.5
1.0
(a) Gradiente ASM.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1.0
0.5
0.0
0.5
1.0
(b) Gradiente AD.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
0.0728
0.0370
0.0013
0.0344
0.0701
(c) Diferença entre os gradientes ASM e AD.
Figura 4.7: Gradiente da função objetivo de quadrados mínimos obtido para o modelo
de velocidade Marmousi com: (a) o método dos estados adjuntos e (b) a diferenciação
automática. Em (c) é mostrado a diferença entre os gradientes obtidos pelo método dos
estados adjuntos e pela diferenciação automática.
Novamente, percebe-se que os dois gradientes parecem guardar muitas semelhanças
entre si do ponto de vista qualitativo, como observado nas Figuras 4.7a e 4.7b. Do ponto
de vista quantitativo, avalia-se a máxima diferença entre os gradientes a partir da Eq. 4.1,
sendo 𝜖𝑔 = 2, 1× 10−2. Assim, mostrando que os gradientes calculados através da AD e do
ASM para o modelo de velocidade Marmousi são 97, 9 por cento semelhantes.
4.1.3 Aspectos importantes no cálculo do gradiente por diferenciação auto-
mática
A estratégia usada neste trabalho para calcular o gradiente através do método dos
estados adjuntos difere substancialmente das estratégias (Vlasenko et al., 2016) usadas
pelas ferramentas de diferenciação automática. As ferramentas de AD normalmente usam
estratégias que estabelecem um equilíbrio entre armazenamento e computação. Neste
trabalho, a implementação para calcular o gradiente através do ASM usa a estratégia de
55
salvar os instantâneos dos campos de onda da fonte em disco. Nessa, para cada etapa de
tempo (ou seja, a cada intervalo de amostragem temporal da evolução dos campos de onda
numérico, que foi obtido para assegurar a condição de estabilidade da equação da onda
discretizada através do método das diferenças finitas) é armazenado um instantâneo do
campo de onda da fonte em disco e posteriormente esse histórico é acessado para calcular
o gradiente. Existem estratégias mais eficiente em termos de demanda de alocação, como
reinjeção nas bordas (Clapp, 2009) e em termos de demanda de alocação e computação,
como checkpointing (Pengliang Yang and Virieux, 2016). Essa última é oriunda dos avanços
conquistados no campo da pesquisa sobre diferenciação automática (Giering and Kaminski,
2000).
Além disso, para calcular o gradiente da função objetivo usando diferenciação automá-
tica é essencial que a fronteira de absorção seja considerada. Não considerar as bordas de
absorção para calcular o gradiente por AD conduz à efeitos de alta amplitude ao longo da
domínio computacional do gradiente, como mostrado na Figura 4.8.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
11
00
1
Figura 4.8: Gradiente obtido pela diferenciação automática sem considerar as bordas de
absorção.
Como será discutido abaixo, o comprimento da camada de absorção pode influenciar
a precisão do gradiente mas também o custo e a demanda de alocação para computar o
gradiente usando a ferramenta de AD. Além disso, será mostrado que o tipo de condição
de fronteira absorvente escolhida é um fator importante, que pode alterar principalmente
o custo e requerimento de memória necessários para determinar o gradiente por AD.
4.1.4 Custo e demanda de alocação de memória
Para quantificar o custo e a memória requerida no cálculo do gradiente, recorreu-se ao
pacote TimerOutputs.jl e ao comando shell free. A máquina utilizada neste experimento é
um Dell com o sistema operacional linux, distro ubuntu, arquitetura x86_64 e com 503
𝐺𝑖𝐵 de memória RAM. A análise sobre o custo e a demanda de alocação foi realizada para
56
computação dos gradientes com dois modelos de velocidades aqui adotados. Tal análise
foi feita com o código serial e os gradientes não foram precondicionados com a matriz
pseudo-hessiana. Além disso, avaliou-se o custo e a demanda de memória para computar
os gradientes usando as duas condições de fronteiras absorventes: ABC simples e ABC
PML. O número de pontos assumidos para ABC simples e ABC PML foram 100 e 41,
respectivamente.
Experimento para o modelo de velocidade com anomalias gaussianas
Aqui, avalia-se o custo e o requerimento de alocação de memória para calcular o
gradiente da função objetivo referente ao modelo de velocidade com anomalias gaussianas.
Na Figura 4.9 são mostrados os custos exigidos para calcular os gradientes pela AD e
pelo ASM usando ABC simples, Figura 4.9a, e ABC PML, Figura 4.9b, para o modelo de
velocidade com anomalias gaussianas.
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
1
2
3
4
5
6
Te
m
po
 d
e 
co
m
pu
ta
çã
o 
(m
in
)
4.09
6.29
Custo para calcular os gradientes usando ABC simples
Método adjunto Diferenciação automática
(a)
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
Te
m
po
 d
e 
co
m
pu
ta
çã
o 
(m
in
)
3.44
3.11
Custo para calcular os gradientes usando PML
Método adjunto Diferenciação automática
(b)
Figura 4.9: Custo computacional para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de velocidade
com anomalias gaussianas: a) para a condição de fronteira de absorção simples e b) para a
condição de fronteira de absorção PML.
O custo computacional para calcular os gradientes usando a implementação ABC simples
com AD foi 6, 29 minutos, enquanto que, pelo ASM foi 4.09 minutos. Isto é, calcular o
gradiente por AD usando a implementação ABC simples se mostrou aproximadamente uma
vez e meia mais caro do que calcular o gradiente usando o ASM. Para a implementação
com a ABC PML, observou-se que o custo para computar o gradiente usando a AD foi
3, 11 minutos, enquanto que, o custo para computar o gradiente usando o ASM foi 3, 44
minutos. Assim, calcular o gradiente pelo ASM usando a implementação ABC PML foi
aproximadamente uma vez e um décimo mais caro com relação ao gradiente calculado pela
AD.
Na Figura 4.10 são apresentadas as demandas de alocação de memória requeridas para
57
calcular os gradientes pela AD e pelo ASM usando ABC simples, Figura 4.10a, e ABC
PML, Figura 4.10b, para o modelo de velocidade com anomalias gaussianas.
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
2
4
6
8
10
12
14
Al
oc
aç
ão
 d
e 
m
em
ór
ia
 (
G
iB
)
0.11
14.3
Memória para calcular os gradientesusando ABC simples
Método adjunto Diferenciação automática
(a)
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
1
2
3
4
5
6
Al
oc
aç
ão
 d
e 
m
em
ór
ia
 (
G
iB
)
0.11
6.49
Memória para calcular os gradientes usando PML
Método adjunto Diferenciação automática
(b)
Figura 4.10: Demanda de alocação para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de velocidade
com anomalias gaussianas: a) para a condição de fronteira de absorção simples e b) para a
condição de fronteira de absorção PML.
A alocação de memória exigida para calcular o gradiente usando a implementação ABC
simples pela AD foi 14.3 𝐺𝑖𝐵, enquanto que, somente 0.11 𝐺𝑖𝐵 foi exigindo para calcular
o gradiente pelo ASM. Portanto, alocação de memória requerida para calcular o gradiente
usando a implementação ABC simples foi duas ordem de magnitude maior em relação ao
custo exigido para calcular o gradiente com o ASM. Na implementação com ABC PML,
o requerimento de memória exigido para calcular o gradiente usando AD foi 6, 49 𝐺𝑖𝐵,
enquanto que, para calcular o gradiente usando ASM a memória requerida foi 0, 11 𝐺𝑖𝐵.
Assim, percebeu-se que a memória requerida para calcular o gradiente usando AD com a
implementação ABC PML foi uma ordem de magnitude maior com relação à demanda
exigida para calcular o gradiente usando o ASM.
Experimento para o modelo de velocidade Marmousi
De forma análoga, avaliou-se o custo e a memória exigida para calcular os gradientes
pelo ASM e pela AD com o modelo de velocidade Marmousi. Novamente, tal avaliação foi
realizada usando as duas condições de fronteiras absorventes: ABC simples e ABC PML.
Na Figura 4.11 são mostrados os custos requeridos para calcular os gradientes pela
AD e pelo ASM usando ABC simples, Figura 4.11a, e ABC PML, Figura 4.11b, para o
modelo de velocidade Marmousi.
A partir dos resultados apresentados na Figura 4.11a, observou-se que a computação
do gradiente usando a implementação ABC simples exigiu 28, 12 segundos com o ASM
e 71, 23 segundos com a AD. Logo, constatou-se que computar o gradiente com a AD é
58
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
10
20
30
40
50
60
70
Te
m
po
 d
e 
co
m
pu
ta
çã
o 
(m
in
)
28.12
71.23
Custo para calcular os gradientes usando ABC simples
Método adjunto Diferenciação automática
(a)
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
5
10
15
20
25
30
Te
m
po
 d
e 
co
m
pu
ta
çã
o 
(m
in
)
29.36
32.34
Custo para calcular os gradientes usando PML
Método adjunto Diferenciação automática
(b)
Figura 4.11: Custo computacional para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de velocidade
Marmousi: a) para a condição de fronteira de absorção simples e b) para a condição de
fronteira de absorção PML.
aproximadamente duas vezes e meia mais caro com relação a computar o gradiente com
o ASM. Quando se usou a implementação ABC PML, a computação do gradiente com
o ASM requeriu 29, 36 segundos, enquanto que, a computação do gradiente com a AD
exigiu 32, 24 segundos, como mostrado na Figura 4.11b. Assim, percebeu-se que o custo de
computar o gradiente usando a implementação ABC PML com a AD foi aproximadamente
uma vez e um décimo mais caro com relação ao gradiente calculado com o ASM.
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
20
40
60
80
100
120
140
160
Al
oc
aç
ão
 d
e 
m
em
ór
ia
 (
G
iB
)
0.66
156.7
Memória para calcular os gradientes usando ABC simples
Método adjunto Diferenciação automática
(a)
Método adjunto Diferenciação automática
Estratégia usada para obter o gradiente
0
20
40
60
80
Al
oc
aç
ão
 d
e 
m
em
ór
ia
 (
G
iB
)
0.66
90.6
Memória para calcular os gradientes usando PML
Método adjunto Diferenciação automática
(b)
Figura 4.12: Demanda de alocação para calcular os gradientes da função objetivo com o
método dos estados adjuntos e diferenciação automática usando o modelo de velocidade
Marmousi: a) para a condição de fronteira de absorção simples e b) para a condição de
fronteira de absorção PML.
Na Figura 4.12 são apresentadas as demandas de alocação requeridas para calcular os
gradientes pela AD e pelo ASM usando ABC simples, Figura 4.12a, e ABC PML, Figura
59
4.12b, para o modelo de velocidade Marmousi.
A partir da Figura 4.12a, pode-se perceber que, com implementação ABC simples, são
necessários 0, 66 𝐺𝑖𝐵 de alocação de memória para calcular o gradiente usando o ASM e
156, 7 𝐺𝑖𝐵 de alocação de memória para computar o gradiente com a AD. Portanto, a
demanda de alocação para computar o gradiente usando a implementação ABC simples
com a AD exigiu três ordem de magnitude a mais com relação a demanda de alocação
requerida para computação do gradiente com o ASM. No entanto, essa diferença diminuiu
um ordem de magnitude quando a implementação ABC PML é empregada, como mostrado
na Figura 4.12b. Nela, observou-se que foram necessários 0, 66 𝐺𝑖𝐵 de alocação de memória
para computar o gradiente com o ASM e 90, 6 𝐺𝑖𝐵 de alocação de memória para computar
o gradiente com a AD. Assim, a computação do gradiente usando a implementação ABC
PML mostrou uma demanda de alocação de duas ordem de magnitude a mais com a AD
em relação a correspondente exigida com o ASM.
301x601 301x801 301x1001 301x1201
Variação do domínio computacional
0
50
100
150
200
250
300
Al
oc
aç
ão
 d
e 
m
em
ór
ia
 (
G
iB
)
Requerimento de memória com a variação do domínio computacional
Método adjunto Diferenciação automática
Figura 4.13: Comparação das demandas de alocação de memória para a computação dos
gradientes pelo método dos estados adjuntos (curva azul) e pela diferenciação automática
(curva verde) usando modelos de velocidades com domínios de maior escala.
Portanto, pode-se observar que para um modelo de velocidade de maior escala a
alocação de memória se mostrou mais expressiva do que o custo computacional. Desta
forma, precisou-se avaliar o quão caro em termos de alocação de memória é a computação
de um gradiente com domínio de maior escala. Isso foi realizado seguindo as seguintes
etapas: i) primeiro, selecionou-se cinco modelos a partir do modelo de velocidade Marmousi
com o domínio começando com 301× 601 pontos e variando de 200 pontos até selecionar
o domínio com 301 × 1201 pontos e ii) segundo, se fixou a geometria de aquisição e
o comprimento da camada PML. Assim, avaliou-se demanda de alocação de memória
para calcular o gradiente tanto por AD quanto pelo ASM com a variação do domínio
computacional, sendo mostrado na Figura 4.13. A Figura 4.13 mostra o gráfico da variação
da alocação de memória, eixo vertical, em 𝐺𝑖𝐵 verso a variação do domínio computacional,
eixo horizontal.
60
A partir da Figura 4.13, observou-se que para modelo de velocidade com o domínio
variando entre 301×601 pontos e 301×1201 a alocação de memória exigida pela AD é três
ordens de magnitude maior com relação a correspondente exigida pelo ASM. Além disso,
destaca-se que para o domínio computacional variando a cada 200 pontos tanto AD quanto
ASM apresentaram comportamento aproximadamente linear para demanda de alocação de
memória, variando aproximadamente 0.01 𝐺𝑖𝐵 para o ASM e aproximadamente 50 𝐺𝑖𝐵
para a AD a cada variação de 200 pontos.
Além disso, destaca-se que o uso de uma camada de absorção muito estreita, mais
ainda eficiente para atenuar as reflexões espúrias, pode não ser adequada para calcular
o gradiente usando a AD, enquanto que, essa mesma camada estreita pode fornecer um
gradiente com uma precisão aceitável quando usado o ASM. Por exemplo, uma camada
do tipo ABC PML com 25 pontos mostrou-se adequada para calcular o gradiente com
o ASM. No entanto, quando esta camada de 25 pontos é usada pela AD para calcular o
gradiente se observou distorções na forma do gradientenas regiões próximas às bordas.
Assim, a escolha de 41 ponto para ABC PML se mostrou a melhor escolha para calcular o
gradiente pela AD sem efeitos de distorções e com menos custo e memória.
4.2 ANÁLISE DOS RESULTADOS DA FWI CONVENCIONAL E DA FWI POR
DIFERENCIAÇÃO AUTOMÁTICA
Nesta seção, apresenta-se os resultados da inversão, as curvas de convergência e o
comportamento do método de busca linear para os dois modelos de velocidades. O número
de iterações usado na inversão para o modelo de velocidade com anomalias gaussianas e
para o modelo de velocidade Marmousi foram, respectivamente, 200 e 100 iterações. A
estimativa para o comprimento do passo inicial, Eq. 2.48, adotado na inversão para os
dois modelos de velocidades foi 50 𝑚/𝑠. O número total de iterações foi assumido como
critério de parada para a inversão com os métodos SD, NLCG e L-BFGS.
Além disso, para realizar análise quantitativa das estimativas dos modelos de velocidades
use-se a medida de índice de similaridade estrutural, na sigla em inglês SSIM. A SSIM é
definido como a combinação ponderada de três componentes de medidas, luminaça 𝑙(𝐴, 𝐵),
contraste 𝑐(𝐴, 𝐵) e estrutura 𝑠(𝐴, 𝐵), respectivamente, (Wang et al., 2004):
𝑙(𝐴, 𝐵) = 2𝜇𝐴𝜇𝐵 + 𝑑1
𝜇2𝐴 + 𝜇2𝐵 + 𝑑1
, 𝑐(𝐴, 𝐵) = 2𝜎𝐴𝜎𝐵 + 𝑑2
𝜎2𝐴 + 𝜎2𝐵 + 𝑑2
e 𝑠(𝐴, 𝐵) = 𝜎𝐴𝐵 + 𝑑3
𝜎𝐴𝜎𝐵 + 𝑑3
, (4.2)
ou seja,
𝑆𝑆𝐼𝑀(𝐴, 𝐵) = 𝑙(𝐴, 𝐵)𝛾1𝑐(𝐴, 𝐵)𝛾2𝑠(𝐴, 𝐵)𝛾3 , (4.3)
onde 𝐴 denota uma imagem de referência, 𝐵 representa uma imagem para avaliar a
similaridade estrutural com relação a imagem 𝐴, 𝜇𝐴 é a média de A, 𝜇𝐵 é a média de B,
61
𝜎2𝐴 é a variância de A, 𝜎2𝐴 é a variância de B, 𝜎𝐴𝐵 é a covariância de A e B, 𝑑1, 𝑑2 e 𝑑3
são fatores para estabilidade do denominador, 𝛾1, 𝛾2 e 𝛾3 são fatores de ponderação, 𝑐1 =
(𝑘1𝐿)2, 𝑐2 = (𝑘2𝐿)2 e 𝑐3 = 𝑐1/𝑐2 e 𝐿 denota a dinâmica dos valores dos pixels.
O intervalo normalmente usado para mapear a medida de similaridade entre duas
imagens é [0, 1], onde 1 indica o máximo de similaridade de uma imagem de teste em
relação a uma imagem de referência. Aqui, assume-se o modelo de velocidade verdadeiro
como a imagem de referência, enquanto que, o modelo de velocidade estimado como
imagem de teste.
Além disso, avaliou-se a medida de ajuste relativo para quantificar a similaridade entre
os modelos estimados usando os gradientes obtidos pela AD e pelo ASM e o modelo de
velocidade verdadeiro, que segue (Guitton et al., 2012):
𝜖𝑚 = 100.0
(︃
1− ‖m−m𝑒 ‖2
‖m ‖2
)︃
, (4.4)
onde m denota o modelo de velocidade verdadeiro, m𝑒 denota o modelo de velocidade
estimado pela inversão e ‖ · ‖2 é a norma Euclidiana de um vetor.
4.2.1 Experimento para o modelo de velocidade com anomalias gaussianas
Os resultados das inversões com os métodos SD, NLCG e L-BFGS usando os gradientes
obtidos pelo ASM e pela AD são mostrados na Figura 4.14. Nas Figuras 4.14a, 4.14c e
4.14e são mostrados os resultados das inversões com os métodos SD, NLCG e L-BFGS
usando o gradiente derivado pelo ASM, respectivamente. Enquanto que, nas Figuras
4.14b, 4.14d e 4.14f são exibidos os resultados das inversões com os métodos SD, NLCG e
L-BFGS usando o gradiente calculado pela AD, respectivamente.
Tabela 4.2: Medida de índice similaridade estrutural para os modelos de velocidades
com anomalias gaussianas estimados com os métodos SD, NLCG e L-BFGS usando os
gradientes calculados pelo método dos estados adjuntos e pela diferenciação automática.
Métodos de
otimização
Medida de índice de similaridade estrutural
Modelo estimado com ASM Modelo estimado com AD
SD 0,126 0,164
NLCG 0,353 0,360
L-BFGS 0,370 0,360
Comparando os resultados apresentado na Figura 4.14, observou-se que os modelos de
velocidades estimados, para os três métodos de otimização, usando o gradiente calculado
pelo ASM são semelhantes ao modelos de velocidades estimados usando o gradiente
calculado pela AD. Na Tabela 4.2, mostra-se as SSIM para os modelos de velocidades
estimados com os métodos SD, NLCG e L-BFGS usando os gradiente calculado pelo ASM
e pela AD. Assim, observou-se uma diferença da SSIM de 3.8 %, 0.7 % e 1.0 % entre os
62
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(a) Modelo estimado pelo SD usando o gradiente
obtido pelo ASM.
0 100 200 300 400 500 600 700 800 900 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(b) Modelo estimado pelo SD usando o gradiente
obtido pela AD.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(c) Modelo estimado pelo NLCG usando o
gradiente obtido pelo ASM.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(d) Modelo estimado pelo NLCG usando o
gradiente obtido pela AD.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(e) Modelo estimado pelo L-BFGS usando o
gradiente obtido pelo ASM.
0 200 400 600 800 1000
Coordenada lateral (m)
0
100
200
300
400
500
Pr
of
un
di
da
de
 (
m
)
1500
1750
2000
2250
2500
Ve
lo
ci
da
de
 (
m
/s
)
(f) Modelo estimado pelo L-BFGS usando o
gradiente obtido pela AD.
Figura 4.14: Resultados da FWI com os métodos SD, NLCG e L-BFGS usando o gradiente
calculado: (a), (c) e (e) pelo método dos estados adjuntos e (b), (d) e (f) pela diferenciação
automática; (a) e (b) modelos de velocidades estimados com o método SD, (c) e (d)
modelos de velocidades estimados com o método NLCG e (e) e (f) modelos de velocidades
estimados com o método L-BFGS.
modelos estimados com os métodos SD, NLCG e L-BFGS usando os gradientes obtidos
pelas duas abordagens, respectivamente. Portanto, mostrando que os resultados das
inversões usando o gradiente calculado por AD diferiu vagamente dos modelos estimados
usando o gradiente calculado pelo ASM, principalmente os modelo estimados com os
métodos NLCG e L-BFGS. Esse resultado é reforçado com a medida de ajuste relativo,
Eq. 4.4, como mostrado na Tabela 4.3. Assim, verificou-se que os modelos de velocidades
estimados com os métodos SD, NLCG e L-BFGS usando os gradientes obtidos pelas duas
63
abordagens distinguiram 0.22 %, 0.07 % e 0.04 %, respectivamente.
Tabela 4.3: Percentual da medida de ajuste relativo para os modelos de velocidades
com anomalias gaussianas estimados com os métodos SD, NLCG e L-BFGS usando os
gradientes calculados pelo método dos estados adjuntos e pela diferenciação automática.
Métodos de
otimização
Percentual da medida de ajuste relativo
Modelo estimado com ASM Modelo estimado com AD
SD 96,62% 96,84%
NLCG 98,05% 98,12%
L-BFGS 98,22% 98,18%
Comparando os resultados das duas tabelas, observou que os modelos de velocidades
estimados com os métodos SD e NLCG usando o gradiente calculado pela AD apresentou
precisão superior em relação aos modelos estimados usando o gradiente calculado pelo
ASM. Todavia, o modelo de velocidade estimado com o método L-BFGS usando o gradiente
obtido pela AD mostrou precisão inferior ao correspondente usando o gradiente calculado
pelo ASM.
Na Figura 4.15 são mostrados as curvas de convergência das inversões com os métodos
SD, NLCG e L-BFGS usando os gradientes calculados pelo ASM e pela AD tanto na
escala decimal quanto na escala logarítmica. Os gráficos das curvas de convergência são
construídos com eixo vertical sendo o desajuste do dado relativo, ou seja, a razão entre o
valor da função objetivo obtido na iteração 𝑘 = 0 e o valor da função objetivo obtido nas
iterações 𝑘 + 1 e o eixo horizontal representa o número de iterações da inversão.
Comparando as curvas de convergência obtidas com os métodos SD, Figura 4.15a,e NLCG, Figura 4.15c, observou-se que a curva de convergência da inversão usando o
gradiente calculado pela AD (curvas verdes) apresentou precisão superior em relação as
curvas de convergência correspondentes usando o gradiente calculado pelo ASM, curvas
azuis. Para inversão com método L-BFGS, observou-se que as curvas de convergência
obtida usando o gradiente calculado pela AD ficou aproximadamente sobreposta da curva
de convergência obtida usando o gradiente calculado pelo ASM, Figura 4.15e. Mas,
ressalta-se que a inversão com o método L-BFGS convergiu quando atingiu 130 iterações.
A Figura 4.16 mostra a distribuição percentual do método de busca linear com as
condições de Wolfe, Eqs. 2.44 e 2.45, para as inversões com os métodos SD, NLCG e
L-BFGS usando os gradientes calculados pelo ASM e pela AD. Nestes gráficos o número
na legenda representa o número de iterações necessárias para a busca linear convergir, ou
seja, o número de iterações necessárias para encontrar o comprimento de passo ótimo,
𝛼𝑘, enquanto que, o eixo vertical mostra o percentual desta ocorrência. Por exemplo, na
Figura 4.16a é o observado que 86 % do total de iterações da busca linear ao longo de
toda inversão precisou somente de uma iteração para convergir. Isso reflete diretamente
no custo computacional da inversão, visto que para cada nova avaliação do método de
64
0 25 50 75 100 125 150 175 200
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com SD
Método adjunto
Diferenciação automática
(a) Curvas de convergência da inversão com SD.
0 25 50 75 100 125 150 175 200
Número de iterações
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com SD
Método adjunto
Diferenciação automática
(b) Curvas de convergência da inversão com SD
na escala logarítmica.
0 25 50 75 100 125 150 175 200
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com NLCG
Método adjunto
Diferenciação automática
(c) Curvas de convergência da inversão com
NLCG.
0 25 50 75 100 125 150 175 200
Número de iterações
10 2
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com NLCG
Método adjunto
Diferenciação automática
(d) Curvas de convergência da inversão com
NLCG na escala logarítmica.
0 20 40 60 80 100 120 140
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com L-BFGS
Método adjunto
Diferenciação automática
(e) Curvas de convergência da inversão com
L-BFGS.
0 20 40 60 80 100 120 140
Número de iterações
10 3
10 2
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com L-BFGS
Método adjunto
Diferenciação automática
(f) Curvas de convergência da inversão com
L-BFGS na escala logarítmica.
Figura 4.15: Comparação das curvas de convergência das inversões com métodos (a) SD ,
(b) NLCG e (c) L-BFGS usando os gradientes calculados pelo método dos estados adjuntos
(curvas azuis) e pela diferenciação automática (curvas verdes) para o modelo de velocidade
com anomalias gaussianas. As curvas de convergência são apresentadas nas escalas: (a),
(c) e (e) decimal e (b), (d) e (f) logarítmica.
busca linear é necessário calcular um novo gradiente. Nas Figuras 4.16b, 4.16d e 4.16f são
mostrados o comportamento do método de busca linear das inversões com os métodos SD,
NLCG e L-BFGS usando o gradiente obtido com AD, respectivamente. Enquanto que, o
comportamento do método de busca linear das inversões com os métodos SD, NLCG e
L-BFGS usando o gradiente calculado pelo ASM são mostrados nas Figuras 4.16a, 4.16c e
4.16e, respectivamente.
Comparando as distribuições percentuais apresentadas na Figura 4.16, concluiu-se que
65
1 2 3 4
Número de avaliações da busca linear
0
20
40
60
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
86.0
10.0
2.0 2.0
Distribuição percentual da busca linear da inversão com SD
 usando o gradiente obtido pelo ASM
1
2
3
4
(a)
1 2 3 4 5 6
Número de avaliações da busca linear
0
10
20
30
40
50
60
70
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
82.5
12.0
2.5 2.0 0.5 0.5
Distribuição percentual da busca linear da inversão com SD
 usando o gradiente obtido pela AD
1
2
3
4
5
6
(b)
1 2 3 4 5 6
Número de avaliações da busca linear
0
10
20
30
40
50
60
70
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
67.5
22.0
6.0
2.0 2.0 0.5
Distribuição percentual da busca linear da inversão com NLCG
 usando o gradiente obtido pelo ASM
1
2
3
4
5
6
(c)
1 2 3 4 5
Número de avaliações da busca linear
0
10
20
30
40
50
60
70
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
68.0
26.5
4.5
0.5 0.5
Distribuição percentual da busca linear da inversão com NLCG
 usando o gradiente obtido pela AD
1
2
3
4
5
(d)
1 2 4 7 10 16
Número de avaliações da busca linear
0
10
20
30
40
50
60
70
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
84.0
1.5
8.4
3.1 2.3 0.8
Distribuição percentual da busca linear da inversão com L-BFGS
 usando o gradiente obtido pelo ASM
1
2
4
7
10
16
(e)
1 2 4 7 10 14 20
Número de avaliações da busca linear
0
20
40
60
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
86.3
0.8
7.6
1.5 2.3 0.8 0.8
Distribuição percentual da busca linear da inversão com L-BFGS
 usando o gradiente obtido pela AD
1
2
4
7
10
14
20
(f)
Figura 4.16: Distribuição percentual do método de busca linear da inversão com os métodos
SD, NLCG e L-BFGS para o modelo de velocidade com anomalias gaussianas usando os
gradientes calculados, respectivamente: (a), (c) e (e) pelo método dos estados adjuntos e
(b), (d) e (f) pela diferenciação automática.
as inversões com os métodos SD, NLCG e L-BFGS usando o gradiente calculado pela AD
precisou avaliar um número similar de gradientes durante a inversão daquele exigido para
66
as inversões usando o gradiente calculado pela ASM.
4.2.2 Experimento para o modelo de velocidade Marmousi
Na Figura 4.17 são mostrados os resultados das inversões com os métodos SD, NLCG
e L-BFGS usando o gradiente calculado pela diferenciação automática e pelo método dos
estados adjuntos. Os modelos de velocidades estimados com os métodos SD, NLCG e
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2237
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(a) Modelo estimado pelo SD usando o gradiente
obtido pelo ASM.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2238
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(b) Modelo estimado pelo SD usando o gradiente
obtido pela AD.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2237
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(c) Modelo estimado pelo NLCG usando o
gradiente obtido pelo ASM.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2238
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(d) Modelo estimado pelo NLCG usando o
gradiente obtido pela AD.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2238
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(e) Modelo estimado pelo L-BFGS usando o
gradiente obtido pelo ASM.
0 500 1000 1500 2000 2500 3000 3500 4000
Coordenada lateral (m)
0
500
1000
1500
2000
Pr
of
un
di
da
de
 (
m
)
1500
2238
2975
3712
4450
Ve
lo
ci
da
de
 (
m
/s
)
(f) Modelo estimado pelo L-BFGS usando o
gradiente obtido pela AD.
Figura 4.17: Resultados da FWI com os métodosSD, NLCG e L-BFGS usando o gradiente
calculado: (a), (c) e (e) pelo método dos estados adjuntos e (b), (d) e (f) pela diferenciação
automática; (a) e (b) modelos de velocidades estimados com o método SD, (c) e (d)
modelos de velocidades estimados com o método NLCG e (e) e (f) modelos de velocidades
estimados com o método L-BFGS
L-BFGS usando o gradiente calculado pelo ASM são mostrados nas Figuras 4.17a, 4.17c e
67
4.17e, respectivamente.
Nas Figuras 4.17b, 4.17d e 4.17f são mostrados os resultados das inversões com os
método SD, NLCG e L-BFGS com gradiente calculado pela AD, respectivamente.
Comparando os modelos estimados, Figura 4.17, percebeu-se que os modelos de
velocidades estimados com os três métodos de otimização usando o gradiente obtido
com a AD (Figuras 4.17a, 4.17c e 4.17e) concordam com os modelos de velocidades
estimados correspondentes usando o gradiente calculado pelo ASM, Figuras 4.17b, 4.17d
e 4.17f. A partir das análises quantitativas realizadas usando a SSIM e a medida de
ajuste relativo, Eq. 4.4, verificou-se que as estimativas para o modelo de velocidade são
bastante semelhantes, como mostrado nas Tabelas 4.2 e 4.3. Isto é, a medida de índice de
Tabela 4.4: Medida de índice similaridade estrutural para os modelos de velocidades de
Marmousi estimados com os métodos SD, NLCG e L-BFGS usando os gradientes calculados
pelo método dos estados adjuntos e pela diferenciação automática.
Métodos de
otimização
Medida de índice de similaridade estrutural
Modelo estimado com ASM Modelo estimado com AD
SD 0,395 0,370
NLCG 0,499 0,483
L-BFGS 0,577 0,529
similaridade estrutural mostrou que os modelos de velocidades estimados com os métodos
SD, NLCG e L-BFGS usando os gradientes calculado pelo ASM e pela AD são bem
semelhantes, como mostrado na Tabela 4.4. A partir dos resultados apresentado na Tabela
4.4, observou-se que os modelos de velocidades estimados com os métodos SD, NLCG
e L-BFGS usando os gradientes obtidos pelas duas abordagens diferiram em 2.5 %, 1.6
% e 4.8 %, respectivamente. Novamente, essa diferença pequena entres os modelos de
velocidades estimados com os três métodos de otimização mostrado pela SSIM e também
seguida pela medida de ajuste relativo, como mostrado na Tabela 4.5. Assim, a partir
dessa se verificou que os modelos de velocidades estimados com SD, NLCG e L-BFGS
usando os gradientes obtidos com a AD e com o ASM divergiram em 0.19 %, 0.31 % e
0.67 %, respectivamente.
Tabela 4.5: Percentual da medida de ajuste relativo para os modelos de velocidades
Marmousi estimados com os métodos SD, NLCG e L-BFGS usando os gradientes calculados
pelo método dos estados adjuntos e pela diferenciação automática.
Métodos de
otimização
Percentual da medida de ajuste relativo
Modelo estimado com ASM Modelo estimado com AD
SD 86,18% 85,97%
NLCG 87,13% 86,82%
L-BFGS 88,24% 87,57%
Entretanto, a partir dos resultados apresentados nas Tabelas 4.4 e 4.5, pode-se inferir
68
que os resultados das inversões com os três métodos de otimização usando o gradiente
calculado pela AD apresentou precisão inferior aos correspondentes usando o gradiente
calculado pelo ASM.
As curvas de convergência das inversões com os métodos SD, NLCG e L-BFGS usando
os gradientes calculados pelo método dos estados adjuntos e pela diferenciação automática
para o modelo de velocidade Marmousi são mostrados na Figura 4.18. Novamente, elas
0 20 40 60 80 100
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com SD
Método adjunto
Diferenciação automática
(a) Curvas de convergência da inversão com SD.
0 20 40 60 80 100
Número de iterações
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com SD
Método adjunto
Diferenciação automática
(b) Curvas de convergência da inversão com SD
na escala logarítmica.
0 20 40 60 80 100
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com NLCG
Método adjunto
Diferenciação automática
(c) Curvas de convergência da inversão com
NLCG.
0 20 40 60 80 100
Número de iterações
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com NLCG
Método adjunto
Diferenciação automática
(d) Curvas de convergência da inversão com
NLCG na escala logarítmica.
0 20 40 60 80 100
Número de iterações
0.0
0.2
0.4
0.6
0.8
1.0
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com L-BFGS
Método adjunto
Diferenciação automática
(e) Curvas de convergência da inversão com
L-BFGS.
0 20 40 60 80 100
Número de iterações
10 2
10 1
100
D
es
aj
us
te
 d
o 
da
do
 r
el
at
iv
o
Curvas de convergência da inversão com L-BFGS
Método adjunto
Diferenciação automática
(f) Curvas de convergência da inversão com
L-BFGS na escala logarítmica.
Figura 4.18: Comparação das curvas de convergência das inversões com métodos (a) SD,
(b) NLCG e (c) L-BFGS usando os gradientes calculado pela método dos estados adjuntos
(curvas azuis) e pela diferenciação automática (curvas verdes) para o modelo de velocidade
Marmousi. As curvas de convergência são apresentadas nas escalas: (a), (c) e (e) decimal
e (b), (d) e (f) logarítmica.
são apresentadas nas escalas decimal e logarítmica. Nas Figuras 4.18a, 4.18c e 4.18f são
69
mostrados as curvas de convergência das inversões com os métodos SD, NLCG e L-BFGS,
respectivamente, usando os gradientes calculados pelo ASM (curvas azuis) e pela AD,
curvas verdes.
A partir dos resultados apresentados na Figura 4.18, verificou-se que as curvas de
convergência das inversões com SD, NLCG e L-BFGS usando o gradiente calculado pela
AD concordam razoavelmente com as respectivas curvas obtido usando o ASM. No entanto,
na escala logarítmica as curvas de convergência para a inversão com o método L-BFGS
usando os gradientes obtidos com a AD e com o ASM divergiram minimamente quando
comparados com as curvas das inversões com os métodos SD e NLCG usando também os
dois gradientes.
Na Figura 4.19 é mostrado o comportamento do método de busca linear para as
inversões com os métodos SD, NLCG e L-BFGS usando novamente os gradientes calculado
pelo ASM e pela AD. O algoritmo de busca linear se comportou de forma igual para
inversão com o método SD usando ambos gradientes, como mostrado nas Figuras 4.19a e
4.19b. Para inversão com método NLCG e L-BFGS novamente usando ambos gradientes
se observou que o método de busca linear apresentou um dinâmica bem similar, como
mostrado nas Figuras 4.19c, 4.19d, 4.19e e 4.19f.
Portanto, as estimativas do modelo de velocidade Marmousi com o método SD usando
o gradiente calculado pelo ASM exigiu o mesmo número de avaliações usando o gradiente
obtido pela AD. Enquanto que, as inversões com os métodos NLCG e L-BFGS usando
o gradiente calculado pelo ASM precisou realizar um número aproximadamente igual de
avaliações de gradientes para as inversões com os dois métodos de otimização usando o
gradiente gerado através da AD.
70
1 2
Número de avaliações da busca linear
0
20
40
60
80
100
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
97.0
3.0
Distribuição percentual da busca linear da inversão com SD
 usando o gradiente obtido pelo ASM
1
2
(a)
1 2
Número de avaliações da busca linear
0
20
40
60
80
100
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
97.0
3.0
Distribuição percentual da busca linear da inversão com SD
 usando o gradiente obtido pela AD
1
2
(b)
1 2 3 4
Número de avaliações da busca linear
0
20
40
60
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
90.0
8.0
1.0 1.0
Distribuição percentual da busca linear da inversão com NLCG
 usando o gradiente obtido pelo ASM
1
2
3
4
(c)
1 2
Número de avaliações da busca linear
0
20
40
60
80
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
90.0
10.0
Distribuição percentual da buscalinear da inversão com NLCG
 usando o gradiente obtido pela AD
1
2
(d)
1 2 7
Número de avaliações da busca linear
0
20
40
60
80
100
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
98.0
1.0 1.0
Distribuição percentual da busca linear da inversão com L-BFGS
 usando o gradiente obtido pelo ASM
1
2
7
(e)
1 2
Número de avaliações da busca linear
0
20
40
60
80
100
Pe
rc
en
tu
al
 d
o 
nú
m
er
o 
de
 b
us
ca
 li
ne
ar
 (
%
)
98.0
2.0
Distribuição percentual da busca linear da inversão com L-BFGS
 usando o gradiente obtido pela AD
1
2
(f)
Figura 4.19: Distribuição percentual do método de busca linear da inversão com os
métodos SD, NLCG e L-BFGS para o modelo de velocidade Marmousi usando os gradientes
calculados, respectivamente: (a), (c) e (e) pelo método dos estados adjuntos e (b), (d) e
(f) pela diferenciação automática.
5 CONCLUSÃO
Neste trabalho, propõe-se mostrar que a diferenciação automática pode ser usada como
uma técnica alternativa para validar gradientes de funções objetivos utilizadas na inversão
da forma de onda completa. Em outras palavras, a diferenciação automática pode reduzir
consideravelmente o tempo de desenvolvimento e possibilitar análise de outras ideias com
pouco custo de implementação adicional. Isto é, avaliar outras funções objetivos mas
também a inversão para problemas de maior complexidade, por exemplo, a inversão para
meios viscoelásticos. Aqui, calcula-se o gradiente da função objetivo de quadrados mínimos
para inversão do registro do campo de onda acústico escalar utilizando os métodos dos
estados adjuntos e diferenciação automática.
Aplicações em modelos sintéticos apontam que a diferenciação automática produz
resultados semelhantes aos resultados obtidos pelo método dos estados adjuntos, mas
esses métodos diferem em termos de custo computacional e principalmente na demanda
de alocação de memória para computação do gradiente. Os resultados das inversões com
os métodos de otimização de máxima descida, de gradiente conjugado não linear e de
quasi-Newton de memória limitada usando os gradientes obtidos pelas duas abordagens
aqui adotadas atingem precisões semelhantes.
Além disso, destaca-se que a computação do gradiente da função objetivo por diferen-
ciação automática produz diferenças apreciáveis quando as camadas de absorção não são
consideradas no cálculo do gradiente. Essas camadas raramente são assumidas quando
se deriva o gradiente da função objetivo através do método dos estados adjuntos. As
condições de fronteira de absorção são normalmente acoplada a equação da onda adjunto
após todo o processo de desenvolvimento do gradiente.
Neste trabalho, obteve-se ainda as seguintes conclusões:
1. O comprimento da camada de absorção pode influenciar a precisão do gradiente
calculado pela diferenciação automática; mesma que tal camada produza gradientes
aceitáveis com o métodos dos estados adjuntos. Além disso, observou-se que depen-
dendo das condições de fronteira de absorção escolhidas o custo e principalmente a
demanda de alocação podem atingir reduções significativas para calcular o gradiente
por diferenciação automática.
2. A demanda de alocação exigida para calcular o gradiente tanto pelo método dos
estados adjuntos quanto pela diferenciação automática crescem aproximadamente de
forma linear se o domínio computacional variar a uma taxa constante. No entanto,
a demanda de alocação para calcular os gradientes usando ambos métodos diferem
de três ordens de magnitude para um modelo de velocidade de grande escala.
71
72
3. O desempenho da execução serial para computação do gradiente por diferenciação
automática se mostrou superior ao correspondente para computação do gradiente
pelo métodos dos estados adjuntos se o modelo de velocidade é de pequena escala
e se as condições de fronteira de absorção PML são usadas. Todavia, a demanda
de alocação para computar o gradiente por diferenciação automática é uma ordem
de magnitude maior com relação a demanda de alocação exigida para calcular o
gradiente pelo método dos estados adjuntos.
4. O custo para calcular os gradientes para um modelo de maior escala usando tanto
a diferenciação automática quanto o métodos dos estados adjuntos é similar se as
condições de fronteira de absorção PML são implementadas, mas o requerimento de
memória exigido para calcular o gradiente usando diferenciação automática tende
a ser duas ordens de magnitude maior com relação a demanda de alocação exigida
para calcular o gradiente pelo método dos estados adjuntos.
Portanto, a diferenciação automática pode ser uma alternativa interessante ao método
dos estados adjuntos para validação do cálculo inicial do gradiente (e da inversão) tanto
para funções objetivos de menor complexidade de derivação computacional quanto para
funções objetivos com derivação complexa; mesmo com a notória limitação na demanda
de alocação.
REFERÊNCIAS
Abreu, R., and M. J. Porsani, 2017, Multiscale full waveform inversion using a filtering
approach and gradient preconditioning: Revista Brasileira de Geofísica, 247–262. 20
Alford, R. M., K. R. Kelly, and D. M. Boore, 1974, Accuracy of finite-difference modeling
of acoustic wave propagation: Geophysics, 39, 1–9. 11
Bamberger, A., G. Chavent, and P. Lailly, 1979, About the stability of the inverse problem
in 1-d wave equations—application to the interpretation of seismic profiles: Applied
Mathematics and Optimization, 5, 1–47. 5
Bartholomew-Biggs, M., S. Brown, B. Christianson, and L. Dixon, 2000, Automatic
differentiation of algorithms: Journal of Computational and Applied Mathematics, 124,
171–190, doi: 10.1016/S0377-0427(00)00422-2. 27
Bezanson, J., S. Karpinski, V. B. Shah, and A. Edelman, 2012a, Julia: A fast dynamic
language for technical computing: ArXiv, abs/1209.5145. 43
Bezanson, J., S. Karpinski, V. B. Shah, and A. Edelman, 2012b, Why we created julia:
https://julialang.org/blog/2012/02/why-we-created-julia/. 43
Bishop, C. M., 2006, Pattern recognition and machine learning: Springer. 25
Borisov, D., and S. Singh, 2015, Three-dimensional elastic full waveform inversion in a
marine environment using multicomponent ocean-bottom cables: A synthetic study:
Geophysical Journal International, 201, doi: 10.1093/gji/ggv048. 5
Brossier, R., S. Operto, and J. Virieux, 2009, Seismic imaging of complex onshore
structures by 2d elastic frequency-domain full-waveform inversion: Geophysics, 74,
WCC105–WCC118. 5
Brossier, R., S. Operto, and J. Virieux, 2015, Velocity model building from seismic
reflection data by full-waveform inversion: Geophysical Prospecting, 63, 354 – 367, doi:
10.1111/1365-2478.12190. 6
Bulcão, A., 2014, Modelagem e migação reversa no tempo empregando operadores elásticos
e acústicos: PhD thesis. 10
Bunks, C., F. M. Saleck, S. Zaleski, and G. Chavent, 1995, Multiscale seismic waveform
inversion: Geophysics, 60, 1457–1473. 6
Byrd, R. H., P. Lu, J. Nocedal, and C. Zhu, 1995, A limited memory algorithm for bound
constrained optimization: SIAM J. Sci. Comput., 16, 1190–1208. 23
Bücker, M., G. Corliss, P. Hovland, U. Naumann, and B. Norris, 2006, Automatic
differentiation: Applications, theory, and implementations. selected papers based on
the presentation at the 4th international conference on automatic differentiation (ad),
chicago, il, usa, july 20–23, 2004, 50. 26
Cao, D., and W. Liao, 2015, A computational method for full waveform inversion of crosswell
seismic data using automatic differentiation: Computer Physics Communications, 188,
47–58, doi: https://doi.org/10.1016/j.cpc.2014.11.002. 52
73
74
Cerjan, C., D. Kosloft, R. Kosloff, and M. Reshe, 1985, A nonreflecting boundary condition
for discrete acoustic and elastic wave equations: Geophysics, 50, 70S 708. 7
Chavent, G., 2010, Nonlinear least squares for inverse problems – theoretical foundations
and step-by-step guide for applications. Scientific Computation, No. 1: Springer
Netherlands. 1, 4, 12
Chen, K., and M. D. Sacchi, 2017, Elastic least-squares migration withtwo-way wave
equation forward and adjoint operators: Department of Physics, University of Alberta,
1–4. 20
Chu, C., and P. Stoffa, 2012, Efficient 3d frequency response modeling with spectral
accuracy by the rapid expansion method: Geophysics, 77, 117–123. 11
Clapp, R. G., 2009, Reverse time migration : Saving the boundaries: Presented at the . 55
Clayton, R., and B. Engquist, 1977, Absorbing boundary conditions for acoustic and
elastic wave equations: Bulletin of the Seismological Society of America. 7
Cohen, G., and P. Joly, 1996, Construction and analysis of fourth-order finite difference
schemes for the acoustic wave equation in nonhomogeneous media: Society for Industrial
and Applied Mathematics, 33, 10. 5
Crase, E., A. Pica, M. Noble, J. Mcdonald, and A. Tarantola, 1990, Robust elastic nonlinear
waveform inversion: Application to real data: Geophysics, 55, 527–538. 6
Crase, E., C. Wideman, M. Noble, and A. Tarantola, 1992, Nonlinear elastic waveform
inversion of land seismic reflection data: Journal of Geophysical Research: Solid Earth,
97, 4685–4703. 6
Dai, Y., and Y. Yuan, 2001, An efficient hybrid conjugate gradient method for unconstrained
optimization: Annals of Operations Research, 103, 33–47. 14
Dai, Y. H., and Y. Yuan, 1999, A nonlinear conjugate gradient method with a strong
global convergence property: SIAM Journal on Optimization, 10, 177–182. 14
Denes Vigh, E. W. S., and J. Kapoor, 2009, Developing earth models with full waveform
inversion: The Leading Edge, 28, 432–435, doi: 10.1190/1.3112760. 6
Egorov, A., A. Bona, R. Pevzner, S. Glubokovskikh, and K. Tertyshnikov, 2018, Application
of time-lapse full waveform inversion of vertical seismic profile data for the identification
of changes introduced by co2 sequestration: ASEG Extended Abstracts, 2018, 1 – 5. 6
Elliott, C., 2018, The simple essence of automatic differentiation: Proceedings of the ACM
on Programming Languages, 2, 1–29, doi: 10.1145/3236765. 25
Fawad, M., and N. Mondol, 2022, Monitoring geological storage of co2 using a new rock
physics model: Scientific Reports, 12, doi: 10.1038/s41598-021-04400-7. 6
Feng, S., Y. Lin, and B. Wohlberg, 2021, Multiscale data-driven seismic full-waveform
inversion with field data study: IEEE Transactions on Geoscience and Remote Sensing,
60, 1–14. 6
Fichtner, A., 2011, Full seismic waveform modelling and inversion, advances in geophysical
and environmental mechanics and mathematics: Springer. 5, 8, 21, 25
75
Fornberg, B., 1987, The pseudospectral method: comparisons with finite differences for
the elastic wave equation: Geophysics, 52, 1–9. 11
Gauthier, O., J. Virieux, and A. Tarantola, 1986, Two-dimensional nonlinear inversion of
seismic waveforms: Numerical results: Geophysics, 51, 1387–1403. 5
Gebremedhin, A., and A. Walther, 2020, An introduction to algorithmic differentiation:
Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery, 10, doi:
10.1002/widm.1334. 1, 25
Giering, R., and T. Kaminski, 2000, Recomputations in reverse mode ad: doi: 10.1007/978-
1-4613-0075-5-33. 30, 31, 55
Griewank, A., and A. Walther, 2000, Algorithm 799: revolve: an implementation of
checkpointing for the reverse or adjoint mode of computational differentiation: ACM
Trans. Math. Softw., 26, 19–45. 26
Griewank, A., and A. Walther, 2008, Evaluating derivatives - principles and techniques of
algorithmic differentiation, second ed.: Society for Industrial and Applied Mathematics.
25, 27, 38
Guan, J., Y. Li, and G. Liu, 2021, Preconditioned conjugate gradient algorithm-based
2d waveform inversion for shallow-surface site characterization: Shock and Vibration,
2021, 1–16, doi: 10.1155/2021/3164358. 22
Guitton, A., G. Ayeni, and E. Díaz, 2012, Constrained full-waveform inversion by model
reparameterization: Geophysics, 77, 117–, doi: 10.1190/geo2011-0196.1. 61
Hager, W. W., and H. Zhang, 2006, A survey of nonlinear conjugate gradient methods:
Pacific journal of Optimization, 35–58. 13, 14
Hascoët, L., and V. Pascual, 2013, The tapenade automatic differentiation tool: Prin-
ciples, model, and specification: ACM Trans. Math. Softw., 39, 20:1–20:43, doi:
10.1145/2450153.2450158. 27
Hestenes, M. R., and E. Stiefel, 1952, Methods of conjugate gradients for solving linear
systems: Journal of research of the National Bureau of Standards, 49, 409–436. 14
Hicks, E. C., H. Hoeber, M. Houbiers, M. Houbiers, S. P. Lescoffit, S. P. Lescoffit,
A. Ratcliffe, and V. Vinje, 2016, Time-lapse full-waveform inversion as a reservoir-
monitoring tool — a north sea case study: Geophysics, 35, 850–858. 6
Higdon, R. L., 1986, Absorbing boundary conditions for difference approximations to the
multi-dimensional wave equation: Mathematics of Computation, 47, 437–459. 7
Hirsch, C., 2007, Numerical computation of internal and external flows: Fundamentals of
computational fluid dynamics: Butterworth-Heinemann. 7
Huang, B.-S., 1992, A program for two-dimensional seismic wave propagation by the
pseudospectrum method: Computers e Geosciences, 18, 1–10. 11
Ikele, and Amundsen, 2005, Introduction to petroleum seismology: SEG. 10, 20
Karlsson, A., 2021, The julia programming language for embedded high-performance signal
processing in radar systems: PhD thesis. 43
76
Klein, W., A. Griewank, and A. Walther, 2002, Differentiation methods for industrial
strength problems: Springer New York. 25
Kochenderfer, M. J., and T. A. Wheeler, 2018, Algorithms for optimization: Massachusetts
Institute of Technology. 24, 29
Komatitsch, D., and R. Martin, 2007, An unsplit convolutional perfectly matched layer
improved at grazing incidence for the seismic wave equation: Geophysics, 72, doi:
10.1190/1.2757586. 7
Komatitsch, D., and J. Tromp, 2003, A perfectly matched layer absorbing boundary
condition for the second-order seismic wave equation: Geophysical Journal International,
154, 146–153. 7, 8
kosloff, d., a. q. filho, e. tessmer, and a. behle, 1989, numerical solution of the acoustic and
elastic wave equations by a new rapid expansion method1: Geophysical Prospecting,
37, 383–394, doi: https://doi.org/10.1111/j.1365-2478.1989.tb02212.x. 11
Li, Y. E., and L. Demanet, 2016, Elastic full-waveform inversion with extrapolated
low-frequency data: SEG Technical Program Expanded Abstracts 2020. 6
Ma, Y., and D. Hale, 2011, A projected hessian for full waveform inversion: SEG Technical
Program Expanded Abstracts, 2401–2405, doi: 10.1190/1.3627691. 5, 13, 20
Mao, J., J. Sheng, M. Hart, and T. Kim, 2016, High-resolution model building with
multistage full-waveform inversion for narrow-azimuth acquisition data: Geophysics, 35,
1031–1036. 6
Margossian, C. C., 2018, A review of automatic differentiation and its efficient implemen-
tation: Wiley Interdisciplinary Reviews: Data Mining and Knowledge Discovery, 9.
27
Martin, G., R. Wiley, and K. Marfurt, 2006, Marmousi2: An elastic upgrade for marmousi:
The Leading Edge, 25, 156–166, doi: 10.1190/1.2172306. 52
Métivier, L., A. Allain, R. Brossier, Q. Mérigot, É. Oudet, and J. Virieux, 2018, Optimal
transport for mitigating cycle skipping in full-waveform inversion: A graph-space
transform approach: GEOPHYSICS. 6
Métivier, L., R. Brossier, Q. Mérigot, E. Oudet, and J. Virieux, 2016a, Measuring the misfit
between seismograms using an optimal transport distance: application to full waveform
inversion: Geophysical Journal International, 205, 345 – 377, doi: 10.1093/gji/ggw014.
6, 18, 19
Métivier, L., R. Brossier, Q. Mérigot, É. Oudet, and J. Virieux, 2016b, Overcoming cycle
skipping in fwi - an optimal transport approach: Presented at the . 6
Métivier, L., R. Brossier, S. Operto, and J. Virieux, 2012, Second-order adjoint state
methods for full waveform inversion: Presented at the EAGE 2012 - 74th European
Association of Geoscientists and Engineers Conference and Exhibition. 8
Moczo, P., J. O. A. Robertsson, and L. Eisner, 2007, The finite-difference time-domain
method for modeling of seismic wave propagation: Elsevier-Academic Press. 11
77
Mora, P., 1988, Elasticwave-field inversion of reflection and transmission data: Geophysics,
53, 750–759. 5
Moses, W. S., V. Churavy, L. Paehler, J. Hückelheim, S. H. K. Narayanan, M. Schanen,
and J. Doerfert, 2021, Reverse-mode automatic differentiation and optimization of
gpu kernels via enzyme: Presented at the Proceedings of the International Conference
for High Performance Computing, Networking, Storage and Analysis, Association for
Computing Machinery. doi: 10.1145/3458817.3476165. 26, 27, 42, 44
Nocedal, J., 1980, Updating quasi newton matrices with limited storage: Mathematics of
Computation, 35, 951–958. 15
Nocedal, J., and S. J. Wright, 2006, Numerical optimization: Springer. 1, 5, 8, 13, 14, 15,
16, 17, 18, 25, 26, 41, 42
Oberbichler, T., R. Wüchner, and K.-U. Bletzinger, 2021, Efficient computation of nonli-
near isogeometric elements using the adjoint method and algorithmic differentiation:
Computer Methods in Applied Mechanics and Engineering, 381, 113817. 27
Paszke, A., S. Gross, F. Massa, A. Lerer, J. Bradbury, G. Chanan, T. Killeen, Z. Lin,
N. Gimelshein, L. Antiga, A. Desmaison, A. Kopf, E. Yang, Z. DeVito, M. Rai-
son, A. Tejani, S. Chilamkurthy, B. Steiner, L. Fang, J. Bai, and S. Chintala, 2019,
Pytorch: An imperative style, high-performance deep learning library, in Advances
in Neural Information Processing Systems 32: Curran Associates, Inc., 8024–8035.
url: http://papers.neurips.cc/paper/9015-pytorch-an-imperative-style-high-performance-
deep-learning-library.pdf. 27
Pengliang Yang, Romain Brossier, L. M., and J. Virieux, 2016, Checkpointing-assisted
reverse-forward simulation: An optimal recomputation method for fwi and rtm: SEG
Technical Program Expanded Abstracts, 1089-1093. 55
Pica, A., J. P. Diet, and A. Tarantola, 1990, Nonlinear inversion of seismic reflection data
in a laterally invariant medium: Geophysicis, 55, 284–292. 5
Plessix, R., G. Baeten, J. W. de Maag, F. ten Kroode, and Z. Rujie, 2012, Full waveform
inversion and distance separated simultaneous sweeping: a study with a land seismic
data set: Geophysical Prospecting, 60, 733–747. 6
Plessix, R. E., 2006, A review of the adjoint-state method for computing the gradient
of a functional with geophysical applications: Geophysical Journal International, 167,
495–503, doi: 10.1111/j.1365-246X.2006.02978.x. 1, 4, 12
Poncet, R., J. Messud, M. Bader, G. Lambaré, G. Viguier, and C. Hidalgo, 2018, Fwi
with optimal transport: a 3d implementation and an application on a field dataset: doi:
10.3997/2214-4609.201801029. 6
Pratt, R., and R. Shipp, 1999, Seismic waveform inversion in the frequency domain, part
2: Fault delineation in sediments using crosshole data: Geophysics, 64, 902–914. 5
Pratt, R. G., 1999, Seismic waveform inversion in the frequency domain, part 1: Theory
and verification in a physical scale model: Geophysical, 64, 888 – 901. 5
78
Pratt, R. G., C. Shin, and G. J. Hick, 1998, Gauss–newton and full newton methods in
frequency–space seismic waveform inversion: Geophysical Journal International, 133,
341–362, doi: 10.1046/j.1365-246X.1998.00498.x. 21
Ren, Y., X. Xu, S. Yang, L. Nie, and Y. Chen, 2020, A physics-based neural-network way
to perform seismic full waveform inversion: IEEE Access, PP, 1–1. 46
Reynolds, A. C., 1978, Boundary conditions for the numerical solution of wave propagation
problems: Geophysics, 43, 1099–1110. 7
Richardson, A., 2018, Seismic full-waveform inversion using deep learning tools and
techniques. 2, 26, 94
Ricker, N., 1953, The form and laws of propagation of seismic wavelets: Geophysics, 1–15,
doi: 10.1190/1.1437843. 10
Routh, P. S., G. Palacharla, I. S. Chikichev, and S. K. Lazaratos, 2012, Full wavefield
inversion of time-lapse data for improved imaging and reservoir characterization: Seg
Technical Program Expanded Abstracts. 6
Sambridge, M., A. Jackson, and A. P. Valentine, 2022, Geophysical inversion and optimal
transport: Presented at the . 6
Sambridge, M., P. Rickwood, N. Rawlinson, and S. Sommacal, 2007, Automatic differenti-
ation in geophysical inverse problems: Geophysical Journal International, 170, 1–8. 1,
25, 36, 38
Sears, T. J., P. J. Barton, and S. C. Singh, 2010, Elastic full waveform inversion of
multicomponent ocean-bottom cable seismic data: Application to alba field, u. k. north
sea: Geophysics, 75. 6
Shin, C., S. Jang, and D.-J. Min, 2001, Improved amplitude preservation for prestack
depth migration by inverse scattering theory: Geophysical Prospecting, 49, 592 – 606.
5, 20, 21, 22
Sochacki, J. S., R. F. Kubichek, J. George, W. R. Fletcher, and S. B. Smithson, 1987,
Absorbing boundary conditions and surface waves: Geophysics, 52, 60–71. 7, 8, 50
Strikwerda, J., 2004, Finite difference schemes and partial differential equations: SIAM.
11, 27, 39
Sun, J., Z. Niu, K. Innanen, J. Li, and D. Trad, 2019, A deep learning perspective of the
forward and inverse problems in exploration geophysics: Presented at the . 2, 41, 94
Symes, W. W., 2008, Migration velocity analysis and waveform inversion: Geophysical
Prospecting, 56, 765 – 790. 6
Tarantola, A., 1984, Inversion of seismic reflection data in the acoustic approximation:
Geophysical, 49, 1259–1266. 1, 4, 5, 8, 11, 12
Tarantola, A., 1986, A strategy for nonlinear elastic inversion of seismic reflection data:
Geophysics, 51, 1893–1903. 5
Tarantola, A., 1988, Theoretical background for the inversion of seismic waveforms including
elasticity and attenuation: Pure and Applied Geophysics, 128, 365–399. 21
79
Tessmer, E., 2011, Using the rapid expansion method for accurate time-stepping in
modeling and reverse-time migration: Geophysics, 177–185. 11
Thompson, P. A., 1988, Compressible-fluid dynamics: Department of Mechanical Enginee-
ring, Rensselaer Polytechnic Institute. 10
Utke, J., U. Naumann, M. Fagan, N. Tallent, M. Strout, P. H. C. Hill, and C. Wunsch,
2008, Openad/f: A modular open-source tool for automatic differentiation of fortran
codes, 34: ACM Transactions on Mathematical Software. 31
Vígh, D., and E. W. Starr, 2008, 3d prestack plane-wave, full-waveform inversion: Geophy-
sics, 73. 5
Virieux, J., and S. Operto, 2009, An overview of full-waveform inversion in exploration
geophysics: Geophysics, 74, WCC1–WCC26, doi: 10.1190/1.3238367. 1, 4
Vlasenko, A., A. Köhl, and D. Stammer, 2016, The efficiency of geophysical adjoint codes
generated by automatic differentiation tools: Computer Physics Communications, 199,
22–28, doi: https://doi.org/10.1016/j.cpc.2015.10.008. 1, 54
Walther, A., A. Griewank, and O. Vogel, 2003, Adol-c: Automatic differentiation using
operator overloading in c++: PAMM, 2, 41 – 44, doi: 10.1002/pamm.200310011. 27
Wang, Z., A. Bovik, H. Sheikh, and E. Simoncelli, 2004, Image quality assessment: from
error visibility to structural similarity: IEEE Transactions on Image Processing, 13,
600–612, doi: 10.1109/TIP.2003.819861. 60
Yang, Y., and B. Engquist, 2017, Analysis of optimal transport and related misfit functions
in full-waveform inversion: Geophysics, 83. 6
Zhu, C., R. H. Byrd, P. Lu, and J. Nocedal, 1997, Algorithm 778: L-bfgs-b: Fortran
subroutines for large-scale bound-constrained optimization: ACM Trans. Math. Softw.,
23, 550–560. 23
Zhu, W., K. Xu, E. Darve, and G. C. Beroza, 2021, A general approach to seismic
inversion with automatic differentiation: Computers and Geosciences, 151, 104751, doi:
https://doi.org/10.1016/j.cageo.2021.104751. 2, 25
APÊNDICES
A– DERIVAÇÃO DO GRADIENTE USANDO O MÉTODO
DOS ESTADOS ADJUNTOS
Neste capítulo, usa-se o método dos estados adjuntos para derivar o gradiente da função
objetivo de quadrados mínimos de forma implícita e explícita. Na derivação implícita,
omiti-se as variáveis de tempo e espaço e os índices de fonte e receptores; diferente da
derivação explícita.
A–1 DERIVAÇÃO IMPLÍCITA DO GRADIENTE
A solução do problema inverso não linear é obtido a partir da minimização da função
objetivo de quadrados mínimos não linear,
𝐽(d; m) = 12 ‖ d− d̃ ‖
2
2 , (A–1)
sujeito à equação de estado, que geralmente representa umsistema de equações diferenciais
parciais não linear,
L(m)u = f , (A–2)
onde u = u(m) é o vetor das variáveis de estado, m = m(x) é o vetor das variáveis de
projeto e f é o vetor dos termos de fonte. O vetor das variáveis de estado, u, é solução da
equação de estado tomada em todo domínio Ω e deve satisfazer condições iniciais e de
contorno na fronteira de Ω, denotado como 𝜕Ω, como mostrado na Figura A–1.
n
Ω
𝜕Ω
𝑑𝜕Ω
Figura A–1: Domínio arbitrário Ω limitado pela superfície 𝜕Ω e destacando o vetor normal
unitário externo n sob um elemento de superfície 𝑑𝜕Ω.
A função objetivo avalia o desajuste entre o dado calculado d = 𝑆𝑟u, onde 𝑆𝑟 extrai o
valor de u nas posições dos receptores, e dado observado d̃.
Usando o método da Lagrangeana aumentada, reescreve-se o problema de minimização
restrito descrito acima como um problema de minimização irrestrito, ou seja,
ℒ(u, 𝜆; m) = 12
∫︁
Ω
[︁
d− d̃
]︁2
𝑑Ω−
∫︁
Ω
𝜆 [L(m)u− f ] 𝑑Ω , (A–3)
81
82
onde 𝜆 é o vetor das variáveis de estado adjunto e foi usado a notação integral para o
produto interno, ou seja, para o quadrado da norma 𝑙2. Para facilitar a nossa derivação,
reescreve-se a Eq. (A–3) da forma:
ℒ(u, 𝜆; m) = 𝐽(d; m)− ⟨𝜆, L(m)u− f⟩ . (A–4)
Agora, avaliando a variação de ℒ(u, 𝜆; m) na vizinhança de m, temos
𝛿ℒ(u, 𝜆; m) = ⟨𝑆𝑟u− d̃, 𝑆𝑟𝛿u⟩ − ⟨𝜆, L(m)𝛿u + 𝛿L(m)u⟩ , (A–5)
onde usa-se d = 𝑆𝑟u(m) e usando a propriedade da linearidade do produto interno na
última parcela da equação acima, tem-se
𝛿ℒ(u, 𝜆; m) = ⟨𝑆𝑟u− d̃, 𝑆𝑟𝛿u⟩ − [⟨𝜆, L(m)𝛿u⟩+ ⟨𝜆, 𝛿L(m)u⟩] . (A–6)
Agora recorrendo a propriedade do operador adjunto para primeira parcela dentro dos
colchetes, que são equivalente as integrações por partes que será vista na próxima seção.
Isto é,
⟨𝜆, L(m)𝛿u⟩ = ⟨L(m)†𝜆, 𝛿u⟩ . (A–7)
Substituindo essa expressão na Eq. (A–6) e usando novamente a propriedade do adjunto
para primeira parcela da Eq. (A–6), obtém-se
𝛿ℒ(u, 𝜆; m) = ⟨𝑆†𝑟(𝑆𝑟u− d̃), 𝛿u⟩ −
[︁
⟨L(m)†𝜆, 𝛿u⟩+ ⟨𝜆, 𝛿L(m)u⟩
]︁
(A–8)
e reorganizando os termos com 𝛿u, recorrendo novamente a propriedade da linearidade do
produto interno,
𝛿ℒ(u, 𝜆; m) = ⟨𝑆†𝑟(𝑆𝑟u− d̃)− L(m)†𝜆, 𝛿u⟩ − ⟨𝜆, 𝛿L(m)u⟩ . (A–9)
O objetivo agora é remover 𝛿u, visto que essa quantidade é cara para ser avaliada
numericamente. Essa quantidade é chamada de Jacobiana ou derivada de Fréchet e tem a
forma
𝛿u = 𝜕u
𝜕m
𝛿m . (A–10)
Portanto, eliminar essa componente proibitiva é resolver a equação de estado adjunto, que
geralmente representa um sistema de equações diferenciais parciais adjunto, ou seja,
L(m)†𝜆 = 𝑆†𝑟(𝑆𝑟u− d̃) , (A–11)
onde L(m)† é operador auto-adjunto, isto é, L(m)† = L(m), e 𝑆†𝑟 é operador que reinjeta
83
o vetor resíduo, 𝑆𝑟u− d̃, no tempo reverso a partir dos receptores. O vetor das variáveis de
estado adjunto 𝜆 é solução da equação de estado adjunto, com o termo de fonte 𝑆†𝑟(𝑆𝑟u−d̃),
e deve satisfazer condições finais e de contorno.
Assim, a variação de ℒ(u, 𝜆; m) em relação a variável de projeto m é avaliada de
acordo com
𝛿ℒ(u, 𝜆; m) = −⟨𝜆, 𝛿L(m)u⟩ (A–12)
e como a pertubação do operador de estado é dado por
𝛿L = 𝜕L
𝜕m
𝛿m , (A–13)
então, pode-se reescrever a Eq. (A–12) da seguinte forma:
𝛿ℒ(u, 𝜆; m) = −
∫︁
Ω
𝑑Ω
[︃
𝜆
𝜕L(m)
𝜕m
u
]︃
𝛿m , (A–14)
onde retorna-se para notação integral do produto interno.
Finalmente, o gradiente de 𝐽(d; m) com relação ao vetor das variáveis de projeto, m,
é dado por
∇𝐽(d; m) = 𝜕𝐽
𝜕m
= −𝜆𝜕L(m)
𝜕m
u . (A–15)
Essa expressão é conhecida como a condição de imagem para o problema inverso de
quadrados mínimos.
A–2 DERIVAÇÃO EXPLÍCITA DO GRADIENTE
O problema inverso consiste em minimizar o funcional de quadrados mínimos, que
avalia o desajuste entre o campo de onda observado 𝑝(x𝑟, 𝑡) e o campo de onda modelado
𝑝(x𝑟, 𝑡),
𝐽(𝑝; 𝑣) = 12
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡
∑︁
𝑟
[𝑝(x𝑟, 𝑡; x𝑠)− 𝑝(x𝑟, 𝑡; x𝑠)]2 (A–16)
sujeito à equação da onda acústica escalar,
1
𝑣2(x)
𝜕2𝑝(x, 𝑡)
𝜕𝑡2
−∇2𝑝(x, 𝑡) = 𝑓(x, 𝑡) , (A–17)
84
onde 𝑝(x, 𝑡) é o campo de onda de pressão, 𝑣(x) é a velocidade de propagação da onda P
e o termo de fonte representado por 𝑓(x, 𝑡) é
𝑓(x, 𝑡) = 𝑤(𝑡)𝛿(x− x𝑠) , (A–18)
onde 𝑤(𝑡) representa a função do sinal da fonte e 𝛿(x− x𝑠) é o delta de Dirichlet.
Introduzindo agora as condições iniciais e de fronteira para completar o problema da
propagação de onda, respectivamente, que segue
𝑝(x, 𝑡)
⃒⃒⃒⃒
⃒
𝑡≤0
= 0 e 𝜕𝑝(x, 𝑡)
𝜕𝑡
⃒⃒⃒⃒
⃒
𝑡≤0
= 0 (A–19)
e
𝑝(x, 𝑡)
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 e 𝜕𝑝(x, 𝑡)
𝜕x
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 , (A–20)
onde 𝜕Ω é a fronteira do domínio de propagação, representado por Ω, como mostrado na
Figura A–1.
O problema de minimização restrito definido acima pode ser reescrito como um problema
de minimização sem restrição através do método da Lagrangeana aumentada, ou seja,
ℒ(𝑝, 𝜆; 𝑣) = 12
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡
∑︁
𝑟
∫︁
Ω
𝑑Ω [𝑝(x, 𝑡; x𝑠)− 𝑝(x, 𝑡; x𝑠)]2 𝛿(x− x𝑟)
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)
[︃
1
𝑣2(x)
𝜕2𝑝(x, 𝑡)
𝜕𝑡2
−∇2𝑝(x, 𝑡)− 𝑓(x, 𝑡)
]︃
, (A–21)
onde 𝜆(x, 𝑡) é o multiplicador de Lagrange e é visto como uma função do espaço e tempo.
Para derivar o gradiente da função objetivo 𝐽(𝑣) avalia-se a pertubação de primeira
ordem da Lagrangeana aumentada ℒ(𝑝, 𝜆; 𝑣), que se desenvolve tomando as pertubação
do parâmetro do meio e do campo de onda
𝑚(x)←− 𝑚(x) + 𝛿𝑚(x) , (A–22)
𝑝(x, 𝑡)←− 𝑝(x, 𝑡) + 𝛿𝑝(x, 𝑡) , (A–23)
que leva a seguinte expressão
𝛿ℒ(𝑝, 𝜆; 𝑣) =
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡
∑︁
𝑟
∫︁
Ω
𝑑Ω 𝛿(x− x𝑟) [𝑝(x, 𝑡)− 𝑝(x, 𝑡)] 𝛿𝑝
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)
[︃
𝑚
𝜕2𝛿𝑝(x, 𝑡)
𝜕𝑡2
+ 𝛿𝑚𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
−∇2𝛿𝑝(x, 𝑡)
]︃
, (A–24)
onde desprezou-se os termos de segunda ordem e assumiu-se que 𝑚 = 𝑚(𝑣) = 1/𝑣2.
Agora, o objetivo é isolar as pertubações do campo de onda 𝛿𝑝 das parcelas da equação
85
Eq. (A–24),
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)
[︃
𝑚
𝜕2𝛿𝑝(x, 𝑡)
𝜕𝑡2
+ 𝛿𝑚𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
−∇2𝛿𝑝(x, 𝑡)
]︃
(A–25)
=
∑︁
𝑠
∫︁
Ω
𝑑Ω 𝛿𝑚
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
(A–26)
+
∑︁
𝑠
∫︁
Ω
𝑑Ω 𝑚
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝛿𝑝(x, 𝑡)
𝜕𝑡2
(A–27)
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)∇2𝛿𝑝(x, 𝑡) , (A–28)
tal que a pertubação da Lagrangeana aumentada decorra exclusivamente da pertubação
do parâmetro do meio. Para isso, começa-se com a integração por parte da Eq. (A–27),
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝛿𝑝(x, 𝑡)
𝜕𝑡2
= 𝜆𝜕𝛿𝑝
𝜕𝑡
⃒⃒⃒⃒
⃒
𝑇
0
− 𝛿𝑝𝜕𝜆
𝜕𝑡
⃒⃒⃒⃒
⃒
𝑇
0
+
∫︁ 𝑇
0
𝛿𝑝
𝜕2𝜆
𝜕𝑡2
𝑑𝑡 (A–29)
e reescrevendo as duas primeiras parcelas da Eq. (A–29) após a igualdade, respectivamente,
∫︁ 𝑇
0
𝑑𝑡
𝜕
𝜕𝑡
[︃
𝜆
𝜕𝛿𝑝
𝜕𝑡
]︃
= 𝜆(𝑇 )𝜕𝛿𝑝(𝑇 )
𝜕𝑡
− 𝜆(0)𝜕𝛿𝑝(0)
𝜕𝑡
(A–30)
e
∫︁ 𝑇
0
𝑑𝑡
𝜕
𝜕𝑡
[︃
𝛿𝑝
𝜕𝜆
𝜕𝑡
]︃
= 𝛿𝑝(𝑇 )𝜕𝜆(𝑇 )
𝜕𝑡
− 𝛿𝑝(0)𝜕𝜆(0)
𝜕𝑡
. (A–31)
Como a pertubação do campo de onda, 𝛿𝑝(x, 𝑡), deve também satisfazer as condições
iniciais Eq. (A–19), e exigindo condições finais para 𝜆(x, 𝑡) da forma
𝜆(x, 𝑡)
⃒⃒⃒⃒
⃒
𝑡≥𝑇
= 0 e 𝜕𝜆(x, 𝑡)
𝜕𝑡
⃒⃒⃒⃒
⃒
𝑡≥𝑇
= 0 . (A–32)
Assim, essas duas primeiras parcelas vão zero e Eq. (A–29) torna-se
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝛿𝑝(x, 𝑡)
𝜕𝑡2
=
∫︁ 𝑇
0
𝛿𝑝
𝜕2𝜆
𝜕𝑡2
𝑑𝑡 . (A–33)
Novamente, tomando a integração por parte da Eq. (A–28),
∫︁
Ω
𝑑Ω 𝜆(x, 𝑡)∇2𝛿𝑝(x, 𝑡) = 𝜆𝜕𝛿𝑝
𝜕x
⃒⃒⃒⃒
⃒
Ω
− 𝛿𝑝𝜕𝜆
𝜕x
⃒⃒⃒⃒
⃒
Ω
+
∫︁
Ω
𝛿𝑝∇2𝜆 𝑑Ω (A–34)
e reescrevendo as duas primeiras parcelas da Eq. (A–34) logo após a igualdade e com
86
ajuda do teorema da divergência, respectivamente,
∫︁
Ω
𝑑Ω 𝜕
𝜕x
[︃
𝜆
𝜕𝛿𝑝
𝜕x
]︃
=
∫︁
Ω
𝑑Ω∇ ·
(︃
𝜆
𝜕𝛿𝑝
𝜕x
)︃
=
∫︁
𝜕Ω
𝜆
𝜕𝛿𝑝
𝜕x
· n 𝑑𝜕Ω (A–35)
e
∫︁
Ω
𝑑Ω 𝜕
𝜕x
[︃
𝛿𝑝
𝜕𝜆
𝜕x
]︃
=
∫︁
Ω
𝑑Ω∇ ·
(︃
𝛿𝑝
𝜕𝜆
𝜕x
)︃
=
∫︁
𝜕Ω
𝛿𝑝
𝜕𝜆
𝜕x
· n 𝑑𝜕Ω , (A–36)
onde n é vetor unitário normal à superfície 𝜕Ω. As condições de fronteira Eq. (A–20)
devem também satisfazer as pertubações do campo de onda, 𝛿𝑝(x, 𝑡), e exigindo que o
𝜆(x, 𝑡) na fronteira seja𝜆(x, 𝑡)
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 e 𝜕𝜆(x, 𝑡)
𝜕x
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 , (A–37)
que faz essas duas parcelas serem zeros e consequentimente a Eq. (A–28) reduz para
∫︁
Ω
𝑑Ω 𝜆(x, 𝑡)∇2𝛿𝑝(x, 𝑡) =
∫︁
Ω
𝛿𝑝∇2𝜆 𝑑Ω . (A–38)
Substituindo as Eqs. (A–33) e (A–38) na Eq. (A–24), têm-se
𝛿ℒ(𝑝, 𝜆; 𝑣) =
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡
∑︁
𝑟
∫︁
Ω
𝑑Ω 𝛿(x− x𝑟) [𝑝(x, 𝑡)− 𝑝(x, 𝑡)] 𝛿𝑝
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝛿𝑚 𝜆(x, 𝑡)𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)
[︃
𝑚
𝜕2𝜆(x, 𝑡)
𝜕𝑡2
𝛿𝑝− 𝛿𝑝∇2𝜆(x, 𝑡)
]︃
(A–39)
e reorganizando os termos ponderados com 𝛿𝑝
𝛿ℒ(𝑝, 𝜆; 𝑣) = −
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝛿𝑚 𝜆(x, 𝑡)𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
,
−
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝛿𝑝
[︃
𝑚
𝜕2𝜆(x, 𝑡)
𝜕𝑡2
−∇2𝜆(x, 𝑡)− [𝑝(x, 𝑡)− 𝑝(x, 𝑡)] 𝛿(x− x𝑟)
]︃
.
(A–40)
Agora exigindo que o coeficiente de 𝛿𝑝 seja igual a zero, obtém-se a equação da onda
acústica adjunta,
1
𝑣2(x)
𝜕2𝜆(x, 𝑡)
𝜕𝑡2
−∇2𝜆(x, 𝑡) = |𝑝(x, 𝑡)− 𝑝(x, 𝑡)| 𝛿(x− x𝑟) , (A–41)
onde recorre-se a parametrização da velocidade, ou seja, 𝑚(x) = 1/𝑣2(x). Na equação
acima, o termo de fonte é o resíduo entre o campo de onda observado 𝑝(x𝑟, 𝑡) e o campo de
87
onda modelado 𝑝(x𝑟, 𝑡), que deve ser injetado no tempo reverso, ou seja, do tempo 𝑇 para
0. Assim, o campo de onda adjunto é o campo retropropagado a partir dos receptores. As
condições finais e de fronteira para propagação do campo de onda adjunto são dada pelas
Eqs. (A–32) e (A–37), respectivamente. Isto é,
𝜆(x, 𝑡)
⃒⃒⃒⃒
⃒
𝑡≥𝑇
= 0 e 𝜕𝜆(x, 𝑡)
𝜕𝑡
⃒⃒⃒⃒
⃒
𝑡≥𝑇
= 0 (A–42)
e
𝜆(x, 𝑡)
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 e 𝜕𝜆(x, 𝑡)
𝜕x
⃒⃒⃒⃒
⃒
𝜕Ω
= 0 . (A–43)
Assim, a Eq. (A–40) reduz para
𝛿ℒ(𝑝, 𝜆; 𝑣) = −
∑︁
𝑠
∫︁
Ω
𝑑Ω
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
𝛿𝑚 . (A–44)
Agora, a pertubação da Lagrangeana aumentada é devida exclusivamente a pertubação
do parâmetro do meio, 𝛿𝑚(x), e sabendo que 𝛿𝑚 = [−2/𝑣3(x)]𝛿𝑣, pode-se reescrever a
equação acima da forma
𝛿ℒ(𝑝, 𝜆; 𝑣) =
∫︁
Ω
𝑑Ω
[︃
2
𝑣3(x)
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡)𝜕
2𝑝(x, 𝑡)
𝜕𝑡2
]︃
𝛿𝑣 . (A–45)
Finalmente, a partir da variação de primeira ordem da Lagrangeana aumentada deriva-se
o gradiente de 𝐽(𝑝; 𝑣) com relação a 𝑣(x), que segue
∇𝐽(𝑝; 𝑣) = 𝜕𝐽
𝜕𝑣
= 2
𝑣3(x)
∑︁
𝑠
∫︁ 𝑇
0
𝑑𝑡 𝜆(x, 𝑡; x𝑠)
𝜕2𝑝(x, 𝑡; x𝑠)
𝜕𝑡2
. (A–46)
A expressão acima é também chamada de condição de imagem, que expressa a correlação
cruzada de atraso zero entre o campo de onda adjunto 𝜆(x, 𝑡) e a variação temporal de
segunda ordem do campo de onda da fonte 𝑝(x, 𝑡).
B– DERIVAÇÃO DO GRADIENTE USANDO O MÉTODO
DOS ESTADOS ADJUNTOS DISCRETO
Neste capítulo, usa-se o método dos estados adjuntos discreto para calcular o gradiente
da função objetivo de quadrados mínimos. O desenvolvimento dessa abordagem consiste
primeiramente na discretização da função objetivo e consequentimente da equação da onda
para depois calcular o gradiente.
B–1 DERIVAÇÃO DO GRADIENTE DISCRETO
Considere a função objetivo discreta dada pela metade da soma do erro quadrático da
diferença entre o campo de pressão modelado 𝑝𝑛𝑖,𝑗 e o campo de onda observado 𝑝𝑛𝑟 obtidos
nas mesmas coordenadas de receptores 𝑟, que segue
𝐽 = 12
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁2
, (B–1)
onde 𝑆𝑟 é um operador de amostragem discreto, que extrai a amplitude de 𝑝𝑛𝑖,𝑗 nas
coordenadas dos receptores na malha. A função objetivo discreta de quadrados mínimos
é denota por 𝐽 = 𝐽(𝑣𝑖,𝑗), que depende do modelo de velocidade da onda compressional
discreto através da relação 𝑝𝑛𝑖,𝑗 = 𝑝𝑛𝑖,𝑗(𝑣𝑖,𝑗). Enquanto que, os índices 𝑠 e 𝑛 representam as
fontes e as etapas de tempo, respectivamente. O número de fontes, o número de receptores
e o tempo total de modelagem são descritas pelas variáveis 𝑁𝑠, 𝑁𝑟 e 𝑁𝑡, respectivamente.
Os eixos da distância e da profundidade são descritos por 𝑖 e 𝑗, com o número de pontos
ao longo dos eixos 𝑥 e 𝑧 representados por 𝑁𝑥 e 𝑁𝑧, respectivamente.
O cálculo do gradiente da função objetivo, 𝐽(𝑣𝑖,𝑗), com relação ao modelo de velocidade,
𝑣𝑖,𝑗 , é obtido através do método da Lagrangiana aumentada que é formalmente apresentada
abaixo:
ℒ = 12
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁2
−
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝜆𝑛𝑖,𝑗
{︃
𝑝𝑛+1𝑖,𝑗 − 2𝑝𝑛𝑖,𝑗 + 𝑝𝑛−1𝑖,𝑗 − 𝑣2𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂}︃
, (B–2)
onde ℒ = ℒ(𝑝𝑖,𝑗, 𝜆𝑖,𝑗 ; 𝑣𝑖,𝑗) é a Lagrangiana aumentada que associa a função objetivo discreta
e equação da onda acústica discreta, Eq 3.28, através do multiplicador de Lagrange 𝜆𝑛𝑖,𝑗.
A variação de ℒ é realizada a partir das pertubações dos campos de onda discretos e
88
89
da velocidade acústica do meio discreta, ou seja,
𝑚𝑖,𝑗 ←− 𝑚𝑖,𝑗 + 𝛿𝑚𝑖,𝑗 ,
𝑝𝑛𝑖,𝑗 ←− 𝑝𝑛𝑖,𝑗 + 𝛿𝑝𝑛𝑖,𝑗 ,
𝑝𝑛±1𝑖,𝑗 ←− 𝑝𝑛±1𝑖,𝑗 + 𝛿𝑝𝑛±1𝑖,𝑗 , (B–3)
𝑝𝑛𝑖±1,𝑗 ←− 𝑝𝑛𝑖±1,𝑗 + 𝛿𝑝𝑛𝑖±1,𝑗 ,
𝑝𝑛𝑖,𝑗±1 ←− 𝑝𝑛𝑖,𝑗±1 + 𝛿𝑝𝑛𝑖,𝑗±1 ,
onde usou-se a seguinte parametrização para velocidade: 𝑚𝑖,𝑗 = 𝑣2𝑖,𝑗. Agora, substituindo
a Eq. B–3 na Eq. B–2 e desprezando os termos de segunda ordem
𝛿ℒ =
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁
𝛿𝑝𝑛𝑖,𝑗
−
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝜆𝑛𝑖,𝑗
{︃
𝑝𝑛+1𝑖,𝑗 − 2𝑝𝑛𝑖,𝑗 + 𝑝𝑛−1𝑖,𝑗 −𝑚𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂
+ 𝛿𝑝𝑛+1𝑖,𝑗 − 2𝛿𝑝𝑛𝑖,𝑗 + 𝛿𝑝𝑛−1𝑖,𝑗 −𝑚𝑖,𝑗 (Δ𝑡)
2
(︁
∇2𝛿𝑝
)︁𝑛
𝑖,𝑗
− 𝛿𝑚𝑖,𝑗 (Δ𝑡)2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂ }︃
(B–4)
e a partir da Eq. 3.28 a expressão acima reduz para
𝛿ℒ =
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁
𝛿𝑝𝑛𝑖,𝑗
−
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝜆𝑛𝑖,𝑗
{︃
𝛿𝑝𝑛+1𝑖,𝑗 − 2𝛿𝑝𝑛𝑖,𝑗 + 𝛿𝑝𝑛−1𝑖,𝑗 −𝑚𝑖,𝑗 (Δ𝑡)
2
(︁
∇2𝛿𝑝
)︁𝑛
𝑖,𝑗
− 𝛿𝑚𝑖,𝑗 (Δ𝑡)2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂ }︃
. (B–5)
A variação de ℒ deve depender somente das pertubações do parâmetro do meio, 𝛿𝑚𝑖,𝑗.
Desta forma, deve-se isolar as pertubações dos campos de onda nas parcelas: 𝛿𝑝𝑛+1𝑖,𝑗 , 𝛿𝑝𝑛𝑖,𝑗,
𝛿𝑝𝑛−1𝑖,𝑗 e (∇2𝛿𝑝)
𝑛
𝑖,𝑗 . Avaliando os termos discretos na Eq. B–5 que correspondem as variações
90
de tempo do campo de pressão, que são reorganizadas da seguinte forma:
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗
(︁
𝛿𝑝𝑛+1𝑖,𝑗 − 2𝛿𝑝𝑛𝑖,𝑗 + 𝛿𝑝𝑛−1𝑖,𝑗
)︁
(B–6)
=
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗𝛿𝑝
𝑛+1
𝑖,𝑗 (B–7)
+
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗𝛿𝑝
𝑛−1
𝑖,𝑗 (B–8)
− 2
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗𝛿𝑝
𝑛
𝑖,𝑗 . (B–9)
Tomando separadamente as mudanças de variáveis 𝑞 = 𝑛± 1 e 𝑞 = 𝑛 nas Eqs. B–7, B–8 e
B–9, respectivamente,
𝑁𝑡+1∑︁
𝑞=1
𝜆𝑞−1𝑖,𝑗 𝛿𝑝
𝑞
𝑖,𝑗 = 𝜆0𝑖𝑗𝛿𝑝1𝑖,𝑗 + 𝜆𝑁𝑡𝑖,𝑗 𝛿𝑝𝑁𝑡+1𝑖,𝑗 +
𝑁𝑡∑︁
𝑞=2
𝜆𝑞−1𝑖,𝑗 𝛿𝑝
𝑞
𝑖,𝑗 , (B–10)
𝑁𝑡−1∑︁
𝑞=−1
𝜆𝑞+1𝑖,𝑗 𝛿𝑝
𝑞
𝑖,𝑗 = 𝜆0𝑖𝑗𝛿𝑝−1𝑖,𝑗 + 𝜆𝑁𝑡𝑖,𝑗 𝛿𝑝𝑁𝑡−1𝑖,𝑗 +
𝑁𝑡−2∑︁
𝑞=0
𝜆𝑞+1𝑖,𝑗 𝛿𝑝
𝑞
𝑖,𝑗 , (B–11)
𝑁𝑡∑︁
𝑞=0
𝜆𝑞𝑖,𝑗𝛿𝑝
𝑞
𝑖,𝑗 = 𝜆0𝑖𝑗𝛿𝑝0𝑖,𝑗 + 𝜆𝑁𝑡𝑖,𝑗 𝛿𝑝𝑁𝑡𝑖,𝑗 +
𝑁𝑡−1∑︁
𝑞=1
𝜆𝑞𝑖,𝑗𝛿𝑝
𝑞
𝑖,𝑗 . (B–12)
A partir das condições iniciais para os campos de pressão discretos (ou seja, quando 𝑛 = 0),
𝑝1𝑖,𝑗 = 0 , 𝑝0𝑖,𝑗 = 0 e 𝑝−1𝑖,𝑗 = 0 , (B–13)
as quais são validas para as pertubações dos campos de pressão discretos e assumindo
condições finais para 𝜆𝑛𝑖,𝑗, (ou seja, para 𝑛 = 𝑁𝑡) nulas, obtém-se
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗
(︁
𝛿𝑝𝑛−1𝑖,𝑗 − 2𝛿𝑝𝑛𝑖,𝑗 + 𝛿𝑝𝑛+1𝑖,𝑗
)︁
=
𝑁𝑡−1∑︁
𝑛=1
(︁
𝜆𝑛−1𝑖,𝑗 − 2𝜆𝑛𝑖,𝑗 + 𝜆𝑛+1𝑖,𝑗
)︁
𝛿𝑝𝑛𝑖,𝑗 , (B–14)
onde renomeou-se as variáveis 𝑞 por 𝑛.
Para versão discretizada do Laplaciano do campo de pressão perturbado na Eq. B–5,
91
que é reagrupada da seguinte forma:
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗
(︁
∇2𝛿𝑝
)︁𝑛
𝑖,𝑗
=
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗
{︃
𝑐0
[︃
1
(Δ𝑥)2 +
1
(Δ𝑧)2
]︃
𝛿𝑝𝑛𝑖,𝑗
+
𝑀−1∑︁
𝑙=1𝑐𝑙
[︃
𝛿𝑝𝑛𝑖−𝑙,𝑗 + 𝛿𝑝𝑛𝑖+𝑙,𝑗
(Δ𝑥)2
]︃
+
𝑀−1∑︁
𝑙=1
𝑐𝑙
[︃
𝛿𝑝𝑛𝑖,𝑗−𝑙 + 𝛿𝑝𝑛𝑖,𝑗+𝑙
(Δ𝑧)2
]︃}︃
(B–15)
=
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗𝑐0
[︃
1
(Δ𝑥)2 +
1
(Δ𝑧)2
]︃
𝛿𝑝𝑛𝑖,𝑗 (B–16)
+
𝑁𝑧∑︁
𝑗=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑥)2
(︃
𝑁𝑥∑︁
𝑖=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗𝛿𝑝
𝑛
𝑖−𝑙,𝑗 +
𝑁𝑥∑︁
𝑖=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗𝛿𝑝
𝑛
𝑖+𝑙,𝑗
)︃
(B–17)
+
𝑁𝑥∑︁
𝑖=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑧)2
⎛⎝𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗𝛿𝑝
𝑛
𝑖,𝑗−𝑙 +
𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗𝛿𝑝
𝑛
𝑖,𝑗+𝑙
⎞⎠ . (B–18)
Novamente, tomando separa demente as mudanças de variáveis 𝑎 = 𝑖 ± 1, 𝑏 = 𝑗 ± 1 e
𝑎, 𝑏 = 𝑖, 𝑗 nas Eq. B–17, Eq. B–18 e Eq. B–16, respectivamente,
𝑁𝑧∑︁
𝑗=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑥)2
⎛⎝𝑁𝑥−𝑙∑︁
𝑎=−𝑙
𝑚𝑎+𝑙,𝑗𝜆
𝑛
𝑎+𝑙,𝑗𝛿𝑝
𝑛
𝑎,𝑗 +
𝑁𝑥+𝑙∑︁
𝑎=𝑙
𝑚𝑎−𝑙,𝑗𝜆
𝑛
𝑎−𝑙,𝑗𝛿𝑝
𝑛
𝑎,𝑗
⎞⎠ =
𝑁𝑧∑︁
𝑗=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑥)2
⎡⎣(︃𝑚0,𝑗𝜆𝑛0,𝑗𝛿𝑝𝑛−𝑙,𝑗 + 𝑚𝑁𝑥,𝑗𝜆𝑛𝑁𝑥,𝑗𝛿𝑝𝑛𝑁𝑥−𝑙,𝑗 + 𝑁𝑥−1∑︁
𝑎=1
𝑚𝑎+𝑙,𝑗𝜆
𝑛
𝑎+𝑙,𝑗𝛿𝑝
𝑛
𝑎,𝑗
)︃
+
(︃
𝑚0,𝑗𝜆
𝑛
0,𝑗𝛿𝑝
𝑛
𝑙,𝑗 + 𝑚𝑁𝑥,𝑗𝜆𝑛𝑁𝑥,𝑗𝛿𝑝
𝑛
𝑁𝑥+𝑙,𝑗 +
𝑁𝑥−1∑︁
𝑎=1
𝑚𝑎−𝑙,𝑗𝜆
𝑛
𝑎−𝑙,𝑗𝛿𝑝
𝑛
𝑎,𝑗
)︃⎤⎦ , (B–19)
𝑁𝑥∑︁
𝑖=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑧)2
⎛⎝𝑁𝑧−𝑙∑︁
𝑏=−𝑙
𝑚𝑖,𝑏+𝑙𝜆
𝑛
𝑖,𝑏+𝑙𝛿𝑝
𝑛
𝑖,𝑏 +
𝑁𝑧+𝑙∑︁
𝑏=𝑙
𝑚𝑖,𝑏−𝑙𝜆
𝑛
𝑖,𝑏−𝑙𝛿𝑝
𝑛
𝑖,𝑏
⎞⎠ =
𝑁𝑥∑︁
𝑖=0
𝑀−1∑︁
𝑙=1
𝑐𝑙
(Δ𝑧)2
⎡⎣(︃𝑚𝑖,0𝜆𝑛𝑖,0𝛿𝑝𝑛𝑖,−𝑙 + 𝑚𝑖,𝑁𝑧𝜆𝑛𝑖,𝑁𝑧𝛿𝑝𝑛𝑖,𝑁𝑧−𝑙 + 𝑁𝑧−1∑︁
𝑏=1
𝑚𝑖,𝑏+𝑙𝜆
𝑛
𝑖,𝑏+𝑙𝛿𝑝
𝑛
𝑖,𝑏
)︃
+
(︃
𝑚𝑖,0𝜆
𝑛
𝑖,0𝛿𝑝
𝑛
𝑖,𝑙 + 𝑚𝑖,𝑁𝑧𝜆𝑛𝑖,𝑁𝑧𝛿𝑝
𝑛
𝑖,𝑁𝑧+𝑙 +
𝑁𝑧−1∑︁
𝑏=1
𝑚𝑖,𝑏−𝑙𝜆
𝑛
𝑖,𝑏−𝑙𝛿𝑝
𝑛
𝑖,𝑏
)︃⎤⎦ , (B–20)
𝑁𝑧∑︁
𝑗=0
𝑐0
(Δ𝑥)2
𝑁𝑥∑︁
𝑎=0
𝑚𝑎,𝑗𝜆
𝑛
𝑎,𝑗𝛿𝑝
𝑛
𝑎,𝑗 +
𝑁𝑥∑︁
𝑖=0
𝑐0
(Δ𝑧)2
𝑁𝑧∑︁
𝑏=0
𝑚𝑖,𝑏𝜆
𝑛
𝑖,𝑏𝛿𝑝
𝑛
𝑖,𝑏 =
𝑁𝑧∑︁
𝑗=0
𝑐0
(Δ𝑥)2
(︃
𝑚0,𝑗𝜆
𝑛
0,𝑗𝛿𝑝
𝑛
0,𝑗 + 𝑚𝑁𝑥,𝑗𝜆𝑛𝑁𝑥,𝑗𝛿𝑝
𝑛
𝑁𝑥,𝑗 +
𝑁𝑥−1∑︁
𝑎=1
𝑚𝑎,𝑗𝜆
𝑛
𝑎,𝑗𝛿𝑝
𝑛
𝑎,𝑗
)︃
+
𝑁𝑥∑︁
𝑖=0
𝑐0
(Δ𝑧)2
(︃
𝑚𝑖,0𝜆
𝑛
𝑖,0𝛿𝑝
𝑛
𝑖,0 + 𝑚𝑖,𝑁𝑧𝜆𝑛𝑖,𝑁𝑧𝛿𝑝
𝑛
𝑖,𝑁𝑧 +
𝑁𝑧−1∑︁
𝑏=1
𝑚𝑖,𝑏𝜆
𝑛
𝑖,𝑏𝛿𝑝
𝑛
𝑖,𝑏
)︃
. (B–21)
As condições de fronteiras para os campos de pressão discretos são definidas como nula ao
92
longo da fronteira da malha,
𝑝𝑛0,𝑗 = 0, 𝑝𝑛𝑖,0 = 0, 𝑝𝑛𝑁𝑥,𝑗 = 0 e 𝑝
𝑛
𝑖,𝑁𝑧 = 0 . (B–22)
Vamos assumir condições de fronteiras iguais para os campos de onda adjuntos discretos
e usar o fato que [(𝑞 ± 𝑙) + (𝑞 ∓ 𝑙)]/2 = 𝑞 para isolar o parâmetro do meio. Assim, as
Eqs. B–19, B–20 e B–21 que após a renomeação dos índices 𝑎, 𝑏 por 𝑖, 𝑗, respectivamente,
podem ser substituídas nas Eqs. B–17, B–18 e B–16, respectivamente,
𝑁𝑥∑︁
𝑖=0
𝑁𝑧∑︁
𝑗=0
𝑚𝑖,𝑗𝜆
𝑛
𝑖,𝑗
(︁
∇2𝛿𝑝
)︁𝑛
𝑖,𝑗
=
𝑁𝑥−1∑︁
𝑖=1
𝑁𝑧−1∑︁
𝑗=1
𝑚𝑖,𝑗
⎧⎨⎩𝑐0
[︃
1
(Δ𝑥)2 +
1
(Δ𝑧)2
]︃
𝜆𝑛𝑖,𝑗
+
𝑀−1∑︁
𝑙=1
𝑐𝑙
[︃
𝜆𝑛𝑖+𝑙,𝑗 + 𝜆𝑛𝑖−𝑙,𝑗
(Δ𝑥)2
]︃
+
𝑀−1∑︁
𝑙=1
𝑐𝑙
[︃
𝜆𝑛𝑖,𝑗+𝑙 + 𝜆𝑛𝑖,𝑗−𝑙
(Δ𝑧)2
]︃⎫⎬⎭𝛿𝑝𝑛𝑖,𝑗
=
𝑁𝑥−1∑︁
𝑖=1
𝑁𝑧−1∑︁
𝑗=1
𝑚𝑖,𝑗
(︁
∇2𝜆
)︁𝑛
𝑖,𝑗
𝛿𝑝𝑛𝑖,𝑗 . (B–23)
Agora substituindo a Eq. B–14 e Eq. B–23 na Eq. B–4 e reorganizando os termos com
𝛿𝑝𝑛𝑖,𝑗, obtém-se
𝛿ℒ =
𝑁𝑡−1∑︁
𝑛=1
𝑁𝑟∑︁
𝑟=1
𝑁𝑥−1∑︁
𝑖=1
𝑁𝑧−1∑︁
𝑗=1
⎡⎣𝜆𝑛−1𝑖,𝑗 − 2𝜆𝑛𝑖,𝑗 + 𝜆𝑛+1𝑖,𝑗 −𝑚𝑖,𝑗 (Δ𝑡)2 (︁∇2𝜆)︁𝑛𝑖,𝑗 − 𝑆†𝑟 (︁𝑆𝑟𝑝𝑛𝑖,𝑗 − 𝑝𝑛𝑟 )︁
⎤⎦𝛿𝑝𝑛𝑖,𝑗
+
𝑁𝑠∑︁
𝑠=1
𝑁𝑡−1∑︁
𝑛=1
𝑁𝑥−1∑︁
𝑖=0
𝑁𝑧−1∑︁
𝑗=0
𝜆𝑛𝑖,𝑗 𝛿𝑚𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂
. (B–24)
Para obter a variação de ℒ com relação 𝛿𝑚𝑖,𝑗 a expressão entre colchetes deve ser igual a
zero, que conduz à equação da onda adjunto discreta
𝜆𝑛−1𝑖,𝑗 = 2𝜆𝑛𝑖,𝑗 − 𝜆𝑛+1𝑖,𝑗 + 𝑣2𝑖,𝑗 (Δ𝑡)
2
⎡⎣(︁∇2𝜆)︁𝑛
𝑖,𝑗
+ 1
𝑣2𝑖,𝑗 (Δ𝑡)
2 𝑆
†
𝑟
(︁
𝑆𝑟𝑝
𝑛
𝑖,𝑗 − 𝑝𝑛𝑟
)︁⎤⎦ , (B–25)
onde 𝑚𝑖,𝑗 = 𝑣2𝑖,𝑗 . As condições finais para o campo de pressão adjunto discreto são definidas
para 𝑛 = 𝑁𝑡, ou seja,
𝜆𝑁𝑡−1𝑖,𝑗 = 0 , 𝜆𝑁𝑡𝑖,𝑗 = 0 e 𝜆𝑁𝑡+1𝑖,𝑗 = 0 . (B–26)
Assim, definidas as condições finitas para o campo de onda adjunto discreto pode-se
atualizar o campo de onda adjunto discreto para os demais instantes a partir da relação
recursiva no tempo reverso, Eq. B–25. Isto é, para 𝑛 = 𝑁𝑡, 𝑁𝑡 − 1, · · · , 0.
A condição que leva à equação da onda adjunta discreta permite reduzir a Eq. B–24
93
para
𝛿ℒ =
𝑁𝑥−1∑︁
𝑖=1
𝑁𝑧−1∑︁
𝑗=1
{︃
2
𝑁𝑠∑︁
𝑠=1
𝑁𝑡−1∑︁
𝑛=1
𝜆𝑛𝑖,𝑗 𝑣𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂}︃
𝛿𝑣𝑖,𝑗 , (B–27)
onde usamos a pertubação da parametrização para 𝑚𝑖,𝑗(𝑣𝑖,𝑗) = 𝑣2𝑖,𝑗 , que é 𝛿𝑚𝑖,𝑗 = 2𝑣𝑖,𝑗𝛿𝑣𝑖,𝑗 .
Finalmente, obtemos o gradiente da função objetivo discreta com relação ao modelo de
velocidade a partir da variação da Lagrangiana associada, que segue
[∇𝐽(𝑣𝑖,𝑗)]𝑛𝑖,𝑗 = 2
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗 𝑣𝑖,𝑗 (Δ𝑡)
2
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂
. (B–28)
Agora, sabendo que a equação da onda pode ser escrita na forma
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛
𝑖,𝑗
=
𝑝𝑛+1𝑖,𝑗 − 2𝑝𝑛𝑖,𝑗 + 𝑝𝑛−1𝑖,𝑗
(Δ𝑡)2 = 𝑣
2
𝑖,𝑗
[︂(︁
∇2𝑝
)︁𝑛
𝑖,𝑗
+ 𝑊 𝑛,𝑠𝑖,𝑗
]︂
,
pode-se reescrever o gradiente na forma:
[∇𝐽(𝑣𝑖,𝑗)]𝑛𝑖,𝑗 =
2
𝑣𝑖,𝑗
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑖,𝑗
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛
𝑖,𝑗
(Δ𝑡)2 . (B–29)
C– DERIVAÇÃO DO GRADIENTE USANDO
DIFERENCIAÇÃO AUTOMÁTICA
Neste capítulo, é apresentado o cálculo do gradiente da função objetivo de quadrados
mínimos usando diferenciação automática. Aqui, adota-se uma abordagem similar daquela
apresentada nos trabalhos dos autores Richardson (2018) e Sun et al. (2019).
C–1 DERIVAÇÃO DO GRADIENTE
Considere a função objetivo de quadrados mínimos discretizada que mede a diferença
entre o campo de pressão observado 𝑝𝑛 e o campo de pressão modelado 𝑝𝑛, que segue
𝐽(𝑣) = 12
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝑁𝑟∑︁
𝑟=1
(𝑆𝑟𝑝𝑛 − 𝑝𝑛)2 , (C–1)
onde 𝑆𝑟 é o operador de amostragem discreto e 𝑝𝑛 é obtido a partir da solução da equação
da onda acústica escalar para cada etapa de tempo 𝑛, que é reescrita na forma:
𝑝𝑛 = 2𝑝𝑛−1 − 𝑝𝑛−2 + 𝑣2 (Δ𝑡)2
[︂(︁
∇2𝑝
)︁𝑛−1
+ 𝑊 𝑛−1
]︂
, (C–2)
onde 𝑣 é o modelo de velocidade acústico, Δ𝑡 é o tamanho do passo no tempo, (∇2𝑝)𝑛−1 é
uma matriz quadrada simétrica, ou seja, a versão discretizada do operador Laplaciano, e
𝑊 𝑛−1 é uma matriz com dimensão do domínio discreto de zeros, exceto nas coordenadas
das fontes.
O gradiente da função objetivo com relação ao modelo de velocidade pode ser obtido
aplicando a regra da cadeia no modo reverso para função composta 𝐽 = 𝐽(𝑝𝑛(𝑣)), que
pode ser escrita como
∇𝐽(𝑣) =
𝑁𝑡∑︁
𝑛=0
(︃
𝜕𝐽
𝜕𝑝𝑛
)︃
𝜕𝑝𝑛
𝜕𝑣
. (C–3)
A expansão da regra da cadeia depende da ordem da aproximação de diferenças finitas
adotada para aproximar a derivada de tempo da equação da onda. Para uma aproximação
de diferenças finitas centrada de segunda ordem para derivada temporal da equação da
onda; implica que 𝐽 requer três termos com dependências: 𝑝𝑛(𝑝𝑛, 𝑝𝑛+1, 𝑝𝑛+2), 𝑝𝑛+1(𝑝𝑛) e
𝑝𝑛+2(𝑝𝑛) para 0 < 𝑛 < 𝑁𝑡− 2. Assim, a regra da cadeia no modo reverso permite expandir
a expressão acima da seguinte forma:
∇𝐽(𝑣) =
𝑁𝑡−2∑︁
𝑛=0
(︃
𝜕𝐽
𝜕𝑝𝑛
+ 𝜕𝐽
𝜕𝑝𝑛+1
𝜕𝑝𝑛+1
𝜕𝑝𝑛
+ 𝜕𝐽
𝜕𝑝𝑛+2
𝜕𝑝𝑛+2
𝜕𝑝𝑛
)︃
𝜕𝑝𝑛
𝜕𝑣
. (C–4)
94
95
Na etapa de tempo (𝑛 = 𝑁𝑡 − 1) a função 𝐽 depende dos campos nos instantes 𝑁𝑡 − 1 e
𝑁𝑡 devido a dependência de 𝑝𝑁𝑡 = 𝑝𝑁𝑡(𝑝𝑁𝑡−1), então, a derivada parcial (𝜕𝐽/𝜕𝑝𝑛)𝑛=𝑁𝑡−1 é
determinada por (︃
𝜕𝐽
𝜕𝑝𝑛
)︃
𝑛=𝑁𝑡−1
= 𝜕𝐽
𝜕𝑝𝑁𝑡
𝜕𝑝𝑁𝑡
𝜕𝑝𝑁𝑡−1
+ 𝜕𝐽
𝜕𝑝𝑁𝑡−1
. (C–5)
Enquanto que, para a última etapa de tempo (𝑛 = 𝑁𝑡) a função 𝐽 depende somente do
campo da etapa 𝑁𝑡, então, a derivada parcial de 𝐽 em relação ao campo avaliado nessa
etapa de tempo é calculada por
(︃
𝜕𝐽
𝜕𝑝𝑛
)︃
𝑛=𝑁𝑡
=
𝑁𝑟∑︁
𝑟=1
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡 − 𝑝𝑁𝑡
)︁
. (C–6)
A partir da Eq. C–2, pode-se determinar as derivadas parciais da Eq. C–4 como:
𝜕𝐽
𝜕𝑝𝑛
=
𝑁𝑟∑︁
𝑟=1
𝑆†𝑟 (𝑆𝑟𝑝𝑛 − 𝑝𝑛) , (C–7)
𝜕𝑝𝑛+1
𝜕𝑝𝑛
= 𝑣2(Δ𝑡)2∇2 + 2 , (C–8)
𝜕𝑝𝑛+2
𝜕𝑝𝑛+1
= −1 , (C–9)
𝜕𝑝𝑛
𝜕𝑣
= 2𝑣 (Δ𝑡)2
[︁
∇2𝑝𝑛−1 −𝑊 𝑛−1,𝑠
]︁
, (C–10)
onde 0 < 𝑛 < 𝑁𝑡− 2. Desta forma, as primeiras avaliações para 𝐽 são dadas pela Eq. C–6
e pela Eq. C–5, que a partir das Eqs. C–6 e C–8 pode ser reescrita na forma:
(︃
𝜕𝐽
𝜕𝑝𝑛
)︃
𝑛=𝑁𝑡−1
=
𝑁𝑟∑︁
𝑟=1
{︁
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡 − 𝑝𝑁𝑡
)︁ [︁
𝑣2 (Δ𝑡)2∇2 + 2
]︁
+ 𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡−1 − 𝑝𝑁𝑡−1
)︁}︁
.
(C–11)
Agora substituindo as Eqs. C–7, C–8, C–9 e C–10 na Eq. C–4 e reorganizando,
∇𝐽(𝑣) =
𝑁𝑠∑︁
𝑛=1
𝑁𝑡−2∑︁
𝑛=0
𝑁𝑟∑︁
𝑛=1
{︃
𝑣2 (Δ𝑡)2
[︃
∇2 𝜕𝐽
𝜕𝑝𝑛+1
+ 1
𝑣2 (Δ𝑡)2
𝑆†𝑟 (𝑆𝑟𝑝𝑛 − 𝑝𝑛)
]︃
+ 2 𝜕𝐽
𝜕𝑝𝑛+1
− 𝜕𝐽
𝜕𝑝𝑛+2
}︃
2𝑣 (Δ𝑡)2
[︁
∇2𝑝𝑛−1 −𝑊 𝑛−1,𝑠
]︁
. (C–12)
Definindo na expressão acima 𝜆𝑛+1 ≡ (𝜕𝐽/𝜕𝑝𝑛+1) e 𝜆𝑛+2 ≡ (𝜕𝐽/𝜕𝑝𝑛+2) e a quantidade
entre chaves como 𝜆𝑛 ≡ (𝜕𝐽/𝜕𝑝𝑛), então,
𝜆𝑛 = 2𝜆𝑛+1 − 𝜆𝑛+2 + 𝑣2 (Δ𝑡)2
[︃
∇2𝜆𝑛+1 + 1
𝑣2 (Δ𝑡)2
𝑆†𝑟 (𝑆𝑟𝑝𝑛 − 𝑝𝑛)
]︃
, (C–13)
96
que mostra que 𝜆𝑛 = (𝜕𝐽/𝜕𝑝𝑛) é calculado através da injeção do resíduo escalado pelo
inverso de 𝑣2 (Δ𝑡)2 no tempo reverso, onde os estados iniciais da propagação reversa são
descritos pelas Eqs. C–6 e C–11. Isto é,
𝜆𝑁𝑡 =
𝑁𝑟∑︁
𝑟=1
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡 − 𝑝𝑁𝑡
)︁
, (C–14)
𝜆𝑁𝑡−1 =
𝑁𝑟∑︁
𝑟=1
{︁
𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡 − 𝑝𝑁𝑡
)︁ [︁
𝑣2 (Δ𝑡)2∇2 + 2
]︁
+ 𝑆†𝑟
(︁
𝑆𝑟𝑝
𝑁𝑡−1 − 𝑝𝑁𝑡−1
)︁}︁
, (C–15)
com 𝑛 = 𝑁𝑡 − 2, 𝑁𝑡 − 3, · · · , 0 na Eq. C–13. Assim, podemos reescrever o gradiente de 𝐽 ,
Eq. C–16, na forma:
∇𝐽(𝑣) = 2
𝑁𝑠∑︁
𝑛=1
𝑁𝑡∑︁
𝑛=0
𝜆𝑛𝑣 (Δ𝑡)2
[︁
∇2𝑝𝑛−1 −𝑊 𝑛−1,𝑠
]︁
(C–16)
e a partir da equação da onda, Eq. C–2, que pode ser escrita como
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛−1
= 𝑝
𝑛 − 2𝑝𝑛−1 + 𝑝𝑛−2
(Δ𝑡)2 = 𝑣
2
[︂(︁
∇2𝑝
)︁𝑛−1
+ 𝑊 𝑛−1,𝑠
]︂
,
então, podemos reescrever o gradiente na forma:
[∇𝐽(𝑣)]𝑛 = 2
𝑣
𝑁𝑠∑︁
𝑠=1
𝑁𝑡∑︁
𝑛=0
𝜆𝑛
(︃
𝜕2𝑝
𝜕𝑡2
)︃𝑛
(Δ𝑡)2 . (C–17)
D– ALGORITMO NLCG
Algoritmo 2: Algoritmo NLCG.
Objetivo: minimizar 𝐽(m) = 12 ‖ d(m)− d̃ ‖
2
2 em relação a m;
Entrada: modelo inicial m0, estimativa inicial do comprimento de passo 𝜂, valor de
tolerância para o critério de convergência 𝜖, número máximo de iterações da inversão
𝑘𝑚𝑎𝑥, número máximo de iterações da busca linear 𝑙𝑚𝑎𝑥
Inicialize g0 = 0 e p0 = 0
Calcule 𝐽0 e g0 para m0
Calcule p0 = −g0
Define 𝐽0 = 𝐽0, 𝛼0 = 1, 𝑐1 = 1× 10−4 e 𝑐2 = 9× 10−1
𝑘 = 1 Iterações da inversão;
while converge se 𝐽𝑘−1/𝐽0 6 𝜖 do
p̄𝑘−1 = p𝑘−1/ ‖ p𝑘−1 ‖∞
p̄𝑘−1 = 𝜂 p̄𝑘−1
𝑔𝑘1 = g𝑘−1 · p̄𝑘−1
Inicialize 𝛼𝑘𝑚𝑖𝑛 = 0 e 𝛼𝑘𝑚𝑎𝑥 = 0
𝑙 = 1 Iterações da busca linear com as condições de Wolfe padrão;
while do
m𝑘,𝑙+1 = m𝑘−1,𝑙 + 𝛼𝑘−1,𝑙 p̄𝑘−1,𝑙
Calcule 𝐽𝑘,𝑙+1 e gk,l+1 para m𝑘,𝑙+1
𝑔𝑘,𝑙+12 = g𝑘,𝑙+1 · p̄𝑘−1,𝑙
if 𝐽𝑘,𝑙+1 6 𝐽𝑘−1,𝑙 + 𝑐1𝛼𝑘−1,𝑙𝑔𝑘,𝑙1 and 𝑔
𝑘,𝑙+1
2 > 𝑐2𝑔
𝑘,𝑙
1 then
break Satisfaz as condições de Wolfe padrão;
else if 𝐽𝑘,𝑙+1 > 𝐽𝑘−1,𝑙 + 𝑐1𝛼𝑘−1,𝑙𝑔𝑘,𝑙1 then
𝛼𝑘−1,𝑙+1𝑚𝑎𝑥 = 𝛼𝑘−1,𝑙
𝛼𝑘,𝑙+1 = 0.5(𝛼𝑘−1,𝑙𝑚𝑖𝑛 + 𝛼𝑘−1,𝑙+1𝑚𝑎𝑥 )
else if 𝐽𝑘,𝑙+1 6 𝐽𝑘−1,𝑙 + 𝑐1𝛼𝑘−1,𝑙𝑔𝑘,𝑙1 and 𝑔
𝑘,𝑙+1
2 < 𝑐2𝑔
𝑘−1,𝑙
1 then
𝛼𝑘−1,𝑙+1𝑚𝑖𝑛 = 𝛼𝑘−1,𝑙
if 𝛼𝑘−1,𝑙𝑚𝑎𝑥 ̸= 0 then
𝛼𝑘,𝑙+1 = 0.5(𝛼𝑘−1,𝑙+1𝑚𝑖𝑛 + 𝛼𝑘−1,𝑙𝑚𝑎𝑥 )
else
𝛼𝑘,𝑙+1 = 10𝛼𝑘−1,𝑙
end
if 𝑙 > 𝑙𝑚𝑎𝑥 then não converge
𝑙 = 𝑙 + 1
end
if 𝐽𝑘 > 𝐽𝑘−1 then não converge
𝛽𝑘𝐻𝑆 = g𝑘 ·
(︁
g𝑘 − g𝑘−1
)︁
/
(︁
g𝑘 − g𝑘−1
)︁
· p̄𝑘−1
𝛽𝑘𝐷𝑌 = g𝑘 · g𝑘/
(︁
g𝑘 − g𝑘−1
)︁
· p̄𝑘−1
𝛽𝑘 = max
(︁
0, min
(︁
𝛽𝑘𝐻𝑆 , 𝛽
𝑘
𝐷𝑌
)︁)︁
p𝑘 = −g𝑘 + 𝛽𝑘 p̄𝑘−1
if 𝑘 > 𝑘𝑚𝑎𝑥 then não converge
𝑘 = 𝑘 + 1
end
Resultado: modelo estimado m
97
		2023-06-29T11:36:12-0300

Mais conteúdos dessa disciplina