Qual é a diferença entre redes neurais convolucionais, máquinas Boltzmann restritas e auto-codificadores?


Respostas:


237

O autoencoder é uma rede neural simples de três camadas, na qual as unidades de saída são conectadas diretamente de volta às unidades de entrada . Por exemplo, em uma rede como esta:

insira a descrição da imagem aqui

output[i]tem vantagem input[i]para todos i. Normalmente, o número de unidades ocultas é muito menor que o número de unidades visíveis (entrada / saída). Como resultado, quando você passa dados por uma rede, ela primeiro comprime (codifica) o vetor de entrada para "caber" em uma representação menor e, em seguida, tenta reconstruí-la (decodificar) novamente. A tarefa do treinamento é minimizar um erro ou reconstrução, ou seja, encontrar a representação compacta (codificação) mais eficiente para os dados de entrada.

O RBM compartilha idéias semelhantes, mas usa uma abordagem estocástica. Em vez de determinista (por exemplo, logística ou ReLU), utiliza unidades estocásticas com distribuição específica (geralmente binária de Gaussiana). O procedimento de aprendizagem consiste em várias etapas da amostragem de Gibbs (propagação: amostra de hiddens dados visíveis; reconstrução: amostra de visíveis dados hiddens; repetição) e ajuste dos pesos para minimizar o erro de reconstrução.

insira a descrição da imagem aqui

A intuição por trás das RBMs é que existem algumas variáveis ​​aleatórias visíveis (por exemplo, críticas de filmes de diferentes usuários) e algumas variáveis ​​ocultas (como gêneros de filmes ou outros recursos internos), e a tarefa do treinamento é descobrir como esses dois conjuntos de variáveis ​​são realmente conectados um ao outro (mais sobre este exemplo pode ser encontrado aqui ).

As redes neurais convolucionais são um pouco semelhantes a essas duas, mas, em vez de aprender uma matriz de peso global única entre duas camadas, elas pretendem encontrar um conjunto de neurônios conectados localmente. As CNNs são usadas principalmente no reconhecimento de imagens. Seu nome vem do operador "convolução" ou simplesmente "filtro". Em resumo, os filtros são uma maneira fácil de executar operações complexas por meio da simples alteração de um kernel de convolução. Aplique o kernel Gaussiano de desfoque e você o suavizará. Aplique o kernel Canny e você verá todas as bordas. Aplique o kernel do Gabor para obter recursos de gradiente.

insira a descrição da imagem aqui

(imagem daqui )

O objetivo das redes neurais convolucionais não é usar um dos kernels predefinidos, mas sim aprender kernels específicos de dados . A idéia é a mesma que com autoencoders ou RBMs - traduza muitos recursos de baixo nível (por exemplo, comentários de usuários ou pixels de imagem) para a representação de alto nível compactada (por exemplo, gêneros ou bordas de filmes) - mas agora os pesos são aprendidos apenas com neurônios que são espacialmente próximos um do outro.

insira a descrição da imagem aqui

Todos os três modelos têm seus casos de uso, prós e contras, mas provavelmente as propriedades mais importantes são:

  1. Autoencoders são os mais simples. Eles são intuitivamente compreensíveis, fáceis de implementar e raciocinar (por exemplo, é muito mais fácil encontrar bons meta-parâmetros para eles do que para RBMs).
  2. RBMs são generativos. Ou seja, diferentemente dos auto-codificadores que discriminam apenas alguns vetores de dados em favor de outros, os RBMs também podem gerar novos dados com determinada distribuição unida. Eles também são considerados mais ricos em recursos e flexíveis.
  3. As CNNs são um modelo muito específico que é usado principalmente para tarefas muito específicas (embora seja uma tarefa bastante popular). A maioria dos algoritmos de nível superior em reconhecimento de imagem hoje são de alguma forma baseados nas CNNs, mas fora desse nicho eles dificilmente são aplicáveis ​​(por exemplo, qual é o motivo para usar a convolução na análise de resenhas de filmes?).

UPD.

Redução de dimensionalidade

nnxxmmm<nmos componentes mais importantes são usados ​​como nova base. Cada um desses componentes pode ser considerado um recurso de alto nível, descrevendo os vetores de dados melhor que os eixos originais.

nm

Arquiteturas profundas

mc1..cmx=i=1mwici

nmmk

Mas você não apenas adiciona novas camadas. Em cada camada, você tenta aprender a melhor representação possível para os dados da anterior:

insira a descrição da imagem aqui

Na imagem acima, há um exemplo de uma rede tão profunda. Começamos com pixels comuns, prosseguimos com filtros simples, depois com elementos de face e, finalmente, terminamos com faces inteiras! Essa é a essência do aprendizado profundo .

Agora observe que, neste exemplo, trabalhamos com dados de imagem e sequenciamos áreas cada vez maiores de pixels espacialmente próximos. Não parece semelhante? Sim, porque é um exemplo de rede convolucional profunda . Seja com base em autoencoders ou RBMs, usa convolução para enfatizar a importância da localidade. É por isso que as CNNs são um pouco distintas dos autoencoders e RBMs.

Classificação

