Expand description
Machine Learning optimization module for SciRS2
This module provides optimization algorithms specifically designed for machine learning, including stochastic gradient descent variants, learning rate schedulers, and regularization techniques.
§Features
- Optimization algorithms: SGD, Adam, RMSprop, etc.
- Learning rate schedulers: ExponentialDecay, CosineAnnealing, etc.
- Regularization techniques: L1, L2, Dropout, etc.
§Examples
§Traditional API
use ndarray::{Array1, Array2};
use scirs2_optim::optimizers::{SGD, Optimizer};
// Create a simple optimization problem
let params = Array1::zeros(5);
let gradients = Array1::from_vec(vec![0.1, 0.2, -0.3, 0.0, 0.5]);
// Create an optimizer with learning rate 0.01
let mut optimizer = SGD::new(0.01);
// Update parameters using the optimizer
let updated_params = optimizer.step(¶ms, &gradients);
// Parameters should be updated in the negative gradient direction
§Unified API (PyTorch-style)
use ndarray::Array1;
use scirs2_optim::{OptimizerConfig, OptimizerFactory, Parameter, UnifiedOptimizer};
// Create parameters (similar to PyTorch)
let mut param1 = Parameter::new(Array1::from_vec(vec![1.0, 2.0, 3.0]), "layer1.weight");
let mut param2 = Parameter::new(Array1::from_vec(vec![0.1, 0.2]), "layer1.bias");
// Set gradients
param1.set_grad(Array1::from_vec(vec![0.1, 0.2, 0.3]));
param2.set_grad(Array1::from_vec(vec![0.05, 0.1]));
// Create optimizer with configuration
let config = OptimizerConfig::new(0.001f64)
.weight_decay(0.0001)
.grad_clip(1.0);
let mut optimizer = OptimizerFactory::adam(config);
// Update parameters
optimizer.step_param(&mut param1).unwrap();
optimizer.step_param(&mut param2).unwrap();
Re-exports§
pub use adaptive_selection::AdaptiveOptimizerSelector;
pub use adaptive_selection::OptimizerStatistics;
pub use adaptive_selection::OptimizerType;
pub use adaptive_selection::PerformanceMetrics;
pub use adaptive_selection::ProblemCharacteristics;
pub use adaptive_selection::ProblemType;
pub use adaptive_selection::SelectionNetwork;
pub use adaptive_selection::SelectionStrategy;
pub use benchmarking::visualization::OptimizerDashboard;
pub use benchmarking::visualization::OptimizerStateSnapshot;
pub use benchmarking::visualization::OptimizerStateVisualizer;
pub use benchmarking::visualization::VisualizationExport;
pub use benchmarking::BenchmarkResult;
pub use benchmarking::GradientFlowAnalyzer;
pub use benchmarking::GradientFlowStats;
pub use benchmarking::OptimizerBenchmark;
pub use benchmarking::VisualizationData;
pub use curriculum_optimization::AdaptiveCurriculum;
pub use curriculum_optimization::AdversarialAttack;
pub use curriculum_optimization::AdversarialConfig;
pub use curriculum_optimization::CurriculumManager;
pub use curriculum_optimization::CurriculumState;
pub use curriculum_optimization::CurriculumStrategy;
pub use curriculum_optimization::ImportanceWeightingStrategy;
pub use distributed::AveragingStrategy;
pub use distributed::CommunicationResult;
pub use distributed::CompressedGradient;
pub use distributed::CompressionStrategy;
pub use distributed::DistributedCoordinator;
pub use distributed::GradientCompressor;
pub use distributed::ParameterAverager;
pub use distributed::ParameterServer;
pub use domain_specific::CrossDomainKnowledge;
pub use domain_specific::DomainOptimizationConfig;
pub use domain_specific::DomainPerformanceMetrics;
pub use domain_specific::DomainRecommendation;
pub use domain_specific::DomainSpecificSelector;
pub use domain_specific::DomainStrategy;
pub use domain_specific::LearningRateScheduleType;
pub use domain_specific::OptimizationContext;
pub use domain_specific::RecommendationType;
pub use domain_specific::RegularizationApproach;
pub use domain_specific::ResourceConstraints;
pub use domain_specific::TrainingConfiguration;
pub use gradient_accumulation::AccumulationMode;
pub use gradient_accumulation::GradientAccumulator as GradAccumulator;
pub use gradient_accumulation::MicroBatchTrainer;
pub use gradient_accumulation::VariableAccumulator;
pub use hardware_aware::AllReduceAlgorithm;
pub use hardware_aware::CommunicationStrategy;
pub use hardware_aware::GPUArchitecture;
pub use hardware_aware::HardwareAwareOptimizer;
pub use hardware_aware::HardwareOptimizationConfig;
pub use hardware_aware::HardwarePerformanceStats;
pub use hardware_aware::HardwarePlatform;
pub use hardware_aware::MemoryStrategy;
pub use hardware_aware::ParallelizationStrategy;
pub use hardware_aware::PartitionStrategy;
pub use hardware_aware::PerformanceProfiler;
pub use hardware_aware::PrecisionStrategy;
pub use hardware_aware::QuantizationSupport;
pub use hardware_aware::ResourceMonitor;
pub use hardware_aware::SIMDSupport;
pub use hardware_aware::TPUVersion;
pub use hardware_aware::TuningStrategy;
pub use meta_learning::AcquisitionFunction;
pub use meta_learning::HyperparameterOptimizer;
pub use meta_learning::HyperparameterPredictor;
pub use meta_learning::HyperparameterStrategy;
pub use meta_learning::MetaOptimizer;
pub use meta_learning::MetaOptimizerTrait;
pub use meta_learning::NeuralOptimizer;
pub use meta_learning::OptimizationTrajectory;
pub use meta_learning::SGDMetaOptimizer;
pub use meta_learning::UpdateNetwork;
pub use neural_integration::architecture_aware::ArchitectureAwareOptimizer;
pub use neural_integration::architecture_aware::ArchitectureStrategy;
pub use neural_integration::forward_backward::BackwardHook;
pub use neural_integration::forward_backward::ForwardHook;
pub use neural_integration::forward_backward::NeuralIntegration;
pub use neural_integration::LayerArchitecture;
pub use neural_integration::LayerId;
pub use neural_integration::OptimizationConfig;
pub use neural_integration::ParamId;
pub use neural_integration::ParameterManager;
pub use neural_integration::ParameterMetadata;
pub use neural_integration::ParameterOptimizer;
pub use neural_integration::ParameterType;
pub use online_learning::ColumnGrowthStrategy;
pub use online_learning::LearningRateAdaptation;
pub use online_learning::LifelongOptimizer;
pub use online_learning::LifelongStats;
pub use online_learning::LifelongStrategy;
pub use online_learning::MemoryExample;
pub use online_learning::MemoryUpdateStrategy;
pub use online_learning::MirrorFunction;
pub use online_learning::OnlineLearningStrategy;
pub use online_learning::OnlineOptimizer;
pub use online_learning::OnlinePerformanceMetrics;
pub use online_learning::TaskGraph;
pub use second_order::HessianInfo;
pub use second_order::Newton;
pub use second_order::SecondOrderOptimizer;
pub use second_order::LBFGS as SecondOrderLBFGS;
pub use training_stabilization::AveragingMethod;
pub use training_stabilization::ModelEnsemble;
pub use training_stabilization::PolyakAverager;
pub use training_stabilization::WeightAverager;
pub use unified_api::OptimizerConfig;
pub use unified_api::OptimizerFactory;
pub use unified_api::Parameter;
pub use unified_api::TrainingLoop;
pub use unified_api::UnifiedAdam;
pub use unified_api::UnifiedOptimizer;
pub use unified_api::UnifiedSGD;
pub use gradient_processing::*;
pub use optimizer_composition::*;
pub use optimizers::*;
pub use regularizers::*;
pub use schedulers::*;
Modules§
- adaptive_
selection - Adaptive optimization algorithm selection
- benchmarking
- Benchmarking and evaluation tools for optimizers
- curriculum_
optimization - Curriculum optimization for adaptive training
- distributed
- Distributed optimization support
- domain_
specific - Domain-specific optimization strategies
- error
- Error types for the ML optimization module
- gradient_
accumulation - Gradient accumulation for large batch training
- gradient_
processing - Gradient processing utilities for machine learning optimization
- hardware_
aware - Hardware-aware optimization routines
- memory_
efficient - Memory-efficient optimizers and utilities
- meta_
learning - Meta-learning optimization support
- metrics
- Metrics integration for optimization
- neural_
integration - Neural network integration for optimizers
- online_
learning - Online learning and lifelong optimization
- optimizer_
composition - Optimizer composition framework
- optimizers
- Optimization algorithms for machine learning
- parameter_
groups - Parameter groups for different learning rates and configurations
- regularizers
- Regularization techniques for machine learning
- schedulers
- Learning rate schedulers for optimizers
- second_
order - Second-order optimization methods
- training_
stabilization - Training stabilization techniques
- unified_
api - Unified API consistent with popular deep learning frameworks
- utils
- Utility functions for machine learning optimization