Redes Neurais, Manifolds e Topologia

http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/
Postado em 6 de abril de 2014
topologia, redes neurais, aprendizagem profunda, múltiplas hipóteses

Recentemente, tem havido muita emoção e interesse em redes neurais profundas porque alcançaram resultados inovadores em áreas como a visão por computador.1
No entanto, ainda há uma série de preocupações sobre elas. Uma delas é que pode ser bastante desafiador entender o que realmente faz uma rede neural. Se a treinar bem, consegue resultados de alta qualidade, mas é um desafio entender como está a fazer isso. Se a rede falhar, é difícil entender o que deu errado.
Embora seja um desafio compreender o comportamento das redes neurais profundas em geral, é muito mais fácil explorar as redes neurais de baixa dimensão – redes que só possuem alguns neurônios em cada camada. Na verdade, podemos criar visualizações para entender completamente o comportamento e treinamento de tais redes. Essa perspectiva nos permitirá adotar uma intuição mais profunda sobre o comportamento das redes neurais e observar uma conexão que liga as redes neurais a uma área de matemática chamada topologia.
Seguem-se algumas coisas interessantes, incluindo limites inferiores fundamentais sobre a complexidade de uma rede neural capaz de classificar determinados conjuntos de dados.

Um Exemplo Simples
Vamos começar com um conjunto de dados muito simples, duas curvas em um plano. A rede aprenderá a classificar os pontos como pertencendo a um ou outro.

A maneira óbvia de visualizar o comportamento de uma rede neural – ou qualquer algoritmo de classificação, para esse assunto – é simplesmente ver como ele classifica todos os pontos de dados possíveis.
Começaremos com a classe mais simples possível de rede neural, uma com apenas uma camada de entrada e uma camada de saída. Essa rede simplesmente tenta separar as duas classes de dados dividindo-as com uma linha.

Esse tipo de rede não é muito interessante. As redes neurais modernas geralmente possuem múltiplas camadas entre as suas entradas e saídas, chamadas camadas “ocultas”. No mínimo, têm uma.

Diagrama de uma rede simples da Wikipedia
Como antes, podemos visualizar o comportamento desta rede, observando o que faz com pontos diferentes no seu domínio. Ele separa os dados com uma curva mais complicada em vez que uma linha.

Com cada camada, a rede transforma os dados, criando uma nova representação.2 Podemos observar os dados em cada uma dessas representações e como a rede as classifica. Quando chegamos à representação final, a rede apenas desenhará uma linha através dos dados (ou, em dimensões superiores, um hiperavião).
Na visualização anterior, analisamos os dados na sua representação “bruta”. Você pode pensar nisso enquanto estamos a olhar para a camada de entrada. Agora vamos olhar para isso depois que ele é transformado pela primeira camada. Você pode pensar nisso enquanto estamos a olhar para a camada oculta.
Cada dimensão corresponde ao disparo de um neurônio na camada.

A camada oculta aprende uma representação para que os dados sejam linearmente separáveis

Visualização contínua de camadas
Na abordagem descrita na seção anterior, aprendemos a entender as redes, observando a representação correspondente a cada camada. Isso nos dá uma lista discreta de representações.
A parte complicada é entender como nós vamos de uma para outra. Felizmente, as camadas da rede neural possuem propriedades agradáveis que tornam isso muito fácil.
Há uma variedade de diferentes tipos de camadas usadas em redes neurais. Vamos falar sobre camadas tanh para um exemplo concreto. Uma camada tanh: Tanh (Wx + b) tanh⁡ (Wx + b) consiste em:
1. Uma transformação linear pela matriz “peso” WW
2. Uma tradução pelo vetor bb
3. Aplicação pontual de tanh.
Podemos visualizar isso como uma transformação contínua, da seguinte forma:

