Este repositório contém implementações de alguns dos artigos mais importantes para resposta a perguntas. As implementações estão na forma de tutoriais e são aproximadamente anotações dos referidos trabalhos. Esse repositório pode ser útil para quem conhece o básico do Deep Learning e da PNL, deseja começar a ler documentos um pouco complexos e ver como eles são implementados. Esse repositório também assume alguma familiaridade com o básico do Pytorch, embora eu tenha tentado o meu melhor para dividir tudo em termos simples.
A resposta a perguntas é uma tarefa importante com base na inteligência dos sistemas de PNL e da IA em geral pode ser julgada. Um sistema de controle de qualidade recebe um pequeno parágrafo ou contexto sobre algum tópico e recebe algumas perguntas com base na passagem. As respostas a essas perguntas são vãos do contexto, ou seja, elas estão diretamente disponíveis na passagem. Para treinar esses modelos, usamos o conjunto de dados do esquadrão.
O notebook chamado "Pipeline de pré -processamento de NLP para controle de qualidade" contém todo o código de pré -processamento que escrevi. O código de pré -processamento não usa nenhuma biblioteca de alto nível e eu escrevi todas as funções do zero. Ele usa apenas spacy para tokenização. As funções implementadas aqui são comuns a muitas tarefas de PNL e, portanto, podem ser úteis para alguém que está apenas começando. Por exemplo: criação de vocabulários, matrizes de peso para incorporações pré-tenhadas, conjuntos de dados/dataloaders etc. Em retrospectiva, usando uma biblioteca de alto nível como a Torchtext teria sido uma idéia melhor e estou trabalhando no mesmo.
Todos os cadernos são baseados nessa abordagem. Por fim, a construção de redes neurais é trabalhar com tensores. Conhecer a forma e o conteúdo de cada tensor é algo que achei muito útil durante o aprendizado. Portanto, após cada linha de código, comentei a forma e as alterações do tensor que ocorrem devido às transformações no código. Isso torna o processo de entender o que está acontecendo nas redes neurais mais intuitivas.
Não tenho um acesso ilimitado a GPUs mais rápidas. Os modelos abaixo foram treinados alugando GPUs no VAST.ai. Eu usei o GTX 1080 Ti para a maioria dos meus experimentos.
No primeiro caderno, implementamos um modelo comparativamente simples que envolve LSTMs de várias camadas e atenção bilinear. Os detalhes e a intuição de cada camada/componente são explicados antes de entrar no código. Este modelo é muito semelhante ao discutido neste artigo e também possui os mesmos primeiros autores: Danqi Chen. O segundo modelo também é conhecido como o "StanFor Attentity Reader". O modelo implementado no notebook é uma versão ligeiramente avançada disso. Os resultados do Dev conjunto obtido são:
| Épocas | Em | F1 |
|---|---|---|
| 5 | 56.4 | 68.2 |
Estarei treinando isso mais para melhorar os resultados e atualizá -lo em breve.
Em seguida, passamos para um papel um pouco mais complexo. Este artigo melhora os resultados obtidos pelo artigo anterior. O modelo implementado aqui, diferentemente dos anteriores, é uma arquitetura hierárquica de vários estágios que representa o contexto e a consulta em vários níveis de granularidade. Este artigo também envolve a recorrência, pois usa extensivamente o LSTMS e um mecanismo de atenção sem memória que é de natureza bidirecional. Este notebook discute em detalhes sobre algumas técnicas importantes de PNL, como incorporações de personagens , redes de rodovias, entre outras. Resultados no conjunto de dev:
| Épocas | Em | F1 |
|---|---|---|
| 5 | 60.4 | 70.1 |
Finalmente, afastamos a recorrência e usamos apenas a auto-atendimento e convoluções. Este artigo se inspira em "Atenção é tudo o que você precisa". A principal motivação por trás do design do modelo é: a convolução captura a estrutura local do texto, enquanto a auto-atimento aprende a interação global entre cada par de palavras. Este tutorial explica tópicos como auto-atendimento e convoluções separáveis em profundidade . Resultados no conjunto de dev:
| Épocas | Em | F1 |
|---|---|---|
| 3 | * | 36.6 |
Atualmente, estou treinando este modelo. Atualmente, estou com pouco tempo e não tenho acesso a GPUs mais rápidas. Treinar isso para 1 época leva cerca de 1 hora no GTX 1080 TI.
Eu não sou um especialista. Meu principal motivo por trás deste projeto foi aprender sobre um domínio PNL. Se você encontrar algum erro conceitual ou bobo, crie um problema e eu tentarei o meu melhor para corrigi -los rapidamente. Outras contribuições também são bem -vindas. Se você treinar algum modelo e obter resultados aprimorados, faça um PR. Se você estiver interessado em implementar mais trabalhos nesse domínio e deseja adicioná -los a este repositório, ficaria feliz em ajudar. Embora eu esteja com pouco tempo, manterei ativamente esse repositório.