R-Net
- Uma implementação do TensorFlow da R-Net: Compreensão de leitura de máquina com redes de correspondência de auto-correspondência. Este projeto foi projetado especialmente para o conjunto de dados do esquadrão.
- Se você tiver alguma dúvida, entre em contato com Wenxuan Zhou ([email protected]).
Requisitos
Houve muitos problemas conhecidos causados pelo uso de diferentes versões de software. Por favor, verifique suas versões antes de abrir problemas ou me enviar um e -mail.
Em geral
- Python> = 3.4
- descompactando, wget
Pacotes Python
- tensorflow-gpu> = 1.5.0
- Spacy> = 2.0.0
- TQDM
- ujson
Uso
Para baixar e pré -processar os dados, execute
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode prepro
Os parâmetros hiper são armazenados em config.py. Para depurar/treinar/testar o modelo, execute
python config.py --mode debug/train/test
Para obter a pontuação oficial, corra
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json log/answer/answer.json
O diretório padrão para o arquivo de log de tensorboard é log/event
Veja a versão para modelo treinado.
Implementação detalhada
- O artigo original usa atenção aditiva, que consome muita memória. Este projeto adota atenção multiplicativa em escala apresentada em atenção é tudo o que você precisa.
- Este projeto adota o abandono variacional apresentado em uma aplicação teoricamente fundamentada de abandono em redes neurais recorrentes.
- Para resolver o problema de degradação no RNN empilhado, as saídas de cada camada são concatenadas para produzir a saída final.
- Quando a perda no conjunto de dev aumenta em um determinado período, a taxa de aprendizado é reduzida pela metade.
- Durante a previsão, o projeto adota o método de pesquisa apresentado na compreensão da máquina usando o Match-LSTM e o ponteiro de resposta.
- Para abordar a emissão de eficiência, essa implementação usa o método de baldes (contribuído por Xiongyifan) e CudnnGru. O método de balde pode acelerar o treinamento, mas reduzirá a pontuação de F1 em 0,3%.
Desempenho
Pontuação
| Em | F1 |
|---|
| papel original | 71.1 | 79.5 |
| este projeto | 71.07 | 79.51 |


Tempo de treinamento (s/it)
| Nativo | Nativo + balde | Cudnn | Cudnn + balde |
|---|
| E5-2640 | 6.21 | 3.56 | - | - |
| Titan x | 2.56 | 1.31 | 0,41 | 0,28 |
Extensões
Essas configurações podem aumentar a pontuação, mas não usadas no modelo por padrão. Você pode ativar essas configurações no config.py .
- Incorporação de caráter de luva pré -teria sido. Contribuído por Yanghanxy.
- Incorporação de texto rápido. Contribuído por Xiongyifan. Pode aumentar a F1 em 1% (relatado por Xiongyifan).