Por que o ajuste excessivo é ruim?


27

Eu estudei esses lotes, e eles dizem que ajustar demais as ações no aprendizado de máquina é ruim, mas nossos neurônios se tornam muito fortes e encontram as melhores ações / sentidos pelos quais passamos ou evitamos, além de poderem ser des incrementados / incrementados de maus / good por gatilhos ruins ou bons, o que significa que as ações serão niveladas e terminarão com as melhores e mais seguras ações (certas) e super fortes. Como isso falha? Ele usa gatilhos de sentido positivo e negativo para desestimular / re-incrementar as ações ditas nos 44pos. para 22neg.


4
Essa questão é muito mais ampla do que apenas para aprendizado de máquina, redes neurais, etc. Ela se aplica a exemplos tão simples quanto ajustar um polinômio.
gerrit


7
@ FriendlyPerson44 Depois de reler sua pergunta, acho que há uma grande desconexão entre seu título e sua pergunta real. Você parece estar perguntando sobre as falhas em sua AI ( que só se explica vagamente ) - enquanto as pessoas estão respondendo " Por que é overfitting ruim? "
DoubleDouble

3
@DoubleDouble Concordo. Além disso, a conexão entre o aprendizado de máquina e os neurônios é duvidosa. O aprendizado de máquina não tem nada a ver com "agir como um cérebro", simular neurônios ou simular inteligência. Parece que há muitas respostas diferentes que podem ajudar o OP neste momento.
Shaz 07/01

2
Você deve aprimorar sua pergunta e o título. Talvez para: "Por que temos que proteger um cérebro virtual contra o ajuste excessivo, enquanto o cérebro humano funciona muito bem sem quaisquer contramedidas contra o ajuste excessivo?"
Falco

Respostas:


44

A melhor explicação que ouvi é esta:

Ao fazer o aprendizado de máquina, você supõe que está tentando aprender com dados que seguem uma distribuição probabilística.

Isso significa que em qualquer conjunto de dados, devido à aleatoriedade, haverá algum ruído : os dados variarão aleatoriamente.

Quando você se exercita demais, acaba aprendendo com o ruído e incluindo-o no seu modelo.

Então, quando chega a hora de fazer previsões de outros dados, sua precisão diminui: o ruído entra no seu modelo, mas é específico dos dados de treinamento, prejudicando a precisão do seu modelo. Seu modelo não generaliza: é muito específico para o conjunto de dados que você escolheu para treinar.


11
"Aprender com o barulho" me parece vago. O que exatamente acontece? Você pode dar um exemplo?
Raphael

mesmo que seus dados estejam muito limpos e fora dos valores discrepantes (discrepantes naturais e não naturais), ainda assim, a "super adaptação" é uma prática ruim e deve ser eliminada do seu modelo. quando seu modelo é "super ajustado", isso significa que ele não generalizou o conhecimento oculto nos dados e não pode prever outros pontos de dados. Simplesmente, quando você adapta demais o seu modelo, ele o encaixa apenas no conjunto de dados de trem / teste.
Aboelnour

2
@Raphael O sistema começa a ver o ruído no conjunto de treinamento como recursos. Se você executar a rede com dados reais onde esse ruído específico está ausente, você terá uma probabilidade menor porque há recursos (= o ruído que foi incluído) faltando.
precisa saber é o seguinte

2
@Raphael Que tal, por exemplo: eu tenho uma coleção de imagens de uma câmera de trânsito. Vamos treinar uma rede que detecta se há carros presentes ou não. Depois de algum treinamento que tenho, dá um set com carros e sem carros, ótimo! Vamos aplicar a rede em um novo conjunto para detectar se uma rua está vazia sem pessoas e não, por que ela não detecta minha rua vazia com alta probabilidade? Olhando para trás no conjunto de amostras, percebo que em todas as fotos havia pessoas no fundo das imagens quando não havia carros. Devido à overfitting a rede que colocou ênfase sobre o povo estar presente
drake7707

11
Considere um sistema que tenha ruído adicionado por um lançamento de moeda. Na cabeça, você adiciona 1 ao valor e na cauda adiciona 0. Para tornar os resultados óbvios, escolheremos um conjunto de dados absurdamente pequeno de dois pontos: (2, 5) e (2.1, 8). O flip da moeda aterra o cabeçote para o primeiro ponto, coroa para o segundo, introduzindo ruído, criando o conjunto de dados (3, 5), (2.1, 8). Agora, a rede neural está aprendendo com um conjunto de dados que parece haver uma correlação significativa entre os valores x e y, mesmo que quase tudo fosse ruído. Se você enviar essa rede com dados reais, isso gerará muitos resultados errados
Cort Ammon - Restabelece Monica

