A redução de dimensionalidade para visualização deve ser considerada um problema "fechado", resolvido pelo t-SNE?


23

Eu tenho lido muito sobre o algoritmo sne para redução de dimensionalidade. Estou muito impressionado com o desempenho em conjuntos de dados "clássicos", como o MNIST, onde ele consegue uma separação clara dos dígitos ( consulte o artigo original ):t

t-SNE MNIST

Também o usei para visualizar os recursos aprendidos por uma rede neural que estou treinando e fiquei muito satisfeito com os resultados.

Então, como eu o entendo:

t -sne tem bons resultados na maioria dos conjuntos de dados e tem uma implementação bastante eficiente - com o método de aproximação Barnes-Hut. Então, poderíamos dizer que o problema da "redução da dimensionalidade", pelo menos com o objetivo de criar boas visualizações 2D / 3D, agora é um problema "fechado"?O(nlogn)

Estou ciente de que esta é uma afirmação bastante ousada. Estou interessado em entender quais são as possíveis "armadilhas" desse método. Ou seja, existem casos em que sabemos que isso não é útil? Além disso, quais são os problemas "abertos" nesse campo?

Respostas:


16

Definitivamente não.

Concordo que o t-SNE é um algoritmo incrível que funciona extremamente bem e que foi um avanço real na época. Contudo:

  • tem deficiências sérias;
  • algumas das deficiências devem ser solucionáveis;
  • já existem algoritmos com desempenho notavelmente melhor em alguns casos;
  • muitas propriedades do t-SNE ainda são pouco conhecidas.

Alguém vinculado a essa conta muito popular de algumas deficiências do t-SNE: https://distill.pub/2016/misread-tsne/ (+1), mas ele discute apenas conjuntos de dados de brinquedos muito simples e acho que não corresponde muito bem para os problemas enfrentados na prática ao trabalhar com t-SNE e algoritmos relacionados em dados do mundo real. Por exemplo:

  1. O t-SNE geralmente falha em preservar a estrutura global do conjunto de dados;
  2. O t-SNE tende a sofrer de "superlotação" quando cresce acima de ~ 100k;N
  3. O tempo de execução de Barnes-Hut é muito lento para grande .N

Vou discutir brevemente os três abaixo.


  1. O t-SNE geralmente falha em preservar a estrutura global do conjunto de dados.

    Considere este conjunto de dados de RNA-seq de célula única do instituto Allen (células corticais de camundongo): http://celltypes.brain-map.org/rnaseq/mouse . Possui ~ 23k células. Sabemos a priori que esse conjunto de dados tem muita estrutura hierárquica significativa, e isso é confirmado pelo cluster hierárquico. Existem neurônios e células não neurais (glia, astrócitos, etc.). Entre os neurônios, existem neurônios excitatórios e inibitórios - dois grupos muito diferentes. Entre, por exemplo, neurônios inibitórios, existem vários grupos principais: expressão de Pvalb, expressão de SSt, expressão de VIP. Em qualquer um desses grupos, parece haver vários outros clusters. Isso se reflete na árvore hierárquica de armazenamento em cluster. Mas aqui está o t-SNE, retirado do link acima:

    insira a descrição da imagem aqui

    As células não neurais estão em cinza / marrom / preto. Os neurônios excitatórios estão em azul / verde-azulado / verde. Os neurônios inibitórios estão em laranja / vermelho / roxo. Alguém gostaria que esses grupos principais se unissem, mas isso não acontece: uma vez que o t-SNE separa um grupo em vários grupos, eles podem acabar sendo posicionados arbitrariamente. A estrutura hierárquica do conjunto de dados é perdida.

    Penso que este deve ser um problema solucionável, mas não conheço nenhum bom desenvolvimento de princípios, apesar de alguns trabalhos recentes nessa direção (inclusive o meu).

  2. O t-SNE tende a sofrer de "superlotação" quando cresce acima de ~ 100kN

    O t-SNE funciona muito bem nos dados MNIST. Mas considere isso (retirado deste artigo ):

    insira a descrição da imagem aqui

    Com 1 milhão de pontos de dados, todos os clusters são agrupados (a razão exata para isso não é muito clara) e a única maneira conhecida de contrabalançar é com alguns hacks sujos, como mostrado acima. Sei por experiência própria que isso acontece com outros conjuntos de dados igualmente grandes.

    Pode-se ver isso com o próprio MNIST (N = 70k). Dê uma olhada:

    insira a descrição da imagem aqui

    À direita está o t-SNE. À esquerda está o UMAP , um novo método interessante em desenvolvimento ativo, muito semelhante a um grandeVis antigo . O UMAP / largeVis separa os clusters muito mais afastados. A razão exata para isso não está clara no IMHO; Eu diria que ainda há muito a entender aqui e possivelmente muito a melhorar.

  3. O tempo de execução de Barnes-Hut é muito lento para grandesN

    O t-SNE de baunilha é inutilizável para acima de 10k. A solução padrão até recentemente era Barnes-Hut t-SNE, no entanto, para mais próximo de ~ 1 mln, torna-se dolorosamente lento. Esse é um dos grandes pontos de venda do UMAP, mas, na verdade, um artigo recente sugeriu o t-SNE acelerado por FFT (FIt-SNE) que funciona muito mais rápido que o Barnes-Hut t-SNE e é pelo menos tão rápido quanto o UMAP. Eu recomendo a todos que usem essa implementação a partir de agora.NNN

    insira a descrição da imagem aqui

    Portanto, isso pode não ser exatamente um problema em aberto, mas costumava ser até muito recentemente, e acho que há espaço para novas melhorias no tempo de execução. Portanto, o trabalho certamente pode continuar nessa direção.


