По сути -- это конвейер, который использует методы библиотеки NeuroX для пробинга по нейронам и слоям
-
Сначала вы должны использовать AIRI Probing framework (https://github.com/AIRI-Institute/Probing_framework), то есть подать туда conllu файлы, затем положить полученные .csv файлы в папку проекта (f'project/data/data_{language}_{dataset}')
-
Ниже приведен код, который для всех файлов создает balanced-выборку для трейна и теста, получает эмбеддинги для предложений. Вы можете получить true данные, а также данные для Control Task с перепутанными лейблами грамматических категорий.
-
Затем вы должны создать экземляр класса Trainer. Вы должны создавать новый экземляр каждый раз, когда меняете данные, которые туда подаете, а также флаг ablation (для зануления части нейронов).
-
Что умеет делать Trainer (его методы):
Он умеет работать с одной и многими грамматическими категориями.
- train_classification() -- обычная пробинг-классификация (log reg). Scores лежат в аттрибуте scores (сохраните в отдельную переменную)
- train_classification(n=5, goal='ranking') -- записывает в словарь ранжированные нейроны. Если n=5, запишет для каждой категории по 5 top-нейронов. Они лежат в аттрибуте ordered_neurons.
- train_classification(n=5, goal='keep_ablation') -- пробинг на топ-n нейронах. Scores лежат в аттрибуте ablation_top_scores (сохраните в отдельную переменную)
- train_classification(i=9884, goal='remove_ablation') -- пробинг на bottom-n нейронах. Удаляет i нейронов. Scores лежат в аттрибуте ablation_bottom_scores (сохраните в отдельную переменную)
- train_layers -- учится на всех слоях по очереди. Scores лежат в аттрибуте scores (сохраните в отдельную переменную)