Apresentando o PyTorch: Deep Learning em processamento de linguagem natural

imagem Oi, habrozhiteli! O Processamento de Linguagem Natural (PNL) é uma tarefa extremamente importante no campo da inteligência artificial. A implementação bem-sucedida permite produtos como o Amazon da Amazon e o Google Translate. Este livro irá ajudá-lo a aprender o PyTorch, uma biblioteca de aprendizado profundo para Python, uma das principais ferramentas para cientistas de dados e desenvolvedores de software de PNL. Delip Rao e Brian McMahan o atualizarão com os algoritmos de PNL e de aprendizado profundo. E mostre como o PyTorch permite implementar aplicativos que usam análise de texto.

Neste livro • Gráficos computacionais e o paradigma de aprendizado com um professor. • Noções básicas da biblioteca PyTorch otimizada para trabalhar com tensores. • Uma visão geral dos conceitos e métodos tradicionais da PNL. • Redes neurais proativas (perceptron multicamada e outros). • Melhoria do RNN com memória de longo prazo (LSTM) e blocos de recorrência controlada • Modelos de transformação de predição e sequência. • Padrões de projeto de sistemas de PNL usados ​​na produção.

Trecho. Aninhando palavras e outros tipos


Ao resolver problemas de processamento de textos em idiomas naturais, é preciso lidar com vários tipos de tipos de dados discretos. O exemplo mais óbvio são as palavras. Muitas palavras (dicionário), é claro. Entre outros exemplos, símbolos, rótulos de partes do discurso, entidades nomeadas, tipos nomeados de entidades, recursos associados à análise, posições no catálogo de produtos etc. etc. De fato, qualquer recurso de entrada extraído de um finito (ou infinito, mas contáveis).

A base da aplicação bem-sucedida da aprendizagem profunda na PNL é a representação de tipos de dados discretos (por exemplo, palavras) na forma de vetores densos. Os termos “aprendizado de representação” e “incorporação” significam aprender a exibir / representar de um tipo de dados discreto para um ponto em um espaço vetorial. Se tipos discretos são palavras, uma representação vetorial densa é chamada de incorporação de palavras. Já vimos exemplos de métodos de aninhamento baseados no número de ocorrências, por exemplo, TF-IDF ("frequência termo é a frequência inversa de um documento") no capítulo 2. Neste capítulo, focaremos nos métodos de aninhamento baseados em treinamento e métodos de aninhamento baseados em previsão (consulte artigo de Baroni et al. (Baroni et al., 2014]), no qual o treinamento é realizado, maximizando a função objetivo de uma tarefa de aprendizagem específica; por exemplo, prever uma palavra por contexto. Atualmente, os métodos de investimento baseados em treinamento são o padrão devido à sua ampla aplicabilidade e alta eficiência. De fato, a incorporação de palavras nas tarefas da PNL é tão difundida que elas são chamadas de “sriracha da PNL”, pois pode-se esperar que o uso em qualquer tarefa aumente a eficiência da solução. Mas esse apelido é um pouco enganador, porque, diferentemente da syraci, os anexos geralmente não são adicionados ao modelo após o fato, mas são seu componente básico.

Neste capítulo, discutiremos representações vetoriais relacionadas a incorporação de palavras: métodos de incorporação de palavras, métodos de otimização de incorporação de palavras para tarefas de ensino com e sem professor, métodos de visualização de incorporação visual e métodos de combinação de incorporação de palavras para frases e documentos. No entanto, não esqueça que os métodos descritos aqui se aplicam a qualquer tipo discreto.

Por que treinamento em investimentos


Nos capítulos anteriores, mostramos os métodos usuais para criar representações vetoriais de palavras. Nomeadamente, você aprendeu a usar representações unitárias - vetores com um comprimento que corresponde ao tamanho do dicionário, com zeros em todas as posições, exceto um contendo o valor 1 correspondente a uma palavra específica. Além disso, você se encontrou com representações do número de ocorrências - vetores de comprimento igual ao número de palavras exclusivas no modelo, contendo o número de ocorrências de palavras na sentença nas posições correspondentes. Tais representações também são chamadas representações distributivas, uma vez que seu conteúdo / significado significativo é refletido por várias dimensões do vetor. A história das representações distributivas já se arrasta há muitas décadas (veja o artigo de Firth [Firth, 1935]); elas são excelentes para muitos modelos de aprendizado de máquina e redes neurais. Essas representações são construídas heuristicamente1 e não são treinadas em dados.

