Les modèles de langue de formation pour résumer les récits améliorent l'alignement du cerveau
Ce référentiel contient du code pour l'article "Les modèles de langage de formation pour résumer les récits améliorent l'alignement du cerveau" (ARXIV), publié dans ICLR 2023 (Spotlight / Notable Top 25%) (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}
}
Installation
Installer des packages
-
pip install -r requirements.txt
Données - Enregistrements IRMf de 8 sujets lisant Harry Potter
- Téléchargez les données déjà prétraitées ici. Ces données contient des enregistrements IRMf pour 8 sujets lisant un chapitre de Harry Potter. Les données ont été détendues, lissées et coupées pour éliminer les 20 premiers 20Trs et les 15 autres. Pour plus d'informations sur les données, reportez-vous au document. Nous avons également fourni les quartiers de voxel précomputés que nous avons utilisés pour calculer les précisions de classification des projecteurs.
- Placez-le dans le dossier de données de ce référentiel (par exemple
./data/fMRI/ et ./data/voxel_neighborhoods ).
Code en cours d'exécution
Ci-dessous, nous fournissons des instructions sur la façon d'exécuter les différentes expériences et le code que nous utilisons dans notre article.
- Les sections ci-dessous sont ordonnées de faire correspondre le flux du papier aussi étroitement que possible.
- Dans notre article, nous exécutons un grand nombre d'expériences (de nombreux modèles, couches, longueurs de séquence, sujets, caractéristiques du discours, ROI du cerveau, etc.). Par conséquent, nous fournissons des scripts pour automatiser le processus d'exécution des expériences sur les différents modèles, couches, etc., espérons-le, cela rendra le plus facile que possible pour les autres d'utiliser efficacement notre code.
1. Extraire les représentations NLP
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_nlp_extract.sh - Le script principal appelle ce script intérieur:
all_scripts/scripts/inner_nlp_extract.sh - Le script intérieur appelle ce fichier python:
extract_nlp_features.py - La sortie sera générée dans:
1-nlp_features/
2. Aligner les représentations des PNL sur l'activité du cerveau humain (c.-à-d. Processus de codage linéaire)
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_encoding.sh - Le script principal appelle ce script intérieur:
all_scripts/scripts/inner_encoding.sh - Le script intérieur appelle ce fichier Python:
predict_brain_from_nlp.py - La sortie sera générée dans:
2-encoding_predictions/
3. Évaluer l'alignement Brain-NP en utilisant la précision de la classification 20V20
- Le script décrit dans la section ci-dessus effectue également l'évaluation 20v20:
all_scripts/scripts/outer_encoding.sh - Le script principal appelle ce script intérieur:
all_scripts/scripts/inner_encoding.sh - Le script intérieur appelle ce fichier python:
evaluate_brain_predictions.py - La sortie sera générée dans:
3-eval-results/
4. Calculer la capacité de modélisation du langage (c.-à-d. Perfère ou perte de transformation croisée)
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_perplexity.sh - Le script principal appelle ce script intérieur:
all_scripts/scripts/inner_perplexity.sh - Le script intérieur appelle ce fichier Python:
calculate_perplexity.py - La sortie sera générée dans:
4-perplexity-results/
5. Train Language Modèles sur Booksum (non utilisé pour le papier)
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_finetune_booksum.sh - Le script principal appelle ce fichier python:
finetune_booksum.py - La sortie sera générée dans:
5-finetune-booksum/
6. Calculer les performances des modèles sur l'ensemble de données de livres (c.-à-d. Score Rouge) (non utilisé pour le papier)
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_rouge.sh - Le script principal appelle ce fichier python:
compute_rouge.py - La sortie sera générée dans:
6-rouge-score/
7. Méthode d'interprétabilité pour calculer la corrélation de Pearson pour diverses fonctionnalités de discours
- Tout d'abord, nous devons étiqueter les mots du texte Harry Potter avec leurs caractéristiques de discours
- Téléchargez-le depuis: http://www.cs.cmu.edu/afs/cs/project/theo-73/www/plosone/
- Placez-le sur
data/story_features.mat
- Ensuite, exécutez
align_story_feature_TRs.ipynb pour mapper les mots étiquetés en IRMf TRS - Enfin, extraire le TRS correspondant à chaque fonctionnalité de discours et calculer le score de corrélation Pearson pour la fonctionnalité du discours
- Utilisez le fichier python:
all_scripts/plot_pearson.py - La sortie sera générée dans:
7-pearson-saved/
8. calculer la corrélation de Pearson pour chaque paire de (caractéristique du discours, ROI cérébral) (non utilisé pour le papier)
- Utilisez le fichier python:
all_scripts/plot_discourse_and_RoI.py - La sortie sera générée dans:
8-RoI-and-pearson-saved/
9. Générer des valeurs de voxel cérébral pour visualiser les parcelles cérébrales
- Modifiez les variables de ce script principal et exécutez-le:
all_scripts/scripts/outer_generate_voxel_values.sh - Le script principal appelle ce fichier python:
all_scripts/generate_voxel_values.py - La sortie sera générée dans:
9-pearson-voxels-for-brain-plot/
Autres
- Pour tracer les chiffres clés utilisés pour le papier, voir:
all_scripts/figures_paper/ - Pour tracer d'autres chiffres pour la visualisation, voir:
all_scripts/plot_{} - Pour exécuter des tests de signification et une correction de taux de fausses découvertes (FDR) à l'aide de la procédure Benjamini - Hochberg (BH), voir:
compute_stat_significance.ipynb - Notre référentiel utilise le code du référentiel GitHub suivant