Podemos gerar um enorme conjunto de dados com redes adversas generativas

14

Estou lidando com um problema em que não consegui encontrar conjuntos de dados (imagens) suficientes para alimentar minha rede neural profunda para treinamento.

Fiquei muito inspirado no artigo Generative Adversarial Text to Image Synthesis publicado por Scott Reed et al. em redes adversas generativas.

Fiquei curioso em saber que posso usar pequenos conjuntos de dados disponíveis como entrada para um modelo GAN e gerar um conjunto de dados muito maior para lidar com modelos de rede mais profundos?

Será que vai ser bom o suficiente?

Alwyn Mathew
fonte
Podemos usar o GAN para conjuntos de dados sem imagem?
Mohamed EL-KADDOURY
@ MohamedEL-KADDOURY sim, é claro, com áudio arxiv.org/abs/1802.04208 , com texto arxiv.org/abs/1801.07736 etc.
Alwyn Mathew

Respostas:

9

É improvável que isso adicione muito além de seus esforços diretos de coleta de dados.

A qualidade das saídas atuais da GAN (a partir de 2017) não será alta o suficiente. As imagens produzidas por um GAN geralmente são pequenas e podem ter detalhes incomuns / ambíguos e distorções estranhas. No artigo que você vinculou, as imagens geradas pelo sistema a partir de uma sentença têm blocos de cores confiáveis, de acordo com o assunto, mas sem a sentença o informar o que esperar a maioria deles não é reconhecível como um assunto específico.

Os GANs com um objetivo menos ambicioso do que gerar imagens a partir de sentenças (o que, apesar das minhas críticas acima, um feito verdadeiramente notável da IMO) devem produzir imagens mais realistas. Mas seu escopo será menor e provavelmente não incluirá o tipo de imagem desejado. Além disso, normalmente o tamanho da saída é pequeno, por exemplo, 64x64 ou 128x128 *, e ainda existem distorções e ambiguidades suficientes para que as fotos originais da verdade do solo sejam muito preferíveis.

O GAN é limitado pela biblioteca de treinamento disponível - não funcionará bem se você tentar gerar imagens fora do escopo de seus dados de treinamento. Os resultados mostrados no trabalho de pesquisa focam no domínio fornecido pelos dados de treinamento. Mas você não pode simplesmente alimentar nenhuma frase nesse modelo e esperar um resultado que seria útil em outro lugar.

Se você encontrar um GAN treinado em um conjunto de dados adequado para o seu problema, provavelmente será melhor tentar obter os mesmos dados diretamente para o seu projeto.

Se você estiver enfrentando um problema com dados limitados da verdade do solo, talvez uma abordagem melhor para usar uma GAN seja o uso de um classificador pré-treinado, como o VGG-19 ou o Inception v5, substitua as últimas camadas totalmente conectadas e sintonize-o nos seus dados. Aqui está um exemplo de como fazer isso usando a biblioteca Keras em Python - outros exemplos podem ser encontrados em pesquisas como "ajuste fino do classificador de imagem CNN".


* Os GANs de última geração melhoraram desde que publiquei esta resposta. Uma equipe de pesquisa da Nvidia teve um sucesso notável ao criar imagens foto-realísticas de 1024x1024 . No entanto, isso não altera os outros pontos da minha resposta. Os GANs não são uma fonte confiável de imagens para tarefas de classificação de imagens, exceto talvez para subtarefas do que o GAN já foi treinado e é capaz de gerar condicionalmente (ou talvez mais trivialmente, para fornecer dados de origem para "outras" categorias em classificadores).

Neil Slater
fonte
3

Eu tenho exatamente o mesmo problema com um DNN que estou criando no momento. Pegar meu conjunto de dados e sintetizar novos dados com uma GAN parece uma ótima idéia. Mas o próprio GAN aprenderá apenas a produzir imagens com a mesma variação e desvio padrão da imagem aprendida no conjunto de treinamento. Portanto, seus dados recém-gerados representarão simplesmente mais permutações da mesma distribuição de amostra. Isso ajudará seu NN a treinar melhor na mesma distribuição, portanto, pode levar a um excesso de treinamento.

Michael Bawol
fonte
3

Apenas de uma perspectiva puramente teórica, isso não pode ser possível.

Qualquer conjunto de dados de treinamento representa uma certa quantidade de informações sobre a estrutura de um determinado espaço. Se você treinar um GAN nesse conjunto de dados, ele aprenderá apenas com as informações representadas por esse conjunto de dados. Os dados sintetizados pelo GAN nunca podem ter um espaço maior que os dados originais, pelo simples motivo: de onde essas informações deveriam vir? Se não estava no conjunto de dados original, também não pode estar nos dados sintetizados do GAN.

Se você treinar uma rede neural para convergência em um conjunto de dados, essa rede neural aprenderá qualquer estrutura que o conjunto de dados contenha. Qualquer dado de treinamento artificial sintetizado por uma GAN não adicionará nenhuma informação nova. Essa ideia deve ser direta.

Alex
fonte
2

Na verdade, é possível aumentar um pequeno conjunto de dados com GANs para aprimorá-lo e também aumentará o desempenho das redes de classificação, como você pode ler aqui https://arxiv.org/pdf/1803.01229.pdf . Os GANs são capazes de aprender, por exemplo, formas intermediárias que não estão envolvidas no conjunto de datas original, mas ainda são válidas. Portanto, imagens sintéticas podem realmente melhorar o tamanho do conjunto de dados e melhorar a precisão da classificação CNN.

Jens K
fonte