O cabeçalho "Leia artigos para você". Outubro - dezembro de 2019



Olá Habr! Continuamos a publicar resenhas de artigos científicos de membros da comunidade Open Data Science no canal #article_essense. Se você deseja recebê-los antes de todos os outros - participe da comunidade !


Artigos para hoje:


  1. Poly-encoders: arquiteturas de transformadores e estratégias de pré-treinamento para pontuação rápida e precisa em várias frases (Facebook, 2019)
  2. Discriminador implícito no autoencoder variacional (Instituto indiano de tecnologia Ropar, 2019)
  3. O autotreinamento com o Noisy Student melhora a classificação do ImageNet (Google Research, Carnegie Mellon University, 2019)
  4. Momentum Contraste para aprendizado não supervisionado de representação visual (Facebook, 2019)
  5. Análise comparativa da robustez da rede neural a rupturas e perturbações comuns (University of California, Oregon State University, 2019)
  6. DistilBERT, uma versão destilada do BERT: menor, mais rápida, mais barata e mais leve (Hugging Face, 2019)
  7. Modelos de linguagem Plug and Play: uma abordagem simples para a geração controlada de texto (Uber AI, Caltech, HKUST, 2019)
  8. Representação de Deep Salience para estimativa F0 em música polifônica (New York University, EUA, 2017)
  9. Analisando e melhorando a qualidade da imagem do StyleGAN (NVIDIA, 2019)


1. Poly-encoders: arquiteturas de transformadores e estratégias de pré-treinamento para pontuação rápida e precisa em várias frases


Autores: Samuel Humeau, Kurt Shuster, Marie-Anne Lachaux, Jason Weston (Facebook, 2019)
→ Artigo original
Autor do comentário: Alexey (em slack zhirzemli)


TLDR


O artigo propõe uma nova abordagem para a pontuação de pares de sentenças (declarações). Esse procedimento é relevante nas tarefas de prever a correspondência de uma resposta a um contexto condicional, bem como em tarefas como a previsão do próximo sentido. O método Poly-Encoder proposto é comparado com as estratégias Bi-Encoder e Cross-Encoder. O método combina a vantagem do Bi-Encoder (a capacidade de armazenar em cache a apresentação de respostas) e o Cross-Encoder (treinamento não incondicional dos codificadores de contexto e resposta)





Pontuação em várias frases


(Um pequeno lembrete sobre as abordagens do Bi e Cross Encoder. Para aqueles que estão familiarizados, você pode pular)


A tarefa de determinar a correspondência do contexto (solicitação ou declaração do usuário) para o conjunto de respostas existentes é principalmente relevante nos sistemas de diálogo e recuperação de informações. Isso é resolvido encontrando uma certa velocidade (produto escalar) entre as representações codificadas do contexto e a resposta, ou codificando conjuntamente o contexto e a resposta em um vetor com subsequente transformação linear em escalar.


A primeira abordagem é chamada Bi-Encoder e a vantagem óbvia desse método é a capacidade de contar offline as representações de todas as respostas disponíveis. Essas visualizações são armazenadas em cache e, durante a inferência, você só precisa encontrar o vetor de consulta, criar um produto de ponto com vetores de resposta e organizar o resultado. Além disso, essa abordagem permite uma amostragem negativa mais eficiente na fase de treinamento. Ou seja, dentro de cada lote, são consideradas representações para amostras positivas e exemplos negativos podem ser obtidos diretamente do mesmo lote. Em essência, reutilize o encaminhamento para exemplos positivos e negativos. A desvantagem da abordagem Bi-Encoder é o fato de que as representações de contexto e resposta aprendem quase de forma independente. O único ponto em que pelo menos algum tipo de fluxo de informações é possível entre as visualizações de solicitação e resposta é a botnet na forma do produto final. No nível de qualquer recurso textual, a informação não é atrapalhada.


