Como determinar a confiança de uma previsão de rede neural?

22

Para ilustrar minha pergunta, suponha que eu tenha um conjunto de treinamento em que a entrada tenha um grau de ruído, mas a saída não, por exemplo;

# Training data
[1.02, 1.95, 2.01, 3.06] : [1.0]
[2.03, 4.11, 5.92, 8.00] : [2.0]
[10.01, 11.02, 11.96, 12.04] : [1.0]
[2.99, 6.06, 9.01, 12.10] : [3.0]

aqui a saída é o gradiente da matriz de entrada, se não tiver ruído (não o gradiente real).

Depois de treinar a rede, a saída deve se parecer com isso para uma determinada entrada.

# Expected Output
[1.01, 1.96, 2.00, 3.06] : 95% confidence interval of [0.97, 1.03]
[2.03, 4.11, 3.89, 3.51] : 95% confidence interval of [2.30, 4.12]

Minha pergunta é como uma rede neural pode ser criada de modo a retornar um valor previsto e uma medida de confiança, como uma variação ou intervalo de confiança?

John
fonte
3
Se você estiver procurando por um intervalo que contenha uma realização futura , estará procurando um intervalo de previsão , não um intervalo de confiança , que pertence a parâmetros não observáveis . Isso geralmente é confuso.
S. Kolassa - Restabelece Monica

Respostas:

20

Parece que você está procurando um , ou seja, um intervalo que contém uma porcentagem pré-especificada de realizações futuras. (Olhe para o tag wikis para e para a diferença.)

É provável que sua melhor aposta funcione diretamente com arquiteturas NN que não produzem previsões de ponto único, mas distribuições preditivas inteiras . Você pode então extrair diretamente os intervalos de previsão desejados (ou previsões de ponto médio ou mediano) dessas distribuições. Eu e outros temos argumentado que as distribuições preditivas são muito mais úteis do que as previsões pontuais , mas, para ser sincero, ainda não vi muito trabalho sobre distribuições preditivas com redes neurais, embora eu esteja mantendo meus olhos abertos. Este artigo soa como ele pode ser útil. Você pode pesquisar um pouco, talvez também usando outras palavras-chave como "distribuições de previsão" ou "densidades preditivas" e outras.

Dito isto, você pode querer examinar o algoritmo NeuroBayes de Michael Feindt , que usa uma abordagem bayesiana para prever densidades preditivas.

