Aumento de dados apenas no conjunto de treinamento?

Respostas:

12

Em termos do conceito de aumento, ou seja, aumentar o conjunto de dados por algum motivo, tendemos a aumentar apenas o conjunto de treinamento. Avaliaríamos o resultado de diferentes abordagens de aumento em um conjunto de validação.

No entanto, como @ Łukasz Grad salienta, talvez seja necessário executar um procedimento semelhante ao conjunto de testes, como foi feito no conjunto de treinamento. Isso geralmente ocorre para que os dados de entrada do conjunto de testes se assemelhem ao máximo possível aos do conjunto de treinamento. Por exemplo, @ Łukasz Grad mostra o exemplo de corte de imagem, onde também precisamos cortar as imagens de teste, para que elas tenham o mesmo tamanho das imagens de treinamento. No entanto, no caso das imagens de treinamento, podemos usar cada imagem de treinamento várias vezes, com colheitas em diferentes locais / compensações. No momento do teste, é provável que façamos uma única colheita centralizada ou faça colheitas aleatórias e faça uma média.

A execução do procedimento de aumento nos dados de teste não é para torná-los maiores / mais precisos, mas apenas para fazer com que os dados de entrada do conjunto de testes se assemelhem aos dos dados de entrada do conjunto de treinamento, para que possamos alimentá-los na mesma rede (por exemplo, mesmas dimensões). Nunca consideraríamos que o conjunto de testes é 'melhor' de alguma forma, aplicando um procedimento de aumento. Pelo menos, isso não é algo que eu já vi.

Por outro lado, para o conjunto de treinamento, o objetivo do aumento é reduzir o excesso de ajustes durante o treinamento. E avaliamos a qualidade do aumento executando o modelo treinado em nosso conjunto de teste / validação mais ou menos fixo.

Hugh Perkins
fonte
2

Normalmente, o aumento de dados para o treinamento de redes neurais convolucionais é feito apenas no conjunto de treinamento. Não sei ao certo qual benefício aumentaria os dados de teste, pois o valor dos dados de teste é principalmente para seleção e avaliação de modelos e você está adicionando ruído à sua medição dessas quantidades.

MachineEpsilon
fonte
11
Eu concordo, por exemplo. a maioria dos papéis que usam trem IMAGEnet conjunto de dados e testar suas classificador com corte aleatório, que é uma forma de aumento
Łukasz Grad
Eu certamente poderia estar errado, você se importa em fornecer uma referência? Uma amostra rápida de alguns artigos como AlexNet nvidia.cn/content/tesla/pdf/machine-learning/… , Resnet arxiv.org/pdf/1512.03385.pdf e YOLO9000 arxiv.org/pdf/1612.08242.pdf e parece que nada disso aumenta no conjunto de teste (até onde eu sei).
MachineEpsilon
3
Em certo sentido, acho que vocês dois estão certos: se uma rede foi treinada com corte aleatório, as imagens de teste também serão cortadas. Mas eles podem não ser uma colheita aleatória: eles podem ser uma colheita central. Mas não sempre. Não tenho muita certeza de que isso seja 'aprimoramento' do conjunto de testes, como tal, garantindo que a distribuição dos dados de entrada no conjunto de testes seja um pouco semelhante à do conjunto de treinamento. Mas isso é realmente semântica: do ponto de vista técnico, pode ser necessário fazer algo no conjunto de testes, para que se assemelhe ao conjunto de treinamento, semelhante à maneira como o abandono funciona no momento do teste.
Hugh Perkins
11
Sim, isso faz sentido. O melhor que posso ver é que o corte é um caso especial, pois afeta a arquitetura do modelo, alterando o tamanho da camada de entrada e outras transformações de aumento (como adicionar ruído, reflexos, desfocagem) não.
MachineEpsilon
11
@Machineepsilon Aqui está o primeiro exemplo que pude encontrar no pape inicial, tabela 4: arxiv.org/pdf/1512.00567.pdf
Łukasz Grad
0

Complementando as respostas, deixe-me adicionar meus 2 centavos em relação ao aumento de dados em tempo de teste.

O aumento de dados também pode ser realizado durante o tempo de teste com o objetivo de reduzir a variação. Isso pode ser realizado calculando a média das previsões de versões modificadas da imagem de entrada.

O aumento do conjunto de dados pode ser visto como uma maneira de pré-processar apenas o conjunto de treinamento. O aumento do conjunto de dados é uma excelente maneira de reduzir o erro de generalização da maioria dos modelos de visão computacional. Uma ideia relacionada aplicável no momento do teste é mostrar ao modelo muitas versões diferentes da mesma entrada (por exemplo, a mesma imagem cortada em locais ligeiramente diferentes) e ter instâncias diferentes do voto do modelo para determinar a saída. Essa última idéia pode ser interpretada como uma abordagem de conjunto e ajuda a reduzir o erro de generalização. ( Livro de Aprendizagem Profunda, Capítulo 12 ).

É uma prática muito comum aplicar o aumento do tempo de teste. AlexNet e ResNet fazem isso com a técnica de 10 cortes (pegando manchas nos quatro cantos e no centro da imagem original e também espelhando-as). O início vai além e gera 144 patches em vez de apenas 10. Se você verificar o Kaggle e outras competições, a maioria dos vencedores também aplicará o aumento do tempo de teste.

Sou o autor de um artigo sobre aumento de dados ( código ) no qual experimentamos treinamento e teste de aumento para classificação de lesões de pele (uma tarefa com poucos dados). Em alguns casos, o uso de forte aumento de dados apenas no treinamento é marginalmente melhor do que não o aumento de dados, enquanto o uso de treinamento e teste aumenta o desempenho do modelo por uma margem muito significativa.

Fábio Perez
fonte
Só quero uma coisa aqui. Se eu aplicar rotação de 5 ângulos diferentes e corte aleatório em todo o conjunto de dados e depois dividir em testes e validação de treinamento. Será uma avaliação totalmente incorreta do conjunto de dados?
Aadnan Farooq A
@AadnanFarooqA Sim, seu conjunto de validação estará contaminado.
Fábio Perez
Então, qual será o melhor arranjo de dados. aumento de dados em dados de treinamento. validação e teste restantes como dados originais. se for assim, digamos que os dados de treinamento serão após o aumento dos dados ser 10000 imagens e a validação e o teste serão 500 imagens cada?
Aadnan Farooq A