7

Aqui está uma excelente análise de como a variação dos parâmetros ao executar o t-SNE afeta alguns conjuntos de dados muito simples: http://distill.pub/2016/misread-tsne/ . Em geral, o t-SNE parece se sair bem em reconhecer estruturas de alta dimensão (incluindo relacionamentos mais complexos que clusters), embora isso esteja sujeito a ajuste de parâmetros, especialmente valores de perplexidade.


7

Eu ainda adoraria ouvir outros comentários, mas vou postar minha própria resposta por enquanto, a meu ver. Enquanto procurava uma resposta mais "prática", há duas "desvantagens" teóricas para t-sne que valem a pena mencionar; o primeiro é menos problemático e o segundo deve ser definitivamente considerado:

  1. A função de custo t-sne não é convexa, portanto, não temos garantia de alcançar um ótimo global : Outras técnicas de redução de dimensionalidade (Isomap, LLE) têm uma função de custo convexa. Em t-sne, esse não é o caso; portanto, existem alguns parâmetros de otimização que precisam ser efetivamente ajustados para alcançar uma solução "boa". No entanto, apesar de uma potencial armadilha teórica, vale ressaltar que, na prática, essa dificilmente é uma queda, pois parece que mesmo o "mínimo local" do algoritmo t-sne supera (cria melhores visualizações) do que o mínimo global dos outros métodos. .

  2. maldição da dimensionalidade intrínseca : Uma coisa importante a ter em mente ao usar o t-sne é que ele é essencialmente um aprendizado múltiploalgoritmo. Essencialmente, isso significa que t-sne (e outros métodos desse tipo) são projetados para funcionar em situações nas quais a alta dimensional original é apenas artificialmente alta: existe uma dimensão intrínseca nos dados. isto é, os dados "ficam" em uma variedade de dimensões mais baixas. Um bom exemplo a ter em mente são as fotos consecutivas da mesma pessoa: Embora eu possa representar cada imagem no número de pixels (alta dimensão), a dimensionalidade intrínseca dos dados é realmente limitada pela transformação física dos pontos (em Neste caso, a rotação 3D da cabeça). Nesses casos, t-sne funciona bem. Mas nos casos em que a dimensionalidade intrínseca é alta ou os pontos de dados ficam em um coletor altamente variável, espera-se que t-sne tenha um desempenho ruim, pois sua suposição mais básica - linearidade local no coletor - é violada.

Para o usuário prático, acho que isso implica duas sugestões úteis a serem lembradas:

  1. Antes de realizar redução de dimensionalidade para métodos de visualização, tente sempre primeiro descobrir se há realmente existe uma dimensão intrínseca inferior para os dados que você está lidando.

  2. Se você não tiver certeza sobre 1 (e também geralmente), pode ser útil, como sugere o artigo original, "executar t-sne em uma representação de dados obtida de um modelo que representa o coletor de dados altamente variável de maneira eficiente em vários de camadas não lineares, como um codificador automático ". Portanto, a combinação de codificador automático + t-sne pode ser uma boa solução nesses casos.


Olá @ galoosh33! Gostaria de saber se você já teve a chance de dar uma olhada na minha resposta. Foi útil? Não tenho idéia se você ainda está interessado nesses 1,5 anos depois de fazer essa pergunta, por isso gostaria de receber algum feedback ... Em sua própria resposta aceita, você diz que ainda gostaria de ouvir mais pensamentos, mas isso também foi um pouco tempo atrás :)
ameba diz Reinstate Monica

1
obrigado pela sua ótima resposta @amoeba! Vou analisá-lo neste fim de semana.
galoosh33
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.