Word2vec em imagens



Tudo esconde um padrão que faz parte do universo. Possui simetria, elegância e beleza - qualidades que antes de tudo são apreendidas por todo verdadeiro artista que captura o mundo. Esse padrão pode ser detectado na mudança das estações, na maneira como a areia flui ao longo da encosta, nos galhos emaranhados do arbusto do creosoto, no padrão de suas folhas.

Estamos tentando copiar esse padrão em nossa vida e em nossa sociedade e, portanto, amamos ritmo, música, dança, várias formas que nos fazem felizes e nos confortam. No entanto, também se pode discernir o perigo à espreita na busca da perfeição absoluta, pois é óbvio que o padrão perfeito é inalterado. E, aproximando-se da perfeição, todas as coisas vão à morte ”- Dune (1965)

Acredito que o conceito de incorporação é uma das idéias mais marcantes do aprendizado de máquina. Se você já usou o Siri, o Google Assistant, o Alexa, o Google Translate ou mesmo um teclado de smartphone com a previsão da próxima palavra, já trabalhou com o modelo de processamento de idioma natural baseado em anexo. Nas últimas décadas, esse conceito evoluiu significativamente para modelos neurais (desenvolvimentos recentes incluem incorporação de palavras contextualizadas em modelos avançados, como BERT e GPT2).

O Word2vec é um método eficaz de criação de investimentos desenvolvido em 2013. Além de trabalhar com palavras, alguns de seus conceitos foram eficazes no desenvolvimento de mecanismos de recomendação e na atribuição de significado aos dados, mesmo em tarefas comerciais e não linguísticas. Essa tecnologia foi usada por empresas como Airbnb , Alibaba , Spotify e Anghami em seus mecanismos de recomendação.

Neste artigo, veremos o conceito e a mecânica de geração de anexos usando o word2vec. Vamos começar com um exemplo para se familiarizar com como representar objetos em forma de vetor. Você sabe o quanto uma lista de cinco números (vetor) pode dizer sobre sua personalidade?

Personalização: o que você é?


“Eu te dou o camaleão do deserto; sua capacidade de se fundir com a areia lhe dirá tudo o que você precisa saber sobre as raízes da ecologia e as razões para preservar sua personalidade. ” - Filhos das Dunas

Em uma escala de 0 a 100, você tem um tipo de personalidade introvertida ou extrovertida (onde 0 é o tipo mais introvertido e 100 é o tipo mais extrovertido)? Você já passou em um teste de personalidade: por exemplo, MBTI, ou melhor ainda , os Cinco Grandes ? Você recebe uma lista de perguntas e é avaliado em vários eixos, incluindo introversão / extroversão.


Exemplo dos cinco grandes resultados do teste. Ele realmente fala muito sobre personalidade e é capaz de prever o sucesso acadêmico , pessoal e profissional . Por exemplo, aqui você pode passar por isso.

Suponha que eu pontuei 38 em 100 para avaliar a introversão / extroversão. Isso pode ser representado da seguinte maneira:



Ou em uma escala de -1 a +1:



Quão bem reconhecemos uma pessoa apenas dessa avaliação? Na verdade não. Os seres humanos são criaturas complexas. Portanto, adicionamos mais uma dimensão: mais uma característica do teste.


Você pode imaginar essas duas dimensões como um ponto no gráfico ou, melhor ainda, como um vetor da origem até esse ponto. Existem ótimas ferramentas de vetores que serão úteis muito em breve.

Não mostro quais traços de personalidade colocamos no gráfico para que você não se apegue a traços específicos, mas entendo imediatamente a representação vetorial da personalidade da pessoa como um todo.

Agora podemos dizer que esse vetor reflete parcialmente minha personalidade. Esta é uma descrição útil ao comparar pessoas diferentes. Suponha que fui atropelado por um ônibus vermelho e você precise me substituir por uma pessoa semelhante. Qual das duas pessoas no gráfico a seguir se parece mais comigo?



Ao trabalhar com vetores, a similaridade é geralmente calculada pelo coeficiente Otiai (coeficiente geométrico):


