Ajuste de Curvas: Uma Introdução Visando Aprendizado de Máquina

Maurício Pinheiro

Este artigo é o quarto da nossa série de textos tutoriais em AI-Talks.org. Ele é focado em conceitos de ajuste de curva não-linear que são importantes para aprendizado de máquina. Ao utilizar essa abordagem, podemos obter insights sobre o treinamento de redes neurais, o que pode nos ajudar a entender e analisar melhor dados em geral. Nossa série busca fornecer um recurso abrangente e acessível para qualquer pessoa interessada no campo da IA.

A very simple Neural Network (NN) with two input Neurons in the input layer and just one in the output layer. Also this NN has one hidden layer with five neurons.

1. Introdução

O reconhecimento de padrões é um aspecto essencial da aprendizagem de máquina e da inteligência artificial, permitindo a interpretação de grandes quantidades de dados para prever resultados e tomar decisões. Envolve a identificação de padrões em Big Data que seriam desafiadores ou impossíveis de detectar para os seres humanos. O processo de reconhecimento de padrões em IA é fundamental para diversas aplicações, como processamento de imagem, fala e linguagem natural, carros autônomos e muitos outros domínios.

Para reconhecer padrões de forma eficaz, os algoritmos de IA requerem a capacidade de aprender a partir de exemplos. Redes Neurais (RN) se tornaram uma escolha popular para o reconhecimento de padrões devido à sua capacidade de aprender e se adaptar a grandes quantidades de dados. Em RNs, cada camada da rede consiste em uma série de neurônios artificiais (perceptrons) interconectados.

Cada neurônio processa os dados de entrada aplicando um conjunto de conexões ponderadas e uma função de ativação não linear específica, que transforma os sinais de entrada em um sinal de saída. Você pode pensar nisso como uma função matemática composta por duas funções em sequência: uma linear (a soma ponderada) e uma não-linear (a função de ativação). O resultado é um número que passará para a próxima camada de neurônios.

O neurônio artificial, ou perceptron, é a unidade central das redes neurais. Para esta unidade neuronal em particular, foi escolhida uma função de ativação sigmoidal f(z). Este neurônio em particular possui N entradas.

As redes neurais (NN) provaram ser particularmente eficazes em tarefas complexas de reconhecimento de padrões, como o reconhecimento de objetos em imagens, o reconhecimento de fala e o processamento de linguagem natural. Além de aprender e melhorar com a experiência, as NNs podem lidar com dados ruidosos, incompletos ou ambíguos, e podem generalizar bem para novos dados não vistos, tornando-as adequadas para aplicações do mundo real.

Por outro lado, o ajuste de curvas é um método robusto para identificar padrões em dados, ajustando uma curva a um conjunto de pontos de dados. O processo começa inicializando o algoritmo com uma função matemática e alguns parâmetros, e, em seguida, ajustando esses parâmetros para obter o melhor ajuste aos dados de entrada. Uma vez alcançada uma função otimizada com os parâmetros ajustados, dentro de uma tolerância pré-definida, torna-se possível fazer previsões e identificar tendências nos dados.

Aqui, forneceremos uma introdução a uma das técnicas fundamentais de ajuste de curva não linear pelo método de ajuste de mínimos quadrados. Essa técnica envolve minimizar a soma dos resíduos quadráticos entre os pontos de dados observados e os valores previstos por uma função matemática. Essa técnica é comumente empregada em diversos campos, como engenharia, física, economia, biologia e, é claro, aprendizado de máquina.

Nos próximos artigos desta série, abordaremos tópicos mais avançados relacionados ao aprendizado de máquina, como Descida de Gradiente Estocástica e Retropropagação. Essas técnicas são essenciais para treinar redes neurais, pois envolvem encontrar os pesos e o viés adequados para todos os neurônios artificiais. Isso é a base de modelos de aprendizado profundo que transformaram o campo da inteligência artificial nos últimos anos.

Ao compreender essas técnicas, você terá uma compreensão mais profunda dos princípios subjacentes do aprendizado de máquina e poderá desenvolver modelos mais eficazes para resolver problemas complexos por conta própria.

2. Ajuste de curvas