A segunda abordagem é o Cross-Encoder. Envolve uma interação mais poderosa de contexto e resposta no processo de aprendizagem e inferência. Aqui, as seqüências de token de solicitação e resposta são concatenadas em uma. Um token separador especial é colocado entre eles e uma incorporação especial é adicionada a cada parte (solicitação, resposta). De fato, essa incorporação altera as representações de entrada dos tokens de resposta por alguma constante, para que o modelo possa distingui-los mais facilmente dos tokens de solicitação. Como resultado, o modelo aprende a encontrar uma representação conjunta da solicitação e resposta, de modo que a camada linear final (vetor -> escalar) retorne um grande valor de logits para pares de frases correspondentes entre si e um valor pequeno caso contrário. A desvantagem dessa abordagem é a impossibilidade de contar offline as representações das respostas: elas devem ser avaliadas no estágio de inferência, junto com um conjunto condicional de tokens de solicitação. Além disso, o truque para reutilizar as idéias de exemplos negativos e positivos na fase de treinamento não funcionará mais aqui. Você terá que coletar amostras negativas antes da formação do lote.


Motivação
A seguir, é apresentada uma solução que permite mitigar as deficiências e combinar as vantagens das abordagens do Bi e Cross Encoder. A idéia é que queremos treinar um codificador que, por um lado, leve em consideração a dependência condicional dos tokens de resposta nos tokens de solicitação e, por outro lado, a utilização dessa dependência deve ocorrer em representações pré-avaliadas da resposta e solicitação. Geometricamente, eu pessoalmente imagino algo assim: mova a botnet (o produto final de pontos das duas apresentações) um pouco mais para a rede. Crie alguma interação entre as visualizações de solicitação e resposta. Ao mesmo tempo, implementar essa interação não está muito longe da camada final, de modo que a parte principal do codificador de solicitação permanece independente do codificador de resposta.


Implementação
A implementação dessa idéia é bastante simples: o codificador candidato funciona como no caso do Bi-Encoder: obtemos a representação de sequência no formato vetorial (token [CLS]) usando o modelo baseado em transformador (BERT). Armazenamos em cache essas representações após o treinamento do modelo.


O codificador de contexto, por sua vez, não compacta a representação da sequência de entrada em um único vetor. Aqui deixamos todos os vetores de sequência codificados pelo modelo.


Para obter uma avaliação da conformidade do contexto (um conjunto de vetores) e do candidato (um vetor), o mecanismo de atenção é usado. O vetor candidato, neste caso, é uma solicitação e o vetor de contexto são as chaves. É considerado produto escalar e, além disso - softmax de acordo com os valores resultantes. Os vetores de contexto são ponderados pela distribuição resultante e somados. Como resultado, obtemos a representação do contexto na forma de um único vetor. Além disso, como no habitual Bi-Encoder, consideramos o produto escalar do contexto e o candidato.


Além disso, o artigo propôs várias maneiras de acelerar a ponderação dos vetores de contexto. A opção mais útil foi um processo de contagem de atenção, no qual apenas os primeiros m vetores da sequência de contexto foram utilizados.


Resultados
Como resultado, descobriu-se que o Cross-Encoder ainda funciona melhor. Mas o Poly-Encoder não está muito atrás em termos de métricas de qualidade e, em termos de velocidade de inferência, ele funciona centenas de vezes mais rápido.


2. Discriminador implícito no autoencoder variacional


Autores: Prateek Munjal, Akanksha Paul, Narayanan C. Krishnan (Instituto Indiano de Tecnologia Ropar, 2019)
→ Artigo original
Autor do comentário: Alex Chiron (em sliron shiron8bit)


No artigo, os autores propuseram uma arquitetura que tenta combinar as vantagens das abordagens VAE e GAN para geração de imagens, ignorando as desvantagens inerentes a cada abordagem: desfocagem no caso de autoencodificadores, colapso / falta de modo no caso de treinamento adversário. Eles conseguem isso devido aos pesos totais entre o codificador e o discriminador e o gerador / decodificador comum, o que, em primeiro lugar, reduz o número de pesos da rede e, em segundo lugar, permite obter informações úteis do discriminador por meio de gradientes, se o gerador / decodificador não cair na distribuição de dados real.


