Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas

A estimativa adequada da incerteza preditiva é fundamental em aplicações que envolvem decisões críticas. A incerteza pode ser usada para avaliar a confiabilidade das previsões do modelo, desencadear a intervenção humana ou decidir se um modelo pode ser implantado com segurança na natureza.

Nós apresentamos Sorte, uma biblioteca de código aberto para quantificação de incertezas. O Fortuna fornece métodos de calibração, como previsão conforme, que podem ser aplicados a qualquer rede neural treinada para obter estimativas de incerteza calibradas. A biblioteca suporta ainda vários métodos de inferência bayesiana que podem ser aplicados a redes neurais profundas escritas em Linho. A biblioteca facilita a execução de benchmarks e permitirá que os profissionais criem soluções de IA robustas e confiáveis, aproveitando técnicas avançadas de quantificação de incertezas.

O problema do excesso de confiança no aprendizado profundo

Se você já observou as probabilidades de classe retornadas por um classificador de rede neural profunda treinado, deve ter observado que a probabilidade de uma classe era muito maior do que as outras. Algo assim, por exemplo:

p = [0.0001, 0.0002, …, 0.9991, 0.0003, …, 0.0001]

Se este for o caso para a maioria das previsões, seu modelo pode estar confiante demais. Para avaliar a validade das probabilidades retornadas pelo classificador, podemos compará-las com a precisão real alcançada em um conjunto de dados de validação. De fato, é natural supor que a proporção de pontos de dados classificados corretamente deva corresponder aproximadamente à probabilidade estimada da classe predita. Este conceito é conhecido como calibragem [Guo C. e outros, 2017].

Infelizmente, muitas redes neurais profundas treinadas são mal calibradas, o que significa que a probabilidade estimada da classe prevista é muito maior do que a proporção de pontos de dados de entrada classificados corretamente. Em outras palavras, o classificador é excessivamente confiante.

Ter excesso de confiança pode ser problemático na prática. Um médico pode não solicitar exames adicionais relevantes, como resultado de um diagnóstico saudável com excesso de confiança produzido por uma IA. Um carro autônomo pode decidir não frear porque avaliou com confiança que o objeto à frente não era uma pessoa. Um governador pode decidir evacuar uma cidade porque a probabilidade de um desastre natural iminente estimado por uma IA é muito alta. Nessas e em muitas outras aplicações, as estimativas de incerteza calibradas são críticas para avaliar a confiabilidade das previsões do modelo, recorrer a um tomador de decisão humano ou decidir se um modelo pode ser implantado com segurança.

Fortuna: Uma biblioteca para quantificação de incertezas

Existem muitas técnicas publicadas para estimar ou calibrar a incerteza das previsões, por exemplo, inferência bayesiana [Wilson AG, 2020] See More, escalonamento de temperatura [Guo C. e outros, 2017], e previsão conforme [Angelopoulos AN et al., 2022] métodos. No entanto, as ferramentas e bibliotecas existentes para quantificação de incertezas têm um escopo restrito e não oferecem uma variedade de técnicas em um único local. Isso resulta em uma sobrecarga significativa, dificultando a adoção da incerteza nos sistemas de produção.

Para preencher essa lacuna, lançamos o Fortuna, uma biblioteca para quantificação de incertezas que reúne métodos de destaque na literatura e os disponibiliza aos usuários com uma interface padronizada e intuitiva.

Por exemplo, suponha que você tenha carregadores de dados de treinamento, calibração e teste em tensorflow.Tensor formato, ou seja train_data_loader, calib_data_loader e test_data_loader. Além disso, você tem um modelo de aprendizado profundo escrito em Linho, ou seja, modelo. Então você pode usar o Fortuna para:

  1. ajustar uma distribuição posterior;
  2. calibrar as saídas do modelo;
  3. fazer previsões calibradas;
  4. estimar estimativas de incerteza;
  5. calcular métricas de avaliação.

O código a seguir faz tudo isso para você.

from fortuna.data import DataLoader
from fortuna.prob_model.classification import ProbClassifier
from fortuna.metric.classification import expected_calibration_error

# convert data loaders
train_data_loader = DataLoader.from_tensorflow_data_loader(train_data_loader)
calib_data_loader = DataLoader.from_tensorflow_data_loader(calib_data_loader)
test_data_loader = DataLoader.from_tensorflow_data_loader(test_data_loader)

# define and train a probabilistic model
prob_model = ProbClassifier(model=model)
train_status = prob_model.train(train_data_loader=train_data_loader, calib_data_loader=calib_data_loader)

# make predictions and estimate uncertainty
test_inputs_loader = test_data_loader.to_inputs_loader()
test_means = prob_model.predictive.mean(inputs_loader=test_inputs_loader)
test_modes = prob_model.predictive.mode(inputs_loader=test_inputs_loader, means=test_means)

# compute the expected calibration error and plot a reliability diagram
test_targets = test_data_loader.to_array_targets()
ece = expected_calibration_error(preds=test_modes, probs=test_means, targets=test_targets)

O código acima faz uso de várias opções padrão, incluindo SWAG [Maddox WJ e outros, 2019] como um método de inferência posterior, escalonamento de temperatura [Guo C. e outros, 2017] para calibrar as saídas do modelo e uma distribuição a priori gaussiana padrão, bem como a configuração dos processos de ajuste e calibração posteriores. Você pode configurar facilmente todos esses componentes e é altamente recomendável fazê-lo se estiver procurando por uma configuração específica ou se quiser comparar várias.

Modos de uso

