feat(models): DoublyRobustModel for sparse benchmark correction (#40)#48
Open
pranilraichura wants to merge 6 commits into
Open
feat(models): DoublyRobustModel for sparse benchmark correction (#40)#48pranilraichura wants to merge 6 commits into
pranilraichura wants to merge 6 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements
DoublyRobustModelfor issue #40. Wraps a fitted base IRT model and learns an additive correction layer trained with IPW-weighted loss to correct for MNAR bias in sparse benchmark matrices.Background: in the Fantastic Bugs setting, not every LLM is evaluated on every benchmark task. When missingness is informative (frontier models skip easy benchmarks, cheap models skip expensive ones), naive IRT fits are biased. The DR model corrects for this at training time.
Design
DoublyRobustModel(base_model)freezes the base model's parameterscorrection_abilityandcorrection_difficulty(residual Rasch layer, initialized to zero so predictions start identical to base)fit()estimates propensity scores via logistic regression on the observation pattern, then trains the correction viamle_fitwith IPW-weighted Bernoulli losspredict()returnsclamp(base_pred + sigmoid(alpha_i - beta_j) - 0.5)Files
src/torch_measure/models/doubly_robust.pysrc/torch_measure/models/__init__.pytests/test_models/test_doubly_robust.py(11 tests)tutorials/doubly_robust_sparse_benchmarks.ipynbQuestions for Sang
method='mle'is supported infit()-- happy to wire up othersTest plan
pytest tests/test_models/test_doubly_robust.py -vDoublyRobustModelimportable fromtorch_measure.models