1. Introdução
Nos problemas de geração, um papel importante é desempenhado pela coincidência da distribuição dos dados gerados Q com a distribuição dos dados reais P, medidos através da divergência de Kullback-Leibler. Uma característica distintiva dessa medida do afastamento das distribuições é que ela é assimétrica. Conseqüentemente, obteremos imagens diferentes, dependendo de considerarmos Div_KL (P || Q) ou Div_KL (Q || P). Se considerarmos duas opções para comparar distribuições (na imagem abaixo), com Div_KL (P || Q) (também conhecido como forward-KL, conhecido como zero evitando), a segunda opção fornecerá um valor menor e para Div_KL (Q || P) (é KL para trás, também é zero forçando) as distribuições da primeira opção serão consideradas distribuições mais próximas. Na verdade, os resultados do VAE e GAN são muito diferentes: a perda de reconstrução (L2) ajuda a minimizar a divergência de KL para a frente (e, portanto, preservamos todos os modos, mas obtemos imagens borradas), e o treinamento com um discriminador ajuda a minimizar a divergência de KL para trás (as imagens são obtidas mais claro, mas existe o risco de pular o mod)





Arquitetura, Perdas e Treinamento
Como mencionado anteriormente, os autores propõem levar em conta as deficiências de ambos os modos e combinar ambas as minimizações devido à arquitetura da rede (na figura abaixo), na qual a maioria dos pesos do codificador e do discriminador são comuns (apenas cabeças totalmente conectadas que prevêem a 'realidade' da imagem e parâmetros são separadas mu, sigma da camada latente do VAE) e também devido ao modo de treinamento. O codificador e o gerador são os mesmos.A maioria das perdas usadas é bastante padrão: nos codificadores L_enc, o erro L2 de recuperação e a divergência de Kullback-Leibler para N (0,1) (L_prior) são usados, o resto é um treinamento adversário (minimizamos a saída do discriminador ao treinar o discriminador, maximizá-lo ao aprender um decodificador / gerador), mas existem 2 recursos distintos:


  • Nas questões relacionadas ao treinamento adversário, dois tipos diferentes de dados gerados são fornecidos ao discriminador: recuperados por meio de um codificador / decodificador e gerados por um gerador / decodificador a partir de amostras de N (0,1)


  • No decodificador Loss of the L_dec, há um membro no qual os recursos da penúltima camada do discriminador (novamente, essa é a última camada comum entre o discriminador e o codificador) são comparados para imagens reais e restauradas.




Resultados
Os autores compararam os resultados com o VAE e outros trabalhos, de uma forma ou de outra tentando combinar VAE e GANs (VAE-GAN, alpha-GAN e AGE de Dmitry Ulyanov e Victor Lempitsky) em conjuntos de dados celeba e cifar10 (obrigado por não mnist), recebeu quase os melhores indicadores em relação ao erro de reconstrução e à métrica Frechet Inception Distance (compara as estatísticas de ativação da malha pré-treinada para imagens reais e geradas). Observou-se separadamente que a classificação do FID depende fortemente da arquitetura escolhida, portanto, o resultado é melhor verificar o conjunto de 'especialistas' (diferentes arquiteturas).


3. O autotreinamento com o Noisy Student melhora a classificação do ImageNet


Autores: Qizhe Xie, Eduard Hovy, Minh-Thang Luong, Quoc V. Le (Pesquisa do Google, Universidade Carnegie Mellon, 2019)
→ Artigo original
Autor do comentário: Alexander Belsky (em slack belskikh)


O Google recebeu 87,4% dos top1 e 98,2% dos top5 de precisão na imagem. Zayuzali obscurece pseudo-escurecimento e redes muito ousadas. A abordagem foi chamada Noisy Student.





