tahamajs's picture
|
download
raw
15.4 kB
# 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
1. **Clone the repository**
```bash
git clone <repository-url>
cd CA6_systematic_generalization
```
2. **Create virtual environment**
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. **Install dependencies**
```bash
# Install basic dependencies
pip install -r requirements_basic.txt
# Install full dependencies
pip install -r requirements.txt
```
4. **Run the project**
```bash
chmod +x run.sh
./run.sh
```
### Manual Execution
```bash
# 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
```yaml
# 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
```yaml
# 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
```python
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
```python
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
```python
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
```python
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
1. **Create model class** in `src/models/`
2. **Implement required methods**: `train()`, `evaluate()`, etc.
3. **Add configuration** in `configs/model_configs.yaml`
4. **Add tests** in `tests/test_models.py`
5. **Update documentation**
### Adding New Tasks
1. **Create task class** in `src/tasks/`
2. **Implement data generation** and evaluation
3. **Add configuration** in `configs/task_configs.yaml`
4. **Add tests** in `tests/test_tasks.py`
5. **Update documentation**
### Running Experiments
```bash
# 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

Xet Storage Details

Size:
15.4 kB
Β·
Xet hash:
dfb2dac696a2b4807fabb0763a435259fb7a9a04aff7706d61446a98bf098546

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.