A história é muito parecida com outras camadas padrão, consistindo em uma transformação afim seguida pela aplicação de uma função de ativação monótona.
Podemos aplicar esta técnica para entender as redes mais complicadas. Por exemplo, a rede a seguir classifica duas espirais ligeiramente enredadas, usando quatro camadas ocultas. Ao longo do tempo, podemos vê-la mudar da representação “bruta” para os de nível superior que aprendeu para classificar os dados. Enquanto as espirais estão originalmente enredadas, no final, elas estão linearmente separáveis.
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/img/spiral.1-2.2-2-2-2-2-2.gif
Por outro lado, a seguinte rede, também usando múltiplas camadas, não classifica duas espirais que estão mais enredadas.
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/img/spiral.2.2-2-2-2-2-2-2.gif
Vale ressaltar explicitamente que essas tarefas são apenas um pouco desafiadoras porque estamos a usar redes neurais de baixa dimensão. Se estivéssemos a usar redes mais amplas, tudo isso seria bastante fácil.
(Andrej Karpathy fez uma boa demonstração baseada no ConvnetJS que permite explorar interativamente as redes com esse tipo de visualização de treinamento!)

Topologia de camadas de tanh
Cada camada estende e espalha o espaço, mas nunca corta, quebra ou dobra. Intuitivamente, podemos ver que preserva as propriedades topológicas. Por exemplo, um conjunto irá ser conectado posteriormente se estivesse antes (e vice-versa).
Transformações como essa, que não afetam a topologia, têm o nome de homeomorfismos. Formalmente, são bijecções que são funções contínuas nas duas formas.
Teorema: as camadas com entradas NN e saídas NN são homeomorfismos, se a matriz de peso, WW, não é singular. (Embora seja preciso ter cuidado com o domínio e o alcance).
Prova: considere este passo a passo:
1. Vamos assumir que a WW possui um determinante não-zero. Então, é uma função linear bijectiva com um inverso linear. As funções lineares são contínuas. Então, multiplicar pela WW é um homeomorfismo.
2. Traduções são homeomorfismos
3. Tanh (e sigmoid e softplus mas não ReLU) são funções contínuas com inversos contínuos. São bijecções se tivermos cuidado com o domínio e alcance que consideramos. Aplicar-lhes o ponto é um homeomorfismo
Assim, se WW tem um determinante não-zero, a nossa camada é um homeomorfismo.
Este resultado continua a manter-se se compormos arbitrariamente muitas dessas camadas em conjunto.

Topologia e classificação
AA é vermelho, o BB é azul
Considere um conjunto de dados bidimensional com duas classes A, B, ⊂, R2:

A = {x | d (x, 0) <1/3}
B = {x | 2/3

Reivindicação: é impossível para uma rede neural classificar este conjunto de dados sem ter uma camada que tenha 3 ou mais unidades ocultas, independentemente da profundidade.
Conforme mencionado anteriormente, a classificação com uma unidade sigmoid ou uma camada softmax equivale a tentar encontrar um hiperplano (ou, neste caso, uma linha) que separe AA e BB na representação final. Com apenas duas unidades ocultas, uma rede é topologicamente incapaz de separar os dados desta maneira e condenada a falhas neste conjunto de dados.
Na visualização a seguir, observamos uma representação oculta enquanto uma rede treina, juntamente com a linha de classificação. Enquanto observamos, lutas e solapas a tentar aprender uma maneira de fazer isso.
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/img/topology_2D-2D_train.gif
Para esta rede, o trabalho árduo não é suficiente.
No final, isso é puxado para um mínimo local improdutivo. Embora, na verdade, seja capaz de atingir uma precisão de classificação de ~80% ~80%.
Este exemplo tinha apenas uma camada oculta, mas falharia independentemente.
Prova: Ou cada camada é um homeomorfismo, ou a matriz de peso da camada tem determinante 0. Se for um homemorfismo, AA ainda está rodeado por BB e uma linha não pode separá-los. Mas suponha que tenha um determinante de 0: então o conjunto de dados fica desmoronado em algum eixo. Uma vez que estamos a lidar com algo homeomórfico com o conjunto de dados original, o AA é cercado pelo BB, e colapsar em qualquer eixo significa que teremos alguns pontos de mistura de AA e BB e tornar-se-á impossível distinguir entre eles.
Se nós adicionamos uma terceira unidade escondida, o problema torna-se trivial. A rede neural aprende a seguinte representação:

Com esta representação, podemos separar os conjuntos de dados com um hiperplano.
Para ter uma melhor noção do que está acontecendo, consideremos um conjunto de dados ainda mais simples que é 1-dimensional:

A = [- 1 / 3,1 / 3] B = [- 1, -2 / 3] ∪ [2 / 3,1]

Sem usar uma camada de duas ou mais unidades ocultas, não podemos classificar este conjunto de dados. Mas se usarmos uma com duas unidades, aprendemos a representar os dados como uma curva agradável que nos permite separar as classes com uma linha:
http://colah.github.io/posts/2014-03-NN-Manifolds-Topology/img/topology_1D-2D_train.gif
O que está a acontecer? Uma unidade escondida aprende a disparar quando x>-12x>-12 e uma aprende a disparar quando x>12x>12. Quando o primeiro dispara, mas o segundo não, sabemos que estamos em A.

A Hipótese do Cofre
Isso é relevante para conjuntos de dados do mundo real, como dados de imagem? Se você tomar a hipótese múltipla muito a sério, acho que isso tem consideração.
A hipótese múltipla é que os dados naturais formam colectores de dimensão inferior no seu espaço de incorporação. Há dois motivos teóricos3 e experimentais4 para acreditar que isso seja verdade. Se você acredita nisso, a tarefa de um algoritmo de classificação é fundamentalmente para separar um grupo de colectores emaranhados.
Nos exemplos anteriores, uma classe cercou completamente outra. No entanto, não parece muito provável que o colector de imagens do cão esteja completamente rodeado pelo colector de imagens do gato. Mas existem outras situações topológicas mais plausíveis que ainda podem representar um problema, como veremos na próxima seção.
Links e Homotopia
Outro conjunto interessante de dados a considerar é dois tori ligados, A e B.

Muito parecido com os conjuntos de dados anteriores que consideramos, este conjunto de dados não pode ser separado sem usar n+1n+1 dimensões, ou seja, uma 44ª dimensão.
Os links são estudados na teoria do nó, uma área de topologia. Às vezes, quando vemos um link, não é imediatamente óbvio se é um desligamento (um monte de coisas que estão emaranhadas, mas podem ser separadas por deformação contínua) ou não.

Um desvinculamento relativamente simples.
Se uma rede neural usando camadas com apenas 3 unidades pode classificá-la, é uma desvinculação. (Pergunta: Todos os desligamentos podem ser classificados por uma rede com apenas 3 unidades, teoricamente?)
A partir desta perspectiva de nó, a nossa visualização contínua das representações produzidas por uma rede neural não é apenas uma boa animação, é um procedimento para desenredar links. Na topologia, chamaríamos de uma isotopia ambiente entre o link original e os separados.
Formalmente, uma isotopia ambiente entre os colectores A e B é uma função contínua F:[0,1]×X→Y tal que cada Ft é um homeomorfismo de X para o seu alcance, F0 é a função de identidade e os mapas F1 A a B . Isto é, Ft transita continuamente do mapeamento de A para ele próprio para mapear A para B.
Teorema: existe uma isotopia ambiente entre a entrada e a representação da camada de rede se: a) WW não é singular, b) estamos dispostos a permutar os neurônios na camada oculta e c) há mais de uma unidade escondida.

Prova: novamente, consideramos cada etapa da rede individualmente:
1. A parte mais difícil é a transformação linear. Para que isso seja possível, precisamos da WW para ter um determinante positivo. A nossa premissa é que não é zero, e podemos inverter o sinal se for negativo ao alternar dois neurônios escondidos, e assim podemos garantir que o determinante seja positivo. O espaço das matrizes determinantes positivas está conectado ao caminho, portanto existe p:[0,1]→GLn(R)5, de modo que p(0)=Idp (0) e p(1)=W . Podemos transitar continuamente da função de identidade para a transformação de WW com a função x→p(t)x, multiplicando x em cada ponto no tempo t pela matriz de transição contínua p(t).
2. Podemos transitar continuamente da função de identidade para a tradução b com a função x → x + tb.
3. Podemos transitar continuamente da função de identidade para o uso pontual de σ com a função: x → (1-t) x + tσ (x).

Eu imagino que provavelmente há interesse em programas que descobrem automaticamente essas isotopias ambientais e provar automaticamente a equivalência de determinados links ou que determinados links são separáveis. Seria interessante saber se as redes neurais podem vencer qualquer que seja o estado da arte.
(Aparentemente, determinar se os nós são triviais é NP. Isso não é bom para as redes neurais.)
O tipo de links que falamos até agora não parece provável que se tornem em dados do mundo real, mas existem generalizações dimensionais mais elevadas. Parece plausível que tais coisas possam existir em dados do mundo real.
Links e nós são colectores 11-dimensional, mas precisamos de 4 dimensões para poder desembaraçar todos eles. Da mesma forma, pode-se precisar de espaço dimensional ainda maior para ser capaz de desatar manifolds n-dimensionais. Todos os colectores n-dimensionais podem ser desenredados em 2n+2 dimensões.6
(Eu sei muito pouco sobre a teoria do nó e realmente preciso saber mais sobre o que se conhecce em relação à dimensionalidade e aos links. Se sabemos que um colector pode ser incorporado no espaço n-dimensional, em vez da dimensionalidade do colector, qual é o limite que nós temos?)

