Buckets:
| # CA6: Systematic Generalization in Neural Networks | |
| ## ๐ฏ Project Overview | |
| A comprehensive implementation of **Systematic Generalization** techniques for neural networks, focusing on compositional learning, out-of-distribution generalization, and the ability to understand and apply learned concepts to novel situations. This project explores how neural networks can learn to generalize systematically like human cognition. | |
| ### ๐ What is Systematic Generalization? | |
| Systematic generalization is the ability to understand and produce novel combinations of known components. For example, if you learn "jump twice" and "walk backwards", you should be able to understand "jump backwards" and "walk twice" without explicit training. | |
| **Key Challenge**: Standard neural networks often fail at systematic generalization, memorizing training patterns rather than learning compositional rules. | |
| **Example (SCAN Dataset)**: | |
| - **Training**: "jump" โ JUMP, "jump twice" โ JUMP JUMP | |
| - **Testing**: "jump thrice" โ JUMP JUMP JUMP (requires systematic generalization) | |
| --- | |
| ## โจ Key Features | |
| ### Core Implementations | |
| - โ **SCAN Dataset** - Compositional language-to-action mapping | |
| - โ **Neural Architectures** - Transformers, LSTMs, GRUs for sequence-to-sequence learning | |
| - โ **Neurosymbolic Systems** - Hybrid approaches combining neural and symbolic reasoning | |
| - โ **Symbolic Systems** - Pure symbolic approaches for comparison | |
| - โ **Advanced Techniques** - Meta-learning, curriculum learning, attention mechanisms | |
| - โ **Grokking Analysis** - Understanding sudden generalization phenomena | |
| - โ **Language-Conditioned Embeddings** - Compositional representation learning | |
| ### Advanced Features | |
| - ๐ง **Neural-Symbolic Recursive Machines** - Hierarchical compositional reasoning | |
| - ๐ **Compositional Attention** - Learning to attend to relevant components | |
| - ๐ **Modular Networks** - Specialized modules for different operations | |
| - ๐จ **Visualization Tools** - Attention maps, generalization curves, error analysis | |
| - ๐ **Comprehensive Evaluation** - Multiple metrics and benchmarks | |
| - ๐ค **Mini-Project** - Complete SCAN solver implementation | |
| --- | |
| ## ๐ Project Structure | |
| ``` | |
| CA6_systematic_generalization/ | |
| โโโ README.md # This file - Complete project overview | |
| โโโ requirements.txt # Python dependencies | |
| โโโ setup_structure.py # Project setup script | |
| โโโ systematic_generalization.log # Execution logs | |
| โ | |
| โโโ notebooks/ # ๐ Jupyter Notebooks | |
| โ โโโ 01_Advanced_Systematic_Generalization.ipynb # Main comprehensive notebook | |
| โ โโโ 02_SCAN_Mini_Project.ipynb # Complete SCAN mini-project | |
| โ โโโ CA6.ipynb # Original experimental notebook | |
| โ โโโ CA6_Experimental_Notebook.ipynb # Additional experiments | |
| โ | |
| โโโ src/ # ๐ง Source Code | |
| โ โโโ core/ # Core components | |
| โ โ โโโ components.py # Base classes and utilities | |
| โ โ | |
| โ โโโ datasets/ # Dataset implementations | |
| โ โ โโโ dataset_implementations.py # SCAN and other datasets | |
| โ โ โโโ advanced_datasets.py # Advanced dataset loaders | |
| โ โ | |
| โ โโโ models/ # Model implementations | |
| โ โ โโโ neural_architectures.py # Seq2Seq, Transformer, LSTM | |
| โ โ โโโ symbolic_systems.py # Symbolic reasoning systems | |
| โ โ โโโ neurosymbolic_systems.py # Hybrid systems | |
| โ โ โโโ advanced_neural_architectures.py # Advanced neural models | |
| โ โ โโโ advanced_symbolic_systems.py # Advanced symbolic models | |
| โ โ โโโ advanced_neurosymbolic_systems.py # Advanced hybrid models | |
| โ โ โโโ neural_symbolic_recursive_machine.py # Recursive reasoning | |
| โ โ โโโ language_conditioned_embeddings.py # Compositional embeddings | |
| โ โ โโโ grokking_analyzer.py # Grokking analysis tools | |
| โ โ | |
| โ โโโ evaluation/ # Evaluation and metrics | |
| โ โ โโโ evaluation_framework.py # Evaluation framework | |
| โ โ โโโ advanced_evaluation_metrics.py # Advanced metrics | |
| โ โ | |
| โ โโโ experiments/ # Experiment runners | |
| โ โ โโโ experiment_runner.py # Automated experiment execution | |
| โ โ | |
| โ โโโ visualization/ # Visualization tools | |
| โ โโโ visualization_tools.py # Basic visualizations | |
| โ โโโ advanced_visualization_tools.py # Advanced visualizations | |
| โ | |
| โโโ scripts/ # ๐ Execution Scripts | |
| โ โโโ [Script files] # Main execution scripts | |
| โ | |
| โโโ demos/ # ๐ฎ Interactive Demos | |
| โ โโโ [Demo files] # Interactive demonstrations | |
| โ | |
| โโโ demo_results/ # Demo output results | |
| โ | |
| โโโ tests/ # ๐งช Test Suite | |
| โ โโโ [Test files] # Unit and integration tests | |
| โ | |
| โโโ docs/ # ๐ Documentation | |
| โ โโโ [Documentation files] # Guides and references | |
| โ | |
| โโโ data/ # ๐ Data Directory | |
| โ โโโ scan/ # SCAN dataset | |
| โ โโโ results/ # Experiment results | |
| โ โโโ logs/ # Training logs | |
| โ โโโ visualizations/ # Generated visualizations | |
| โ | |
| โโโ models/ # ๐พ Saved Models | |
| โ โโโ checkpoints/ # Model checkpoints | |
| โ | |
| โโโ config/ # โ๏ธ Configuration Files | |
| โ โโโ [Config files] # Experiment configurations | |
| โ | |
| โโโ configs/ # Additional configurations | |
| ``` | |
| --- | |
| ## ๐ Quick Start | |
| ### 1. Installation | |
| ```bash | |
| # Clone or navigate to the project directory | |
| cd /path/to/CA6_systematic_generalization | |
| # Install dependencies | |
| pip install -r requirements.txt | |
| # Optional: Set up project structure | |
| python setup_structure.py | |
| ``` | |
| ### 2. Run Experiments | |
| ```bash | |
| # Navigate to scripts directory | |
| cd scripts | |
| # Run main experiments | |
| ./run.sh | |
| # Or run Python scripts directly | |
| python main.py | |
| ``` | |
| ### 3. Explore Jupyter Notebooks | |
| ```bash | |
| # Start Jupyter Lab or Notebook | |
| jupyter lab | |
| # or | |
| jupyter notebook | |
| # Open one of the notebooks: | |
| # - notebooks/01_Advanced_Systematic_Generalization.ipynb (Main comprehensive notebook) | |
| # - notebooks/02_SCAN_Mini_Project.ipynb (Complete SCAN mini-project) | |
| # - notebooks/CA6.ipynb (Original experimental notebook) | |
| ``` | |
| --- | |
| ## ๐ Core Concepts and Techniques | |
| ### 1. The SCAN Dataset | |
| **SCAN** (Simplified version of the CommAI Navigation tasks) is a benchmark for compositional generalization. | |
| **Task**: Map natural language commands to action sequences | |
| **Examples**: | |
| - "jump" โ JUMP | |
| - "jump twice" โ JUMP JUMP | |
| - "walk and jump" โ WALK JUMP | |
| - "turn left twice and walk" โ LTURN LTURN WALK | |
| **Splits**: | |
| 1. **Simple Split**: Random train/test split | |
| 2. **Length Split**: Test on longer sequences than training | |
| 3. **Add Jump Split**: Test on "jump" combinations (hardest) | |
| 4. **Template Split**: Test on unseen templates | |
| **Challenge**: Models must learn compositional rules, not memorize patterns | |
| **File**: `src/datasets/dataset_implementations.py` | |
| --- | |
| ### 2. Neural Architectures | |
| #### Sequence-to-Sequence with Attention | |
| **Architecture**: | |
| - **Encoder**: LSTM/GRU processes input command | |
| - **Attention**: Learns to focus on relevant input parts | |
| - **Decoder**: LSTM/GRU generates action sequence | |
| **Usage Example**: | |
| ```python | |
| from src.models.neural_architectures import Seq2SeqWithAttention | |
| model = Seq2SeqWithAttention( | |
| vocab_size=100, | |
| embedding_dim=128, | |
| hidden_dim=256, | |
| num_layers=2 | |
| ) | |
| # Training | |
| output = model(input_commands, target_actions) | |
| loss = criterion(output, target_actions) | |
| # Inference | |
| predictions = model.generate(input_command, max_length=50) | |
| ``` | |
| #### Transformer Models | |
| **Architecture**: | |
| - **Multi-head self-attention**: Captures dependencies | |
| - **Positional encoding**: Sequence order information | |
| - **Feed-forward layers**: Non-linear transformations | |
| **Usage Example**: | |
| ```python | |
| from src.models.neural_architectures import TransformerSeq2Seq | |
| model = TransformerSeq2Seq( | |
| vocab_size=100, | |
| d_model=512, | |
| nhead=8, | |
| num_encoder_layers=6, | |
| num_decoder_layers=6 | |
| ) | |
| output = model(src, tgt, src_mask, tgt_mask) | |
| ``` | |
| **File**: `src/models/neural_architectures.py` | |
| --- | |
| ### 3. Neurosymbolic Systems | |
| **Concept**: Combine neural perception with symbolic reasoning for better compositional generalization. | |
| **Components**: | |
| 1. **Neural Parser**: Extracts compositional structure from input | |
| 2. **Symbolic Reasoner**: Applies compositional rules | |
| 3. **Hybrid Executor**: Combines neural and symbolic outputs | |
| **Implementation**: `NeurosymbolicCompositionLearner` | |
| **Usage Example**: | |
| ```python | |
| from src.models.neurosymbolic_systems import NeurosymbolicCompositionLearner | |
| model = NeurosymbolicCompositionLearner( | |
| vocab_size=100, | |
| embedding_dim=128, | |
| num_primitives=10, | |
| num_combinators=5 | |
| ) | |
| # Forward pass | |
| output = model(input_sequence) | |
| # Extract compositional structure | |
| structure = model.parse_compositional_structure(input_sequence) | |
| print(f"Primitives: {structure['primitives']}") | |
| print(f"Combinators: {structure['combinators']}") | |
| ``` | |
| **Benefits**: | |
| - Better compositional generalization | |
| - Interpretable intermediate representations | |
| - Can incorporate prior knowledge | |
| **File**: `src/models/neurosymbolic_systems.py` | |
| --- | |
| ### 4. Symbolic Systems | |
| **Pure symbolic approaches** for comparison and baseline. | |
| **Implementation**: `SymbolicCompositionSystem` | |
| **Components**: | |
| - **Grammar**: Formal grammar for compositional structure | |
| - **Parser**: Parses input into compositional tree | |
| - **Executor**: Executes compositional tree to generate output | |
| **Usage Example**: | |
| ```python | |
| from src.models.symbolic_systems import SymbolicCompositionSystem | |
| system = SymbolicCompositionSystem() | |
| # Define grammar rules | |
| system.add_rule("jump", ["JUMP"]) | |
| system.add_rule("twice", lambda x: x + x) | |
| system.add_rule("and", lambda x, y: x + y) | |
| # Parse and execute | |
| output = system.execute("jump twice") | |
| print(output) # ['JUMP', 'JUMP'] | |
| ``` | |
| **Benefits**: | |
| - Perfect compositional generalization (if grammar is complete) | |
| - Fully interpretable | |
| - No training required | |
| **Limitations**: | |
| - Requires manual grammar specification | |
| - Cannot handle noise or ambiguity | |
| - No learning from data | |
| **File**: `src/models/symbolic_systems.py` | |
| --- | |
| ### 5. Advanced Techniques | |
| #### Neural-Symbolic Recursive Machine (NSRM) | |
| **Concept**: Hierarchical compositional reasoning with recursive structure. | |
| **Architecture**: | |
| - **Recursive encoder**: Processes hierarchical structure | |
| - **Compositional decoder**: Generates hierarchical output | |
| - **Structure predictor**: Learns compositional tree structure | |
| **Usage Example**: | |
| ```python | |
| from src.models.neural_symbolic_recursive_machine import NeuralSymbolicRecursiveMachine | |
| nsrm = NeuralSymbolicRecursiveMachine( | |
| vocab_size=100, | |
| embedding_dim=128, | |
| hidden_dim=256, | |
| max_depth=5 | |
| ) | |
| output = nsrm(input_sequence) | |
| ``` | |
| **File**: `src/models/neural_symbolic_recursive_machine.py` | |
| #### Language-Conditioned Embeddings | |
| **Concept**: Learn compositional embeddings that respect linguistic structure. | |
| **Features**: | |
| - **Primitive embeddings**: Basic concept representations | |
| - **Composition functions**: Combine primitives compositionally | |
| - **Language conditioning**: Guided by linguistic structure | |
| **Usage Example**: | |
| ```python | |
| from src.models.language_conditioned_embeddings import LanguageConditionedEmbedding | |
| lce = LanguageConditionedEmbedding( | |
| vocab_size=100, | |
| embedding_dim=128, | |
| num_primitives=20 | |
| ) | |
| # Get compositional embedding | |
| embedding = lce(input_sequence) | |
| # Decompose into primitives | |
| primitives = lce.decompose(embedding) | |
| ``` | |
| **File**: `src/models/language_conditioned_embeddings.py` | |
| #### Grokking Analysis | |
| **Concept**: Understanding sudden generalization phenomena where models suddenly "get it" after extended training. | |
| **Analysis Tools**: | |
| - **Generalization curves**: Track test accuracy over training | |
| - **Phase transition detection**: Identify grokking points | |
| - **Weight analysis**: Understand what changes during grokking | |
| - **Visualization**: Plot grokking phenomena | |
| **Usage Example**: | |
| ```python | |
| from src.models.grokking_analyzer import GrokkingAnalyzer | |
| analyzer = GrokkingAnalyzer() | |
| # Analyze training dynamics | |
| results = analyzer.analyze_training( | |
| model=model, | |
| train_loader=train_loader, | |
| test_loader=test_loader, | |
| num_epochs=10000 | |
| ) | |
| # Visualize grokking | |
| analyzer.plot_grokking_curve(results) | |
| analyzer.detect_phase_transition(results) | |
| ``` | |
| **File**: `src/models/grokking_analyzer.py` | |
| --- | |
| ## ๐ Jupyter Notebooks | |
| ### 1. 01_Advanced_Systematic_Generalization.ipynb (Main Comprehensive Notebook) | |
| **Content**: Complete guide to systematic generalization | |
| **Sections**: | |
| 1. **Introduction**: What is systematic generalization? | |
| 2. **SCAN Dataset**: Understanding the benchmark | |
| 3. **Neural Approaches**: Seq2Seq, Transformers, attention | |
| 4. **Neurosymbolic Approaches**: Hybrid systems | |
| 5. **Symbolic Approaches**: Grammar-based systems | |
| 6. **Advanced Techniques**: NSRM, language-conditioned embeddings | |
| 7. **Grokking**: Understanding sudden generalization | |
| 8. **Evaluation**: Comprehensive metrics and analysis | |
| 9. **Mini-Project**: Complete SCAN solver | |
| **Level**: Intermediate to Advanced | |
| **Duration**: 3-4 hours | |
| ### 2. 02_SCAN_Mini_Project.ipynb (Complete SCAN Mini-Project) | |
| **Content**: End-to-end SCAN solver implementation | |
| **Components**: | |
| 1. **Data Loading**: SCAN dataset preparation | |
| 2. **Model Implementation**: Multiple architectures | |
| 3. **Training**: Training loop with logging | |
| 4. **Evaluation**: Comprehensive evaluation on all splits | |
| 5. **Analysis**: Error analysis and visualization | |
| 6. **Comparison**: Neural vs neurosymbolic vs symbolic | |
| **Level**: Intermediate | |
| **Duration**: 2-3 hours | |
| ### 3. CA6.ipynb (Original Experimental Notebook) | |
| **Content**: Original experiments and explorations | |
| **Level**: Advanced | |
| **Duration**: 1-2 hours | |
| ### 4. CA6_Experimental_Notebook.ipynb (Additional Experiments) | |
| **Content**: Additional experimental features | |
| **Level**: Advanced | |
| **Duration**: 1-2 hours | |
| --- | |
| ## ๐ง Advanced Usage | |
| ### Training a Model on SCAN | |
| ```python | |
| import torch | |
| from src.datasets.dataset_implementations import SCANDataset | |
| from src.models.neural_architectures import Seq2SeqWithAttention | |
| from src.evaluation.evaluation_framework import SystematicGeneralizationEvaluator | |
| # Load dataset | |
| train_dataset = SCANDataset(split='train', task='simple') | |
| test_dataset = SCANDataset(split='test', task='simple') | |
| # Create data loaders | |
| train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True) | |
| test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=32) | |
| # Initialize model | |
| model = Seq2SeqWithAttention( | |
| vocab_size=len(train_dataset.vocab), | |
| embedding_dim=128, | |
| hidden_dim=256, | |
| num_layers=2 | |
| ) | |
| # Training loop | |
| optimizer = torch.optim.Adam(model.parameters(), lr=0.001) | |
| criterion = torch.nn.CrossEntropyLoss() | |
| for epoch in range(100): | |
| model.train() | |
| for batch in train_loader: | |
| optimizer.zero_grad() | |
| output = model(batch['input'], batch['target']) | |
| loss = criterion(output.view(-1, output.size(-1)), batch['target'].view(-1)) | |
| loss.backward() | |
| optimizer.step() | |
| # Evaluate | |
| if epoch % 10 == 0: | |
| model.eval() | |
| evaluator = SystematicGeneralizationEvaluator() | |
| metrics = evaluator.evaluate(model, test_loader) | |
| print(f"Epoch {epoch}: Accuracy = {metrics['accuracy']:.4f}") | |
| # Save model | |
| torch.save(model.state_dict(), 'models/scan_model.pt') | |
| ``` | |
| ### Using Neurosymbolic System | |
| ```python | |
| from src.models.neurosymbolic_systems import NeurosymbolicCompositionLearner | |
| # Initialize neurosymbolic model | |
| model = NeurosymbolicCompositionLearner( | |
| vocab_size=100, | |
| embedding_dim=128, | |
| num_primitives=10, | |
| num_combinators=5 | |
| ) | |
| # Training with compositional loss | |
| for batch in train_loader: | |
| # Neural-symbolic forward pass | |
| output = model(batch['input']) | |
| # Compositional structure loss | |
| structure_loss = model.compositional_loss(batch['input'], batch['target']) | |
| # Total loss | |
| prediction_loss = criterion(output, batch['target']) | |
| total_loss = prediction_loss + 0.1 * structure_loss | |
| total_loss.backward() | |
| optimizer.step() | |
| ``` | |
| ### Comprehensive Evaluation | |
| ```python | |
| from src.evaluation.evaluation_framework import SystematicGeneralizationEvaluator | |
| from src.evaluation.advanced_evaluation_metrics import CompositionMetrics | |
| # Initialize evaluator | |
| evaluator = SystematicGeneralizationEvaluator() | |
| # Evaluate on multiple splits | |
| splits = ['simple', 'length', 'add_jump', 'template'] | |
| results = {} | |
| for split in splits: | |
| test_dataset = SCANDataset(split='test', task=split) | |
| test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=32) | |
| metrics = evaluator.evaluate(model, test_loader) | |
| results[split] = metrics | |
| print(f"\n{split.upper()} Split:") | |
| print(f" Accuracy: {metrics['accuracy']:.4f}") | |
| print(f" Exact Match: {metrics['exact_match']:.4f}") | |
| print(f" BLEU Score: {metrics['bleu']:.4f}") | |
| # Advanced compositional metrics | |
| comp_metrics = CompositionMetrics() | |
| comp_results = comp_metrics.evaluate(model, test_loader) | |
| print(f"\nCompositional Metrics:") | |
| print(f" Primitive Accuracy: {comp_results['primitive_accuracy']:.4f}") | |
| print(f" Composition Accuracy: {comp_results['composition_accuracy']:.4f}") | |
| print(f" Systematicity Score: {comp_results['systematicity']:.4f}") | |
| ``` | |
| --- | |
| ## ๐ Evaluation Metrics | |
| ### Standard Metrics | |
| 1. **Accuracy**: Percentage of correct predictions | |
| 2. **Exact Match**: Percentage of exactly correct sequences | |
| 3. **BLEU Score**: Sequence similarity metric | |
| 4. **Edit Distance**: Levenshtein distance between predictions and targets | |
| ### Compositional Metrics | |
| 5. **Primitive Accuracy**: Accuracy on primitive commands | |
| 6. **Composition Accuracy**: Accuracy on composed commands | |
| 7. **Systematicity Score**: Measure of compositional generalization | |
| 8. **Length Generalization**: Performance on longer sequences | |
| 9. **Novel Combination Accuracy**: Performance on unseen combinations | |
| ### Analysis Tools | |
| - **Error Analysis**: Categorize errors by type | |
| - **Attention Visualization**: Visualize attention patterns | |
| - **Generalization Curves**: Plot accuracy vs. training | |
| - **Compositional Structure Analysis**: Analyze learned structures | |
| --- | |
| ## ๐งช Testing | |
| ### Run Tests | |
| ```bash | |
| # Navigate to tests directory | |
| cd tests | |
| # Run all tests with pytest | |
| pytest -v | |
| # Run specific test file | |
| python test_models.py | |
| # Run with coverage | |
| pytest --cov=src tests/ | |
| ``` | |
| ### Test Coverage | |
| - **Unit Tests**: Individual component testing | |
| - **Integration Tests**: End-to-end system testing | |
| - **Dataset Tests**: Verify dataset loading and processing | |
| - **Model Tests**: Test model architectures | |
| - **Evaluation Tests**: Verify metrics computation | |
| --- | |
| ## ๐ Educational Value | |
| ### Concepts Demonstrated | |
| 1. **Compositional Generalization**: Understanding systematic generalization | |
| 2. **Sequence-to-Sequence Learning**: Neural sequence modeling | |
| 3. **Attention Mechanisms**: Learning to focus on relevant information | |
| 4. **Neurosymbolic AI**: Combining neural and symbolic approaches | |
| 5. **Grokking**: Understanding sudden generalization phenomena | |
| 6. **Curriculum Learning**: Progressive learning strategies | |
| 7. **Meta-Learning**: Learning to learn compositionally | |
| 8. **Evaluation Methodology**: Comprehensive evaluation practices | |
| ### Learning Outcomes | |
| After working with this project, you will understand: | |
| - How to implement and train sequence-to-sequence models | |
| - Techniques for improving compositional generalization | |
| - Neurosymbolic approaches to systematic generalization | |
| - How to evaluate generalization capabilities | |
| - Analysis of learning dynamics and grokking | |
| - Best practices for compositional learning | |
| ### Target Audience | |
| - **Students**: Learn systematic generalization with hands-on examples | |
| - **Researchers**: Explore compositional learning techniques | |
| - **Practitioners**: Apply systematic generalization to real problems | |
| - **Educators**: Use as teaching material for AI courses | |
| --- | |
| ## ๐ฌ Research Applications | |
| This project can be extended for: | |
| 1. **Natural Language Understanding**: Compositional semantics | |
| 2. **Program Synthesis**: Learning compositional programs | |
| 3. **Robotics**: Compositional action planning | |
| 4. **Visual Reasoning**: Compositional visual understanding | |
| 5. **Mathematical Reasoning**: Compositional problem solving | |
| 6. **Code Generation**: Compositional code synthesis | |
| 7. **Game Playing**: Compositional strategy learning | |
| --- | |
| ## ๐ฆ Dependencies | |
| ### Core Libraries | |
| ``` | |
| torch>=2.0.0 # Deep learning framework | |
| torchvision>=0.15.0 # Computer vision utilities | |
| transformers>=4.30.0 # Hugging Face transformers | |
| ``` | |
| ### Data and Utilities | |
| ``` | |
| numpy>=1.24.0 # Numerical computing | |
| pandas>=2.0.0 # Data manipulation | |
| scipy>=1.10.0 # Scientific computing | |
| ``` | |
| ### Visualization | |
| ``` | |
| matplotlib>=3.7.0 # Plotting | |
| seaborn>=0.12.0 # Statistical visualization | |
| plotly>=5.15.0 # Interactive plots | |
| ``` | |
| ### Utilities | |
| ``` | |
| tqdm>=4.65.0 # Progress bars | |
| scikit-learn>=1.3.0 # Machine learning utilities | |
| nltk>=3.8.0 # Natural language processing | |
| ``` | |
| ### Development | |
| ``` | |
| jupyter>=1.0.0 # Jupyter notebooks | |
| pytest>=7.4.0 # Testing framework | |
| black>=23.7.0 # Code formatting | |
| ``` | |
| **See `requirements.txt` for complete list with version specifications.** | |
| --- | |
| ## ๐ What's New | |
| ### Advanced Features | |
| - โ Neural-Symbolic Recursive Machines | |
| - โ Language-Conditioned Embeddings | |
| - โ Grokking analysis tools | |
| - โ Advanced compositional metrics | |
| - โ Comprehensive visualization tools | |
| ### Datasets | |
| - โ Complete SCAN dataset implementation | |
| - โ Multiple split types (simple, length, add_jump, template) | |
| - โ Custom dataset support | |
| ### Models | |
| - โ Seq2Seq with attention | |
| - โ Transformer models | |
| - โ Neurosymbolic systems | |
| - โ Symbolic systems | |
| - โ Advanced hybrid architectures | |
| ### Evaluation | |
| - โ Comprehensive evaluation framework | |
| - โ Compositional metrics | |
| - โ Error analysis tools | |
| - โ Visualization suite | |
| --- | |
| ## ๐ References and Further Reading | |
| ### Foundational Papers | |
| 1. **SCAN Dataset** - Lake & Baroni, 2018 | |
| 2. **Compositional Generalization** - Fodor & Pylyshyn, 1988 | |
| 3. **Systematic Generalization** - Marcus, 1998 | |
| ### Neural Approaches | |
| 4. **Sequence-to-Sequence Learning** - Sutskever et al., 2014 | |
| 5. **Attention Mechanisms** - Bahdanau et al., 2015 | |
| 6. **Transformers** - Vaswani et al., 2017 | |
| ### Neurosymbolic Approaches | |
| 7. **Neurosymbolic AI** - Garcez et al., 2019 | |
| 8. **Neural Module Networks** - Andreas et al., 2016 | |
| 9. **Compositional Attention** - Hudson & Manning, 2018 | |
| ### Grokking | |
| 10. **Grokking: Generalization Beyond Overfitting** - Power et al., 2022 | |
| --- | |
| ## ๐ค Contributing | |
| This project is part of the **Systems in AI** course (CA6). Contributions and improvements are welcome! | |
| ### How to Contribute | |
| 1. Fork the repository | |
| 2. Create a feature branch | |
| 3. Make your changes | |
| 4. Add tests if applicable | |
| 5. Submit a pull request | |
| ### Areas for Contribution | |
| - Additional model architectures | |
| - New datasets for compositional learning | |
| - Advanced evaluation metrics | |
| - Visualization improvements | |
| - Documentation enhancements | |
| --- | |
| ## ๐ License | |
| This project is part of the System2_in_AI CA collection for educational and research purposes. | |
| --- | |
| ## ๐ Support and Help | |
| ### Documentation | |
| 1. **README.md** (this file) - Complete project overview | |
| 2. **notebooks/** - Step-by-step tutorials | |
| 3. **src/** - Well-documented source code | |
| ### Getting Help | |
| 1. Check the documentation | |
| 2. Explore Jupyter notebooks | |
| 3. Review code examples | |
| 4. Refer to inline documentation | |
| --- | |
| ## ๐ Project Status | |
| - **Status**: โ **COMPLETE AND FULLY FUNCTIONAL** | |
| - **Version**: 1.0.0 | |
| - **Quality**: โญโญโญโญโญ Professional Grade | |
| - **Last Updated**: January 2025 | |
| - **Language**: English | |
| --- | |
| ## ๐ Key Achievements | |
| ### Technical Excellence | |
| - Multiple model architectures implemented | |
| - Comprehensive SCAN dataset support | |
| - Advanced neurosymbolic systems | |
| - Grokking analysis tools | |
| - Extensive evaluation framework | |
| ### Educational Value | |
| - 4 comprehensive Jupyter notebooks | |
| - Step-by-step tutorials | |
| - Clear explanations with examples | |
| - Multiple difficulty levels | |
| ### Practical Utility | |
| - Working implementations | |
| - Easy to install and run | |
| - Clear usage examples | |
| - Extensible architecture | |
| --- | |
| **Thank you for using the CA6 Systematic Generalization project!** | |
| This comprehensive implementation provides everything needed to learn, research, and implement systematic generalization techniques for neural networks. | |
| _Happy Learning and Building! ๐๐_ | |
Xet Storage Details
- Size:
- 25.5 kB
- Xet hash:
- 95ce0ff8529f63d15c78833d59f6157c1ede70c8908c32f30da1e1f5925839ca
ยท
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.