Buckets:
835 MB
10,492 files
Updated 4 months ago
Ctrl+K
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| README.md | 15.4 kB xet | dfb2dac6 | |
| README_Experimental.md | 8.27 kB xet | 44c1a9f9 |
CA6: Systematic Generalization
🧠 Overview
This project implements advanced systematic generalization capabilities in neural networks, focusing on the ability to learn rules and patterns that generalize beyond the training distribution. It addresses fundamental challenges in AI regarding compositional reasoning and systematic behavior.
🎯 Key Features
Core Capabilities
- Compositional Learning: Learning to combine known components in novel ways
- Rule-Based Generalization: Extracting and applying abstract rules
- Systematic Behavior: Consistent application of learned principles
- Out-of-Distribution Generalization: Performance on unseen data distributions
- Meta-Learning: Learning to learn new tasks quickly
Advanced Features
- Neural-Symbolic Integration: Combining neural and symbolic approaches
- Program Synthesis: Automatic generation of reasoning programs
- Hierarchical Learning: Multi-level abstraction and reasoning
- Causal Reasoning: Understanding cause-effect relationships
- Transfer Learning: Applying knowledge across domains
🏗️ System Architecture
1. Learning Pipeline
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Training │ │ Rule │ │ Generalization│
│ Data │───▶│ Extraction │───▶│ Testing │
└─────────────┘ └─────────────┘ └─────────────┘
2. Compositional Architecture
┌─────────────────────────────────────────────────────────┐
│ Compositional Layer │
├─────────────┬─────────────┬─────────────┬─────────────┤
│ Component │ Combination │ Abstraction │ Application │
│ Learning │ Rules │ Layer │ Layer │
└─────────────┴─────────────┴─────────────┴─────────────┘
3. Generalization Testing
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Novel │ │ Systematic │ │ Performance │
│ Tasks │───▶│ Evaluation │───▶│ Analysis │
└─────────────┘ └─────────────┘ └─────────────┘
📁 Project Structure
CA6_systematic_generalization/
├── CA6.ipynb # Main Jupyter notebook
├── main.py # Main execution script
├── demo.py # Demonstration script
├── src/ # Source code
│ ├── models/ # Model implementations
│ │ ├── compositional.py # Compositional models
│ │ ├── rule_based.py # Rule-based models
│ │ ├── meta_learning.py # Meta-learning models
│ │ └── neural_symbolic.py # Neural-symbolic models
│ ├── data/ # Data processing
│ │ ├── generators.py # Data generators
│ │ ├── loaders.py # Data loaders
│ │ └── augmenters.py # Data augmentation
│ ├── training/ # Training utilities
│ │ ├── trainers.py # Training loops
│ │ ├── curriculum.py # Curriculum learning
│ │ └── regularization.py # Regularization techniques
│ ├── evaluation/ # Evaluation metrics
│ │ ├── generalization.py # Generalization metrics
│ │ ├── systematicity.py # Systematicity tests
│ │ └── compositionality.py # Compositionality tests
│ └── utils/ # Utility functions
│ ├── visualization.py # Visualization tools
│ ├── analysis.py # Analysis utilities
│ └── io_utils.py # I/O utilities
├── tests/ # Test files
│ ├── test_models.py # Model tests
│ ├── test_generalization.py # Generalization tests
│ └── test_systematicity.py # Systematicity tests
├── scripts/ # Utility scripts
│ ├── run_experiments.sh # Experiment runner
│ └── analyze_results.py # Result analysis
├── configs/ # Configuration files
│ ├── model_configs.yaml # Model configurations
│ ├── training_configs.yaml # Training configurations
│ └── evaluation_configs.yaml # Evaluation configurations
├── data/ # Data files
│ ├── training/ # Training datasets
│ ├── validation/ # Validation datasets
│ └── test/ # Test datasets
├── results/ # Output results
├── logs/ # Execution logs
├── visualizations/ # Generated visualizations
├── demo_results/ # Demo results
├── requirements.txt # Python dependencies
├── requirements_basic.txt # Basic dependencies
├── run.sh # Execution script
├── run_experiments.sh # Experiment script
└── README.md # This file
🚀 Quick Start
Prerequisites
- Python 3.8+
- CUDA-capable GPU (recommended)
- Jupyter Notebook
Installation
- Clone the repository
git clone <repository-url>
cd CA6_systematic_generalization
- Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies
# Install basic dependencies
pip install -r requirements_basic.txt
# Install full dependencies
pip install -r requirements.txt
- Run the project
chmod +x run.sh
./run.sh
Manual Execution
# Run main script
python main.py
# Run demonstration
python demo.py
# Run experiments
chmod +x run_experiments.sh
./run_experiments.sh
# Run Jupyter notebook
jupyter notebook CA6.ipynb
🔧 Configuration
Model Configurations
# configs/model_configs.yaml
compositional_model:
embedding_dim: 128
hidden_dim: 256
num_components: 10
composition_depth: 3
dropout: 0.1
rule_based_model:
rule_dim: 64
max_rules: 100
rule_threshold: 0.8
inference_depth: 5
meta_learning_model:
inner_lr: 0.01
outer_lr: 0.001
num_inner_steps: 5
num_meta_tasks: 100
Training Configurations
# configs/training_configs.yaml
training:
batch_size: 32
learning_rate: 0.001
num_epochs: 100
weight_decay: 1e-4
gradient_clip: 1.0
curriculum:
enabled: true
difficulty_levels: 5
progression_rate: 0.1
regularization:
l1_weight: 0.01
l2_weight: 0.001
dropout_rate: 0.1
📊 Features & Capabilities
1. Compositional Learning
- Component Learning: Learning basic components
- Composition Rules: Learning how to combine components
- Novel Combinations: Creating new combinations
- Hierarchical Composition: Multi-level composition
2. Rule-Based Generalization
- Rule Extraction: Automatically extracting rules
- Rule Application: Applying rules to new situations
- Rule Refinement: Improving rules over time
- Rule Conflict Resolution: Handling conflicting rules
3. Meta-Learning
- Few-Shot Learning: Learning from few examples
- Task Adaptation: Adapting to new tasks quickly
- Transfer Learning: Transferring knowledge across tasks
- Continual Learning: Learning new tasks without forgetting
4. Systematic Evaluation
- Compositionality Tests: Testing compositional abilities
- Systematicity Tests: Testing systematic behavior
- Generalization Tests: Testing out-of-distribution performance
- Robustness Tests: Testing robustness to variations
🧪 Experiments & Tasks
1. SCAN Dataset
- Command Following: Following natural language commands
- Compositional Generalization: Novel command combinations
- Systematic Behavior: Consistent application of rules
2. CLEVR Dataset
- Visual Reasoning: Answering questions about images
- Compositional Questions: Complex question combinations
- Systematic Generalization: Novel question types
3. Mathematical Reasoning
- Arithmetic Operations: Basic mathematical operations
- Algebraic Manipulation: Symbolic mathematical reasoning
- Proof Generation: Generating mathematical proofs
4. Program Synthesis
- Code Generation: Generating code from specifications
- Program Composition: Combining program components
- Systematic Programming: Consistent programming patterns
📈 Usage Examples
Basic Compositional Learning
from src.models.compositional import CompositionalModel
# Initialize model
model = CompositionalModel()
# Train on compositional tasks
model.train(training_data)
# Test on novel combinations
results = model.evaluate(test_data)
print(f"Compositional accuracy: {results['accuracy']}")
Rule-Based Generalization
from src.models.rule_based import RuleBasedModel
# Initialize rule-based model
rule_model = RuleBasedModel()
# Extract rules from data
rules = rule_model.extract_rules(training_data)
# Apply rules to new data
predictions = rule_model.apply_rules(test_data, rules)
print(f"Rule-based predictions: {predictions}")
Meta-Learning
from src.models.meta_learning import MetaLearningModel
# Initialize meta-learning model
meta_model = MetaLearningModel()
# Meta-train on multiple tasks
meta_model.meta_train(meta_tasks)
# Adapt to new task
adapted_model = meta_model.adapt(new_task_data)
Systematic Evaluation
from src.evaluation.systematicity import SystematicityEvaluator
# Initialize evaluator
evaluator = SystematicityEvaluator()
# Test systematic behavior
results = evaluator.evaluate(model, test_tasks)
print(f"Systematicity score: {results['systematicity']}")
print(f"Compositionality score: {results['compositionality']}")
🔍 Advanced Features
1. Curriculum Learning
- Difficulty Progression: Gradually increasing difficulty
- Task Ordering: Optimal task ordering
- Adaptive Curriculum: Adapting curriculum based on performance
- Multi-Task Curriculum: Curriculum across multiple tasks
2. Neural-Symbolic Integration
- Symbol Grounding: Connecting symbols to neural representations
- Symbolic Reasoning: Logical reasoning with symbols
- Neural-Symbolic Bridge: Converting between representations
- Hybrid Architectures: Combining neural and symbolic components
3. Causal Reasoning
- Causal Discovery: Discovering causal relationships
- Causal Inference: Making causal inferences
- Intervention: Reasoning about interventions
- Counterfactual Reasoning: Reasoning about counterfactuals
4. Program Synthesis
- Program Generation: Generating programs from specifications
- Program Verification: Verifying program correctness
- Program Optimization: Optimizing generated programs
- Program Composition: Composing programs from components
🛠️ Development
Adding New Models
- Create model class in
src/models/ - Implement required methods:
train(),evaluate(), etc. - Add configuration in
configs/model_configs.yaml - Add tests in
tests/test_models.py - Update documentation
Adding New Tasks
- Create task class in
src/tasks/ - Implement data generation and evaluation
- Add configuration in
configs/task_configs.yaml - Add tests in
tests/test_tasks.py - Update documentation
Running Experiments
# Run all experiments
./run_experiments.sh
# Run specific experiment
python -m src.experiments.compositional_experiment
# Run with custom parameters
python -m src.experiments.compositional_experiment --epochs 200 --batch_size 64
📚 Theoretical Background
Systematic Generalization
- Compositionality: Building complex meanings from simple parts
- Systematicity: Ability to understand novel combinations
- Productivity: Generating infinitely many expressions
- Rule Learning: Learning abstract rules from examples
Key Concepts
- Inductive Bias: Biases that guide learning
- Generalization: Performance on unseen data
- Overfitting: Memorizing training data
- Underfitting: Insufficient learning
📖 References
Key Papers
- Lake, B. M., & Baroni, M. "Generalizing outside the training set"
- Bahdanau, D., et al. "Systematic generalization: What is required"
- Keysers, D., et al. "Measuring compositional generalization"
Datasets
- SCAN: https://github.com/brendenlake/SCAN
- CLEVR: https://cs.stanford.edu/people/jcjohns/clevr/
- COGS: https://github.com/najoungkim/COGS
📞 Support
Issues
- Report bugs via GitHub Issues
- Request features via GitHub Discussions
- Ask questions via GitHub Discussions
Documentation
- API Documentation:
docs/api/ - Tutorials:
docs/tutorials/ - Examples:
examples/
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Systematic generalization research community
- Compositional learning researchers
- Meta-learning researchers
- Open source libraries and frameworks
✅ Assessment Checklist
Before submission, ensure you have completed:
- Build Compositional Models: Implement learning architectures that compose basic components into novel combinations
- Develop Rule Extraction: Create systems that automatically extract and apply abstract rules
- Implement Meta-Learning: Design few-shot learning capabilities with rapid task adaptation
- Test Systematic Generalization: Evaluate on SCAN, CLEVR, and custom tasks with out-of-distribution test sets
📚 Course Resources
Related Lecture Decks
- Slides 6: NeuroSymbolic - Concept Reasoning - Compositional understanding
- Slides 7: NeuroSymbolic - Systematic Generalization - Core concepts
- Slides 8: Symbolic Regression - Pattern learning and abstraction
Annotated Notes & Exercises
- S2I_S06: Systematic Generalization - Theoretical foundations
- S2I_S07: Compositional Learning - Advanced techniques
- A2I_S08: Meta-Learning - Few-shot learning strategies
Companion Assignments
- CA1: Neurosymbolic Integration - Hybrid reasoning systems
- CA7: NeuroSymbolic Systems - Advanced integration
- CA8: Neural Program Synthesis - Compositional program generation
Last Updated: January 2025
Version: 1.0.0
Maintainer: AI Systems Course Team
- Total size
- 835 MB
- Files
- 10,492
- Last updated
- Jun 17
- Pre-warmed CDN
- US EU US EU