Tutorial de Normalização de Fluxos - Parte 1

 

0. Antecedentes

0.0 Conte a história

Você é um praticante de aprendizado de máquina, está estudando coisas difíceis, como modelos de produção, aprendizado profundo bayesiano, aprendizado profundo por reforço etc., e as ferramentas que você está usando são ampliadas. Hoje trarei uma coisa legal: fluxo padronizado, acredite, ele armará sua caixa de ferramentas de algoritmo e o levará para voar. O fluxo padronizado pode transformar a forma simples de densidade de probabilidade (como a distribuição gaussiana) em algum tipo de forma de alta distribuição. Pode ser usado em modelos de produção, aprendizado por reforço, inferência variacional e similares. Quanto à implementação, o Tensorflow possui uma boa classe de funções que podem criar fluxos padronizados e treiná-los em bancos de dados reais.
Este tutorial está dividido em duas partes:

  • Parte 1: Distribuição e determinante . Explicarei qual é a transformação reversível da distribuição de probabilidade, como essa técnica é usada no ajuste de distribuições de probabilidade complexas e como essas transformações são conectadas para se tornar um "fluxo" padronizado.
  • Parte 2: Moderna tecnologia de streaming padronizada . Investigarei como os pesquisadores desenvolveram essa tecnologia recentemente e a utilizarei para explicar um modelo de produção familiar - modelos autoregressivos (modelos autoregressivos), MAF, IAV, NICE, Real-NVP, rede de ondas paralelas (Parallel-Wavenet) -Eles estão relacionados um com o outro.

Se você já tem conhecimento de álgebra linear, teoria das probabilidades, redes neurais e fluxo de tensão, pode entrar no trem! É mais confiável conhecer um pouco dos últimos desenvolvimentos em modelos de aprendizado profundo e modelos de produção. Não importa muito se você não souber.

0.1 Aprendizado Estatístico de Máquinas

O aprendizado de máquina estatística visa aprender a distribuição de parâmetros para revelar a estrutura dos dados. A partir disso, você poderá atingir os quatro objetivos a seguir:
1. Amostrar a estrutura para gerar dados . Dessa forma, o processo completo de geração é salvo e, se o processo completo for complicado, as economias são enormes [1]. Da mesma forma, a dimensionalidade dos dados reais é alta e os resultados de baixa dimensão após a amostragem podem ser usados ​​para salvar o cálculo.
2. Avalie a probabilidade de probabilidade dos dados de teste . Útil ao rejeitar amostras ou avaliar modelos. [Nota do tradutor: você entenderá isso quando vir mais tarde. ]
3. Obtenha a dependência condicional entre variáveis . Se pode ser usado para distinguir ou retornar. [Nota do tradutor: esta corresponde à anterior, uma é a estimativa de probabilidade incondicional e a outra é a estimativa de probabilidade condicional. ]
4. Algoritmo de julgamento . Indicadores como entropia, informações mútuas, momentos de ordem superior etc. podem ser tentados.

Os quatro primeiros estudos são os mais abrangentes. Imagens e sons sintetizados estão disponíveis comercialmente no Google. Mas o segundo três ou quatro, muito pouca pesquisa. Para citar apenas alguns exemplos, decodificadores GAN, conjuntos de suporte (mapeados para variáveis ​​independentes diferentes de zero) não estão disponíveis; modelos DRAW e até modelos VAE , densidade de probabilidade não está disponível; mesmo que uma distribuição tenha sido compreendida analiticamente, medidas analíticas (como KL Distância, distância do motor terra) ainda não está disponível. [Nota do tradutor: O ponto simples desta frase é: o modelo de produção profunda não é fácil ou mesmo impossível de testar e medir]

Mesmo se você puder sintetizar uma amostra próxima dos dados reais, ainda estará longe do objetivo! Queremos saber até que ponto eles estão "próximos aos dados reais" [2], queremos obter uma densidade condicional flexível (como regras complexas no aprendizado por reforço) e queremos ter uma distribuição a priori e a posteriori em uma grande família Faça inferência variacional!

0.2 Distribuição Gaussiana

Você pensa sobre isso por um momento e pensa em sua distribuição gaussiana de "camarada de armas" . Quando você está sobrecarregado com a complexidade da teoria da distribuição de probabilidade, é muito difícil se livrar da neve : amostragem fácil, densidade de análise conhecida, cálculo fácil da distância KL e garantia do teorema do limite central - todos os dados grandes estão próximos de Gauss. Distribuição, então quase tudo que você usa está certo! Para não mencionar as habilidades de parametrização, você também pode voltar gradiente. Essas propriedades fáceis de usar destacam as distribuições gaussianas nos modelos de produção e no aprendizado por reforço.

