Existe alguma diferença entre treinar um autoencoder empilhado e uma rede neural de 2 camadas?

14

Digamos que estou escrevendo um algoritmo para a construção de um autoencoder empilhado de 2 camadas e uma rede neural de 2 camadas. Eles são as mesmas coisas ou diferença?

O que eu entendo é que, quando eu construo um codificador automático empilhado, eu construo camada por camada. Para rede neural, eu inicializaria todos os parâmetros na rede e, em seguida, para cada ponto de dados, passava-o pela rede e calculava a perda (por exemplo, distância eucleana) e fazia a retropropagação.

RockTheStar
fonte

Respostas:

16

Autoencoders empilhados e redes neurais de várias camadas são diferentes. Na prática, você fará com que as duas redes compartilhem pesos e possivelmente compartilhem buffers de memória. Portanto, na sua implementação, as duas redes se entrelaçam.

Normalmente, os auto-codificadores são treinados de maneira não supervisionada, gananciosa e em camadas. (Sem rótulos, comece a treinar apenas com a primeira camada da rede e adicione novas camadas à medida que avança.) Os pesos podem ser aprendidos usando uma variedade de técnicas que variam desde a descida do gradiente em "lote" (não faça isso), a descida de gradiente estocástico de mini-lote (SGD), a métodos quase-Newton como L-BFGS.

A idéia é que os pesos aprendidos de maneira não supervisionada para minimizar o erro de reconstrução da tarefa de aprendizado de representação ofereçam um bom ponto de partida para inicializar uma rede para uma tarefa discriminatória supervisionada, como classificação ou similaridade. Ou seja, a rede aprende algo sobre a distribuição subjacente observando os dados não rotulados, permitindo discriminar entre os dados rotulados. No entanto, os pesos ainda precisam ser "ajustados" para esta nova tarefa. Portanto, adicione uma camada de regressão logística na parte superior da rede e faça um aprendizado supervisionado com um conjunto de dados rotulado. A etapa de ajuste fino fará a descida do gradiente e ajustará os pesos para todas as camadas da rede simultaneamente.

As vantagens dessa maneira de treinar redes neurais são:

  1. O treinamento não supervisionado permite mostrar mais dados à rede, porque é muito mais fácil obter grandes conjuntos de dados não supervisionados do que os rotulados.
  2. Você pode usar a rede pré-treinada como um "ponto de partida" para treinar novos classificadores, para que você não precise começar do zero a cada vez.

Para o artigo, consulte Autoencodificadores empilhados de denoising: aprendendo representações úteis em uma rede profunda com um critério de denoising local .

sabalaba
fonte
Estou confuso sobre o segundo passo em que você treina a camada de codificação com uma camada de classificação (por exemplo, camada softmax) para uma tarefa de classificação. Você reutiliza o conjunto de dados de treinamento novamente para esta parte para aprender os rótulos? Acho isso estranho porque o conjunto de treinamento foi usado apenas para aprender uma aproximação de si mesmo.
guy
Não faz muito sentido se você tiver todos os dados rotulados de qualquer maneira. É mais para as situações em que você tem muito mais dados não rotulados para pré-treinar e depois usar os dados rotulados como "treinamento" para ajustar.
miar