Trainingssprachmodelle zur Zusammenfassung von Erzählungen verbessert die Ausrichtung des Gehirns
Dieses Repository enthält Code für das Papier "Trainingssprachmodelle zum Zusammenfassen von Erzählungen verbessert die Gehirnausrichtung" (ARXIV), veröffentlicht in ICLR 2023 (Spotlight / Bemerkenswerte 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}
}
Aufstellen
Pakete installieren
-
pip install -r requirements.txt
Daten - fMRI -Aufzeichnungen von 8 Probanden, die Harry Potter lesen
- Laden Sie hier die bereits vorverarbeiteten Daten herunter. Diese Daten enthält fMRI -Aufzeichnungen für 8 Probanden, die ein Kapitel von Harry Potter lesen. Die Daten wurden abgelehnt, geglättet und beschnitten, um die ersten 20 TRs und die letzten 15 TRs zu entfernen. Weitere Informationen zu den Daten finden Sie im Papier. Wir haben auch die vorkundigten Voxel -Viertel bereitgestellt, mit denen wir die Genauigkeiten der Searchlight -Klassifizierung berechnet haben.
- Platzieren Sie es unter dem Datenordner in diesem Repository (z
./data/fMRI/ und ./data/voxel_neighborhoods ).
Auslaufcode
Im Folgenden geben wir Anweisungen zum Ausführen der verschiedenen Experimente und Code, die wir in unserem Papier verwenden.
- Die folgenden Abschnitte werden so angeordnet, dass sie den Fluss des Papiers so eng wie möglich übereinstimmen.
- In unserem Artikel führen wir eine große Anzahl von Experimenten durch (viele Modelle, Schichten, Sequenzlängen, Probanden, Diskursmerkmale, Gehirn -ROIs usw.). Daher stellen wir Skripte zur Verfügung, um den Prozess des Ausführens von Experimenten in den verschiedenen Modellen, Schichten usw. zu automatisieren. Hoffentlich macht es andere so einfach wie möglich, unseren Code effizient zu verwenden.
1.. NLP -Darstellungen extrahieren
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_nlp_extract.sh - Das Hauptskript nennt dieses innere Skript:
all_scripts/scripts/inner_nlp_extract.sh - Das innere Skript ruft diese Python -Datei auf:
extract_nlp_features.py - Die Ausgabe wird in:
1-nlp_features/ generiert
2. Ausrichten von NLP -Darstellungen auf die Aktivität des menschlichen Gehirns (dh linearer Codierungsprozess)
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_encoding.sh - Das Hauptskript nennt dieses innere Skript:
all_scripts/scripts/inner_encoding.sh - Das innere Skript nennt diese Python -Datei:
predict_brain_from_nlp.py - Die Ausgabe wird in:
2-encoding_predictions/
3. Evaluieren Sie die Ausrichtung der Gehirn-NLP mithilfe der 20V20-Klassifizierungsgenauigkeit
- Das im obige Abschnitt beschriebene Skript führt auch die 20V20 -Bewertung durch:
all_scripts/scripts/outer_encoding.sh - Das Hauptskript nennt dieses innere Skript:
all_scripts/scripts/inner_encoding.sh - Das innere Skript nennt diese Python -Datei:
evaluate_brain_predictions.py - Der Ausgang wird in:
3-eval-results/
4. Sprachmodellierungsfähigkeit berechnen (dh Verwirrung oder Cross-Entropy-Verlust)
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_perplexity.sh - Das Hauptskript nennt dieses innere Skript:
all_scripts/scripts/inner_perplexity.sh - Das innere Skript nennt diese Python -Datei:
calculate_perplexity.py - Die Ausgabe wird in:
4-perplexity-results/
5. Zugsprachmodelle für Bücher (nicht für Papier verwendet)
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_finetune_booksum.sh - Das Hauptskript ruft diese Python -Datei auf:
finetune_booksum.py - Die Ausgabe wird in:
5-finetune-booksum/
6. Berechnen Sie die Leistung von Modellen im Booksum -Datensatz (dh Rouge -Score) (nicht für Papier verwendet)
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_rouge.sh - Das Hauptskript ruft diese Python -Datei auf:
compute_rouge.py - Der Ausgang wird in:
6-rouge-score/
7. Interpretabilitätsmethode zur Berechnung der Pearson -Korrelation für verschiedene Diskursmerkmale
- Zunächst müssen wir die Wörter im Harry -Potter -Text mit ihren Diskursfunktionen kennzeichnen
- Laden Sie es von: http://www.cs.cmu.edu/afs/cs/project/theo-73/www/plosone/ herunter
- Platzieren Sie es bei
data/story_features.mat
- Laufen
align_story_feature_TRs.ipynb als Nächst - Extrahieren Sie schließlich die TRS, die jeder Diskursfunktion entsprechen, und berechnen Sie den Pearson -Korrelationswert für die Diskursfunktion
- Verwenden Sie die Python -Datei:
all_scripts/plot_pearson.py - Die Ausgabe wird in:
7-pearson-saved/
8. Pearson -Korrelation für jedes Paar von (Diskursfunktion, Gehirn -ROI) (nicht für Papier verwendet)
- Verwenden Sie die Python -Datei:
all_scripts/plot_discourse_and_RoI.py - Die Ausgabe wird in:
8-RoI-and-pearson-saved/
9. Erzeugen Sie Gehirnvoxelwerte zur Visualisierung auf Gehirnpilzs
- Ändern Sie die Variablen in diesem Hauptskript und führen Sie es aus:
all_scripts/scripts/outer_generate_voxel_values.sh - Das Hauptskript ruft diese Python -Datei auf:
all_scripts/generate_voxel_values.py - Der Ausgang wird erzeugt in:
9-pearson-voxels-for-brain-plot/
Andere
- Um die für Papier verwendeten Schlüsselfiguren zu zeichnen, siehe:
all_scripts/figures_paper/ - Um andere Zahlen für die Visualisierung zu zeichnen, siehe:
all_scripts/plot_{} - FDR -Korrektur (FALSE Discovery Rate) durch die Benjamini -Hochberg (BH) -Verfahren (BH
compute_stat_significance.ipynb finden - Unser Repository verwendet Code aus dem folgenden GitHub -Repository