S. Kolassa - Restabelecer Monica
fonte
1
Este pode ser outro papel útil - uma rede neural que aprende distribuições: google.com/...
Pro Q
@Stephan: O link passou: (
Matthew Drury
@ MatthewDrury: qual link você quer dizer? Todos os três estão funcionando bem para mim.
S. Kolassa - Restabelece Monica
Você pode nos levar a uma demonstração / exemplo simples do Ternsorflow com a NN Predictive Distributions?
Martin Thøgersen 25/06
@ MartinThøgersen: desculpe, não, eu não uso o Tensorflow ...
S. Kolassa - Restabelece Monica
5

Não tenho certeza se você pode calcular um intervalo de confiança para uma única previsão, mas é possível calcular um intervalo de confiança para a taxa de erro de todo o conjunto de dados (você pode generalizar a precisão e qualquer outra medida que esteja avaliando).

Se for sua taxa de erro ao classificar alguns dados S de tamanho n , um intervalo de confiança de 95% para sua taxa de erro será dado por: e ± 1,96 eSn .

e±1,96e(1-e)n

(consulte o livro "Machine Learning" de Tom Mitchell, capítulo 5.)

EDITAR

Acho que devo declarar um caso mais geral, que é: onde as opções comuns parazNestão listadas na tabela a seguir:

e±zNe(1-e)n,
zN
confidence level    80%    90%    95%    98%    99%
values of zN       1.28   1.64   1.96   2.33   2.58
mp85
fonte
1
Isso exigiria que a distribuição assintótica é normal
user2879934
4
Para amostras grandes (o que é bastante comum no ML), geralmente é seguro assumir isso. Não havia necessidade de voto negativo, basta pedir esclarecimentos, mas tudo bem.
MP85
4

Intervalos de previsão (PI) em regressão não paramétrica e problemas de classificação, como redes neurais, SVMs, florestas aleatórias, etc., são difíceis de construir. Eu adoraria ouvir outras opiniões sobre isso.

No entanto, tanto quanto eu sei, a previsão conforme (CP) é o único método baseado em princípios para a construção de PI calibrado para previsão em problemas de regressão e classificação não paramétricos. Para um tutorial sobre CP, consulte Shfer & Vovk (2008), J. Machine Learning Research 9 , 371-421 [pdf]

utobi
fonte
3

Não conheço nenhum método para fazer isso de maneira exata.

μσ(xEu,yEu)-registroN(yEu-μ(xEu),σ(xEu))μ(xEu)yEuσ(xEu)

yEu-μ(xEu)σ(xEu)N(0 0,1)

etal
fonte
1
σ+
Existem exemplos concretos que alguém já viu do uso de um NN para gerar parâmetros de uma distribuição treinados sobre a probabilidade de log?
Miss Palmer
3

Não ouvi nenhum método que dê um intervalo de confiança para uma previsão de rede neural. Apesar da falta de metodologia formal, parece possível criar uma. Eu nunca tentei isso devido ao poder de computação que seria necessário e não afirmo que isso funcione com certeza, mas um método que pode funcionar para uma pequena rede neural (ou com uma potência GPU extremamente rápida, pode funcionar para redes de tamanho moderado ) seria redefinir a amostra do conjunto de treinamento e criar muitas redes semelhantes (digamos 10.000 vezes) com os mesmos parâmetros e configurações iniciais e criar intervalos de confiança com base nas previsões para cada uma das suas redes de inicialização.

Por exemplo, nas 10.000 redes treinadas conforme discutido acima, é possível obter 2,0 (depois de arredondar as previsões de regressão da rede neural) 9.000 dessas vezes, portanto, você poderia prever 2,0 com um IC de 90%. Em seguida, você pode criar uma matriz de ICs para cada previsão feita e escolher o modo de relatório como o IC primário.

Tony S
fonte
2
Eu ficaria curioso para saber por que essa sugestão foi rejeitada, uma vez que é essencialmente um processo de inicialização pouco convencional (o componente de arredondamento do problema facilita verificar a confiança da rede neural na previsão). Na verdade, eu não me importo com o voto negativo, se quem votou abaixo poderia explicar por que essa não é uma solução válida para a pergunta proposta. Estou aprendendo sozinho e gostaria de receber feedback!
Tony S
1
Não votei negativamente, mas pelo que entendi o método proposto produziria intervalos que capturam os valores previstos do modelo, isso não é o mesmo que intervalos que capturam os valores verdadeiros.
Miss Palmer
3

Em termos de saída direta de intervalos de previsão, há um artigo de 2011 ' Revisão abrangente dos intervalos de previsão baseados em redes neurais '

Eles comparam quatro abordagens:

1: Método Delta 2: Método Bayesiano 3: Estimativa da variância média 4: Bootstrap

Os mesmos autores desenvolveram o Método de Estimação de Limite Superior Inferior para Construção de Intervalos de Previsão Baseados em Redes Neurais, que produz diretamente um limite inferior e superior do NN. Infelizmente, ele não funciona com backprop, mas trabalhos recentes tornaram isso possível, Intervalos de Previsão de Alta Qualidade para Aprendizado Profundo .

Alternativa à saída direta de intervalos de previsão, as redes neurais bayesianas (BNNs) modelam incerteza nos parâmetros de uma NN e, portanto, capturam incerteza na saída. Isso é difícil de fazer, mas os métodos populares incluem a execução do abandono do MC no momento da previsão ou a montagem .

Miss Palmer
fonte
1
Na verdade, é muito fácil fazê-lo com o Bayesian Deep Learning. Veja, por exemplo, edwardlib.org/tutorials/bayesian-neural-network
DeltaIV
2

Na verdade, existem maneiras de fazer isso usando o dropout. Execute a avaliação com o abandono ativado (geralmente está desativado para avaliação, mas ativado durante o treinamento) e execute a avaliação várias vezes.

A distribuição de resultados de várias execuções diferentes pode ser usada como intervalos de confiança.

Veja o artigo "O abandono escolar como uma aproximação bayesiana: representando a incerteza do modelo no aprendizado profundo " Assista à apresentação do youtube Andrew Rowan - Aprendizado profundo Bayesiano com Edward (e um truque usando o Dropout)

user1141008
fonte
1

Não há como, nem todos os modelos de ML tratam de compreensão de fenômenos, são métodos de interpolação com esperança "de que funcione". Comece com essas perguntas confiança, robustez ao ruído, não há respostas.

Então, para derivar algo, use várias ciências fundamentais e aplicadas:

  • Use o controle (e faça suposições sobre dinâmica)

  • Use otimização convexa (com alguma condição extra na função)

  • Use estatísticas matemáticas (com premissas preliminares sobre distribuições)

  • Usar processamento de sinal (com algumas suposições de que o sinal é limitado à banda)

Os cientistas usam algumas suposições preliminares (chamadas axiomas) para derivar alguma coisa.

Não há como dar confiança sem alguma suposição preliminar; portanto, o problema não está no método DL, mas é um problema em qualquer método que tente interpolar sem QUALQUER suposição preliminar - não há como derivar através da álgebra algo de forma inteligente, sem suposição.

NN e vários métodos de ML são para prototipagem rápida para criar "algo" que parece funcionar "de alguma maneira" verificado com validação cruzada.

Ainda mais profundo, o ajuste de regressão E [Y | X] ou sua estimativa podem ser um problema absolutamente incorreto a ser resolvido (talvez o pdf no ponto Y = E [Y | X] tenha o mínimo, não o máximo), e existem muitos itens sutis. coisas.

Permitam-me também lembrar dois problemas insolúveis em AI / ML, que podem ser esquecidos por alguns motivos, por trás de slogans de beleza:

(1) São métodos de interpolação, não extrapolação - não tem capacidade de lidar com novos problemas

(2) ninguém sabe como um modelo se comportará em dados que não são da mesma distribuição (homem fantasiado de banana para localização de pedestres)

bruziuz
fonte
que tal modelar o erro do conjunto de dados de treinamento para "prever" o erro de inferência?
Jacko
Mesmo suponha que é aditivo "predict_for_mean" + "predict_for_error". Você pode imaginar qualquer esquema para prever sinal e erro separadamente. Mas mais uma vez - se "apenas interpolamos", não podemos dizer algo com confiança. Prevemos a temperatura na superfície. Sim, você pode dizer isso minha previsão "20" e a previsão de erro é "5". Então diz que eu acho que a resposta real está em [20-5, 20 + 5], mas para realmente entender o que isso significa, precisamos entender o fenômeno real e o modelo matemático. E ML não é sobre os dois. Outras áreas fazem algumas suposições preliminares.
Bruniuz