39

Versão ELI5

Isto é basicamente como eu expliquei isso aos meus 6 anos de idade.

Uma vez havia uma garota chamada Mel ( "Entendeu? ML?" "Pai, você é coxo" ). E todo dia Mel tocava com uma amiga diferente, e todo dia ela tocava era um dia ensolarado e maravilhoso.

Mel tocou com Jordan na segunda-feira, Lily na terça-feira, Mimi na quarta-feira, Olive na quinta-feira ... e depois na sexta-feira Mel tocou com Brianna e choveu. Foi uma tempestade terrível!

Mais dias, mais amigos! Mel tocou com Kwan no sábado, Grayson no domingo, Asa na segunda-feira ... e depois na terça-feira Mel tocou com Brooke e choveu novamente, ainda pior do que antes!

Agora, a mãe de Mel fez todos os encontros, de modo que naquela noite, durante o jantar, ela começou a contar a Mel tudo sobre os novos encontros que ela fez. "Luis na quarta, Ryan na quinta, Jemini na sexta, Bianca no sábado -"

Mel franziu a testa.

A mãe de Mel perguntou: "Qual é o problema, Mel, você não gosta de Bianca?"

Mel respondeu: "Ah, claro, ela é ótima, mas toda vez que brinco com um amigo cujo nome começa com B, chove!"


O que há de errado com a resposta de Mel?

Bem, pode não chover no sábado.

Bem, eu não sei, quero dizer, Brianna veio e choveu, Brooke veio e choveu ...

Sim, eu sei, mas a chuva não depende de seus amigos.


10
E para essa outra pergunta, é isso que "aprender com o barulho" significa.
Kyle Hale

Para o comentário da chuva - Mas nós fazemos isso, então continuamos trabalhando dessa maneira e aprendemos mais tarde.
amigável Pessoa 44

13
@ FriendlyPerson44 Você está certo, as pessoas cometem erros e fazem coisas ruins, como super ajuste. Sua pergunta foi feita por que o ajuste excessivo é ruim, não se as pessoas o fazem ou não.
Kyle Hale

11
Esse problema não se aplica apenas aos robôs que aprendem mal, mas também às pessoas que aprendem mal.
Tomáš Zato - Restabelece Monica

Não entendo direito: a chuva não deve ser uma variável preditora em primeiro lugar, o que isso tem a ver com o ajuste excessivo?
Mucaho 9/01/16

14

A adaptação excessiva implica que o aluno não generalize bem. Por exemplo, considere um cenário de aprendizado supervisionado padrão no qual você tenta dividir pontos em duas classes. Suponha que você receba pontos de treinamento. Você pode ajustar um polinômio de grau N que produz 1 nos pontos de treinamento da primeira classe e -1 nos pontos de treinamento da segunda classe. Mas esse polinômio provavelmente seria inútil na classificação de novos pontos. Este é um exemplo de ajuste excessivo e por que é ruim.NN


Mas suas ações superequipadas estão ligadas a sentidos específicos, e somente quando vê os mesmos sentidos novamente, ele combina a memória e os links para essas ações, não as faz quando vê outras coisas. Generalizar é duas coisas - todas essas imagens de árvores são árvores e usam o conhecimento do passado para descobrir essa novidade. Para que minha IA resolva isso, ele vê uma árvore e ouve "árvore", que combina com a memória e a traz para a frente, depois vê novas árvores e seus nomes e todos se vinculam aos sentidos na memória mais recente - a primeira imagem da árvore e som. Descobrir algo novo e pouco relacionado por knwldge é uma nova ação
Friendly Person 44

2
@ FriendlyPerson44 No aprendizado de máquina supervisionado, o resultado do treinamento não precisa mudar mais. É aqui que o "overfitting" entra em jogo. Seria como se a máquina tivesse aprendido a reconhecer uma árvore - primeiro pelas cores, depois pela forma geral, depois por uma forma específica ( onde deveria parar ), mas depois começa a distinguir as árvores por padrões aleatórios adicionais encontrados apenas em sua árvore. conjunto de treinamento. Quando você permite ver novas fotos aleatórias de árvores, decide que não são árvores. Nesse ponto, o pior caso é que está em uso e ninguém está supervisionando!
DoubleDouble 07/01

