manifold learning
autoencoders
self supervised learning e embeddings
multidimensional scaling - linear
converte grafos com distancia para pontos no espaço
distancia entre os pontos no espaço é aproximadamente a distancia dos vertices correspondentes no grafo
d_{ij} é as distancias no grafo
x_i é a coordenada ponto i num espaço de dimensão m
minimiza um erro
stress(x_{1},\ldots x_n) = \sum_{i,j} (d_{ij}-||x_i - x_j||)^2
há variações na definição de stress
solução aproximada analitica usando autovetores/autovalores
normalmente os pontos estão em 2 dimensões
é usado como uma forma de visualizar grafos
https://en.wikipedia.org/wiki/Multidimensional_scaling
nao linear
monta o grafo de vizinhos dos pontos (k-vizinhos ou \epsilon-bola)
distancia no grafo é a distancia dos pontos no ponto original
completa as distancias no grafo usando o caminho mais curto (no grafo)
usa o MDS para mapear esse grafo completo num espaço de dimensão d
coordenada de cada ponto neste espaço de dimensão d é a redução de dimensionalidade
https://medium.com/data-science-in-your-pocket/dimension-reduction-using-isomap-72ead0411dec
usado normalmente para visualização
https://www.youtube.com/watch?v=NEaUSP4YerM
transforma distancia (espaço original) em similaridade usando RBF (distribuição normal no video) (e^{-d/s})
no espaço novo usa a distribuição t para converter distancia em similaridade (torna os pontos que eram similares mais afastados)
usa descida do gradiente (de uma configuração aleatoria) para aproximar as medidas de similaridade do espaço velho e do novo
Local Linear Embedding
Kernel PCA https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.KernelPCA.html
https://scikit-learn.org/stable/modules/classes.html#module-sklearn.manifold
Rede neural que começa larga, vai diminuindo a largura até o minimo, e volta a crescer
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798
Aprende a repetir os dados - autoencoder tradicional
já que diminuimos o número de neuronios na camada do meio, essa representação reduzida deve aprender a reproduzir os dados originais
é uma redução de dimensionalidade (não linear dado que neurônios computam funções não lineares).
Dado de entrada + ruido
nesta versão, a rede aprende a não só reproduzir o dado usando a representação mais estreita, mas tambem aprende a “eliminar ruidos”.
A rede não sobe o que é ruido introduzido e ruido “normal” e assim esperamos que aprenda a eliminar variações nao importantes nos dados.
ideia: os valores na camada final devem ter valores entre -1 e 1
assim eu posso gerar valores para cada entrada na dimensão reduzida e gerar uma saida
VAE serve como gerador de dados “falsos”.
formalmente é mais complicado
https://towardsdatascience.com/understanding-variational-autoencoders-vaes-f70510919f73
Word2vec - familia de algoritmos para gerar uma redução de dimensionalidade de palavras
Vector space model representation para palavras e documentos
Contexto de tamanho k em volta de uma palavra
Redes neurais parecidas com autoencoders, mas ou a entrada ou a saida é são multiplas palavras
entrada: multiplas palavras do contexto menos a palavra central
saída: precisa gerar a palavra central
https://wiki.pathmind.com/word2vec
entrada: a palavra central é a entrada e
saída: precisa gerar as multiplas palavras do contexto
é preciso treinar a rede em exemplos negativos
o problema passa a ser: dado 2 palavras (w_0) e outra - preveja a probabilidade da outra estar no contexto de w_0
assim exemplos negativos sao exemplos onde a probabilidade é 0.
veja em https://jalammar.github.io/illustrated-word2vec/
camada do meio de 100 a 1000 dimensões
CBOW parece ser mais eficiente
janelas pequenas (5) nao conseguem diferenciar antônimos (bom x ruim)
janelas de 15 palavras
a camada central aprende a representar a palavra como um vetor
a camada central vai gerar vetores parecidos para palavras que acontecem no quase mesmos contextos
vetor para sofa e poltrona serão parecidos pois os termos aparecem quase nos mesmos contextos
representaçoes capturam alguns relações semanticas
e(homem) - e(mulher) + e(rei) = e(rainha) (genero)
pais x capital (frança vs paris) , idade (menino vs homem), passado x presente
https://jalammar.github.io/illustrated-word2vec/
sSSL nao precisa de redes neurais (e a não linearidade que ela traz).
GloVe monta uma matriz quadrada de palavras x palavras (que captura frequencias do contexto)
Fatora essa matriz M = W H onde W é a tabela das plaavras para as nova representação.
https://www.youtube.com/playlist?list=PLM8wYQRetTxCCURc1zaoxo9pTsoov3ipY
SSL pode ser (obviamente) extendido para outras coisas que tem sequencias (tipo palavras): RNA, visao??
Grafos: deepwalk
cada contexto é um caminho aleátorio no grafo de tamanho fixo!!!