แบบจำลองภาษาการฝึกอบรมเพื่อสรุปการเล่าเรื่องช่วยปรับปรุงการจัดแนวสมอง
พื้นที่เก็บข้อมูลนี้มีรหัสสำหรับกระดาษ "แบบจำลองภาษาการฝึกอบรมเพื่อสรุปการเล่าเรื่องช่วยปรับปรุงการจัดตำแหน่งสมอง" (arxiv) ที่ตีพิมพ์ใน 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}
}
การตั้งค่า
ติดตั้งแพ็คเกจ
-
pip install -r requirements.txt
ข้อมูล - การบันทึก fMRI ของ 8 วิชาที่อ่าน Harry Potter
- ดาวน์โหลดข้อมูลที่ประมวลผลล่วงหน้าแล้วที่นี่ ข้อมูลนี้มีการบันทึก fMRI สำหรับ 8 วิชาที่อ่านหนึ่งบทของ Harry Potter ข้อมูลได้รับการปรับให้เรียบและถูกตัดแต่งเพื่อลบ 20trs แรกและ 15trs สุดท้าย สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลโปรดดูที่กระดาษ นอกจากนี้เรายังได้จัดเตรียมย่าน Voxel ที่คาดการณ์ไว้ล่วงหน้าซึ่งเราใช้ในการคำนวณความถูกต้องของการจำแนกประเภท Searchlight
- วางไว้ใต้โฟลเดอร์ข้อมูลในที่เก็บนี้ (เช่น
./data/fMRI/ / และ ./data/voxel_neighborhoods voxel_neighborhoods)
รหัสกำลัง
ด้านล่างนี้เราให้คำแนะนำเกี่ยวกับวิธีเรียกใช้การทดลองและรหัสต่าง ๆ ที่เราใช้ในบทความของเรา
- ส่วนด้านล่างได้รับคำสั่งให้ตรงกับการไหลของกระดาษอย่างใกล้ชิดที่สุด
- ในบทความของเราเราทำการทดลองจำนวนมาก (หลายรุ่น, เลเยอร์, ความยาวลำดับ, วิชา, คุณสมบัติวาทกรรม, สมอง ROIs, ฯลฯ ) ดังนั้นเราจึงจัดให้มีสคริปต์เพื่อทำให้กระบวนการทดลองใช้งานผ่านรุ่นต่าง ๆ เลเยอร์ ฯลฯ หวังว่าสิ่งนี้จะทำให้ง่ายที่สุดเท่าที่จะเป็นไปได้สำหรับผู้อื่นที่จะใช้รหัสของเราอย่างมีประสิทธิภาพ
1. สารสกัด NLP เป็นตัวแทน
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_nlp_extract.sh - สคริปต์หลักเรียกสคริปต์ภายในนี้:
all_scripts/scripts/inner_nlp_extract.sh - สคริปต์ภายในเรียกไฟล์ Python นี้:
extract_nlp_features.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
1-nlp_features/
2. จัดตำแหน่ง NLP เป็นตัวแทนของการทำงานของสมองของมนุษย์ (เช่นกระบวนการเข้ารหัสเชิงเส้น)
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_encoding.sh - สคริปต์หลักเรียกสคริปต์ภายในนี้:
all_scripts/scripts/inner_encoding.sh - สคริปต์ด้านในเรียกไฟล์ Python นี้:
predict_brain_from_nlp.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
2-encoding_predictions/
3. ประเมินการจัดตำแหน่ง Brain-NLP โดยใช้ความแม่นยำในการจำแนกประเภท 20V20
- สคริปต์ที่อธิบายไว้ในส่วนด้านบนยังทำการประเมิน 20v20:
all_scripts/scripts/outer_encoding.sh - สคริปต์หลักเรียกสคริปต์ภายในนี้:
all_scripts/scripts/inner_encoding.sh - สคริปต์ด้านในเรียกไฟล์ Python นี้:
evaluate_brain_predictions.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
3-eval-results/
4. คำนวณความสามารถในการสร้างแบบจำลองภาษา (เช่นความงุนงงหรือการสูญเสียข้ามจุดเริ่มต้น)
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_perplexity.sh - สคริปต์หลักเรียกสคริปต์ภายในนี้:
all_scripts/scripts/inner_perplexity.sh - สคริปต์ภายในเรียกไฟล์ Python นี้:
calculate_perplexity.py - เอาต์พุตจะถูกสร้างขึ้นใน:
4-perplexity-results/
5. โมเดลภาษารถไฟบนหนังสือ (ไม่ได้ใช้สำหรับกระดาษ)
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_finetune_booksum.sh - สคริปต์หลักเรียกไฟล์ Python นี้:
finetune_booksum.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
5-finetune-booksum/
6. การคำนวณประสิทธิภาพของโมเดลบนชุดข้อมูลหนังสือ (เช่นคะแนน Rouge) (ไม่ได้ใช้สำหรับกระดาษ)
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_rouge.sh - สคริปต์หลักเรียกไฟล์ Python นี้:
compute_rouge.py - เอาต์พุตจะถูกสร้างขึ้นใน:
6-rouge-score/
7. วิธีการตีความเพื่อคำนวณความสัมพันธ์ของเพียร์สันสำหรับคุณสมบัติวาทกรรมต่างๆ
- ก่อนอื่นเราต้องติดป้ายคำในข้อความ Harry Potter ด้วยคุณสมบัติวาทกรรมของพวกเขา
- ดาวน์โหลดจาก: http://www.cs.cmu.edu/afs/cs/project/theo-73/www/plosone/
- วางไว้ที่
data/story_features.mat
- ถัดไปเรียกใช้
align_story_feature_TRs.ipynb เพื่อแมปคำที่มีป้ายกำกับกับ fmri trs - ในที่สุดแยก TRS ที่สอดคล้องกับคุณสมบัติวาทกรรมแต่ละรายการและคำนวณคะแนนสหสัมพันธ์ของเพียร์สันสำหรับคุณลักษณะวาทกรรม
- ใช้ไฟล์ Python:
all_scripts/plot_pearson.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
7-pearson-saved/
8. คำนวณความสัมพันธ์ของเพียร์สันสำหรับแต่ละคู่ (วาทกรรมคุณลักษณะ, สมอง ROI) (ไม่ได้ใช้สำหรับกระดาษ)
- ใช้ไฟล์ python:
all_scripts/plot_discourse_and_RoI.py - เอาต์พุตจะถูกสร้างขึ้นใน:
8-RoI-and-pearson-saved/
9. สร้างค่า voxel สมองสำหรับการมองเห็นบนแปลงสมอง
- เปลี่ยนตัวแปรในสคริปต์หลักนี้และเรียกใช้:
all_scripts/scripts/outer_generate_voxel_values.sh - สคริปต์หลักเรียกไฟล์ python นี้:
all_scripts/generate_voxel_values.py - ผลลัพธ์จะถูกสร้างขึ้นใน:
9-pearson-voxels-for-brain-plot/
คนอื่น
- ในการพล็อตตัวเลขสำคัญที่ใช้สำหรับกระดาษดู:
all_scripts/figures_paper/ - ในการพล็อตตัวเลขอื่น ๆ สำหรับการสร้างภาพดู:
all_scripts/plot_{} - ในการเรียกใช้การทดสอบอย่างมีนัยสำคัญและการแก้ไขอัตราการค้นพบที่ผิดพลาด (FDR) โดยใช้ขั้นตอน Benjamini - Hochberg (BH) ดู:
compute_stat_significance.ipynb - ที่เก็บของเราใช้รหัสจากที่เก็บ GitHub ต่อไปนี้