Model Assertions for Monitoring and Improving ML Models
  ML models are increasingly deployed in settings with real world interactions
such as vehicles, but unfortunately, these models can fail in systematic ways.
To prevent errors, ML engineering teams monitor and continuously improve these
models. We propose a new abstraction, model assertions, that adapts the
classical use of program assertions as a way to monitor and improve ML models.
Model assertions are arbitrary functions over a model's input and output that
indicate when errors may be occurring, e.g., a function that triggers if an
object rapidly changes its class in a video. We propose methods of using model
assertions at all stages of ML system deployment, including runtime monitoring,
validating labels, and continuously improving ML models. For runtime
monitoring, we show that model assertions can find high confidence errors,
where a model returns the wrong output with high confidence, which
uncertainty-based monitoring techniques would not detect. For training, we
propose two methods of using model assertions. First, we propose a bandit-based
active learning algorithm that can sample from data flagged by assertions and
show that it can reduce labeling costs by up to 40% over traditional
uncertainty-based methods. Second, we propose an API for generating
"consistency assertions" (e.g., the class change example) and weak labels for
inputs where the consistency assertions fail, and show that these weak labels
can improve relative model quality by up to 46%. We evaluate model assertions
on four real-world tasks with video, LIDAR, and ECG data.