O algoritmo é algo como isto:


  1. Adotamos um modelo de professor, ensinamos uma imagem normal.
  2. Geramos rótulos psudo suaves em imagens do conjunto de dados JFT.
  3. Ensinamos o modelo do aluno com pseudo-rótulos suaves e interferimos o mais rápido possível: ajuda forte, desistência e profundidade estocástica
  4. Pegue o modelo do aluno, use-o como professor na etapa 2. Repita o processo.O conjunto de dados é equilibrado de acordo com as aulas da seguinte forma. Para começar, pegamos o EfficientNet-B0, treinado na imagem, divulgamos suas previsões no conjunto de dados JFT. Então eles pegaram os exemplos para os quais a confiança máxima está acima de 0,3. Para cada classe, foram tiradas 130 mil imagens (se, depois de filtrar por 0,3 lixeira, elas fossem menos - duplicadas, se mais - tiradas de acordo com os escopos de predicado mais altos). Recebeu 130 milhões de imagens, emissões duplicadas, 81 milhões restantes

Arquitetura:
EfficeintNet, além disso, o modelo do aluno adota um modelo de professor muito mais gordo. Eles também digitalizaram o próprio EfficientNet para EfficientNet-L0 / L1 / L2, resultando em um modelo L2 com parâmetros de 480M (Resnet50 possui 26M parâmetros, para comparação)


Processo de aprendizagem:
Butchesize 2048. O modelo Sota L2 ensinou 350 épocas. O maior modelo L2 estudado nesse modo por 3,5 dias no Cloud TPU v3 Pod com 2048 núcleos.


Procedimento de aprendizagem iterativa:
No início, eles ensinaram B7 tanto como estudante quanto como professor. Então, usando B7 como professores, eles ensinaram L0 mais gordo como aluno. Então, mudando de lugar dessa maneira, chegamos ao modelo L2, que no final usamos como professor para o mesmo modelo L2. Resultado :: sota: com 2 vezes menos parâmetros de modelo em comparação com a célula anterior (FixRes ResNeXt-101 WSL 829M parâmetros)


Também obteve resultados muito bons no ImageNet-A / C / P





4. Contraste momentâneo para o aprendizado não supervisionado de representação visual


Autores do artigo: Kaiming He, Haoqi Fan, Yuxin Wu, Saining Xie, Ross Girshick (Facebook, 2019)
→ Artigo original
Autor do comentário: Arseny Kravchenko (em slack arsenyinfo)


O SotA é um pré-treino não supervisionado para várias tarefas de visão computacional (da classificação à estimativa de pose densa), testado em diferentes conjuntos de dados (imagenet, instagram) e tarefas principais (imagenet, COCO, paisagens da cidade, LVIS etc.).





Como é feito o pré-treinamento não supervisionado? Criamos algum tipo de tarefa para a qual as etiquetas não são necessárias, aprendemos o codificador, congelamos e resolvemos o principal problema adicionando as camadas ausentes (linear para classificação, decodificadores para segmentação etc.). Uma das tarefas mais populares nesse nicho é a discriminação de casos, com base na perda contrastiva, ou seja, queremos que os recursos de diferentes ampliações da mesma imagem estejam próximos um do outro (por exemplo, em termos de distância do cosseno), e os recursos de diferentes estão distantes.


Você pode tentar ensinar essa tarefa de ponta a ponta, mas depende muito do tamanho do lote: a qualidade depende muito da variedade de exemplos dentro do lote. As experiências mostram que, com o aumento do tamanho do lote, a qualidade final melhora. Mas o lote é um pouco semelhante a Moscou: não é de borracha, não funcionará por muito tempo para aumentá-lo na testa.


Os caras anteriores de células próximas estragaram um banco de memória: os recursos dos lotes anteriores foram armazenados separadamente na memória e também foram usados ​​para gerar negativos, ou seja, amostras diferentes. Isso ajudou em parte, mas também de maneira imperfeita: durante o treinamento, os pesos do codificador mudam e os recursos antigos ficam ruins.


