๐ง Inference API Reference¶
This section documents the inference engines and algorithms used for probabilistic reasoning in quantum-classical hybrid networks.
๐ Core Inference Engine¶
probabilistic_quantum_reasoner.inference.engine.QuantumInferenceEngine(network, backend=None)
¶
Central inference engine for quantum Bayesian networks.
Coordinates different inference algorithms and provides a unified interface for probabilistic reasoning in quantum-classical hybrid models.
Initialize the inference engine.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
network
|
Any
|
QuantumBayesianNetwork instance |
required |
backend
|
Optional[Any]
|
Quantum computing backend |
None
|
estimate_complexity(algorithm)
¶
Estimate computational complexity for given algorithm.
infer(query_nodes, algorithm='belief_propagation', **kwargs)
¶
Perform inference on the network.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_nodes
|
List[str]
|
List of nodes to compute marginals for |
required |
algorithm
|
str
|
Inference algorithm to use |
'belief_propagation'
|
**kwargs
|
Algorithm-specific parameters |
{}
|
Returns:
| Type | Description |
|---|---|
InferenceResult
|
InferenceResult with marginal probabilities and metadata |
Raises:
| Type | Description |
|---|---|
InferenceError
|
If inference fails |
๐ง Variational Inference¶
probabilistic_quantum_reasoner.inference.variational.VariationalQuantumInference(network, backend, n_layers=3, optimizer='adam')
¶
Variational quantum inference for quantum Bayesian networks.
Uses variational quantum circuits to approximate marginal distributions and perform approximate inference in quantum probabilistic models.
Initialize variational quantum inference.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
network
|
Any
|
QuantumBayesianNetwork instance |
required |
backend
|
Any
|
Quantum computing backend |
required |
n_layers
|
int
|
Number of variational layers |
3
|
optimizer
|
str
|
Classical optimizer for parameters |
'adam'
|
run_inference(query_nodes, max_iterations=100, learning_rate=0.1, tolerance=1e-06, **kwargs)
¶
Run variational quantum inference.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_nodes
|
List[str]
|
Nodes to compute marginals for |
required |
max_iterations
|
int
|
Maximum optimization iterations |
100
|
learning_rate
|
float
|
Learning rate for parameter updates |
0.1
|
tolerance
|
float
|
Convergence tolerance |
1e-06
|
Returns:
| Type | Description |
|---|---|
Tuple[Dict[str, Dict[Any, float]], Dict[str, Any]]
|
Tuple of (marginals, metadata) |
probabilistic_quantum_reasoner.inference.variational.PennyLaneCircuit(n_qubits, n_layers=3)
¶
probabilistic_quantum_reasoner.inference.variational.QiskitCircuit(n_qubits, n_layers=3)
¶
probabilistic_quantum_reasoner.inference.variational.Optimizer
¶
Bases: ABC
Abstract base class for optimizers.
update(parameters, gradient)
abstractmethod
¶
Update parameters using gradient.
probabilistic_quantum_reasoner.inference.variational.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08)
¶
probabilistic_quantum_reasoner.inference.variational.SGDOptimizer(learning_rate=0.1)
¶
๐ง Belief Propagation¶
probabilistic_quantum_reasoner.inference.belief_propagation.QuantumBeliefPropagation(network, max_iterations=100, tolerance=1e-06)
¶
Quantum belief propagation algorithm for inference.
Extends classical belief propagation to handle quantum amplitudes, superposition, and entanglement in hybrid probabilistic networks.
Initialize quantum belief propagation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
network
|
Any
|
QuantumBayesianNetwork instance |
required |
max_iterations
|
int
|
Maximum number of iterations |
100
|
tolerance
|
float
|
Convergence tolerance |
1e-06
|
get_convergence_info()
¶
Get information about convergence.
run_inference(query_nodes=None, evidence=None)
¶
Run quantum belief propagation inference.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_nodes
|
Optional[List[str]]
|
Nodes to compute beliefs for |
None
|
evidence
|
Optional[Dict[str, Any]]
|
Evidence to condition on |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, Dict[Any, float]]
|
Dictionary mapping node IDs to probability distributions |
๐ง Causal Inference¶
probabilistic_quantum_reasoner.inference.causal.QuantumCausalInference(network, backend=None)
¶
Quantum causal inference engine.
Implements quantum analogs of Pearl's causal hierarchy: 1. Association (observation): P(Y|X) 2. Intervention (action): P(Y|do(X)) 3. Counterfactuals: P(Y_x|X',Y')
Initialize quantum causal inference engine.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
network
|
Any
|
QuantumBayesianNetwork instance |
required |
backend
|
Optional[Any]
|
Quantum computing backend |
None
|
counterfactual_query(factual_evidence, counterfactual_interventions, query_nodes, **kwargs)
¶
Perform counterfactual query: P(Y_x | X', Y').
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
factual_evidence
|
Dict[str, Any]
|
Observed evidence in actual world |
required |
counterfactual_interventions
|
Dict[str, Any]
|
Interventions in counterfactual world |
required |
query_nodes
|
List[str]
|
Nodes to query in counterfactual world |
required |
Returns:
| Type | Description |
|---|---|
InferenceResult
|
Counterfactual inference result |
do_calculus(interventions, query_nodes=None, **kwargs)
¶
Perform quantum do-calculus intervention.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
interventions
|
Dict[str, Any]
|
Dictionary of node_id -> intervention_value |
required |
query_nodes
|
Optional[List[str]]
|
Nodes to query after intervention |
None
|
**kwargs
|
Additional parameters |
{}
|
Returns:
| Type | Description |
|---|---|
InferenceResult
|
InferenceResult after intervention |
estimate_causal_effect(treatment, outcome, confounders=None, **kwargs)
¶
Estimate causal effect of treatment on outcome.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
treatment
|
str
|
Treatment variable |
required |
outcome
|
str
|
Outcome variable |
required |
confounders
|
Optional[List[str]]
|
List of confounding variables |
None
|
Returns:
| Type | Description |
|---|---|
Dict[str, Any]
|
Dictionary with causal effect estimates |
is_identifiable(treatment, outcome)
¶
Check if causal effect is identifiable from observational data.
๐งช Example Usage¶
๐ Basic Inference¶
```python from probabilistic_quantum_reasoner.inference.engine import QuantumInferenceEngine engine = QuantumInferenceEngine(network) result = engine.infer(query_nodes=["A", "B"])