qiskit.aqua.operators.gradients.NaturalGradient
class NaturalGradient(grad_method='lin_comb', qfi_method='lin_comb_full', regularization=None, **kwargs)
Convert an operator expression to the first-order gradient.
Given an ill-posed inverse problem
x = arg min{||Ax-C||^2} (1)
one can use regularization schemes can be used to stabilize the system and find a numerical solution
x_lambda = arg min{||Ax-C||^2 + lambda*R(x)} (2)
where R(x) represents the penalization term.
Parameters
- grad_method (
Union
[str
,CircuitGradient
]) – The method used to compute the state gradient. Can be either'param_shift'
or'lin_comb'
or'fin_diff'
. - qfi_method (
Union
[str
,CircuitQFI
]) – The method used to compute the QFI. Can be either'lin_comb_full'
or'overlap_block_diag'
or'overlap_diag'
. - regularization (
Optional
[str
]) – Use the following regularization with a least square method to solve the underlying system of linear equations Can be either None or'ridge'
or'lasso'
or'perturb_diag'
'ridge'
and'lasso'
use an automatic optimal parameter search If regularization is None but the metric is ill-conditioned or singular then a least square solver is used without regularization - kwargs (dict) – Optional parameters for a CircuitGradient
__init__
__init__(grad_method='lin_comb', qfi_method='lin_comb_full', regularization=None, **kwargs)
Parameters
- grad_method (
Union
[str
,CircuitGradient
]) – The method used to compute the state gradient. Can be either'param_shift'
or'lin_comb'
or'fin_diff'
. - qfi_method (
Union
[str
,CircuitQFI
]) – The method used to compute the QFI. Can be either'lin_comb_full'
or'overlap_block_diag'
or'overlap_diag'
. - regularization (
Optional
[str
]) – Use the following regularization with a least square method to solve the underlying system of linear equations Can be either None or'ridge'
or'lasso'
or'perturb_diag'
'ridge'
and'lasso'
use an automatic optimal parameter search If regularization is None but the metric is ill-conditioned or singular then a least square solver is used without regularization - kwargs (dict) – Optional parameters for a CircuitGradient
Methods
__init__ ([grad_method, qfi_method, …]) | type grad_methodUnion [str , CircuitGradient ] |
convert (operator[, params]) | type operatorOperatorBase |
gradient_wrapper (operator, bind_params[, …]) | Get a callable function which provides the respective gradient, Hessian or QFI for given parameter values. |
parameter_expression_grad (param_expr, param) | Get the derivative of a parameter expression w.r.t. |
Attributes
grad_method | Returns CircuitGradient . |
qfi_method | Returns CircuitQFI . |
regularization | Returns the regularization option. |
convert
convert(operator, params=None)
Parameters
- operator (
OperatorBase
) – The operator we are taking the gradient of. - params (
Union
[ParameterVector
,ParameterExpression
,List
[ParameterExpression
],None
]) – The parameters we are taking the gradient with respect to.
Return type
OperatorBase
Returns
An operator whose evaluation yields the NaturalGradient.
Raises
- TypeError – If
operator
does not represent an expectation value or the quantum state is notCircuitStateFn
. - ValueError – If
params
contains a parameter not present inoperator
.
grad_method
Returns CircuitGradient
.
Return type
CircuitGradient
Returns
CircuitGradient
.
gradient_wrapper
gradient_wrapper(operator, bind_params, grad_params=None, backend=None)
Get a callable function which provides the respective gradient, Hessian or QFI for given parameter values. This callable can be used as gradient function for optimizers.
Parameters
- operator (
OperatorBase
) – The operator for which we want to get the gradient, Hessian or QFI. - bind_params (
Union
[ParameterExpression
,ParameterVector
,List
[ParameterExpression
]]) – The operator parameters to which the parameter values are assigned. - grad_params (
Union
[ParameterExpression
,ParameterVector
,List
[ParameterExpression
],Tuple
[ParameterExpression
,ParameterExpression
],List
[Tuple
[ParameterExpression
,ParameterExpression
]],None
]) – The parameters with respect to which we are taking the gradient, Hessian or QFI. If grad_params = None, then grad_params = bind_params - backend (
Union
[BaseBackend
,QuantumInstance
,None
]) – The quantum backend or QuantumInstance to use to evaluate the gradient, Hessian or QFI.
Returns
Function to compute a gradient, Hessian or QFI. The function takes an iterable as argument which holds the parameter values.
Return type
callable(param_values)
parameter_expression_grad
static parameter_expression_grad(param_expr, param)
Get the derivative of a parameter expression w.r.t. the given parameter.
Parameters
- param_expr (
ParameterExpression
) – The Parameter Expression for which we compute the derivative - param (
ParameterExpression
) – Parameter w.r.t. which we want to take the derivative
Return type
Union
[ParameterExpression
, float
]
Returns
ParameterExpression representing the gradient of param_expr w.r.t. param
qfi_method
Returns CircuitQFI
.
Returns: CircuitQFI
Return type
CircuitQFI
regularization
Returns the regularization option.
Returns: the regularization option.
Return type
Optional
[str
]