A forma fácil de saír
A coisa natural para uma rede neural, o caminho muito fácil, é tentar separar os colectores nativamente e esticar as peças que estão emaranhadas o mais fino possível. Embora isso não esteja em qualquer lugar perto de uma solução genuína, pode atingir uma precisão de classificação relativamente alta e ser um mínimo local tentador.

Ele se apresentaria como derivadas muito altas nas regiões que está a tentar esticar e dar forma a descontinuidades próximas. Sabemos que estas coisas acontecem.7 As penalidades contratuais, penalizando os derivados das camadas nos pontos de dados, são a maneira natural de lutar contra isso.
Uma vez que esse tipo de mínimos locais são absolutamente inúteis na perspectiva de tentar resolver problemas topológicos, os problemas topológicos podem proporcionar uma ótima motivação para explorar a luta contra essas questões.
Por outro lado, se nos preocuparmos com a obtenção de bons resultados de classificação, parece que não nos importamos. Se um pequeno fragmento do coletor de dados está enganchado a outro colector, isso é um problema para nós? Parece que devemos ser capazes de obter resultados de classificação arbitrariamente bons, apesar desta questão.
(A minha intuição é que tentar enganar o problema, como esta, é uma má ideia: é difícil imaginar que não seja um fim sem saída. Em particular, num problema de otimização onde os mínimos locais são um grande problema, escolher uma arquitetura que não pode realmente resolver o problema parece uma receita para o mau desempenho.)

Melhores camadas para manipular os colectores?
Quanto mais penso sobre as camadas normais da rede neural – ou seja, com uma transformação afim seguida por uma função de ativação pontual – mais desencantada eu me sinto. É difícil imaginar que estes sejam realmente muito bons para manipular colectores.
Talvez seja sensato ter um tipo de camada muito diferente que possamos usar em composição com os mais tradicionais?
O que parece natural para mim é aprender um campo vetorial com a direção que queremos mudar o colector:

E depois deformar o espaço com base nisso:

Pode-se aprender o campo vetorial em pontos fixos (basta tirar alguns pontos fixos do conjunto de treinamento para usar como âncoras) e interpolar de alguma forma. O campo vetorial acima é da forma:

Onde v0 e v1 são vetores e f0(x) e f1(x) são gaussianos n-dimensionais. Isso está inspirado um pouco por funções de base radial.

K-Caminhos vizinhos mais próximos
Eu também comecei a pensar que a separabilidade linear pode ser uma quantidade enorme e possivelmente irracional da demanda de uma rede neural. De certa forma, parece que a coisa natural a fazer seria usar k-vizinhos mais próximos (k-NN). No entanto, o sucesso do k-NN é muito dependente da representação de que classifica dados, então é preciso uma boa representação antes que o k-NN possa funcionar bem.
Como um primeiro experimento, treinei algumas redes MNIST (redes convolutivas de duas camadas, sem abandono) que alcançaram um erro de teste de ~1%. Eu então deixei cair a camada final de softmax e usei o algoritmo k-NN. Consegui alcançar consistentemente uma redução no erro de teste de 0.1-0.2%.
Ainda assim, isso não parece bem a coisa certa. A rede ainda está a tentar fazer classificação linear, mas desde que usamos o k-NN no tempo de teste, é capaz de recuperar um pouco dos erros cometidos.
k-NN é diferenciável em relação à representação em que está atuando, devido à pontuação de 1/distância. Como tal, podemos treinar uma rede diretamente para a classificação k-NN. Isso pode ser pensado como uma espécie de camada “vizinha mais próxima” que atua como uma alternativa para softmax.
Nós não queremos alimentar o nosso conjunto de treinamento completo para cada mini-lote, porque isso seria muito computacionalmente caro. Eu acho que uma boa abordagem é classificar cada elemento do mini-lote com base nas classes de outros elementos do mini-lote, dando a cada um um peso de 1/(distância do alvo de classificação).9
Infelizmente, mesmo com uma arquitetura sofisticada, o uso de k-NN apenas reduz o erro de teste de 5-4% e usar arquiteturas mais simples obtém resultados piores. No entanto, coloquei muito pouco esforço em jogar com hiper-parâmetros.
Ainda assim, eu realmente gosto esteticamente dessa abordagem, porque parece que o que estamos a “pedir” que a rede faça é muito mais razoável. Queremos que os pontos do mesmo colector estejam mais próximos do que os pontos dos outros, em oposição aos colectores sendo separáveis por um hiperplano. Isso deve corresponder a inflar o espaço entre colectores para diferentes categorias e contrair os colectores individuais. Parece como simplificação.

