Como entender a intuição geométrica do funcionamento interno das redes neurais?


8

Ultimamente, venho estudando a teoria por trás das RNAs e queria entender a 'mágica' por trás da capacidade de classificação não linear de várias classes. Isso me levou a este site, que faz um bom trabalho em explicar geometricamente como essa aproximação é alcançada.

Aqui está como eu entendi (em 3D): As camadas ocultas podem ser pensadas como saída de funções de etapa 3D (ou funções de torre) que se parecem com isso:

Função torre

O autor afirma que várias dessas torres podem ser usadas para aproximar funções arbitrárias, por exemplo:

insira a descrição da imagem aqui

Isso parece fazer sentido, no entanto, a construção do autor é bastante artificial para fornecer alguma intuição por trás do conceito.

No entanto, como exatamente isso pode ser validado, dada uma RNA arbitrária? Aqui está o que eu quero saber / entender:

  1. AFAIK a aproximação é uma aproximação suave, mas essa "intuição" parece fornecer uma aproximação discreta, está correto?
  2. O número de torres parece basear-se no número de camadas ocultas - as torres acima são criadas como resultado de duas camadas ocultas. Como posso verificar isso (com um exemplo em 3d) com apenas uma única camada oculta?
  3. n

Eu realmente gostaria de entender esse recurso de aproximação em 3D para qualquer função 3D arbitrária que uma RNA possa ser aproximada com uma única camada oculta - quero ver como essa aproximação parece formular uma intuição para várias dimensões?

Aqui está o que tenho em mente que acho que poderia ajudar:

  1. f(x1,x2)=x12+x22+3
  2. (x1,x2)
  3. Alimente esses dados a uma RNA e visualize a aproximação com uma camada oculta (com cerca de 2-6 neurônios).

Esta construção está correta? Isso funcionaria? Como faço para fazer isso? Ainda não sou adepto da propagação traseira para implementar isso sozinho e estou procurando mais clareza e orientação a esse respeito - exemplos existentes mostrando isso seriam ideais.


1
Há uma publicação realmente boa no blog sobre esse tópico aqui: colah.github.io/posts/2014-03-NN-Manifolds-Topology
Sycorax diz Reinstate Monica

@ user777 - Sim, esse foi o meu "outro" link junto com o do post e por algum motivo eu esqueci de listá-lo :)
PhD

Respostas:


8

Existem dois excelentes artigos recentes sobre algumas das propriedades geométricas de redes neurais profundas com não linearidades lineares por partes (que incluem a ativação da ReLU):

  1. Sobre o número de regiões lineares de redes neurais profundas de Montufar, Pascanu, Cho e Bengio.
  2. Sobre o número de regiões de resposta de redes de avanço profundo com ativações lineares por peça de Pascanu, Montufar e Bengio.

Eles fornecem alguma teoria e rigor extremamente necessários quando se trata de redes neurais.

Sua análise gira em torno da ideia de que:

redes profundas são capazes de separar seu espaço de entrada em regiões de resposta exponencialmente mais lineares do que suas contrapartes rasas, apesar de usar o mesmo número de unidades computacionais.

Assim, podemos interpretar redes neurais profundas com ativações lineares por partes como particionando o espaço de entrada em várias regiões e, sobre cada região, há uma hiper superfície superficial.

No gráfico que você referenciou, observe que as várias regiões (x, y) têm hipersuperfícies lineares sobre elas (aparentemente planos inclinados ou planos). Portanto, vemos a hipótese dos dois artigos acima em ação nos seus gráficos referenciados.

Além disso, afirmam (ênfase dos co-autores):

redes profundas são capazes de identificar um número exponencial de vizinhanças de entrada mapeando-as para uma saída comum de alguma camada oculta intermediária. Os cálculos realizados nas ativações dessa camada intermediária são replicados muitas vezes, uma vez em cada um dos bairros identificados. Isso permite que as redes calculem funções de aparência muito complexas, mesmo quando definidas com relativamente poucos parâmetros.

Basicamente, esse é o mecanismo que permite que redes profundas tenham representações de recursos incrivelmente robustas e diversas, apesar de terem um número menor de parâmetros do que suas contrapartes superficiais. Em particular, as redes neurais profundas podem aprender um número exponencial dessas regiões lineares. Tomemos, por exemplo, o Teorema 8 do primeiro artigo referenciado, que afirma:

eun0 0kkeu-1kn0 0

Isso é novamente para redes neurais profundas com ativações lineares por partes, como ReLUs, por exemplo. Se você usasse ativações do tipo sigmóide, teria hipersuperfícies sinusoidais mais suaves. Atualmente, muitos pesquisadores usam ReLUs ou alguma variação de ReLUs (ReLUs com vazamento, PReLUs, ELUs, RReLUs, a lista continua) porque sua estrutura linear por partes permite uma melhor retropropagação do gradiente em comparação com as unidades sigmoidais que podem saturar regiões assintóticas) e efetivamente matam gradientes.

Esse resultado de exponencialidade é crucial; caso contrário, a linearidade por partes pode não ser capaz de representar com eficiência os tipos de funções não lineares que devemos aprender quando se trata de visão computacional ou outras tarefas difíceis de aprendizado de máquina. No entanto, temos esse resultado de exponencialidade e, portanto, essas redes profundas podem (em teoria) aprender todos os tipos de não linearidades, aproximando-as com um grande número de regiões lineares.

y=f(x1,x2) hipersuperfície . Isso equivale a usar apenas uma rede profunda para configurar um problema de regressão; muitos pacotes de aprendizado profundo podem fazer isso, sem problemas.

Se você quiser apenas testar sua intuição, existem muitos ótimos pacotes de aprendizado profundo disponíveis hoje em dia: Theano (Lasanha, No Learn e Keras construídas sobre ela), TensorFlow, um monte de outras pessoas que tenho certeza que estou saindo Fora. Esses pacotes de aprendizado profundo calcularão a retropropagação para você. No entanto, para um problema de menor escala como o que você mencionou, é uma boa ideia codificar a retropropagação, apenas para fazê-lo uma vez e aprender como verificar gradualmente. Mas, como eu disse, se você quiser experimentar e visualizar, pode começar rapidamente com esses pacotes de aprendizado profundo.

Se alguém é capaz de treinar adequadamente a rede (usamos pontos de dados suficientes, inicializamos adequadamente, o treinamento corre bem, essa é outra questão a ser franca), então uma maneira de visualizar o que nossa rede aprendeu, neste caso , uma hipersuperfície, é apenas representar graficamente nossa hipersuperfície sobre uma malha xy ou grade e visualizá-la.

Se a intuição acima estiver correta, usando redes profundas com ReLUs, nossa rede profunda terá aprendido um número exponencial de regiões, cada região tendo sua própria hipersuperfície linear. Obviamente, o ponto principal é que, como temos muitos exponencialmente, as aproximações lineares podem se tornar tão boas e não percebemos a irregularidade de tudo isso, já que usamos uma rede suficientemente grande / profunda.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.