pub struct DriftMask { /* private fields */ }alloc only.Expand description
Drift-triggered parameter isolation.
When drift is detected, computes an importance mask from the accumulated gradient magnitudes and freezes the most important parameters (setting their gradients to zero). The remaining parameters are free to adapt.
This is a streaming version of PackNet (Mallya & Lazebnik, 2018): instead of task boundaries, irithyll’s drift detectors trigger mask updates.
§Example
use irithyll_core::continual::{DriftMask, ContinualStrategy};
use irithyll_core::drift::DriftSignal;
let mut mask = DriftMask::with_defaults(10);
// Train for a while, accumulating importance
for _ in 0..100 {
let params = vec![0.0; 10];
let mut grads = vec![0.1; 10];
mask.pre_update(¶ms, &mut grads);
}
// Drift detected: freeze top 30% of params
mask.on_drift(&[0.0; 10], DriftSignal::Drift);
assert_eq!(mask.n_frozen(), 3); // 30% of 10Implementations§
Source§impl DriftMask
impl DriftMask
Sourcepub fn new(n_params: usize, freeze_fraction: f64, importance_alpha: f64) -> Self
pub fn new(n_params: usize, freeze_fraction: f64, importance_alpha: f64) -> Self
Create a new DriftMask with explicit hyperparameters.
§Arguments
n_params– number of parameters to managefreeze_fraction– fraction of currently unfrozen params to freeze on driftimportance_alpha– EWMA decay for importance; closer to 1.0 = longer memory
§Panics
Panics if freeze_fraction is not in [0.0, 1.0] or importance_alpha
is not in [0.0, 1.0].
Sourcepub fn with_defaults(n_params: usize) -> Self
pub fn with_defaults(n_params: usize) -> Self
Create a new DriftMask with default hyperparameters.
Defaults: freeze_fraction = 0.3, importance_alpha = 0.99.
Sourcepub fn frozen_fraction(&self) -> f64
pub fn frozen_fraction(&self) -> f64
Fraction of parameters currently frozen.
Sourcepub fn importance(&self) -> &[f64]
pub fn importance(&self) -> &[f64]
Current importance values.
Sourcepub fn unfreeze_all(&mut self)
pub fn unfreeze_all(&mut self)
Unfreeze all parameters (fresh start for isolation).
Trait Implementations§
Source§impl ContinualStrategy for DriftMask
impl ContinualStrategy for DriftMask
Source§fn pre_update(&mut self, _params: &[f64], gradients: &mut [f64])
fn pre_update(&mut self, _params: &[f64], gradients: &mut [f64])
params = current parameter values, gradients = computed gradients (modified in-place).