Por fim, a ideia do artigo:


  1. Vamos substituir um banco de memória simples por uma fila em que recursos bastante novos estarão;
  2. Manteremos duas versões do codificador: uma é usada para o lote atual e é treinada, e a outra é mais estável, seus pesos são atualizados a partir da primeira versão, mas com um grande impulso;
  3. Os recursos do lote são considerados o primeiro codificador, os recursos na fila são contados pelo segundo codificador.

Essa abordagem torna possível aproximar-se da qualidade do treinamento de ponta a ponta, mas, graças à longa programação, ela alcança os resultados potenciais de um lote irrealisticamente grande. Dessa forma, você obtém métricas interessantes para diferentes tarefas, incluindo em alguns lugares, é um pouco melhor que a imagem supervisionada tradicional no imaginet.


5. Benchmarking da robustez da rede neural para corrupção e perturbações comuns


Autores: Dan Hendrycks, Thomas Dietterich (Universidade da Califórnia, Oregon State University, 2019)
→ Artigo original
Autor do artigo: Vladimir Iglovikov (in ternaus slack)





Foi aceito no ICLR 2019 e, pelo que entendi, este é um daqueles trabalhos de DL que não foram treinados em nenhuma rede.


A tarefa foi assim - mas vamos tentar o aprimoramento para validação do ImageNet, mas vamos treinar no ininterrupto. Além disso, diferentemente do adevrsarial, não temos a tarefa de tornar as transformações pequenas e invisíveis aos olhos.


O que foi feito:


  1. Um conjunto de aprimoramentos foi selecionado. Os autores dizem que isso é o mais comum, mas, na minha opinião, eles mentem.
    Eles usaram: GaussianNoise, ISONoise, Downscale, Defocus, MotionBlur, ZoomBlur, FrostedGlassBlur, JPEGCompression, Snow, Nevoeiro, Chuva, Transoform Elastic, etc.
  2. Todas essas transformações foram aplicadas à validação do ImageNet. O conjunto de dados resultante foi denominado ImageNet-C
  3. Também foi proposta uma variação chamada ImageNet-P, na qual conjuntos de transformações de diferentes forças foram aplicados a cada figura.
  4. Uma métrica foi proposta para avaliar a estabilidade do modelo.
  5. Vários modelos foram avaliados no contexto dessa métrica: AlexNet, VGG-11, VGG-19, Resnet-50, Resnet-18, VGG-19 + BN, etc.

Conclusões:


  1. Quanto mais forte o aumento, mais a precisão do modelo sofre. : capitan_obvious:
  2. Quanto mais complexo o modelo, mais estável.
  3. A aplicação de CLAHE nas figuras antes da inferência ajuda um pouco.
  4. blocos de agregação de recursos, como a ajuda do DenseNet ou Resnext.
  5. Redes com várias escalas são mais estáveis. Um exemplo dessas redes é MSDNet, Multigrid (eu não ouvi falar de tais redes)

Código


6. DistilBERT, uma versão destilada do BERT: menor, mais rápida, mais barata e mais leve


Autores: Victor Sanh, Lysandre Debut, Julien Chaumond, Thomas Wolf (Hugging Face, 2019)
→ Artigo original
Autor do comentário: Yuri Kashnitsky (in yorko slack)


O artigo é curto, é muito fácil de ler. No começo, algumas palavras gerais sobre a corrida armamentista na PNL e a pegada ambiental. Além disso, a idéia de destilação (e Hinton fez aqui também) Na tarefa de modelagem de linguagem, prevemos de maneira padrão a próxima palavra no contexto. Normalmente, a perda de entropia cruzada compara o vetor de probabilidades previstas (o comprimento de todo o dicionário) com um vetor binário, onde há apenas uma unidade indicando a palavra real em um determinado local no conjunto de treinamento. Ou seja, o segundo, terceiro, etc. a palavra que o modelo considera apropriado é ignorada pela perda. Um exemplo é dado no artigo: "Eu acho que isso é o começo de uma [MÁSCARA] linda", em vez de [MÁSCARA] BERT quer substituir primeiro o dia ou a vida, mas as palavras previstas pela probabilidade futura de futuro, história e mundo também são boas. De alguma forma, podemos levar em consideração o fato de o modelo produzir uma boa distribuição de probabilidade? Grosso modo, premiar o modelo pelo fato de não haver Murdock, tolerância, maternidade e outras poucas palavras adequadas no topo.





