Como usar o GAN para extração de recursos não supervisionados de imagens?

10

Entendi como a GAN funciona enquanto duas redes (generativa e discriminativa) competem entre si. Eu construí um DCGAN (GAN com discriminador convolucional e gerador desconvolucional) que agora gera com sucesso dígitos manuscritos semelhantes aos do conjunto de dados MNIST.

Eu li muito sobre os aplicativos da GAN para extrair recursos de imagens. Como posso usar meu modelo GAN treinado (no conjunto de dados MNIST) para extrair recursos das imagens manuscritas manuscritas do MNIST?

exAres
fonte
Para extração de recursos, estou obtendo o tamanho do recurso de 128 * 120 (ou seja, 64 + 32 + 16 + 8) = 15360. Tenho certeza de que estou perdendo alguma coisa. Eu tenho outra pergunta sobre a escolha de recursos vetoriais. Devo considerar pesos (conv2d + batchnorm + ativação) ou apenas pesos conv2d durante a extração de recursos?
Tanmoy Dam 23/01/19

Respostas:

4

Normalmente, para extrair recursos, você pode usar a camada superior da rede antes da saída. A intuição é que esses recursos são separáveis ​​linearmente porque a camada superior é apenas uma regressão logística.

Para GANs, você pode usar os recursos do discriminador. Esses recursos devem fornecer uma probabilidade se a entrada vier do conjunto de dados de treinamento, "imagens reais". No documento DCGAN de Radford , eles usam todas as camadas convolucionais do discriminador e executam um recurso de extração de camada de pool máximo para o CIFAR-10.

Para avaliar a qualidade das representações aprendidas pelos DCGANs para tarefas supervisionadas, treinamos o Imagenet-1k e usamos os recursos convolucionais do discriminador de todas as camadas, maximizando a representação de cada camada para produzir uma grade espacial 4 × 4. Esses recursos são achatados e concatenados para formar um vetor dimensional 28672 e um classificador linear L2-SVM regularizado é treinado em cima deles.

kenny
fonte
1

A resposta de Kenny está correta - se você estiver usando D convolucional , a saída de camadas antes da densa pode servir como recurso. Minha intuição é que funcione melhor para AC-GANs (ou arquiteturas similares, que fazem com que D classifique a entrada, além de determinar se é falsa ou real).

Existe uma abordagem chamada BiGAN que adiciona um componente Encoder capaz de mapear amostras geradas e de treinamento para a distribuição latente z usada para "inicializar" o gerador. Os autores mostram que ele pode ser usado efetivamente como um conjunto de recursos para transferência de aprendizado e outras tarefas.

Mikhail Yurasov
fonte
0

como o GAN consiste em duas partes - o gerador e o discriminador, existem duas maneiras de usar o GAN como extrator de recursos:

  1. Maneira baseada em gerador, como apresentado por Mikhail Yurasov.
  2. Maneira baseada no discriminador, como apresentado por Kenny.

A segunda maneira é mais controversa. Alguns estudos [1] pensaram que, intuitivamente, como o alvo do discriminador é distinguir as amostras geradas das amostras reais, ele se concentrará apenas na diferença entre esses dois tipos de amostras. Mas o que faz sentido é a diferença entre amostras reais, que são as amostras usadas pelas tarefas posteriores.

Tentei estudar isso e descobri que o recurso extraído pode ser fatorado em dois subespaços ortogonais . O primeiro espaço contribui para a tarefa discriminadora, enquanto o segundo está livre dele. Como na maioria dos casos, os recursos usados ​​para distinguir as amostras reais das geradas são ruído, o segundo espaço de recurso será livre de ruído. Nessa perspectiva, embora a tarefa do discriminador não se concentre na diferença entre amostras reais, que são úteis para as tarefas posteriores, os recursos sem ruído contidos no segundo subespaço funcionarão.

[1] Jost Tobias Springenberg. Aprendizagem não supervisionada e semi-supervisionada com redes adversas generativas categóricas. arXiv: 1511.06390 [cs, stat], abril de 2016. pré-impressão do arXiv. arXiv: 1511.06390 [stat.ML]. Ithaca, NY: Biblioteca da Universidade de Cornell.

Mao Xin
fonte