Pelatihan Model Bahasa untuk Meringkas Narasi Meningkatkan Penyelarasan Otak
Repositori ini berisi kode untuk makalah "Model Bahasa Pelatihan untuk merangkum narasi meningkatkan penyelarasan otak" (ARXIV), yang diterbitkan dalam ICLR 2023 (Spotlight / Top 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}
}
Pengaturan
Instal Paket
-
pip install -r requirements.txt
Data - Rekaman FMRI dari 8 Subjek Membaca Harry Potter
- Unduh data yang sudah diproses di sini. Data ini berisi rekaman fMRI untuk 8 subjek yang membaca satu bab Harry Potter. Data telah dirugikan, dihaluskan, dan dipangkas untuk menghapus 20TR pertama dan 15tr terakhir. Untuk informasi lebih lanjut tentang data, lihat makalah. Kami juga telah menyediakan lingkungan Voxel yang telah dikomputasi yang telah kami gunakan untuk menghitung akurasi klasifikasi sorot.
- Tempatkan di bawah folder data di repositori ini (mis
./data/fMRI/ dan ./data/voxel_neighborhoods ).
Kode berjalan
Di bawah ini, kami memberikan instruksi tentang cara menjalankan berbagai percobaan dan kode yang kami gunakan dalam makalah kami.
- Bagian di bawah ini diperintahkan agar sesuai dengan aliran kertas sedekat mungkin.
- Dalam makalah kami, kami menjalankan sejumlah besar percobaan (banyak model, lapisan, panjang urutan, subjek, fitur wacana, ROI otak, dll). Oleh karena itu, kami menyediakan skrip untuk mengotomatiskan proses menjalankan eksperimen di berbagai model, lapisan, dll. Mudah -mudahan, ini akan membuatnya semudah mungkin bagi orang lain untuk menggunakan kode kami secara efisien.
1. Ekstrak representasi NLP
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_nlp_extract.sh - Script utama memanggil skrip dalam ini:
all_scripts/scripts/inner_nlp_extract.sh - Script bagian dalam memanggil file python ini:
extract_nlp_features.py - Output akan dihasilkan dalam:
1-nlp_features/
2. Align Representasi NLP ke aktivitas otak manusia (yaitu proses pengkodean linier)
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_encoding.sh - Script utama memanggil skrip dalam ini:
all_scripts/scripts/inner_encoding.sh - Script bagian dalam memanggil file python ini:
predict_brain_from_nlp.py - Output akan dihasilkan dalam:
2-encoding_predictions/
3. Mengevaluasi penyelarasan otak-NLP menggunakan akurasi klasifikasi 20V20
- Script yang dijelaskan di bagian di atas juga melakukan evaluasi 20v20:
all_scripts/scripts/outer_encoding.sh - Script utama memanggil skrip dalam ini:
all_scripts/scripts/inner_encoding.sh - Skrip bagian dalam memanggil file python ini:
evaluate_brain_predictions.py - Output akan dihasilkan dalam:
3-eval-results/
4. Kemampuan Pemodelan Bahasa Komputasi (yaitu Kebingungan atau Kehilangan Cross-Entropi)
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_perplexity.sh - Script utama menyebut skrip dalam ini:
all_scripts/scripts/inner_perplexity.sh - Script bagian dalam memanggil file python ini:
calculate_perplexity.py - Output akan dihasilkan dalam:
4-perplexity-results/
5. Model Bahasa Kereta di Booksum (Tidak Digunakan Untuk Kertas)
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_finetune_booksum.sh - Script utama memanggil file python ini:
finetune_booksum.py - Output akan dihasilkan dalam:
5-finetune-booksum/
6. Hitung kinerja model pada dataset buku (yaitu skor rouge) (tidak digunakan untuk kertas)
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_rouge.sh - Script utama memanggil file python ini:
compute_rouge.py - Output akan dihasilkan dalam:
6-rouge-score/
7. Metode interpretabilitas untuk menghitung korelasi Pearson untuk berbagai fitur wacana
- Pertama, kita perlu memberi label kata -kata dalam teks Harry Potter dengan fitur wacana mereka
- Unduh dari: http://www.cs.cmu.edu/afs/cs/project/theo-73/www/plosone/
- Tempatkan di
data/story_features.mat
- Selanjutnya, jalankan
align_story_feature_TRs.ipynb untuk memetakan kata -kata berlabel ke fMri trs - Akhirnya, ekstrak TRS yang sesuai dengan setiap fitur wacana, dan menghitung skor korelasi Pearson untuk fitur wacana
- Gunakan file python:
all_scripts/plot_pearson.py - Output akan dihasilkan dalam:
7-pearson-saved/
8. Hitung korelasi Pearson untuk setiap pasangan (fitur wacana, ROI otak) (tidak digunakan untuk kertas)
- Gunakan file python:
all_scripts/plot_discourse_and_RoI.py - Output akan dihasilkan dalam:
8-RoI-and-pearson-saved/
9. Hasilkan nilai voxel otak untuk memvisualisasikan pada plot otak
- Ubah variabel dalam skrip utama ini dan jalankan:
all_scripts/scripts/outer_generate_voxel_values.sh - Script utama memanggil file python ini:
all_scripts/generate_voxel_values.py - Output akan dihasilkan dalam:
9-pearson-voxels-for-brain-plot/
Yang lain
- Untuk memplot angka kunci yang digunakan untuk kertas, lihat:
all_scripts/figures_paper/ - Untuk memplot angka lain untuk visualisasi, lihat:
all_scripts/plot_{} - Untuk menjalankan tes signifikansi dan koreksi laju penemuan palsu (FDR) menggunakan prosedur Benjamini -Hochberg (BH), lihat:
compute_stat_significance.ipynb - Repositori kami menggunakan kode dari repositori github berikut