Suponha que eu tenha um conjunto de sinais no domínio do tempo com absolutamente nenhum rótulo . Eu quero agrupá-los em 2 ou 3 classes. Autoencoders são redes não supervisionadas que aprendem a comprimir as entradas. Portanto, dada uma entrada , ponderações e , desvios e e saída , podemos encontrar os seguintes relacionamentos:
Então seria uma forma compactada de e a reconstrução do último. Por enquanto, tudo bem.
O que eu não entendo é como isso pode ser usado para cluster (se houver alguma maneira de fazer isso). Por exemplo, na primeira figura deste artigo , há um diagrama de blocos que não tenho certeza de entender. Ele usa como entradas para a rede de feed-forward, mas não há menção a como essa rede é treinada. Não sei se há algo que estou ignorando ou se o trabalho está incompleto. Além disso, este tutorial no final mostra os pesos aprendidos pelo autoencodificador, e eles parecem kernels que uma CNN aprenderia a classificar imagens. Então ... acho que os pesos do codificador automático podem ser usados de alguma forma em uma rede de feed-forward para classificação, mas não sei como.
Minhas dúvidas são:
- Se é um sinal de comprimento domínio do tempo (ou seja, ), pode ser apenas um vetor também? Em outras palavras, faria sentido para z ^ {(i)} ser uma matriz com uma de suas dimensões maior que 1 ? Eu acredito que não, mas eu só quero verificar.
- Qual dessas quantidades seria a entrada para um classificador? Por exemplo, se eu quiser usar um MLP clássico com tantas unidades de saída quanto as classes em que quero classificar os sinais, o que devo colocar na entrada dessa rede totalmente conectada ( , , alguma outra coisa)?
- Como posso usar os pesos e preconceitos aprendidos neste MLP? Lembre-se de que assumimos que absolutamente nenhuma etiqueta está disponível; portanto, é impossível treinar a rede. Acho que o e o aprendidos devem ser úteis de alguma forma na rede totalmente conectada, mas não vejo como usá-los.
Observação: observe que usei um MLP como exemplo, porque é a arquitetura mais básica, mas a pergunta se aplica a qualquer outra rede neural que possa ser usada para classificar sinais no domínio do tempo.
Antes de perguntar 'como o autoencoder pode ser usado para agrupar dados?' devemos primeiro perguntar 'Os codificadores automáticos podem agrupar dados?'
Como um autoencoder aprende a recriar os pontos de dados do espaço latente. Se assumirmos que o autoencoder mapeia o espaço latente de uma “maneira contínua”, os pontos de dados que são do mesmo cluster devem ser mapeados juntos. Portanto, de certa forma, o codificador agrupa pontos semelhantes "juntos", agrupa-os "juntos". Vimos na literatura que os auto-codificadores falham em manter essa suposição de continuidade no espaço latente.
Mas, para nosso benefício, os auto-codificadores variacionais funcionam exatamente dessa maneira. Os codificadores variacionais aprendem os mapeamentos de espaço latente com as duas propriedades principais: continuidade, integridade1.
Portanto, o uso de autoencodificadores pode, por vezes, ser suficiente. No entanto, foi feito um trabalho para improvisar / aprender o agrupamento explicitamente. O algoritmo proposto por Xie et al. (2016) 2 é um exemplo, que "refina iterativamente os clusters com uma distribuição de destino auxiliar derivada de uma atribuição atual de soft cluster".
fonte