Nenhum dos modelos mencionados aqui funciona como algoritmos de classificação per se. Em vez disso, eles são usados ​​para pré - treinamento - aprendendo transformações de representação de baixo nível e difícil de consumir (como pixels) para uma de alto nível. Uma vez que a rede profunda (ou talvez não tão profunda) seja pré-treinada, os vetores de entrada são transformados para uma melhor representação e os vetores resultantes são finalmente passados ​​para o classificador real (como SVM ou regressão logística). Na imagem acima, isso significa que, no fundo, há mais um componente que realmente faz a classificação.


3
@ffriend Explicação muito curta e clara. Há muito escrito sobre esses tópicos, mas seu briefing é fantástico. "RockTheStar" Se você quer explicação mais detalhada você pode ler este livro de 100 páginas de Yoshua Bengio (www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)
Javierfdr

o que você usaria para prever sequências de eventos?
skan

2
@skan: dê uma olhada nas RNNs . Especificamente, o LSTM é bastante popular agora. Você também pode fazer uma pergunta separada com mais detalhes para obter uma resposta qualificada, porque as RNNs não são exatamente minha área de especialização.
ffriend

15

Todas essas arquiteturas podem ser interpretadas como uma rede neural. A principal diferença entre o AutoEncoder e a Rede Convolucional é o nível de cabeamento da rede. As redes convolucionais são praticamente conectadas. A operação de convolução é praticamente local no domínio da imagem, o que significa muito mais esparsidade no número de conexões na exibição de rede neural. A operação de agrupamento (subamostragem) no domínio da imagem também é um conjunto fixo de conexões neurais no domínio neural. Tais restrições topológicas na estrutura da rede. Dadas essas restrições, o treinamento da CNN aprende os melhores pesos para esta operação de convolução (na prática, existem vários filtros). As CNNs geralmente são usadas para tarefas de imagem e fala, onde as restrições convolucionais são uma boa suposição.

Por outro lado, os codificadores automáticos quase não especificam nada sobre a topologia da rede. Eles são muito mais gerais. A idéia é encontrar uma boa transformação neural para reconstruir a entrada. Eles são compostos de codificador (projeta a entrada na camada oculta) e decodificador (reprojeta a camada oculta na saída). A camada oculta aprende um conjunto de recursos latentes ou fatores latentes. Os autoencoders lineares abrangem o mesmo subespaço com o PCA. Dado um conjunto de dados, eles aprendem o número de bases para explicar o padrão subjacente dos dados.

RBMs também são uma rede neural. Mas a interpretação da rede é totalmente diferente. Os RBMs interpretam a rede como não um feedforward, mas um gráfico bipartido onde a idéia é aprender a distribuição de probabilidade conjunta de variáveis ​​ocultas e de entrada. Eles são vistos como um modelo gráfico. Lembre-se de que o AutoEncoder e a CNN aprendem uma função determinística. RBMs, por outro lado, é modelo generativo. Pode gerar amostras a partir de representações ocultas aprendidas. Existem algoritmos diferentes para treinar RBMs. No entanto, no final do dia, depois de aprender RBMs, você pode usar seus pesos de rede para interpretá-lo como uma rede de feedforward.


6

Os RBMs podem ser vistos como algum tipo de codificador automático probabilístico. Na verdade, foi demonstrado que, sob certas condições, eles se tornam equivalentes.

No entanto, é muito mais difícil mostrar essa equivalência do que apenas acreditar que são bestas diferentes. Na verdade, acho difícil encontrar muitas semelhanças entre os três, assim que começo a olhar atentamente.

Por exemplo, se você escrever as funções implementadas por um codificador automático, um RBM e uma CNN, obterá três expressões matemáticas completamente diferentes.


1

Não posso falar muito sobre RBMs, mas os autoencoders e CNNs são dois tipos diferentes de coisas. Um autoencoder é uma rede neural treinada de maneira não supervisionada. O objetivo de um autoencodificador é encontrar uma representação mais compacta dos dados, aprendendo um codificador, que transforma os dados em sua representação compacta correspondente, e um decodificador, que reconstrói os dados originais. A parte do codificador dos autoencoders (e originalmente RBMs) foi usada para aprender bons pesos iniciais de uma arquitetura mais profunda, mas existem outras aplicações. Essencialmente, um autoencoder aprende um agrupamento de dados. Por outro lado, o termo CNN refere-se a um tipo de rede neural que usa o operador de convolução (geralmente a convolução 2D quando é usada para tarefas de processamento de imagens) para extrair recursos dos dados. No processamento de imagens, filtros, que são complicadas com imagens, são aprendidas automaticamente para resolver a tarefa em questão, por exemplo, uma tarefa de classificação. Se o critério de treinamento é uma regressão / classificação (supervisionada) ou uma reconstrução (não supervisionada) não tem relação com a ideia de convoluções como uma alternativa às transformações afins. Você também pode ter um CNN-autoencoder.


O autoencoder é um treinamento supervisionado, à medida que você treina para gerar as mesmas informações que a saída fornecida, apenas com uma camada oculta menor, para que a rede encontre uma codificação apropriada, que transforme a entrada no tamanho da camada oculta e vice-versa. . em treinamento não supervisionado, como usado em redes estatísticas, como SOM ou gás neural, você não tem uma informação de destino que é apresentada à rede como saída.
SCI
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.