MI¶
sgptools.objectives.MI
¶
Bases: Objective
Computes the Mutual Information (MI) between a fixed set of objective points
(X_objective
) and a variable set of input points (X
).
MI is calculated as: \(MI(X; X_{objective}) = log|K(X,X)| + log|K(X_{objective},X_{objective})| - log|K(X \cup X_{objective}, X \cup X_{objective})|\)
Jitter is added to the diagonal of the covariance matrices to ensure numerical stability.
Source code in sgptools/objectives.py
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
|
__call__(X)
¶
Computes the Mutual Information for the given input points X
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
X
|
Tensor
|
The input points (e.g., sensing locations) for which MI is to be computed. Shape: (M, D). |
required |
Returns:
Type | Description |
---|---|
Tensor
|
tf.Tensor: The computed Mutual Information value. |
Usage
import gpflow
import numpy as np
# Assume X_objective and kernel are defined
# X_objective = np.random.rand(100, 2)
# kernel = gpflow.kernels.SquaredExponential()
# noise_variance = 0.1
mi_objective = MI(X_objective=X_objective, kernel=kernel, noise_variance=noise_variance)
X_sensing = tf.constant(np.random.rand(10, 2), dtype=tf.float64)
mi_value = mi_objective(X_sensing)
Source code in sgptools/objectives.py
__init__(X_objective, kernel, noise_variance, jitter=1e-06, **kwargs)
¶
Initializes the Mutual Information (MI) objective.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
X_objective
|
ndarray
|
The fixed set of data points (e.g., candidate locations or training data points) against which MI is computed. Shape: (N, D). |
required |
kernel
|
Kernel
|
The GPflow kernel function to compute covariances. |
required |
noise_variance
|
float
|
The observed data noise variance, which is added to the jitter. |
required |
jitter
|
float
|
A small positive value to add for numerical stability to covariance matrix diagonals. Defaults to 1e-6. |
1e-06
|
**kwargs
|
Any
|
Arbitrary keyword arguments. |
{}
|
Source code in sgptools/objectives.py
update(kernel, noise_variance)
¶
Updates the kernel and noise variance for the MI objective. This method is crucial for optimizing the GP hyperparameters externally and having the objective function reflect those changes.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
kernel
|
Kernel
|
The updated GPflow kernel function. |
required |
noise_variance
|
float
|
The updated data noise variance. |
required |