Conclusão
As propriedades topológicas dos dados, como os links, podem tornar impossível separar linearmente as classes usando redes de baixa dimensão, independentemente da profundidade. Mesmo nos casos em que seja tecnicamente possível, como as espirais, pode ser muito desafiador fazê-lo.
Para classificar com precisão dados com redes neurais, algumas vezes são necessárias camadas amplas. Além disso, as camadas de rede neural tradicionais não parecem ser muito boas em representar manipulações importantes de múltiplas variedades; mesmo que tenhamos habilmente configurado pesos à mão, seria desafiador representar de forma compacta as transformações que queremos. As novas camadas, especificamente motivadas pela múltipla perspectiva da aprendizagem em máquina, podem ser suplementos úteis.
(Este é um projeto de pesquisa em desenvolvimento. Esta publicado como uma experiência em fazer pesquisas abertamente. Eu ficaria encantado de ter seus comentários sobre essas idéias: você pode comentar entre linhas ou no final. Por erros de digitação, erros técnicos ou esclarecimentos que você gostaria ver adicionado, você é incentivado a fazer uma petição de puxar no github.)

Reconhecimentos
Obrigado a Yoshua Bengio, Michael Nielsen, Dario Amodei, Eliana Lorch, Jacob Steinhardt e Tamsyn Waterhouse pelos seus comentários e encorajamentos.
1. Isso parece ter realmente começado com Krizhevsky et al., (2012), que reuniram muitas peças diferentes para obter resultados excelentes. Desde então, tem havido um monte de outros trabalhos interessantes.
2. Essas representações, com sorte, tornam os dados “mais agradáveis” para a rede classificar. Houve um monte de trabalho explorando representações recentemente. Talvez o mais fascinante tenha sido no Processamento da Linguagem Natural: as representações que aprendemos com palavras, as incorporações de palavras conhecidas, têm propriedades interessantes. Ver Mikolov et al. (2013), Turian et al. (2010), e o trabalho de Richard Socher. Para lhe dar um sabor rápido, há uma visualização muito agradável associada ao papel Turian.
3. Muitas das transformações naturais que você pode querer executar em uma imagem, como traduzir ou escalar um objeto nele, ou alterar a iluminação, formariam curvas contínuas no espaço de imagem se você as realizasse continuamente.
4. Carlsson et al. descobriu que os patches locais de imagens formam uma garrafa de klein.
5. GLn(R)GLn(R) é o conjunto de matrizes inversíveis n×nn×n nos reais, formalmente denominado grupo linear geral de grau nn.↩
6. Este resultado é mencionado na subseção da Wikipedia nas versões da Isotopy.
7. Veja Szegedy et al., onde eles são capazes de modificar as amostras de dados e encontrar pequenas modificações que fazem com que algumas das melhores redes neurais de classificação de imagens clasifiquem de maneira errada os dados. É bastante preocupante.
8. Foram introduzidas sanções contratuais nos autoencodeders contrativos. Veja Rifai et al. (2011) .↩
9. Utilizei um algoritmo um pouco menos elegante, mas bastante equivalente, porque era mais prático implementar em Theano: feedforward dois lotes diferentes ao mesmo tempo, e classificá-los baseados um pelo outro.

Construído por Oinkina com Hakyll usando Bootstrap, MathJax, Disqus, MathBox.js, Highlight.js e Footnotes.js.

Sobre o autor

Sara Filipa

Comentar

Posts recentes

Comentários

Arquivos

Categorias

Meta