bimr-interpretability-eval
Is Multi-Hop Reasoning Really Explainable? Towards Benchmarking Reasoning Interpretability — Lv et al. (2021) (arXiv:2104.06751, 2021)
What this evaluates
This benchmark evaluates the reasoning interpretability of knowledge graph completion models by measuring how well their generated multi-hop paths or rules can be understood and validated. It probes whether models produce semantically reasonable explanations rather than just statistically valid paths, highlighting the gap between link prediction accuracy and actual explainability.
Datasets
- WD15K — total ?; splits: test (-1); repo https://github.com/THU-KEG/BIMR
- FB15K-237 — total ?; splits: test (-1); repo https://github.com/THU-KEG/BIMR
Metrics
PR (Path Recall)— range: [0, 1]- Proportion of test triples for which the model successfully generates at least one valid reasoning path to the correct tail entity.
LI (Local Interpretability)— range: [0, 1]- Interpretability score assigned to individual reasoning paths or rules, typically derived from rule confidence or semantic validity checks.
GI (Global Interpretability)(primary) — range: [0, 1]- Aggregated interpretability score across all test triples, reflecting the model's overall ability to produce understandable reasoning paths. Computed as the average LI score across the dataset.
MRR— range: [0, 1]- Mean Reciprocal Rank of the correct tail entity in the model's ranked list of predictions for link completion.
Hits@N— range: [0, 1]- Fraction of test queries where the correct tail entity appears in the top N predictions of the ranked list.
Input / output format
Input: Triple query (head entity, relation, ?) from the knowledge graph test set.
Output: Descending order of probabilities for candidate tail entities, and/or generated multi-hop reasoning paths or mined rules.
Scoring recipe
def evaluate_interpretability(test_triples, model):
pr_scores = []
li_scores = []
for h, r, t in test_triples:
paths = model.generate_paths(h, r)
# PR: check if any path leads to the correct tail
pr_scores.append(1 if any(p.tail == t for p in paths) else 0)
# LI: score each generated path (e.g., via rule confidence or validity)
path_li = [score_path_interpretability(p) for p in paths]
li_scores.extend(path_li)
# GI: average local interpretability across all test triples
gi = sum(li_scores) / len(test_triples)
# Tables report metrics multiplied by 100
return sum(pr_scores)/len(test_triples), gi * 100
Common pitfalls
- A high LI score does not indicate good interpretability if PR is low, as the model may only output high-confidence rules that do not correspond to actual reasoning paths.
- Evaluating a model using rules mined by itself (R-benchmark) creates circularity and inflates interpretability scores compared to the ground-truth A-benchmark.
- All reported interpretability metrics in the tables are multiplied by 100, so raw values should be treated as probabilities in [0, 1].
Evidence (verbatim from paper)
We use two evaluation metrics MRR, and Hits@N Dettmers et al. (2018)* in experiments. The interpretability evaluation experiment is mainly used to measure the interpretability of reasoning models. Three evaluation metrics, i.e., PR, LI, and GI, are used in this experiment.
Citation
@misc{lv2021ismultihopreasoningreallyexplainable,
title={Is Multi-Hop Reasoning Really Explainable? Towards Benchmarking Reasoning Interpretability},
author={Lv et al. (2021)},
year={2021},
note={arXiv:2104.06751}
}
- arXiv: 2104.06751