Mas o meu reconhece uma árvore salvando a imagem e o som "árvore" e ligando os dois sentidos, e quando a árvore é dita, ela corresponde ao que está na memória e traz a correspondência e qualquer coisa ligada a ela para a frente da memória e, em seguida, quando mostrada outra árvores e chamou novos nomes essas imagens e sons como os primeiros aprendidos. No entanto, as árvores não são os gatilhos; os alimentos são, não salvam ações quando vê uma cor ou padrão. O meu realmente aprende as ações.
amigável Pessoa 44

11
@ FriendlyPerson44 O que isso tem a ver com o porquê do overfitting ser ruim?
DoubleDouble

9

Grosso modo, o ajuste excessivo geralmente ocorre quando a proporção

insira a descrição da imagem aqui

É muito alto.

Pense em ajuste excessivo como uma situação em que seu modelo aprenda os dados de treinamento de cor, em vez de aprender os grandes quadros que impedem que ele seja generalizado nos dados de teste: isso acontece quando o modelo é muito complexo em relação ao tamanho de os dados de treinamento, ou seja, quando o tamanho dos dados de treinamento é pequeno em comparação com a complexidade do modelo.

Exemplos:

  • se seus dados estão em duas dimensões, você tem 10000 pontos no conjunto de treinamento eo modelo é uma linha, é provável que sob -Fit.
  • se seus dados estão em duas dimensões, você tem 10 pontos no conjunto de treinamento eo modelo é polinomial de 100 graus, é provável que mais de -Fit.

insira a descrição da imagem aqui

Do ponto de vista teórico, a quantidade de dados que você precisa para treinar adequadamente o seu modelo é uma questão crucial e ainda por responder no aprendizado de máquina. Uma dessas abordagens para responder a essa pergunta é a dimensão VC . Outra é a troca de viés e variação .

Do ponto de vista empírico, as pessoas normalmente traçam o erro de treinamento e o erro de teste no mesmo gráfico e garantem que não reduzam o erro de treinamento às custas do erro de teste:

insira a descrição da imagem aqui

Eu recomendaria assistir ao curso de Machine Learning do Coursera , seção "10: Dicas para aplicar o Machine Learning".


11
Gosto da linha "aprender de cor", porque os seres humanos são capazes (e fazem) de alguma maneira. Imagine fazer um teste extremamente difícil, no qual as perguntas e respostas nunca mudam, mas você recebe as respostas quando as obtém incorretas. Finja que a equação (2 + 2) é difícil, você reconhece a equação e diz '4' - mas então (2 + 3) aparece, mas você não aprendeu a adicionar, você acabou de aprender a dizer '4' quando você tem '2 + 2'
DoubleDouble 07/01

boa explicação #
Nikos M.

4

Eu acho que devemos considerar duas situações:

Treinamento finito

Há uma quantidade finita de dados que usamos para treinar nosso modelo. Depois disso, queremos usar o modelo.

Nesse caso, se você superestimar, não fará um modelo do fenômeno que produziu os dados, mas fará um modelo do seu conjunto de dados. Se o seu conjunto de dados não for perfeito - eu tenho problemas para imaginar um conjunto de dados perfeito - seu modelo não funcionará bem em muitas ou algumas situações, dependendo da qualidade dos dados nos quais você usou o treinamento. Portanto, o ajuste excessivo levará à especialização em seu conjunto de dados, quando você desejar que a generalização modele o subjacente ao fenômeno.

Aprendizado contínuo

Nosso modelo receberá novos dados o tempo todo e continuará aprendendo. Possivelmente, existe um período inicial de maior elasticidade para obter um ponto de partida aceitável.

Este segundo caso é mais parecido com o treinamento do cérebro humano. Quando um ser humano é muito jovem, novos exemplos do que você quer aprender têm uma influência mais pronunciada do que quando você é mais velho.

Nesse caso, o excesso de ajuste oferece um problema um pouco diferente, mas semelhante: os sistemas que se enquadram nesse caso geralmente são sistemas que devem desempenhar uma função enquanto aprendem. Considere como um humano não está apenas sentado em algum lugar enquanto novos dados são apresentados a ele para aprender. Um ser humano está interagindo e sobrevivendo no mundo o tempo todo.

Você pode argumentar que, como os dados continuam chegando, o resultado final funcionará bem, mas, nesse período, o que foi aprendido precisa ser usado! O sobreajuste fornecerá os mesmos efeitos de curto espaço de tempo do caso 1, proporcionando um desempenho pior ao seu modelo. Mas você depende do desempenho do seu modelo para funcionar!

