Buckets:
| # 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.