Modelos de linguagem de treinamento para resumir narrativas melhora o alinhamento cerebral
Este repositório contém código para o artigo "Modelos de linguagem de treinamento para resumir as narrativas melhora o alinhamento do cérebro" (ARXIV), publicado no ICLR 2023 (holofote / top 25%notável) (OpenReview). Bibtex:
@inproceedings{aw2023training,
title={Training language models to summarize narratives improves brain alignment},
author={Aw, Khai Loong and Toneva, Mariya},
booktitle={The Eleventh International Conference on Learning Representations},
year={2023}
}
Configurar
Instale pacotes
-
pip install -r requirements.txt
Dados - gravações fMRI de 8 assuntos lendo Harry Potter
- Faça o download dos dados já pré -processados aqui. Esses dados contêm gravações fMRI para 8 assuntos que leem um capítulo de Harry Potter. Os dados foram prejudicados, suavizados e aparados para remover os primeiros 20trs e os últimos 15trs. Para obter mais informações sobre os dados, consulte o artigo. Também fornecemos os bairros de Voxel pré -computados que usamos para calcular as precisões de classificação de holofotes.
- Coloque -o na pasta de dados neste repositório (por exemplo
./data/fMRI/ e ./data/voxel_neighborhoods ).
Código de execução
Abaixo, fornecemos instruções sobre como executar os vários experimentos e código que usamos em nosso artigo.
- As seções abaixo são ordenadas para corresponder ao fluxo do papel o mais próximo possível.
- Em nosso artigo, executamos um grande número de experimentos (muitos modelos, camadas, comprimentos de sequência, sujeitos, recursos do discurso, ROIs cerebrais, etc.). Portanto, fornecemos scripts para automatizar o processo de execução de experimentos nos vários modelos, camadas etc. Esperançosamente, isso tornará o mais fácil possível para que outras pessoas usem nosso código com eficiência.
1. Extrair representações de PNL
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_nlp_extract.sh - O script principal chama esse script interno:
all_scripts/scripts/inner_nlp_extract.sh - O script interno chama este arquivo python:
extract_nlp_features.py - A saída será gerada em:
1-nlp_features/
2. Alinhe as representações de PNL à atividade cerebral humana (ou seja, processo de codificação linear)
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_encoding.sh - O script principal chama este script interno:
all_scripts/scripts/inner_encoding.sh - O script interno chama este arquivo python:
predict_brain_from_nlp.py - A saída será gerada em:
2-encoding_predictions/
3. Avalie o alinhamento do Brain-NLP usando a precisão da classificação de 20V20
- O script descrito na seção acima também executa a avaliação 20V20:
all_scripts/scripts/outer_encoding.sh - O script principal chama este script interno:
all_scripts/scripts/inner_encoding.sh - O script interno chama este arquivo python:
evaluate_brain_predictions.py - A saída será gerada em:
3-eval-results/
4. Capacidade de modelagem de linguagem de computação (ou seja, perplexidade ou perda de entropia cruzada)
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_perplexity.sh - O script principal chama esse script interno:
all_scripts/scripts/inner_perplexity.sh - O script interno chama este arquivo python:
calculate_perplexity.py - A saída será gerada em:
4-perplexity-results/
5. Modelos de linguagem de trem no Booksum (não usado para papel)
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_finetune_booksum.sh - O script principal chama este arquivo python:
finetune_booksum.py - A saída será gerada em:
5-finetune-booksum/
0
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_rouge.sh - O script principal chama este arquivo python:
compute_rouge.py - A saída será gerada em:
6-rouge-score/
7. Método de interpretação para calcular a correlação de Pearson para vários recursos do discurso
- Primeiro, precisamos rotular as palavras no texto de Harry Potter com seus recursos do discurso
- Faça o download de: http://www.cs.cmu.edu/afs/cs/project/theo-73/www/plosone/
- Coloque -o em
data/story_features.mat
- Em seguida, execute
align_story_feature_TRs.ipynb para mapear as palavras rotuladas para fmri trs - Finalmente, extraia o TRS correspondente a cada recurso do discurso e calcule a pontuação de correlação de Pearson para o recurso de discurso
- Use o arquivo python:
all_scripts/plot_pearson.py - A saída será gerada em:
7-pearson-saved/
8. Calcule a correlação de Pearson para cada par de (recurso do discurso, ROI cerebral) (não usado para papel)
- Use o arquivo python:
all_scripts/plot_discourse_and_RoI.py - A saída será gerada em:
8-RoI-and-pearson-saved/
9. Gere valores de voxel cerebral para visualizar em parcelas cerebrais
- Altere as variáveis neste script principal e execute -o:
all_scripts/scripts/outer_generate_voxel_values.sh - O script principal chama este arquivo python:
all_scripts/generate_voxel_values.py - A saída será gerada em:
9-pearson-voxels-for-brain-plot/
Outros
- Para plotar as figuras -chave usadas para papel, consulte:
all_scripts/figures_paper/ - Para plotar outras figuras para visualização, consulte:
all_scripts/plot_{} - Para executar testes de significância e correção da taxa de descoberta falsa (FDR) usando o procedimento de Benjamini - Hochberg (BH), consulte:
compute_stat_significance.ipynb - Nosso repositório usa o código do seguinte repositório do GitHub