Mas não fique muito feliz! Muitas cenas reais, ainda não podemos usá-lo. No aprendizado por reforço, geralmente há cenas de controle contínuo da máquina.As regras de controle devem ser gaussianas multivariadas, matriz de variância diagonal (gaussianas motivadas com matrizes de covariância diagonal).

Por outro lado, está faltando o uso apenas do modelo de distribuição Gaussiano uni-modal, quando é necessária amostragem de distribuição multimodal. Para dar um exemplo, se você quiser que o robô contorne o lago e chegue à casa atrás do lago, a regra é escolher um dos dois: esquerdo ou direito O modelo gaussiano de modo único não pode acomodar duas regras, portanto as neutraliza linearmente: diretamente em direção ao centro do lago. Que bagunça!

A distribuição gaussiana é muito simples. Ele não pode tolerar suposições opostas; a distribuição não está concentrada o suficiente em situações de alta dimensão e há efeitos de borda ; não pode lidar com coisas raras . Existe um modelo de distribuição melhor que possa atender às seguintes condições?

1. Complexa o suficiente para acomodar vários modos, como imagens e funções de pontuação no aprendizado por reforço
2. Simples o suficiente para amostrar, estimar a densidade e reparameterizar.

A resposta é: sim! Você pode fazer essas poucas coisas.

0.3 Você precisa desta distribuição

Os métodos a seguir podem ajudá-lo a atingir suas necessidades:
1. Fusão de modelo . Um modelo lida com uma subtarefa.
2. Com base no presente . Considere apenas um passo de cada vez, permitindo que escolhas complexas degenerem nesse momento, deixando apenas um fim.
3. O modelo gráfico não direccional (modelos gráficos undirected).
4. Fluxo padronizado . Você obterá um modelo ideal: volume de transformação de distribuição reversível e computável, fácil de simular.

O fluxo padronizado é descrito abaixo.

1. Altere a variável independente, altere o volume

Para estabelecer a intuitividade, exemplos são os seguintes. Seja X distribuído uniformemente . Y é a transformação afim de X. Como mostrado abaixo.


Os dois quadrados representam as funções de distribuição p (x) ep (y) da probabilidade no domínio do número real, e o valor da função representa o valor da densidade de probabilidade. A integral do valor da probabilidade deve ser igual a 1, como é o caso de qualquer distribuição. Portanto, depois que o intervalo de variação variável independente for dobrado, o valor da função será reduzido pela metade de acordo, de modo que ambas as áreas sejam iguais a 1. 】
Se você considerar a mudança mínima em X, Y também mudará de acordo, conforme mostrado abaixo:


O gráfico na metade esquerda representa uma função local crescente () e à direita é uma função local decrescente (). p (x) porque a mudança local causada por dx deve ser igual à mudança local de p (y) com dy:

para manter a mudança de probabilidade, nos preocupamos apenas com a quantidade de mudança, não com a direção da mudança. (Na verdade, não importa se f (x) aumenta ou diminui com a mudança de x, isso não tem efeito, assumimos que y também faz as alterações correspondentes.) Então, temos Observe que no espaço do log, isso é equivalente a. A computação no espaço de log é propícia para garantir a confiabilidade do cálculo. [Observe que há mais uma coisa aqui! ]
Agora, considere um exemplo multivariada. Considere primeiro a situação de duas variáveis. Como no caso acima, escalando o infinitesimal no domínio de definição, obtemos um pequeno quadrado bidimensional com o comprimento lateral dx.
Rotule o vértice desse pequeno quadrado. Agora, nos preocupamos apenas com a taxa de variação de dx em relação ao quadrado com comprimento lateral 1. Vamos supor que esse pequeno quadrado seja um quadrado na origem com comprimento lateral 1, então o vértice é.
Multiplicado pela matriz, nosso quadrado se tornará um paralelogramo, como mostrado abaixo. (0,0) ainda estava em (0,0), (1,0) veio para (a, b), foi enviado para, chegou.

 

 


Assim, um quadrado com um comprimento lateral de 1 no domínio X é transformado em um paralelogramo no domínio Y, e o tamanho se torna. A área deste paralelogramo é exatamente o determinante da matriz de conversão!
No caso tridimensional, "converter em quatro deformações paralelas" corresponde a "converter em hexaedro paralelo" ou, no caso de dimensões mais altas, e assim por diante, "converter em corpo n-dimensional paralelo". O mesmo se aplica ao determinante.O volume após a transformação linear corresponde ao determinante da matriz de transformação.
E se a função de transferência f for não linear? Você não deve pensar nisso simplesmente como um corpo paralelo simples em todo o espaço, mas para cada ponto no espaço, correspondendo a um corpo paralelo infinitesimal. Matematicamente, a mudança de volume correspondente à transformação linear local é, aqui representa o inverso da matriz jacobiana - uma variante de alta dimensão. Então,