A representação distribuída recebeu esse nome porque as palavras nelas são representadas por um vetor denso de uma dimensão muito menor (por exemplo, d = 100 em vez do tamanho de todo o dicionário, que pode ser da ordem imagem ) e o significado e outras propriedades da palavra são distribuídos por várias dimensões desse vetor denso.

As representações densas de baixa dimensão obtidas como resultado do treinamento têm várias vantagens em comparação aos vetores unitários que contêm o número de ocorrências que encontramos nos capítulos anteriores. Primeiro, a redução de dimensionalidade é computacionalmente eficiente. Em segundo lugar, representações baseadas no número de ocorrências levam a vetores de alta dimensão com codificação excessiva da mesma informação em diferentes dimensões, e seu poder estatístico não é muito grande. Em terceiro lugar, uma dimensão muito grande dos dados de entrada pode levar a problemas no aprendizado e na otimização de máquinas - um fenômeno geralmente chamado de maldição da dimensão ( http://bit.ly/2CrhQXm ). Para resolver esse problema com dimensionalidade, vários métodos de redução da dimensão são usados, por exemplo, decomposição de valor singular (SVD) e o método de análise de componentes principais (PCA), mas, ironicamente, essas abordagens não escalam bem em dimensões da ordem de milhões ( caso típico da PNL). Em quarto lugar, as representações aprendidas (ou ajustadas com base em) dados específicos de um problema são perfeitamente adequadas para essa tarefa específica. No caso de algoritmos heurísticos, como TF-IDF e métodos de redução dimensional como SVD, não está claro se a função de otimização objetiva é adequada para uma tarefa específica com esse método de incorporação.

Eficiência de investimento


Para entender como os embeddings funcionam, considere um exemplo de vetor unitário pelo qual a matriz de peso em uma camada linear é multiplicada, como mostra a Fig. 5.1 Nos capítulos 3 e 4, o tamanho dos vetores unitários coincidiu com o tamanho do dicionário. Um vetor é chamado unitário porque contém 1 na posição correspondente a uma palavra específica, indicando sua presença.

imagem

Fig. 5.1 Um exemplo de multiplicação de matrizes para o caso de um vetor unitário e uma matriz de pesos de uma camada linear. Como o vetor unitário contém todos os zeros e apenas uma unidade, a posição dessa unidade desempenha o papel do operador de escolha ao multiplicar a matriz. Isso é mostrado na figura como um escurecimento das células da matriz de peso e o vetor resultante. Embora esse método de pesquisa funcione, ele requer um grande consumo de recursos de computação e é ineficiente, pois o vetor unitário é multiplicado por cada um dos números na matriz de pesos e a soma é calculada em linhas

Por definição, o número de linhas da matriz de pesos de uma camada linear que recebe um vetor unitário na entrada deve ser igual ao tamanho desse vetor unitário. Ao multiplicar a matriz, como mostrado na Fig. 5.1, o vetor resultante é na verdade uma string correspondente a um elemento diferente de zero de um vetor unitário. Com base nesta observação, você pode pular a etapa de multiplicação e usar um valor inteiro como um índice para extrair a linha desejada.

Uma última observação sobre o desempenho do investimento: apesar do exemplo da Figura 5.1, onde a dimensão da matriz de pesos coincide com a dimensão do vetor unitário de entrada, isso está longe de ser sempre o caso. De fato, os anexos são frequentemente usados ​​para representar palavras de um espaço de menor dimensão do que seria necessário se usássemos um vetor unitário ou representassem o número de ocorrências. Um tamanho típico de investimento em artigos científicos é de 25 a 500 medições, e a escolha de um valor específico é reduzida à quantidade de memória GPU disponível.

Abordagens de aprendizagem de anexos


O objetivo deste capítulo não é ensinar técnicas específicas para investir palavras, mas ajudá-lo a descobrir o que são investimentos, como e onde eles podem ser aplicados, qual a melhor forma de usá-los em modelos e também quais são suas limitações. O fato é que, na prática, raramente é necessário escrever novos algoritmos de aprendizado para incorporação de palavras. No entanto, nesta subseção, forneceremos uma breve visão geral das abordagens modernas para esse treinamento. O aprendizado de todos os métodos de aninhamento de palavras é feito usando apenas palavras (ou seja, dados não rotulados), mas com um professor. Isso é possível devido à criação de tarefas auxiliares de ensino com o professor, nas quais os dados são marcados implicitamente, pelas razões pelas quais a representação otimizada para resolver a tarefa auxiliar deve capturar muitas propriedades estatísticas e linguísticas do corpus de texto, a fim de trazer pelo menos algum benefício. Aqui estão alguns exemplos dessas tarefas auxiliares.

  • Preveja a próxima palavra em uma determinada sequência de palavras. Ele também leva o nome do problema de modelagem de linguagem.
  • Preveja uma palavra ausente por palavras localizadas antes e depois dela.
  • Preveja palavras em uma janela específica, independentemente da posição, para uma determinada palavra.

Obviamente, essa lista não está completa e a escolha de um problema auxiliar depende da intuição do desenvolvedor do algoritmo e dos custos computacionais. Os exemplos incluem GloVe, Bag-of-Words contínuo (CBOW), Skipgrams, etc. Detalhes podem ser encontrados no Capítulo 10 do livro de Goldberg (Goldberg, 2017), mas discutiremos brevemente o modelo CBOW aqui. No entanto, na maioria dos casos, basta usar anexos de palavras pré-treinados e ajustá-los à tarefa existente.

Aplicação prática de anexos de palavras pré-treinados


A maior parte deste capítulo, assim como o restante do livro, é sobre o uso de anexos de palavras pré-treinados. Pré-treinado usando um dos muitos métodos descritos acima em um corpo grande - por exemplo, o corpo inteiro do Google Notícias, Wikipedia ou Common Crawl1 - anexos de palavras podem ser baixados e usados ​​livremente. Ainda neste capítulo, mostraremos como encontrar e carregar corretamente esses anexos, estudar algumas propriedades de incorporação de palavras e dar exemplos de uso de incorporação de palavras pré-treinadas em tarefas da PNL.

Baixar anexos


Os anexos de palavras tornaram-se tão populares e difundidos que muitas opções diferentes estão disponíveis para download, do Word2Vec2 original ao Stanford GloVe ( https://stanford.io/2PSIvPZ ), incluindo o FastText3 do Facebook ( https://fasttext.cc / ) e muitos outros. Geralmente, os anexos são entregues no seguinte formato: cada linha começa com uma palavra / tipo seguida por uma sequência de números (ou seja, uma representação vetorial). O comprimento desta sequência é igual à dimensão da apresentação (dimensão do anexo). A dimensão dos investimentos é geralmente da ordem de centenas. O número de tipos de tokens geralmente é igual ao tamanho do dicionário e atinge cerca de um milhão. Por exemplo, aqui estão as sete primeiras dimensões dos vetores de cães e gatos do GloVe.

imagem

Para carregamento e manuseio eficientes de anexos, descrevemos a classe auxiliar PreTrainedEmbeddings (Exemplo 5.1). Ele cria um índice de todos os vetores de palavras armazenados na RAM para simplificar a pesquisa rápida e as consultas dos vizinhos mais próximos com a ajuda do pacote de cálculo de vizinhos mais próximo, irritar.

Exemplo 5.1 Usando anexos pré-treinados do Word

imagem

imagem

Nestes exemplos, usamos a incorporação das palavras GloVe. Você precisa baixá-los e criar uma instância da classe PreTrainedEmbeddings, conforme mostrado na Entrada [1] do Exemplo 5.1.

Relações entre anexos do Word


A propriedade chave de incorporação de palavras é a codificação de relacionamentos sintáticos e semânticos, manifestada na forma de padrões de uso de palavras. Por exemplo, geralmente se fala de gatos e cães de maneira muito semelhante (eles discutem seus animais de estimação, hábitos alimentares etc.). Como resultado, acessórios para as palavras gatos e cães estão muito mais próximos um do outro do que acessórios para nomes de outros animais, como patos e elefantes.

Existem várias maneiras de estudar relacionamentos semânticos codificados em anexos de palavras. Um dos métodos mais populares é usar a tarefa de analogia (um dos tipos comuns de tarefas de raciocínio lógico em exames como o SAT):

Palavra1: Palavra2 :: Palavra3: ______

Nesta tarefa, é necessário determinar o quarto, dada a conexão entre os dois primeiros, pelas três palavras fornecidas. Com a ajuda de aninhar palavras, esse problema pode ser codificado espacialmente. Primeiro, subtraia o Word2 do Word1. O vetor de diferença entre eles codifica o relacionamento entre o Word1 e o Word2. Essa diferença pode ser adicionada ao Slovo3 e o resultado será o vetor mais próximo da quarta palavra que está faltando. Para resolver o problema de analogia, é suficiente consultar os vizinhos mais próximos por índice usando este vetor obtido. A função correspondente mostrada no Exemplo 5.2 faz exatamente o que é descrito acima: usa aritmética vetorial e um índice aproximado de vizinhos mais próximos para encontrar o elemento que falta na analogia.

Exemplo 5.2 Resolvendo um problema de analogia usando incorporação de palavras

imagem

imagem


É interessante notar que, usando uma analogia verbal simples, pode-se demonstrar como as combinações de palavras são capazes de capturar uma variedade de relacionamentos semânticos e sintáticos (Exemplo 5.3).

Exemplo 5.3 Codificação com a ajuda de incorporação de palavras de muitas conexões lingüísticas no exemplo de tarefas na analogia do SAT

imagem

imagem

Embora possa parecer que as conexões refletem claramente o funcionamento da linguagem, nem tudo é tão simples. Como o Exemplo 5.4 demonstra, as conexões podem ser definidas incorretamente porque os vetores de palavras são determinados com base em sua ocorrência conjunta.

Exemplo 5.4 Um exemplo que ilustra o perigo de codificar o significado das palavras com base na coocorrência - às vezes não funciona!

imagem

O Exemplo 5.5 ilustra uma das combinações mais comuns ao codificar para papéis de gênero.

Exemplo 5.5 Tenha cuidado com atributos protegidos, como sexo, codificados por anexos de palavras. Eles podem levar a tendências indesejadas em modelos futuros.

imagem

Acontece que é bastante difícil distinguir entre padrões de linguagem e preconceitos culturais profundamente enraizados. Por exemplo, os médicos nem sempre são homens e os enfermeiros nem sempre são mulheres, mas esses preconceitos são tão persistentes que se refletem na linguagem e, como resultado, nos vetores de palavras, como mostra o Exemplo 5.6.

Exemplo 5.6 Preconceitos culturais “costurados” nos vetores das palavras

imagem

Não devemos esquecer possíveis erros sistemáticos nos investimentos, levando em consideração o crescimento de sua popularidade e prevalência nas aplicações de PNL. A erradicação de erros sistemáticos na incorporação de palavras é um campo novo e muito interessante de pesquisa científica (veja o artigo de Bolukbashi et al. [Bolukbasi et al., 2016]). Recomendamos que você procure em ethicsinnlp.org, onde você pode encontrar informações atualizadas sobre ética transversal e PNL.

Sobre autores


Delip Rao é o fundador da empresa de consultoria Joostware, sediada em São Francisco, especializada em aprendizado de máquina e pesquisa em PNL. Um dos co-fundadores do Fake News Challenge é uma iniciativa projetada para reunir hackers e pesquisadores no campo da IA ​​nas tarefas de verificação de fatos na mídia. Delip trabalhou anteriormente em produtos de pesquisa e software relacionados à PNL no Twitter e na Amazon (Alexa).

Brian McMahan é pesquisador da Wells Fargo, com foco principalmente em PNL. Anteriormente trabalhou na Joostware.

»Mais informações sobre o livro podem ser encontradas no site do editor
» Conteúdo
» Trecho

Cupom de 25% de desconto para vendedores ambulantes - PyTorch

Após o pagamento da versão impressa do livro, um livro eletrônico é enviado por e-mail.

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


All Articles