mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-04-26 05:16:24 +02:00
109 lines
4.8 KiB
Markdown
109 lines
4.8 KiB
Markdown
---
|
|
id: "parameter-tying-framework"
|
|
title: "Design parameter tying framework for GPy multioutput kernels"
|
|
status: "Ready"
|
|
priority: "High"
|
|
created: "2025-08-15"
|
|
last_updated: "2025-08-15"
|
|
owner: "Neil Lawrence"
|
|
github_issue: ""
|
|
dependencies: ""
|
|
tags:
|
|
- parameter-tying
|
|
- multioutput
|
|
- kernel-framework
|
|
- architecture
|
|
---
|
|
|
|
# Investigate parameter tying limitations and create CIP for discussion
|
|
|
|
## Description
|
|
|
|
During LFM kernel code review, we identified that GPy lacks systematic parameter tying capabilities compared to GPmat's `modelTieParam()` functionality. This limitation affects combination kernels such as multiouptut or additive kernels. We need to investigate the scope of this problem and create a CIP to discuss potential solutions with the community.
|
|
|
|
## Problem Statement
|
|
|
|
- **Current Limitation**: GPy's parameter system doesn't support tying parameters across different kernel components
|
|
- **Impact on LFM**: Forces complex parameter handling in EQ_ODE1 and EQ_ODE2 kernels
|
|
- **Broader Impact**: May affect other multiple kernel scenarios where parameters should be shared
|
|
- **Comparison**: GPmat has `modelTieParam()` functionality that GPy lacks
|
|
|
|
## Investigation Needed
|
|
|
|
### 1. Scope Assessment
|
|
- [x] Search existing GitHub issues for parameter tying discussions
|
|
- [ ] Identify other kernels/models that could benefit from parameter tying
|
|
- [ ] Assess impact on current GPy codebase
|
|
|
|
|
|
### 2. Community Input
|
|
- [ ] Create GitHub issue and associated CIP to discuss parameter tying needs
|
|
- [ ] Gather feedback from GPy maintainers and users
|
|
- [ ] Identify use cases beyond LFM kernels
|
|
- [ ] Assess priority relative to other GPy improvements
|
|
|
|
### 3. Technical Analysis
|
|
- [ ] Analyze GPmat's parameter tying implementation
|
|
- [ ] Review GPy's current parameter system architecture
|
|
- [ ] Identify potential integration points
|
|
- [ ] Assess complexity and maintenance burden
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] Complete investigation of existing GitHub issues and discussions
|
|
- [ ] Document scope of parameter tying needs across GPy
|
|
- [ ] Create CIP for parameter tying framework discussion
|
|
- [ ] Gather community feedback on approach and priority
|
|
- [ ] Provide recommendations for next steps
|
|
|
|
## Implementation Notes
|
|
|
|
- Focus on problem identification and community discussion
|
|
- Avoid prescribing specific solutions until community input is gathered
|
|
- Consider whether this should be a separate CIP or part of broader multioutput improvements
|
|
- Document trade-offs between different approaches
|
|
|
|
## Related
|
|
|
|
- CIP: 0001 (LFM kernel implementation) - may depend on parameter tying
|
|
- GPy parameter system design
|
|
- GPmat parameter tying implementation
|
|
- Multioutput kernel architecture discussions
|
|
|
|
## Progress Updates
|
|
|
|
### 2025-08-15
|
|
Task created after identifying parameter tying as a potential limitation during LFM kernel code review. Need to investigate scope and create CIP for community discussion.
|
|
|
|
### 2025-08-15 (GitHub Investigation)
|
|
Found existing GitHub issues confirming parameter tying limitations:
|
|
|
|
**GPy Issues:**
|
|
- **Issue #462 (2016)**: "tie_params doesnt work ?" - `AttributeError: 'Add' object has no attribute 'tie_params'`
|
|
- **Issue #789 (2019)**: "Non-implemented Param tying work-around options" - Confirms `tie_to` from Parametrized is not implemented
|
|
- **Issue #878 (2020)**: "Constraining hyperparameters" - Open issue requesting parameter equality constraints in MultioutputGP
|
|
|
|
**Paramz Issues:**
|
|
- **Issue #34 (2019)**: "What does m.name[0].tie_to(other) do?" - `tie_to` is documented but not implemented
|
|
- **Issue #35 (2020)**: "Constraint that makes parameters sum to one?" - Also references missing `tie_to` functionality
|
|
|
|
**Key Findings:**
|
|
- Parameter tying functionality has been missing/broken in both GPy and paramz for at least 5 years
|
|
- `tie_to` method is documented in paramz but not implemented
|
|
- Multiple users have requested this feature for different use cases
|
|
- Current workarounds involve manual parameter management
|
|
- No systematic solution exists in either codebase
|
|
- The problem is deeper than just GPy - it's a fundamental limitation in the paramz framework
|
|
|
|
### 2025-08-15 (Paramz Dependency Analysis)
|
|
**Current State:**
|
|
- GPy still actively depends on paramz: `"paramz>=0.9.6"` in setup.py
|
|
- No evidence of plans to remove paramz dependency
|
|
- Recent paramz-related work: Issue #978 (2022) fixing broken kernels due to `add_parameter` → `link_parameter` rename
|
|
|
|
**Implications for Parameter Tying:**
|
|
- **Option 1**: Fix paramz first - implement `tie_to` in paramz framework
|
|
- **Option 2**: Work around paramz - create parameter tying within GPy without relying on paramz's missing features
|
|
- **Option 3**: Replace paramz - major migration away from paramz (unlikely given current dependency)
|
|
|
|
**Recommendation**: Focus on Option 1 or 2, as paramz remains actively maintained and GPy continues to depend on it.
|