A pessoa número 1 é mais parecida comigo em caráter. Os vetores em uma direção (o comprimento também é importante) fornecem um coeficiente Otiai maior

Novamente, duas dimensões não são suficientes para avaliar as pessoas. Décadas de desenvolvimento da ciência psicológica levaram à criação de um teste para cinco características básicas da personalidade (com muitas outras adicionais). Então, vamos usar todas as cinco dimensões:



O problema com as cinco dimensões é que não será mais possível desenhar setas limpas em 2D. Esse é um problema comum no aprendizado de máquina, onde você geralmente precisa trabalhar em um espaço multidimensional. É bom que o coeficiente geométrico funcione com qualquer número de medições:


O coeficiente geométrico funciona para qualquer número de medições. Em cinco dimensões, o resultado é muito mais preciso.

No final deste capítulo, quero repetir duas idéias principais:

  1. Pessoas (e outros objetos) podem ser representados como vetores numéricos (o que é ótimo para carros!).
  2. Podemos calcular facilmente como os vetores são semelhantes.



Incorporação de palavras


"O dom das palavras é o dom da decepção e da ilusão." - Filhos das Dunas

Com esse entendimento, passaremos para as representações vetoriais de palavras obtidas como resultado do treinamento (elas também são chamadas de anexos) e examinaremos suas propriedades interessantes.

Aqui está o anexo da palavra "rei" (vetor GloVe, treinado na Wikipedia):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

Vemos uma lista de 50 números, mas é difícil dizer algo. Vamos visualizá-los para comparar com outros vetores. Coloque os números em uma linha:



Colorir as células de acordo com seus valores (vermelho para próximo a 2, branco para próximo a 0, azul para próximo de -2):



Agora esqueça os números, e somente pelas cores contrastamos o "rei" com outras palavras:



Você vê que "homem" e "mulher" são muito mais próximos um do outro do que o "rei"? Diz alguma coisa. As representações vetoriais capturam muitas informações / significados / associações dessas palavras.

Aqui está outra lista de exemplos (compare colunas com cores semelhantes):



Há várias coisas a serem observadas:

  1. Por todas as palavras passa uma coluna vermelha. Ou seja, essas palavras são semelhantes nessa dimensão específica (e não sabemos o que está codificado nela).
  2. Você pode ver que “mulher” e “garota” são muito parecidas. A mesma coisa com "homem" e "menino".
  3. "Menino" e "menina" também são semelhantes em algumas dimensões, mas diferem de "mulher" e "homem". Poderia ser uma vaga idéia codificada de juventude? Provavelmente.
  4. Tudo, exceto a última palavra, são idéias das pessoas. Eu adicionei um objeto (água) para mostrar as diferenças entre as categorias. Por exemplo, você pode ver como a coluna azul desce e para na frente do vetor da água.
  5. Existem dimensões claras em que o "rei" e a "rainha" são semelhantes entre si e diferentes de todos os outros. Talvez um conceito vago de realeza esteja codificado lá?

Analogies


“As palavras suportam qualquer carga que desejamos. Tudo o que é necessário é um acordo sobre tradição, segundo o qual construímos conceitos. ” - Deus, o Imperador de Dune

Exemplos famosos que mostram as incríveis propriedades dos investimentos são o conceito de analogias. Podemos adicionar e subtrair vetores de palavras, obtendo resultados interessantes. O exemplo mais famoso é a fórmula "rei - homem + mulher":


Usando a biblioteca Gensim em python, podemos adicionar e subtrair vetores de palavras, e a biblioteca encontrará as palavras mais próximas do vetor resultante. A imagem mostra uma lista das palavras mais semelhantes, cada uma com um coeficiente de similaridade geométrica

Visualizamos essa analogia como antes:


O vetor resultante do cálculo "rei - homem + mulher" não é exatamente igual à "rainha", mas este é o resultado mais próximo de anexos de 400.000 palavras no conjunto de dados

Depois de considerar o anexo das palavras, vamos aprender como o aprendizado ocorre. Mas antes de passar para o word2vec, você precisa dar uma olhada no ancestral conceitual da incorporação de palavras: um modelo de linguagem neural.

Modelo de linguagem