Olhe dessa maneira: se você se exercitar demais, poderá reconhecer o predador que está tentando comê-lo em algum momento no futuro, depois de muitos outros exemplos, mas quando o predador come você, isso é discutível.


Boa resposta para a pergunta que a operação implica: "Por que temos que evitar o ajuste excessivo nos cérebros virtuais, quando nossos cérebros parecem funcionar bem, sem nenhuma compensação por ajuste excessivo" - porque uma máquina é treinada, enquanto os humanos aprendem por si mesmos.
Falco

3

Digamos que você queira ensinar o computador a determinar entre produtos bons e ruins e forneça o seguinte conjunto de dados para aprender: diagrama com conjunto de dados.  0 a 50 são 0. 52 e 74 são 0. Os valores restantes de 51 a 100 são 1

0 significa que o produto está com defeito, 1 significa que está OK. Como você pode ver, há uma forte correlação entre os eixos X e Y. Se o valor medido for inferior ou igual a 50, é muito provável (~ 98%) que o produto esteja com defeito e acima disso é muito provável (~ 98%) que está OK. 52 e 74 são discrepantes (fatores medidos incorretamente ou não medidos desempenhando um papel; também conhecido como ruído). O valor medido pode ser espessura, temperatura, dureza ou outra coisa e sua unidade não é importante neste exemplo. Portanto, o algoritmo genérico seria

if(I<=50)
    return faulty;
else
    return OK;

Teria uma chance de 2% de classificação incorreta.

Um algoritmo de sobreajuste seria:

if(I<50)
    return faulty;
else if(I==52)
    return faulty;
else if(I==74)
    return faulty;
else
    return OK;

Portanto, o algoritmo de ajuste excessivo classificaria erroneamente todos os produtos medindo 52 ou 74 como defeituosos, embora exista uma grande chance de que eles estejam OK quando receberem novos conjuntos de dados / usados ​​na produção. Teria uma chance de 3,92% de erros de classificação. Para um observador externo, essa classificação incorreta seria estranha, mas explicável, sabendo o conjunto de dados original que foi super ajustado.

Para o conjunto de dados original, o algoritmo com excesso de ajuste é o melhor; para novos conjuntos de dados, o algoritmo genérico (sem excesso de ajuste) é provavelmente o melhor. A última frase descreve basicamente o significado de sobreajuste.


2

No meu curso de IA da faculdade, nosso instrutor deu um exemplo semelhante ao de Kyle Hale:

Uma menina e sua mãe estão caminhando juntas na selva, quando de repente um tigre sai da mata e devora sua mãe. No dia seguinte, ela está andando pela selva com o pai e, novamente, o tigre salta para fora do mato. O pai dela grita para ela correr, mas ela responde: "Oh, tudo bem pai, os tigres só comem mães".

Mas por outro lado:

Uma menina e sua mãe estão caminhando juntas na selva, quando de repente um tigre sai da mata e devora sua mãe. No dia seguinte, seu pai a encontra encolhida no quarto e pergunta por que ela não está brincando com as amigas. Ela responde: "Não! Se eu sair de casa, um tigre certamente me comerá!"

A super adaptação e a sub adequação podem ser ruins, mas eu diria que depende do contexto do problema que você está tentando resolver, o que lhe preocupa mais.



2

Um que eu realmente encontrei é algo assim. Primeiro, medo algo em que espero que a taxa de entrada / saída seja aproximadamente linear. Aqui estão meus dados brutos:

Input   Expected Result
1.045   0.268333453
2.095   0.435332226
3.14    0.671001483
4.19    0.870664399
5.235   1.073669373
6.285   1.305996464
7.33    1.476337174
8.38    1.741328368
9.425   1.879004941
10.47   2.040661489

E aqui está um gráfico:

insira a descrição da imagem aqui

Definitivamente parece se encaixar na minha expectativa de dados lineares. Deveria ser bastante simples deduzir a equação, certo? Então você deixa seu programa analisar esses dados um pouco e, finalmente, ele relata que encontrou a equação que atinge todos esses pontos de dados, com uma precisão de 99,99%! Impressionante! E essa equação é ... 9sin (x) + x / 5. Que se parece com isso: insira a descrição da imagem aqui

Bem, a equação definitivamente prediz os dados de entrada com precisão quase perfeita, mas, como é super adaptada aos dados de entrada, é praticamente inútil para fazer qualquer outra coisa.


Eu acho que o overfitting é mais uma questão do que você faz incorretamente depois de ter os dados de entrada. Aqui não há nada que você possa fazer; as entradas são inadequadas porque há subamostragem.
Emre