ele aprendeu o determinante no ensino médio, não entendeu a definição do determinante e só conhecia o método de cálculo. Depois de conhecer a verdade, sufocamento sem palavras: o determinante é a taxa de variação de volume da conversão linear local.

2. Tensorflow realiza distribuição de conversão

O Tensorflow possui uma API elegante para implementar a conversão distribuída. Uma distribuição transformada é determinada exclusivamente pelos dois seguintes: 1. A distribuição básica, que é a distribuição que queremos transformar; 2. Uma função bijetiva, composta de três partes: 1) Mapeamento direto , mapeamento f, do espaço real d-dimensional Para o espaço real tridimensional; 2) mapeamento reverso ; 3) o determinante logarítmico inverso da matriz jacobiana de jacobiana (doravante denominado ILDJ).
Sob o contrato acima, é fácil implementar a amostragem direta:

bijector.forward (base_dist.sample ())

Para avaliar a densidade de log da distribuição transformada, você só precisa:

distribuição.log_prob (bijector.inverse (x)) + bijector.inverse_log_det_jacobian (x)

[ Nota do tradutor: a fórmula na seção anterior] Indo
além, se bijector.forward for uma função diferenciável, Y = bijector.forward (x) poderá ser parametrizado pela distribuição de x : x = base_distribution.sample () . Isso significa que o fluxo padronizado pode ser usado na inferência de variação do VAE, alterando a versão original da distribuição gaussiana para a forma que você precisa. [Nota do tradutor: É aqui que acho que o modelo é o mais poderoso. ]
Aqui estão algumas distribuições Tensorflow comumente usadas e sua implementação é realmente através dos seguintes canais:

Distribuição básica Função bijetiva Distribuição transformada
Distribuição normal matemática? fórmula = exp (x)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadexp (x) Distribuição Lognormal
math? formula = exp (taxa% 3D1)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadexp (taxa = 1) math? formula = -log (x)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo upload-log (x) math? formula = Gumbel (0% 2C1)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadGumbel (0,1)
math? formula = Gumbel (0% 2C1)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadGumbel (0,1) math? formula = Softmax (x)uploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadSoftmax (x) math? formula = Gumbel-Softmax% 20% 2F% 20Concretouploading.4e448015.gifTransferência mal sucedida e cancelamento de novo uploadGumbel-Softmax / concreto

Da convenção é chamado, a distribuição do convertido é chamado de distribuição subjacente da função de mapeamento bijective inversa (Bijector ^ -1BaseDistribution) [Nota do tradutor: Eu não sei a tradução padrão ┓ ( '∀`) ┏], de modo que o índice A distribuição normal após a bijeção (ExpBijector) é uma distribuição lognormal. Obviamente, há exceções a essa regra de nomenclatura.A distribuição Gumbel-Softmax é denominada distribuição unitária de categoria relaxada por restrição (RelaxedOneHotCategorical) , que mapeia uma distribuição Gumbel através da função Softmax.

3. Fluxo padronizado

Parar de usar um tiro duplo? Pare de mãos não para de mãos, esta vida não para de mãos. Você pode conectar uma série de disparos duplos e amarrá-los como uma corrente em uma rede neural [3]. Essa estrutura é chamada "fluxo padronizado". Se a função de bijeção tiver parâmetros variáveis em bijector.log_prob , você poderá otimizar esse parâmetro e a bijeção poderá transformar a distribuição básica em uma distribuição arbitrária. Cada função bijetiva pode ser escrita como uma camada de rede e você pode usar um otimizador para aprender os parâmetros e finalmente ajustar os dados reais. O algoritmo usa a estimativa de probabilidade máxima para transformar o problema de distribuição do ajuste de dados reais em um problema de densidade de log da probabilidade após a transformação do ajuste. O motivo para usar a densidade do log é a estabilidade do cálculo .
Este slide foi retirado dos discursos de Shakir Mohamed e Danilo Rezende na UWA :

image.png


No entanto, a complexidade do cálculo de uma matriz jacobiana é bastante cara para redes neurais. Há também um problema, é difícil aproximar o inverso de qualquer função. O foco da recente pesquisa de fluxo padronizada tem sido aproveitar a computação paralela da GPU e projetar funções bijetivas expressivas, isto é, como calcular facilmente o ILDJ.
 

Publicado 469 artigos originais · elogiados 329 · 600.000 visualizações

Acho que você gosta

Origin blog.csdn.net/qq_32146369/article/details/105423488
Recomendado
Clasificación