TrainableFidelityQuantumKernel

class TrainableFidelityQuantumKernel(*, feature_map=None, fidelity=None, training_parameters=None, enforce_psd=True, evaluate_duplicates='off_diagonal')[source]

Bases: TrainableKernel, FidelityQuantumKernel

An implementation of the quantum kernel that is based on the BaseStateFidelity algorithm and provides ability to train it.

Finding good quantum kernels for a specific machine learning task is a big challenge in quantum machine learning. One way to choose the kernel is to add trainable parameters to the feature map, which can be used to fine-tune the kernel.

This kernel has trainable parameters \(\theta\) that can be bound using training algorithms. The kernel entries are given as

\[K_{\theta}(x,y) = |\langle \phi_{\theta}(x) | \phi_{\theta}(y) \rangle|^2\]
Parameters:
  • feature_map (QuantumCircuit | None) – Parameterized circuit to be used as the feature map. If None is given, ZZFeatureMap is used with two qubits. If there’s a mismatch in the number of qubits of the feature map and the number of features in the dataset, then the kernel will try to adjust the feature map to reflect the number of features.

  • fidelity (BaseStateFidelity | None) – An instance of the BaseStateFidelity primitive to be used to compute fidelity between states. Default is ComputeUncompute which is created on top of the reference sampler defined by Sampler.

  • training_parameters (ParameterVector | Sequence[Parameter] | None) – Iterable containing Parameter objects which correspond to quantum gates on the feature map circuit which may be tuned. If users intend to tune feature map parameters to find optimal values, this field should be set.

  • enforce_psd (bool) – Project to the closest positive semidefinite matrix if x = y. Default True.

  • evaluate_duplicates (str) –

    Defines a strategy how kernel matrix elements are evaluated if duplicate samples are found. Possible values are:

    • all means that all kernel matrix elements are evaluated, even the diagonal ones when training. This may introduce additional noise in the matrix.

    • off_diagonal when training the matrix diagonal is set to 1, the rest elements are fully evaluated, e.g., for two identical samples in the dataset. When inferring, all elements are evaluated. This is the default value.

    • none when training the diagonal is set to 1 and if two identical samples are found in the dataset the corresponding matrix element is set to 1. When inferring, matrix elements for identical samples are set to 1.

Attributes

enforce_psd

Returns True if the kernel matrix is required to project to the closest positive semidefinite matrix.

evaluate_duplicates

Returns the strategy used by this kernel to evaluate kernel matrix elements if duplicate samples are found.

feature_map

Returns the feature map of this kernel.

fidelity

Returns the fidelity primitive used by this kernel.

num_features

Returns the number of features in this kernel.

num_training_parameters

Returns the number of training parameters.

parameter_values

Returns numerical values assigned to the training parameters as a numpy array.

training_parameters

Returns the vector of training parameters.

Methods

assign_training_parameters(parameter_values)

Fix the training parameters to numerical values.

evaluate(x_vec, y_vec=None)

Construct kernel matrix for given data.

If y_vec is None, self inner product is calculated.

Parameters:
  • x_vec (ndarray) – 1D or 2D array of datapoints, NxD, where N is the number of datapoints, D is the feature dimension

  • y_vec (ndarray | None) – 1D or 2D array of datapoints, MxD, where M is the number of datapoints, D is the feature dimension

Returns:

2D matrix, NxM

Return type:

ndarray