11
@ Emre: não pretendo subamostrar, pretendia que a entrada / saída fosse linear, mas o excesso de ajuste produziu uma equação que era claramente não linear. Vou editar para esclarecer.
Mooing Duck

1

Dê uma olhada neste artigo, que explica muito bem o excesso e o excesso de ajustes.

http://scikit-learn.org/stable/auto_examples/model_selection/plot_underfitting_overfitting.html

O artigo examina um exemplo de dados de sinal de uma função cosseno. O modelo de ajuste excessivo prevê que o sinal seja uma função um pouco mais complicada (que também é baseada em uma função cosseno). No entanto, o modelo com excesso de ajustes conclui isso com base não na generalização, mas na memorização do ruído nos dados do sinal.


4
Se esse link for quebrado, sua resposta será quase inútil. Forneça pelo menos um resumo (com atribuição, é claro) para que a resposta tenha valor independente desse link.
Raphael

1

Sem experiência em aprendizado de máquina e a julgar pela resposta do @ jmite, aqui está uma visualização do que eu acho que ele quer dizer:

Gráfico aleatório da forma correta aproximada para demonstração

Suponha que as barras individuais no gráfico acima são seus dados, para os quais você está tentando descobrir as tendências gerais a serem aplicadas a conjuntos maiores de dados. Seu objetivo é encontrar a linha curva. Se você se exercitar demais - em vez da linha curva mostrada, conecte a parte superior de cada barra individual e aplique-a ao seu conjunto de dados - e obtenha uma resposta pontiaguda estranha e precisa quando o ruído (variações do esperado) for exagerado em seus conjuntos de dados de prática real.

Espero ter ajudado um pouco ...


0

Sobreajuste na vida real:

Pessoa branca vê notícia de negro cometendo crime. A pessoa branca vê outra notícia de um negro cometendo um crime. A pessoa branca vê uma terceira notícia de que uma pessoa negra cometeu um crime. Pessoa branca vê notícias sobre pessoas brancas de camisa vermelha, pais ricos e um histórico de doença mental cometer um crime. A pessoa branca conclui que todos os negros cometem crime, e apenas pessoas brancas vestindo camisas vermelhas, pais ricos e um histórico de doença mental cometem crime.

Se você quiser entender por que esse tipo de ajuste excessivo é "ruim", substitua "preto" acima por algum atributo que o define mais ou menos exclusivamente.


Estereotipagem é o que os leigos chamam de super adaptação.
Emre

3
Isso não é demais. Sobreajuste seria o sistema que decide que as únicas pessoas criminosas são aquelas que têm a mesma cor de pele, cor da camisa, renda dos pais e histórico de doença mental que um dos criminosos nas reportagens.
David Richerby

8
@ Emre Não, a estereotipagem é exatamente o oposto da super adaptação. A estereotipagem está chegando a conclusões que ignoram a maioria das propriedades dos dados de treinamento. O sobreajuste está chegando à conclusão de que apenas os dados de todos os pontos dos dados de treinamento descrevem perfeitamente parte do que você está tentando reconhecer.
precisa saber é o seguinte

Nota do moderador: comentários fora do tópico / fora do contexto excluídos. Para uma discussão geral, visite o Computer Science Chat . Se você tiver alguma dúvida sobre um programa específico que pode ou não estar usando superajuste, faça uma nova pergunta.
Gilles 'SO- stop be evil'

2
O @ArnabDatta Overfitting está combinando um modelo excessivamente complicado com muita precisão com os dados de treinamento; estereotipagem é o uso de um modelo excessivamente simplificado.
David Richerby

0

Quaisquer dados que você testar terão propriedades que você deseja que ele aprenda e algumas propriedades que são irrelevantes que você NÃO deseja que ele aprenda.

John tem 11 anos
Jack tem 19 anos
Kate tem 31 anos
Lana tem 39 anos

Ajuste adequado: as idades são aproximadamente lineares, passando dos 20 anos.
Superajuste: Dois humanos não podem ter 10 anos de diferença (propriedade de ruído nos dados)
.


Bem vinda! Já temos muitos exemplos informais, então não tenho certeza se isso acrescenta muito. E parece difícil tornar esse exemplo mais formal. Por exemplo, qual é a função linear que você mencionou? A entrada para a função parece ser o nome da pessoa, que não é um número. Enquanto isso, "dois humanos não podem ter dez anos de diferença" e "1/4 dos humanos têm 19" não são exemplos de funções aprendidas com os dados.
David Richerby
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.