CROWN Graph #
Graph-based LiRPA scaffolding (IBP + CROWN-style affine bounds).
This file is the "graph engine" counterpart to NN.MLTheory.CROWN.Core:
coredefines the scalar/box/affine primitives (Box,AffineVec,IBP.linear),graphlifts those primitives to arbitrary tensor DAGs (NN.IR.Graph).
What this module is for:
- Representing computation graphs over typed tensors.
- Propagating interval bounds forward (IBP).
- Propagating affine bounds (CROWN/DeepPoly style) w.r.t. a designated input node.
- Optionally running objective-dependent backward passes for tighter bounds.
Design notes:
- We store flattened bounds (
FlatBox,FlatAffine*) so we can reuseAffineVecunchanged. - Sequence models are represented by unrolling recurrent cells into a DAG (shared parameters, repeated ops).
- Transformer-style models rely on matmul/softmax/elementwise ops; relaxations are added incrementally.
References:
- auto_LiRPA: Xu et al., "Automatic Perturbation Analysis for Scalable Certified Robustness and Beyond", NeurIPS 2020, arXiv:2002.12920 (https://arxiv.org/abs/2002.12920).
- CROWN: Zhang et al., "Efficient Neural Network Robustness Certification with General Activation Functions", arXiv:1811.00866 (https://arxiv.org/abs/1811.00866).
PyTorch analogues (conceptual):
torch.fxgraphs as a user-facing DAG representation: https://pytorch.org/docs/stable/fx.htmlauto_LiRPAas a practical LiRPA implementation over PyTorch graphs.
Typed IR graph used by the CROWN/LiRPA engines.
Instances For
Flatten a shaped center/radius pair into the graph-level interval-box representation.
Instances For
Uniform ℓ∞ box around a shaped tensor.
Instances For
IR operation kinds used by the graph engine.
Instances For
IR nodes used by the graph engine.
Instances For
Flattened affine form for a node output with respect to a fixed flattened input.
This represents y ≈ A*x + c for a chosen input node x.
Instances For
Flattened affine lower and upper bounds for a node output w.r.t. a fixed flattened input.
- inDim : ℕ
Flattened input dimension.
- outDim : ℕ
Flattened output dimension.
Lower affine bound form.
Upper affine bound form.
Instances For
Evaluate a flattened affine form on a flattened input box after checking the input dimension.
Instances For
Evaluate and view the output at a checked vector dimension.
Instances For
Evaluate lower/upper affine bounds on a flattened input box.
The lower affine form contributes the lower endpoint; the upper affine form contributes the upper endpoint. This is the common CROWN workflow shape.
Instances For
Evaluate lower/upper affine bounds and view the output at a checked vector dimension.
Instances For
Per-node bound state (flattened).
The option fields record which analyses have populated a node: an interval-only pass fills ibp?,
while affine CROWN passes additionally fill aff?.
- shape : Spec.Shape
Original (unflattened) tensor shape of the node output.
Interval bounds (IBP) if available.
- aff? : Option (FlatAffine α)
Affine form if available.