O ajuste de curva não linear pode ser visto como um exemplo de reconhecimento de padrões, uma vez que envolve a identificação de padrões na forma de uma função matemática (Bishop, 2006), dado um conjunto de pontos de dados. O ajuste de curva é amplamente utilizado em muitas áreas, incluindo física, biologia, engenharia e finanças, sendo uma ferramenta essencial para análise e previsão de dados. Não só permite a identificação de padrões em dados, mas também pode servir como uma ferramenta pedagógica para aprender um dos aspectos fundamentais dos algoritmos de aprendizado de máquina, ou seja, como treinar uma rede neural para executar uma tarefa específica. Esse processo de treinamento envolve a minimização de uma função de custo, que pode ser escrita como a média das diferenças ao quadrado entre centenas de dados de treinamento de entrada de mini-lotes e sua saída esperada (rotulada).

A minimização da função de custo para redes neurais é conceitualmente semelhante à minimização dos erros de quadrados mínimos no ajuste de curvas tradicionais. No entanto, a diferença chave está no número de parâmetros envolvidos. Enquanto o ajuste de curvas convencional geralmente envolve a busca por alguns parâmetros ótimos, as redes neurais podem ter até 100 trilhões de parâmetros, como visto no caso do GPT-4.

Para isso, o método de Descida de Gradiente Estocástico é comumente empregado. Ao minimizar a função de custo média, ajustamos ativamente os pesos e o viés da rede neural, que pode ser visto como análogo a parâmetros de ajuste no ajuste de curvas. Esse processo de ajuste é conhecido como Retropropagação e foi desenvolvido independentemente por vários cientistas, incluindo Geoffrey Hinton, que é um pioneiro amplamente reconhecido no campo da IA e é comumente referido como o “padrinho da IA”.

O ajuste de curva tem uma ampla gama de aplicações em diversos campos, como:

  • Física: modelagem do comportamento de sistemas físicos e previsão de resultados de experimentos, como a trajetória de um projétil ou as oscilações de um pêndulo;
  • Epidemiologia: modelagem da propagação de doenças e previsão do curso futuro de surtos;
  • Economia: modelagem da relação entre variáveis, como preços, oferta e demanda e crescimento econômico;
  • Engenharia: projeto e otimização de sistemas e dispositivos, como máquinas e estruturas;
  • Medicina: modelagem da eficácia de tratamentos e previsão da progressão de doenças;
  • Geologia: modelagem do comportamento de sistemas geológicos e previsão de resultados de desastres naturais;
  • Ciência ambiental: modelagem do impacto da atividade humana no meio ambiente e previsão das consequências de mudanças ambientais.

Esses são apenas alguns exemplos das muitas aplicações do ajuste de curva em diferentes áreas.

3. Ajuste por Mínimos Quadrados

Existem muitas técnicas diferentes de ajuste de curvas, mas uma abordagem comum é o ajuste por Mínimos Quadrados. O ajuste por Mínimos Quadrados é uma técnica usada para identificar padrões em dados, ajustando uma curva a um conjunto de pontos de dados (Bishop, 2006). O objetivo é encontrar a curva que minimiza a soma dos quadrados das diferenças entre os pontos de dados e a curva. Isso é feito minimizando o termo de erro, que é a soma dos quadrados das diferenças entre os pontos de dados e a curva. Para encontrar a curva de melhor ajuste, os parâmetros da curva são ajustados iterativamente e o termo de erro é recalculado até que seja minimizado para uma tolerância especificada.

Para aprender o algoritmo, suponha que você tenha uma coleção de N pontos de dados rotulados por

yi e xi podem ser, por exemplo, o número de casos de COVID-19 e o número de dias após uma data específica que pode ser usado para ajustar a curva de crescimento da epidemia ao longo do tempo (veja abaixo).

Agora, suponha que você queira ajustar esses dados a uma curva de crescimento exponencial que corresponda à rápida disseminação do vírus no início da epidemia. Nós precisamos ter um modelo (função alvo), como o crescimento exponencial, como a função alvo. Por exemplo, a função de crescimento exponencial pode ser escrita como:

onde y representa o número de casos, x representa o tempo (em dias), e a, b e c são constantes a serem determinadas por meio do ajuste do modelo aos dados. Para fazer isso, é necessário minimizar a soma dos quadrados das diferenças entre os pontos de dados reais e os valores previstos da curva (neste caso, y(x)). A fórmula para a soma dos erros ao quadrado (S) é:

Onde yi é o valor real na entrada, y(xi) é o valor previsto e Σ representa a soma de todos os pontos de dados. O método dos mínimos quadrados calcula os coeficientes da curva ou linha que minimiza o valor de S até que uma certa tolerância seja alcançada.

Para minimizar a soma dos quadrados dos erros (S), é necessário calcular sua derivada parcial em relação aos coeficientes da função alvo.

Note que usamos a regra da cadeia para diferenciação. Então, acabamos com um sistema de equações que pode ser resolvido de várias maneiras, como usando o algoritmo Levenberg-Marquardt. Para uma regressão linear de Quadrados Mínimos com dois coeficientes e um pequeno conjunto de pontos, ela pode ser resolvida analiticamente e até mesmo uma calculadora científica pode lidar com isso. No entanto, para ajuste de curva não linear, as coisas podem se tornar um pouco mais complicadas e muitas vezes temos que confiar em métodos numéricos.

Para o ajuste de Mínimos Quadrados de funções não-lineares, existem diversas maneiras de realizar esse cálculo, e a maioria dos softwares de análise de dados estatísticos e matemáticos, como Microcal Origin, MATLAB e SciDAVis, têm essa rotina implementada. Embora não vamos entrar em detalhes sobre o algoritmo, aqui está um exemplo de código Python (gerado com uma simples solicitação no ChatGPT) que você pode modificar e melhorar para realizar um ajuste de mínimos quadrados linear para funções lineares e não lineares.

ChatGPT Prompt (Inglês) > write a simple python code that generates 10 random (y,x) data that are around a simple exponential and a least square fit of these data with a y=a*exp(b*x)+c target function. the output should be a graphic with the original datapoints and the best fit, with best parameters and uncertainties writen in texts boxs in the graph with the R^2 numeric value

ChatGPT Output (traduzido)> Aqui está um exemplo de código que gera 10 pontos de dados aleatórios em torno de uma função exponencial simples, realiza um ajuste de mínimos quadrados usando a função curve_fit da biblioteca scipy.optimize e produz um gráfico com os pontos de dados originais e o melhor ajuste, juntamente com os parâmetros do melhor ajuste, incertezas e valor R^2 exibidos em caixas de texto:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# Define the target function
def exp_func(x, a, b, c):
    return a * np.exp(b * x) + c

# Generate some random data around the target function
np.random.seed(0)
xdata = np.linspace(0, 1, 10)
ydata = exp_func(xdata, 1, 2, 0) + np.random.normal(scale=0.1, size=len(xdata))

# Perform the least-squares fit
popt, pcov = curve_fit(exp_func, xdata, ydata)

# Extract the best-fit parameters and uncertainties
a, b, c = popt
da, db, dc = np.sqrt(np.diag(pcov))

# Calculate the R^2 value
residuals = ydata - exp_func(xdata, *popt)
ss_res = np.sum(residuals**2)
ss_tot = np.sum((ydata - np.mean(ydata))**2)
r_squared = 1 - (ss_res / ss_tot)

# Generate the plot
fig, ax = plt.subplots()
ax.scatter(xdata, ydata, label='Data')
xfit = np.linspace(0, 1, 100)
yfit = exp_func(xfit, *popt)
ax.plot(xfit, yfit, label='Best fit')
ax.text(0.1, 0.8, f'a = {a:.3f} +/- {da:.3f}', transform=ax.transAxes)
ax.text(0.1, 0.75, f'b = {b:.3f} +/- {db:.3f}', transform=ax.transAxes)
ax.text(0.1, 0.7, f'c = {c:.3f} +/- {dc:.3f}', transform=ax.transAxes)
ax.text(0.1, 0.65, f'R^2 = {r_squared:.3f}', transform=ax.transAxes)
ax.legend()
plt.show()

