Обучение языковым моделям, чтобы суммировать повествования улучшает выравнивание мозга
Этот репозиторий содержит код для статьи «Модели языка обучения, чтобы суммировать повествования улучшает выравнивание мозга» (ARXIV), опубликованные в ICLR 2023 (Spotlight / Altive 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 субъектов, читающих Гарри Поттер
- Загрузите уже предварительно обработанные данные здесь. Эти данные содержат записи FMRI для 8 предметов, читающих одну главу Гарри Поттера. Данные были взношены, сглажены и обрезаны для удаления первых 20 TRT и последних 15 TTR. Для получения дополнительной информации о данных обратитесь к статье. Мы также предоставили предварительно вычисленные окрестности вокселей, которые мы использовали для вычисления точности классификации Searchlight.
- Поместите его в папку данных в этом репозитории (например
./data/fMRI/ и ./data/voxel_neighborhoods ).
Запуск кода
Ниже мы предоставляем инструкции о том, как запустить различные эксперименты и код, которые мы используем в нашей статье.
- Приведенные ниже разделы заказаны в соответствии с потоком бумаги как можно более близко.
- В нашей статье мы проводим большое количество экспериментов (много моделей, слоев, длины последовательности, субъектов, дискурсивных функций, любителей мозга и т. Д.). Следовательно, мы предоставляем сценарии для автоматизации процесса работы экспериментов по различным моделям, слоям и т. Д. Надеемся, что это сделает как можно более простым для других, чтобы эффективно использовать наш код.
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. Вычислить производительность моделей на наборе данных Bookmum (то есть Rouge Score) (не используется для бумаги)
- Измените переменные в этом основном сценарии и запустите его:
all_scripts/scripts/outer_rouge.sh - Основной сценарий вызывает этот файл Python:
compute_rouge.py - Вывод будет генерироваться в:
6-rouge-score/
7. Метод интерпретации для вычисления корреляции Пирсона для различных функций дискурса
- Во -первых, нам нужно пометить слова в тексте Гарри Поттера своими функциями дискурса
- Скачать его с: 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. Вычислить корреляцию Пирсона для каждой пары (дискурсная функция, рентабельность мозга) (не используется для бумаги)
- Используйте файл python:
all_scripts/plot_discourse_and_RoI.py - Вывод будет генерироваться в:
8-RoI-and-pearson-saved/
9. генерируйте значения вокселя мозга для визуализации на графиках мозга
- Измените переменные в этом основном сценарии и запустите его:
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