A ideia de destilação
A idéia de um esquema específico de professor-aluno é que tenhamos um modelo de professor grande ( professor , BERT) e um modelo menor ( aluno , DistilBERT), que transmitirá "conhecimento" do modelo de professor. O modelo do aluno otimizará a perda de destilação, ou seja, a perda de entropia cruzada, definida para as distribuições de probabilidade do professor e do aluno: L = Σ t_i * log (s_i). Ou seja, para uma palavra específica apagada pelo símbolo [MASK] e que deve ser prevista pelo contexto, comparamos duas distribuições de probabilidade da aparência de cada palavra do dicionário: {t_i} e {s_i} - preditas, respectivamente, pelo modelo e modelo do professor aluno. Assim, é obtido um sinal de treinamento rico - o modelo do aluno em cada palavra recebe um sinal calculado não apenas comparando seu vetor de previsão com a palavra real na amostra de treinamento, mas comparando-o com o vetor de projeção do modelo de professor.


DistilBERT Model
, — , . DistilBERT — BERT, . token-type embeddings pooler, , . , DistilBERT 40% — 66 . 110 BERT


DistilBERT
DistilBERT distillation loss — masked language modeling loss, BERT cosine embedding loss — ( , , "" - , "" ). : ablation studies, , masked language modeling loss, , .. distillation loss cosine embedding loss. , RoBERTa next sentence prediction dynamic masking.


, BERT (eng. wiki + Toronto Book Corpus) 90 8 V100 (16 GB). RoBERTa 1024 V100 (32 GB).



BERT — "it performed surprisingly well", DistilBERT — GLUE surprisingly well — 5 9 , BERT , SQuAD IMDb — . , DistilBERT 60% — .



DistilBERT iPhone 7 Plus. 70% , BERT-base ( ), 200 . ablation studies: , — distillation loss cosine embedding loss.


3 , DistilBERT — BERT, 40% , 60% "97% " BERT ( ML).


-, BERT, .


:
Jay Alammar
, DistilBERT + Catalyst:


7. Plug and Play Language Models: A Simple Approach To Controlled Text Generation


: Sumanth Dathathri, Andrea Madotto, Janice Lan, Jane Hung, Eric Frank, Piero Molino, Jason Yosinski, and Rosanne Liu (Uber AI, Caltech, HKUST, 2019)

: ( Egor Timofeev)