Neste exemplo, a função alvo é definida usando a função exp_func, que leva a variável independente x e três parâmetros a, b e c. A função gera 10 pontos de dados aleatórios em torno da função alvo adicionando ruído Gaussiano aleatório aos valores da função. A função curve_fit é usada para realizar o ajuste de mínimos quadrados, e os parâmetros e incertezas de melhor ajuste são extraídos da matriz de covariância resultante. O valor R^2 também é calculado usando a soma dos resíduos ao quadrado e a soma total dos quadrados. Por fim, o gráfico é gerado usando o matplotlib, com os pontos de dados originais, o melhor ajuste e as caixas de texto exibindo os parâmetros de melhor ajuste, incertezas e valor R^2.

A saída, após a execução no Jupyter Lite, é mostrada abaixo:

Para os propósitos deste artigo, é suficiente entender os princípios discutidos acima, uma vez que essa abordagem é semelhante à Descida do Gradiente usada para treinar a maioria das redes neurais. Como veremos em um artigo futuro, a Descida do Gradiente é um algoritmo de otimização comumente usado para minimizar a função de custo de uma rede neural durante o treinamento.

Na ajuste de mínimos quadrados, a função de custo é a soma dos erros ao quadrado entre os valores previstos e os valores reais nos dados de treinamento. Na Descida do Gradiente, a função de custo é a diferença média entre as saídas previstas e as saídas reais da rede neural nos dados de treinamento.

Embora os algoritmos tenham algumas semelhanças, também há diferenças. Por exemplo, o ajuste de mínimos quadrados envolve resolver um sistema de equações para obter os parâmetros ótimos, enquanto a Descida do Gradiente é um algoritmo de otimização iterativo que ajusta os pesos de uma rede neural para minimizar uma função de custo, normalmente usando Backpropagation para calcular os gradientes da função de custo em relação aos pesos da rede. Além disso, o ajuste de mínimos quadrados é tipicamente usado para ajuste de curvas, enquanto a Descida do Gradiente é usada em uma ampla gama de tarefas de aprendizado de máquina além do ajuste de curvas.

4. Exemplo de Aplicação do Ajuste de Mínimos Quadrados: Previsão da Evolução dos Casos de COVID-19

Um exemplo mais realista de como o ajuste de mínimos quadrados funciona e como você pode obter previsões a partir dele é considerar um cenário em que desejamos prever a evolução da COVID-19 na China usando dados oficiais de contagem de casos de 30 de outubro de 2022 a 7 de dezembro de 2022 (Worldometers, 2022).

O conjunto de dados representa o número de casos confirmados de COVID-19 relatados na China entre 30 de outubro de 2022 e 7 de dezembro de 2022. Para modelar a propagação da doença, consideramos uma curva de crescimento exponencial e usamos o ajuste de mínimos quadrados para encontrar os valores dos parâmetros da função exponencial que minimizam o termo de erro entre os pontos de dados e a curva.

Por meio do ajuste iterativo desses parâmetros e recálculo do termo de erro até que ele atinja uma tolerância especificada, podemos obter os valores dos parâmetros que melhor se ajustam aos dados e fazer previsões precisas sobre a propagação da COVID-19 na China.

O ajuste de curva resultante, obtido usando o software gratuito Scidavis, juntamente com os pontos de dados originais, podem ser visualizados em um gráfico para avaliar o ajuste e a precisão das previsões. Por meio do ajuste de curva, podemos modelar efetivamente a propagação de doenças como a COVID-19 e prever seu curso futuro. Neste exemplo, estimamos que o número de casos excederia 8000 após dois meses sem qualquer intervenção para controlar a propagação da doença. Com mais pontos de dados em uma série temporal mais longa, a previsão poderia ser mais precisa. No entanto, em 6 de janeiro de 2023, apenas um mês após o último ponto de dados, o número total de casos diários atingiu 7000, indicando um crescimento mais rápido do que o previsto.

COVID-19 Evolution in Official Case Count in China from October 30, 2022 to December 7, 2022. Data from (Worldometers, 2022). This graph was built using SciDAVis – Free Scientific Data Analysis and Visualization Software from https://scidavis.org/ .