Fortuna oferece três modos de uso: 1/ A partir de modelos de linho, 2 / Começando pelas saídas do modelo, e 3/ A partir de estimativas de incerteza. Seus dutos são representados na figura a seguir, cada um começando em um dos painéis verdes. O trecho de código acima é um exemplo de uso do Fortuna a partir de modelos Flax, que permite treinar um modelo usando procedimentos de inferência bayesiana. Como alternativa, você pode começar pelas saídas do modelo ou diretamente de suas próprias estimativas de incerteza. Ambos estes últimos modos são estrutura independente e ajudá-lo a obter estimativas de incerteza calibradas a partir de um modelo treinado.

1/ Partindo de estimativas de incerteza

Partir de estimativas de incerteza tem requisitos mínimos de compatibilidade e é o nível mais rápido de interação com a biblioteca. Este modo de uso oferece métodos de previsão conformes para classificação e regressão. Estes levam estimativas de incerteza em numpy.ndarray formatar e retornar conjuntos rigorosos de previsões que retêm um nível de probabilidade fornecido pelo usuário. Em tarefas de regressão unidimensional, conjuntos conformes podem ser considerados como versões calibradas de confiança ou intervalos de credibilidade.

Lembre-se de que, se as estimativas de incerteza fornecidas nas entradas forem imprecisas, os conjuntos conformes podem ser grandes e inutilizáveis. Por este motivo, se a sua aplicação o permitir, considere as Começando pelas saídas do modelo e A partir de modelos de linho modos de uso detalhados abaixo.

2/ A partir das saídas do modelo

Este modo assume que você já treinou um modelo em algum framework e chega ao Fortuna com as saídas do modelo em numpy.ndarray formato para cada ponto de dados de entrada. Esse modo de uso permite calibrar as saídas do modelo, estimar a incerteza, calcular métricas e obter conjuntos conformes.

Comparado com o A partir de estimativas de incerteza modo de uso, Começando pelas saídas do modelo fornece melhor controle, pois pode garantir que as estimativas de incerteza tenham sido adequadamente calibradas. No entanto, se o modelo foi treinado com métodos clássicos, a quantificação resultante da incerteza do modelo (também conhecida como incerteza epistêmica) pode ser ruim. Para mitigar esse problema, considere o A partir de modelos de linho modo de uso.

3/ Partindo dos modelos Linho

A partir de modelos Flax tem requisitos de compatibilidade mais elevados do que os A partir de estimativas de incerteza e Começando pelas saídas do modelo modos de uso, pois requer modelos de aprendizado profundo escritos em Linho. No entanto, ele permite que você substitua o treinamento de modelo padrão por procedimentos de inferência bayesiana escaláveis, o que pode melhorar significativamente a quantificação da incerteza preditiva.

Os métodos Bayesianos funcionam representando a incerteza sobre qual solução é correta, dada a informação limitada, por meio da incerteza sobre os parâmetros do modelo. Esse tipo de incerteza é chamado de incerteza “epistêmica”. Como as redes neurais podem representar muitas soluções diferentes, correspondendo a diferentes configurações de seus parâmetros, os métodos bayesianos podem ser especialmente impactantes no aprendizado profundo. Nós fornecemos muitos procedimentos de inferência Bayesiana escaláveis, que muitas vezes podem ser usados ​​para fornecer estimativas de incerteza, bem como precisão e calibração aprimoradas, essencialmente sem sobrecarga de tempo de treinamento.

Conclusão

Anunciamos a disponibilidade geral do Fortuna, uma biblioteca para quantificação de incerteza em aprendizado profundo. O Fortuna reúne métodos proeminentes na literatura, por exemplo, métodos conformes, escalonamento de temperatura e inferência bayesiana, e os disponibiliza aos usuários com uma interface padronizada e intuitiva. Para começar a usar o Fortuna, você pode consultar os seguintes recursos:

Experimente o Fortuna e conte-nos o que você achou! Você é incentivado a contribuir com a biblioteca ou deixar suas sugestões e contribuições - basta criar um emitem ou abra um solicitação de recebimento. De nossa parte, continuaremos melhorando o Fortuna, aumentando sua cobertura de métodos de quantificação de incertezas e adicionando mais exemplos que mostram sua utilidade em diversos cenários.


Sobre os autores

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

 

Gianluca Detommaso é cientista aplicado na AWS. Atualmente, ele trabalha com quantificação de incertezas em aprendizado profundo. Nas horas vagas, Gianluca gosta de praticar esportes, comer bem e aprender novas habilidades.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Alberto Gasparin é um cientista aplicado no Amazon Community Shopping desde julho de 2021. Seus interesses incluem processamento de linguagem natural, recuperação de informações e quantificação de incertezas. Ele é um entusiasta de comida e vinho.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Michele Donini é um cientista aplicado sênior na AWS. Ele lidera uma equipe de cientistas que trabalham em IA responsável e seus interesses de pesquisa são Justiça Algorítmica e Aprendizado de Máquina Explicável.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Matias Seeger é Cientista Aplicado Principal da AWS.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.Cédrico Archambeau é Cientista Aplicado Principal da AWS e Fellow do European Lab for Learning and Intelligent Systems.

Apresentando Fortuna: uma biblioteca para quantificação de incertezas PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.André Gordon Wilson é Professor Associado no Courant Institute of Mathematical Sciences e Center for Data Science na New York University, e Amazon Visiting Academic na AWS. Ele está particularmente envolvido na construção de métodos para aprendizado profundo bayesiano e probabilístico, processos gaussianos escaláveis, otimização bayesiana e aprendizado de máquina inspirado na física.

Carimbo de hora:

Mais de Aprendizado de máquina da AWS