. , / / (, . https://arxiv.org/pdf/1909.05858.pdf ). , , , , .



( x_prev ), p(x), conditional LM (, — CTRL) p(x|a).


: p(x|a) ∝ p(x)p(a|x), p(x) , (, GPT2), p(a|x) — . — , /. , , .


:


  1. , log(p(a|x)) ( ). hidden state .
  2. , hidden state log(p(a|x)). H_new.
  3. : p(x). , : -, KL(H, H_new), -, .. post-norm fusion ( https://arxiv.org/pdf/1809.00125.pdf ), p(x) non conditional LM , .
  4. .

, p(a|x).



, - topic relevance. : (GPT2) < + << < + .





8. Deep Salience Representation for F0 Estimation in Polyphonic Music


: Rachel M. Bittner, Brian McFee, Justin Salamon, Peter Li, Juan Pablo Bello ( New York University, USA, 2017)

: ( nglaz)


. , . , – . , - . constant-Q , ( ) .



. constant-Q - f_min - F. f_min f_min * h, , , . h {0.5, 1, 2, 3, 4, 5}, . , 3- , 2- 3- (, , ). , , , , (0.5f, f, 2f, 3f, 4f, 5f), . ( 55) . , , dilated-.


, , constant-Q F, .


F0 estimation, , . 2017 , , state-of-the-art. , .


9. Analyzing and Improving the Image Quality of StyleGAN


: Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila (NVIDIA, 2019)

: ( shiron8bit)


GAN- , , . , , , , ( FID) :


  • droplet-like ( / ), AdaIN.
  • , ProGAN- / end-to-end MSG-GAN. , /, .
  • Path Length Regularization.
  • : W, , stylegan2.




Artefatos de gotículas e AdaIN
Os autores do artigo apresentam o seguinte argumento contra o uso da camada AdaIN: o adain normaliza cada mapa de recursos, destruindo informações sobre os valores de magnitude relativos entre si e droplet é uma tentativa do gerador de empurrar essas informações de uma maneira diferente. Como opção para enfraquecer o AdaIN, foi proposto o seguinte: faremos todo o dimensionamento (modulação / desmodulação) diretamente na convolução, com base no estilo proveniente do bloco A e no deslocamento do sinal de saída (em vez de mu (y) / y_ {b, i} no AdaIN) deixe o bloco B transformar o ruído. Essa inovação, ao mesmo tempo, permitiu acelerar o treinamento nas mesmas condições.


Falha no ProGAN
No artigo sobre MSG-GAN, foi proposto o uso de conexões puladas, conectando blocos geradores correspondentes e blocos discriminadores por resolução. Os autores da Stylegan desenvolveram essa idéia resumindo as saídas dos blocos geradores de todas as resoluções (com upsampling) e alimentando a versão downsampled correspondente da imagem na entrada de cada bloco discriminador. Sugeriu-se que blocos residuais fossem usados ​​como segunda opção, enquanto as conexões puladas no gerador e blocos residuais no discriminador apresentaram os melhores resultados (o discriminador é semelhante ao LAPGAN, mas sem discriminadores para cada resolução, os mapas de recursos são encaminhados ainda mais). como no caso do ProGAN, nas iterações iniciais, as partes da grade responsáveis ​​por resoluções mais baixas e o quadro geral dão uma contribuição maior e, em seguida, a ênfase é transferida para pequenos detalhes.


Regularização do comprimento do caminho
Observando que os baixos valores de FID nem sempre fornecem imagens de alta qualidade, e também observando uma correlação entre a qualidade da imagem e a métrica PPL (Perceptual Path Length - inicialmente a diferença entre os recursos vgg das imagens com pequenos passos em Z, mas a diferença foi substituída pelo LPIPS), os autores propuseram o Path Regularização de comprimento, para minimizar a funcionalidade

JwTy= nablaw(g(w)y)


onde g é o próprio gerador, J_w é o jacobiano em variáveis ​​de espaço latente. Ao mesmo tempo, os cálculos jacobianos podem ser feitos por meio de backprop, e também é dito que, para facilitar os cálculos, o regularizador pode ser contado apenas para cada 16 lotes. O número a é calculado como a média móvel exponencial da norma jacobiana. O uso da Regularização de Comprimento do Caminho permite uma interpolação mais 'suave' do espaço oculto W, que, além de melhorar a qualidade da imagem, pode melhorar a reversibilidade (ou seja, encontrar w que fornece uma determinada imagem após a execução no gerador) e também abre perspectivas em termos de animação e interpolação entre quadros-chave (na nova arquitetura, entre projeções de imagens semelhantes, deve haver pontos responsáveis ​​por imagens próximas I). A introdução dessa regularização também desempenhou um papel na simplificação da detecção de imagens geradas por essa arquitetura.

O tempo de treinamento para 8 GPUs com uma resolução de 1024 * 1024 foi de 2 a 9 dias para diferentes configurações.

Source: https://habr.com/ru/post/pt485122/


All Articles