É importante observar que o exemplo apresentado é apenas uma maneira de usar o ajuste de curvas na modelagem de epidemias. Modelos e abordagens diferentes podem ser mais apropriados dependendo da situação. Por exemplo, algumas doenças podem não seguir um padrão de crescimento exponencial, nesse caso, métodos ou modelos diferentes de ajuste de curvas seriam mais adequados. Além disso, é essencial considerar as limitações e possíveis viéses dos dados utilizados. Neste caso, os dados oficiais de contagem de casos para a China podem subestimar a verdadeira extensão do surto. Apesar dessas limitações, o ajuste de curvas pode ser uma ferramenta poderosa para compreender e prever a propagação de doenças. Ele pode fornecer informações valiosas para informar decisões e intervenções em saúde pública.

No contexto de reconhecimento de padrões e aprendizado de máquina, o exemplo de uso do ajuste de curvas para modelar a propagação da COVID-19 na China pode ser descrito da seguinte maneira:

  • Conjunto de dados: O conjunto de dados de treinamento usado neste exemplo inclui o número oficial de casos de COVID-19 relatados na China entre 30 de outubro de 2022 e 7 de dezembro de 2022 (fonte: Worldometers, 2022). Este conjunto de dados é a entrada usada para treinar o algoritmo de aprendizado de máquina.
  • Modelo de treinamento: O objetivo do modelo de treinamento é modelar a propagação da doença usando uma curva de crescimento exponencial. Abordagem de ajuste de mínimos quadrados é aplicada para ajustar a curva aos pontos de dados.
  • Método: O método usado para o modelo de treinamento envolve a minimização da soma do erro de mínimos quadrados. Isso é feito encontrando os valores dos parâmetros na curva de crescimento exponencial que minimizam a diferença entre os valores previstos e os valores reais no conjunto de dados.
  • Resultado: A saída do algoritmo de aprendizado de máquina é a curva de melhor ajuste, que é a função alvo com parâmetros otimizados que descrevem a tendência subjacente nos dados. A curva representa a evolução prevista da COVID-19 na China com base nos dados de entrada. A curva resultante, juntamente com os pontos de dados, pode ser visualizada em um gráfico para avaliar o ajuste e a precisão das previsões. Em geral, esta abordagem pode fornecer informações valiosas para prever e entender a propagação de doenças, o que é crucial para tomar decisões e intervenções informadas em saúde pública.

5. Conclusão

Ajuste de curva é uma ferramenta poderosa em machine learning que permite a identificação de padrões em dados e a criação de modelos preditivos. Ao ajustar curvas aos pontos de dados, podemos obter insights sobre relacionamentos subjacentes e tomar decisões informadas. Dominar as técnicas de ajuste de curva é essencial para qualquer pessoa que trabalhe em aprendizado de máquina, pois envolve a identificação de uma função matemática que descreve tendências nos dados e faz previsões com base nisso. Esse processo é semelhante aos princípios usados para treinar uma rede neural para o reconhecimento de padrões.

Em nosso próximo artigo desta série, mostraremos como uma rede neural simples com uma camada de entrada, uma camada oculta e uma camada de saída pode aproximar de qualquer conjunto de pontos por uma função suave sem a necessidade de uma função de destino. Em essência, é um tipo de ajuste de curva onde você não conhece a função de destino antecipadamente, e a rede neural a descobre para você.


Aqui estão algumas sugestões para leituras adicionais sobre os temas de ajuste de curvas, reconhecimento de padrões e aprendizado de máquina:

  1. Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). Deep Learning. Cambridge, Massachusetts: MIT Press.
  2. Pattern Recognition and Machine Learning, Bishop (2006).
  3. Artificial Intelligence: A Modern Approach, Novig and Russell (2020).

#IA #ReconhecimentoDePadrões #AprendizadoDeMáquina #InteligênciaArtificial #AnáliseDeDados #AjusteDeCurva #MínimosQuadrados #ModelagemMatemática #Epidemiologia #COVID19 #PrevisãoDeDados #DescidaDeGradiente #VisualizaçãoDeDados #ModelagemPreditiva #PadrõesMatemáticos



Copyright 2024 AI-Talks.org


Copyright 2024 AI-Talks.org


Copyright 2024 AI-Talks.org