É prática comum aplicar o aumento de dados apenas ao conjunto de treinamento ou aos conjuntos de treinamento e teste?
É prática comum aplicar o aumento de dados apenas ao conjunto de treinamento ou aos conjuntos de treinamento e teste?
Respostas:
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.
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.
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.