O profeta não está sujeito às ilusões do passado, presente ou futuro. A fixidez das formas linguísticas determina tais diferenças lineares. Os profetas estão segurando a chave da fechadura da língua. Para eles, a imagem física permanece apenas uma imagem física e nada mais.

O universo deles não tem as propriedades de um universo mecânico. Uma sequência linear de eventos é assumida pelo observador. Causa e efeito? É uma questão completamente diferente. O Profeta profere palavras fatídicas. Você vê de relance um evento que deve acontecer "de acordo com a lógica das coisas". Mas o profeta libera instantaneamente a energia do poder milagroso infinito. O universo está passando por uma mudança espiritual. ” - Deus, o Imperador de Dune

Um exemplo de PNL (processamento de linguagem natural) é a função de previsão da próxima palavra no teclado de um smartphone. Bilhões de pessoas o usam centenas de vezes por dia.



Prever a próxima palavra é uma tarefa adequada para um modelo de linguagem . Ela pode pegar uma lista de palavras (digamos, duas palavras) e tentar prever o seguinte.

Na captura de tela acima, o modelo pegou essas duas palavras verdes ( thou shalt ) e retornou uma lista de opções (provavelmente para a palavra not ):



Podemos imaginar o modelo como uma caixa preta:



Mas, na prática, o modelo produz mais de uma palavra. Deriva-se uma estimativa da probabilidade de praticamente todas as palavras conhecidas (o "dicionário" do modelo varia de vários milhares a mais de um milhão de palavras). O aplicativo de teclado encontra as palavras com as pontuações mais altas e as mostra ao usuário.


Um modelo de linguagem neural fornece a probabilidade de todas as palavras conhecidas. Indicamos a probabilidade como uma porcentagem, mas no vetor resultante 40% será representado como 0,4

Após o treinamento, os primeiros modelos neurais ( Bengio 2003 ) calcularam o prognóstico em três etapas:



O primeiro passo para nós é o mais relevante, pois discutimos investimentos. Como resultado do treinamento, uma matriz é criada com os anexos de todas as palavras em nosso dicionário. Para obter o resultado, simplesmente procuramos as combinações das palavras de entrada e executamos a previsão:



Agora, vamos analisar o processo de aprendizado e descobrir como essa matriz de investimentos é criada.

Treinamento do modelo de linguagem


“O processo não pode ser entendido terminando-o. O entendimento deve seguir o processo, fundir-se com o seu fluxo e fluir com ele ”- Dune

Os modelos de idiomas têm uma enorme vantagem sobre a maioria dos outros modelos de aprendizado de máquina: eles podem ser treinados em textos que temos em abundância. Pense em todos os livros, artigos, materiais da Wikipedia e outras formas de dados textuais que temos. Compare com outros modelos de aprendizado de máquina que precisam de mão de obra e dados especialmente coletados.

“Você deve aprender a palavra pela empresa dele” - J. R. Furs

Os anexos das palavras são calculados de acordo com as palavras ao redor, que aparecem com mais frequência nas proximidades. A mecânica é a seguinte:

  1. Temos muitos dados de texto (digamos, todos os artigos da Wikipedia)
  2. Defina uma janela (por exemplo, três palavras) que deslize pelo texto.
  3. Uma janela deslizante gera padrões para o treinamento do nosso modelo.




Quando essa janela desliza sobre o texto, nós (na verdade) geramos um conjunto de dados, que depois usamos para treinar o modelo. Para entender, vamos ver como uma janela deslizante lida com esta frase:

“Que você não construa uma máquina dotada da semelhança da mente humana” - Dune

Quando começamos, a janela está localizada nas três primeiras palavras da frase:



Tomamos as duas primeiras palavras para sinais e a terceira palavra para o rótulo:


Geramos a primeira amostra em um conjunto de dados que pode ser usado posteriormente para ensinar um modelo de linguagem

Em seguida, movemos a janela para a próxima posição e criamos uma segunda amostra:



E logo, estamos acumulando um conjunto de dados maior:



Na prática, os modelos geralmente são treinados diretamente no processo de mover uma janela deslizante. Mas logicamente, a fase "geração de conjunto de dados" é separada da fase de treinamento. Além das abordagens de redes neurais, o método N-gram era frequentemente usado anteriormente para o ensino de modelos de linguagem (consulte o terceiro capítulo do livro “Processamento de fala e linguagem” ). Para ver a diferença ao mudar de N-gramas para modelos neurais em produtos reais, aqui está uma publicação de 2015 no blog Swiftkey , o desenvolvedor do meu teclado Android favorito, que apresenta seu modelo de linguagem neural e o compara com o modelo anterior de N-gram. Gosto deste exemplo porque mostra como as propriedades algorítmicas dos investimentos podem ser descritas em uma linguagem de marketing.

Nós olhamos para os dois lados


“Um paradoxo é um sinal de que devemos tentar considerar o que está por trás dele. Se o paradoxo lhe preocupa, significa que você está lutando pelo absoluto. Os relativistas vêem o paradoxo simplesmente como um pensamento interessante, talvez engraçado, às vezes assustador, mas muito instrutivo. ” Imperador Deus das Dunas

Com base no exposto, preencha a lacuna:



Como contexto, existem cinco palavras anteriores (e uma referência anterior a "barramento"). Estou certo de que muitos de vocês imaginaram que deveria haver um "ônibus". Mas se eu lhe der outra palavra depois do espaço, isso mudará sua resposta?



Isso muda completamente a situação: agora a palavra que falta é provavelmente "vermelho". Obviamente, as palavras têm valor informativo antes e depois de um espaço. Acontece que a contabilidade nas duas direções (esquerda e direita) permite calcular melhores investimentos. Vamos ver como configurar o treinamento do modelo em tal situação.

Ignorar grama


"Quando uma escolha absolutamente inconfundível é desconhecida, o intelecto tem a chance de trabalhar com dados limitados na arena, onde os erros não são apenas possíveis, mas também necessários". - Capitul Dunes

Além de duas palavras antes do alvo, você pode levar em conta mais duas palavras depois dele.



Em seguida, o conjunto de dados para o treinamento do modelo terá a seguinte aparência:



Isso é chamado de arquitetura CBOW (Continuous Bag of Words) e é descrito em um dos documentos word2vec [pdf]. Há outra arquitetura, que também mostra excelentes resultados, mas é organizada de maneira um pouco diferente: tenta adivinhar as palavras vizinhas pela palavra atual. Uma janela deslizante é mais ou menos assim:


No slot verde está a palavra de entrada e cada campo rosa representa uma possível saída

Retângulos cor de rosa têm tons diferentes, porque esta janela deslizante cria quatro padrões separados em nosso conjunto de dados de treinamento:



Esse método é chamado de arquitetura de ignorar grama . Você pode visualizar uma janela deslizante da seguinte maneira:



As quatro amostras a seguir são adicionadas ao conjunto de dados de treinamento:



Em seguida, movemos a janela para a seguinte posição:



O que gera mais quatro exemplos:



Em breve teremos muito mais amostras:



Revisão de Aprendizagem


“Muad'Dib aprendeu rápido porque aprendeu principalmente como aprender. Mas a primeira lição foi a assimilação da crença de que ele pode aprender, e essa é a base de tudo. É incrível quantas pessoas não acreditam que podem aprender e aprender e quantas pessoas pensam que o aprendizado é muito difícil. " - Duna

Agora que temos o conjunto de skip-gram, usamos para treinar o modelo neural básico da linguagem que prediz uma palavra vizinha.



Vamos começar com a primeira amostra do nosso conjunto de dados. Pegamos a placa e a enviamos ao modelo não treinado com a solicitação para prever a próxima palavra.



O modelo passa por três etapas e exibe um vetor de previsão (com probabilidade para cada palavra no dicionário). Como o modelo não é treinado, nesta fase, sua previsão provavelmente está incorreta. Mas isso não é nada. Sabemos qual palavra ela prediz - esta é a célula resultante na linha que atualmente usamos para treinar o modelo:


Um "vetor de destino" é aquele em que a palavra de destino tem uma probabilidade de 1 e todas as outras palavras têm uma probabilidade de 0

Quão errado estava o modelo? Subtraia o vetor de previsão do destino e obtenha o vetor de erro:



Agora, esse vetor de erro pode ser usado para atualizar o modelo; portanto, da próxima vez, é mais provável que você dê um resultado preciso nos mesmos dados de entrada.



Aqui a primeira etapa do treinamento termina. Continuamos a fazer o mesmo com a próxima amostra no conjunto de dados e depois com a próxima, até examinarmos todas as amostras. Este é o fim da primeira era do aprendizado. Repetimos tudo repetidamente por várias épocas e, como resultado, obtemos um modelo treinado: dele você pode extrair a matriz de investimento e usá-la em qualquer aplicação.

Embora tenhamos aprendido muito, mas para entender completamente como o word2vec realmente aprende, faltam algumas idéias importantes.

Seleção negativa


“Tentar entender Muad'Dib sem entender seus inimigos mortais - os Harkonnenov - é o mesmo que tentar entender a Verdade sem entender o que é a Falsidade. Esta é uma tentativa de conhecer a Luz sem conhecer a Escuridão. Isso é impossível. - Duna

Lembre-se das três etapas de como um modelo neural calcula uma previsão:



A terceira etapa é muito cara do ponto de vista computacional, especialmente se você fizer isso para cada amostra no conjunto de dados (dezenas de milhões de vezes). É necessário, de alguma forma, aumentar a produtividade.

Uma maneira é dividir o objetivo em duas etapas:

  1. Crie anexos de palavras de alta qualidade (sem prever a próxima palavra).
  2. Use esses investimentos de alta qualidade para ensinar o modelo de idioma (para previsão).

Este artigo se concentrará na primeira etapa. Para aumentar a produtividade, você pode deixar de prever uma palavra vizinha ...



... e mude para um modelo que use palavras de entrada e saída e calcule a probabilidade de proximidade (de 0 a 1).



Uma transição tão simples substitui a rede neural por um modelo de regressão logística - assim, os cálculos se tornam muito mais simples e rápidos.

Isso requer refinamento da estrutura do nosso conjunto de dados: o rótulo agora é uma nova coluna com valores de 0 ou 1. Na nossa tabela, existem unidades em todos os lugares, porque adicionamos vizinhos lá.



Esse modelo é calculado a uma velocidade incrível: milhões de amostras em minutos. Mas você precisa fechar uma brecha. Se todos os nossos exemplos forem positivos (objetivo: 1), pode-se formar um modelo complicado que sempre retorna 1, demonstrando 100% de precisão, mas não aprende nada e gera investimentos indesejados.



Para resolver esse problema, é necessário inserir padrões negativos no conjunto de dados - palavras que definitivamente não são vizinhas. Para eles, o modelo deve retornar 0. Agora, o modelo terá que trabalhar duro, mas os cálculos ainda serão feitos em grande velocidade.


Para cada amostra no conjunto de dados, adicione exemplos negativos com o rótulo 0

Mas o que introduzir como as palavras de saída? Escolha as palavras arbitrariamente:



Esta ideia nasceu sob a influência do método de comparação de ruído [pdf]. Combinamos o sinal real (exemplos positivos de palavras vizinhas) com o ruído (palavras selecionadas aleatoriamente que não são vizinhas). Isso fornece um excelente compromisso entre desempenho e desempenho estatístico.

Amostra Negativa de Ignorar Grama (SGNS)


Analisamos dois conceitos centrais do word2vec: juntos, eles são chamados de "ignorar com amostragem negativa".



Aprendendo word2vec


“Uma máquina não pode prever todos os problemas importantes para uma pessoa viva. Há uma grande diferença entre espaço discreto e contínuo contínuo. Vivemos em um espaço e as máquinas existem em outro. ” - Deus, o Imperador de Dune

Tendo examinado as idéias básicas do skip-gram e da amostragem negativa, podemos prosseguir com uma análise mais detalhada do processo de aprendizado do word2vec.

Primeiro, pré-processamos o texto no qual treinamos o modelo. Defina o tamanho do dicionário (nós o chamaremos vocab_size ), digamos, em 10.000 anexos e os parâmetros das palavras no dicionário.

No início do treinamento, criamos duas matrizes: Embedding e Context . Os anexos para cada palavra são armazenados nessas matrizes em nosso dicionário (portanto, vocab_size é um dos parâmetros). O segundo parâmetro é a dimensão do anexo (geralmente embedding_size definido como 300, mas anteriormente vimos um exemplo com 50 dimensões).



Primeiro, inicializamos essas matrizes com valores aleatórios. Então começamos o processo de aprendizado. Em cada estágio, tomamos um exemplo positivo e o negativo associado a ele. Aqui está o nosso primeiro grupo:



Agora temos quatro palavras: a palavra de entrada not e as palavras de saída / contextuais thou (vizinho real), aaron e taco (exemplos negativos). Iniciamos a busca de seus anexos nas matrizes Embedding (para a palavra de entrada) e Context (para as palavras de contexto), embora ambas as matrizes contenham anexos para todas as palavras do nosso dicionário.



Em seguida, calculamos o produto escalar do anexo de entrada com cada um dos anexos contextuais. Em cada caso, é obtido um número que indica a similaridade dos dados de entrada e dos anexos contextuais.



Agora precisamos de uma maneira de transformar essas estimativas em um tipo de probabilidade: todas elas devem ser números positivos entre 0 e 1. Essa é uma excelente tarefa para equações logísticas sigmóides .



O resultado do cálculo sigmóide pode ser considerado como a saída do modelo para essas amostras. Como você pode ver, o taco a maior pontuação, enquanto o aaron ainda tem a menor pontuação, antes e depois do sigmóide.

Quando o modelo não treinado fez uma previsão e tem uma marca de destino real para comparação, vamos calcular quantos erros existem na previsão do modelo. Para fazer isso, basta subtrair a pontuação sigmóide dos rótulos alvo.


error = target - sigmoid_scores

É aqui que a fase de "aprendizado" do termo "aprendizado de máquina" começa. Agora, podemos usar essa estimativa de erro para ajustar os investimentos not , thou , aaron e taco , para que na próxima vez que o resultado esteja mais próximo das estimativas de destino.



Isso completa uma etapa do treinamento. Melhoramos um pouco o apego de algumas palavras ( not thou , aaron e taco ). Agora passamos para o próximo estágio (a próxima amostra positiva e a negativa associada a ela) e repetimos o processo.



Os anexos continuam a melhorar à medida que percorremos o conjunto de dados inteiro várias vezes. Em seguida, você pode interromper o processo, deixar a matriz de Context lado e usar a matriz Embeddings treinada para a próxima tarefa.

Tamanho da janela e número de amostras negativas


No processo de aprendizado do word2vec, dois hiperparâmetros-chave são o tamanho da janela e o número de amostras negativas.



Diferentes tamanhos de janelas são adequados para diferentes tarefas. Observou-se que tamanhos de janela menores (2–15) geram anexos intercambiáveis com índices semelhantes (observe que os antônimos geralmente são intercambiáveis ​​quando se olha para as palavras ao redor: por exemplo, as palavras “bom” e “ruim” são frequentemente mencionadas em contextos semelhantes). Tamanhos de janela maiores (15 a 50 ou mais) geram anexos relacionados com índices semelhantes. Na prática, você geralmente precisa fornecer anotações para obter semelhanças semânticas úteis em sua tarefa. No Gensim, o tamanho padrão da janela é 5 (duas palavras esquerda e direita, além da própria palavra de entrada).



O número de amostras negativas é outro fator no processo de aprendizagem. O documento original recomenda 5–20. Ele também diz que 2-5 amostras parecem suficientes quando você tem um conjunto de dados suficientemente grande. No Gensim, o valor padrão é 5 padrões negativos.

Conclusão


“Se seu comportamento está além dos seus padrões, você é uma pessoa viva, não um autômato” - Deus-Imperador de Dune

Espero que agora você entenda a incorporação de palavras e a essência do algoritmo word2vec. Espero também que agora você se familiarize mais com os artigos que mencionam o conceito de "pular com amostragem negativa" (SGNS), como nos sistemas de recomendação acima mencionados.

Referências e leituras adicionais


Source: https://habr.com/ru/post/pt446530/


All Articles