ZneOptions
class ZneOptions(amplifier=Unset, noise_factors=Unset, extrapolator=Unset, extrapolated_noise_factors=Unset)
Bases: object
Opções de mitigação de extrapolação de ruído zero. Isso é usado apenas pelo V2 Estimator.
É garantido que qualquer estimador V2 retorne campos de dados chamados evs e stds que informam as estimativas e os erros do valor de expectativa desejado, respectivamente. Quando as opções de ZNE são ativadas no estimador de tempo de execução, dados adicionais são retornados.
Em particular, suponha que um pub de entrada tenha a forma de matriz observável obs_shape e a forma de valores de parâmetros par_shape, com a forma de pub correspondente shape=np.broadcast_shapes(obs_shape, par_shape). Então, o resultado do pub correspondente conterá adicionalmente:
-
pub_result.data.evs_extrapolated e pub_result.data.stds_extrapolated,
ambos com o formato
(*shape, num_extrapolators, num_evaluation_points), em quenum_extrapolatorsé o comprimento da lista deoptions.resilience.zne.extrapolators, enum_evaluation_pointsé o comprimento da listaoptions.resilience.extrapolated_noise_factors. Esses valores fornecem avaliações de cada extrapolador em cada valor de extrapolação de ruído especificado. -
pub_result.data.evs_noise_factors,pub_result.data.stds_noise_factorseensemble_stds_noise_factorstêm a forma(*shape, num_noise_factors), sendo quenum_noise_factorsé o comprimento deoptions.resilience.zne.noise_factors. Esses valores fornecem valores de expectativa brutos, com média sobre o giro, se aplicável, em cada uma das amplificações de ruído; você pode basear suas próprias rotinas de ajuste nesses valores. No caso de não haver giro, ambas as matrizes*stds*serão iguais; caso contrário,stds_noise_factorsé derivado da propagação de amostras de giro, enquantoensemble_stds_noise_factorspressupõe apenas ruído de disparo e nenhum desvio.
Observação técnica: para observáveis únicos com vários termos de base, pode acontecer que vários métodos de extrapolação sejam usados no mesmo valor de expectativa, por exemplo, XX é extrapolado linearmente, mas XY é extrapolado exponencialmente no observável {"XX": 0.5, "XY": 0.5}. Vamos chamar isso de ajuste heterogêneo. Os dados de (2) são avaliados a partir de ajustes heterogêneos, selecionando o melhor ajuste para cada termo individual distinto, enquanto os dados de (1) são avaliados a partir de ajustes homogêneos forçados, um para cada extrapolador fornecido. Se o seu trabalho exigir uma distinção diferenciada nesse sentido, recomendamos que você use observáveis de prazo único, além dos observáveis de prazo múltiplo.
Referências
- Z. Cai, Multi-exponential error extrapolation and combining error mitigation techniques for NISQ applications, npj Quantum Inf 7, 80 (2021)
Atributos
Parâmetros
- amplifier (UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea'])
- noise_factors (UnsetType | Sequence[float])
- extrapolator (UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback'] | ~collections.abc.Sequence[~typing.Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']])
- extrapolated_noise_factors (UnsetType | Sequence[float])
amplifier
Tipo: UnsetType | Literal['gate_folding', 'gate_folding_front', 'gate_folding_back', 'pea']
Valor Padrão: Unset
Qual técnica usar para amplificar o ruído.
Um dos:
"gate_folding" (padrão) usa o dobramento de porta de 2 qubit para amplificar o ruído. Se o ruído
requer a amplificação de apenas um subconjunto dos portões, então esses portões são escolhidos aleatoriamente.
o "gate_folding_front" usa o dobramento de porta de 2 qubits para amplificar o ruído. Se o ruído
requer a amplificação de apenas um subconjunto das portas, então essas portas são selecionadas na frente do circuito DAG topologicamente ordenado.
"gate_folding_back" usa o dobramento de porta de 2 qubits para amplificar o ruído. Se o ruído
requer a amplificação de apenas um subconjunto das portas, então essas portas são selecionadas na parte de trás do circuito DAG topologicamente ordenado.
o "pea" usa uma técnica chamada Amplificação de Erro Probabilístico
(PEA ) para amplificar o ruído. Quando essa opção é selecionada, o giro de porta sempre será usado, independentemente de ter sido ativado ou não nas opções. Nessa técnica, o modelo de ruído giratório de cada camada exclusiva de portas de emaranhamento em seus circuitos ISA é aprendido antecipadamente, consulte
LayerNoiseLearningOptionspara ver as opções de aprendizado relevantes. Uma vez concluídos, seus circuitos são executados em cada fator de ruído, onde cada camada de emaranhamento de seus circuitos é amplificada pela injeção probabilística de ruído de um único qubit proporcional ao modelo de ruído aprendido correspondente.
extrapolated_noise_factors
Tipo: UnsetType | Sequence[float]
Valor Padrão: Unset
Fatores de ruído para avaliar os modelos de extrapolação de ajuste.
[0, *noise_factors]Se não for definido, o valor padrão será. Essa opção não afeta de forma alguma a execução ou o ajuste do modelo; ela apenas determina os pontos em que os extrapolatorvalores são avaliados para serem retornados nos campos de dados denominados evs_extrapolated e stds_extrapolated.
extrapolator
Tipo: UnsetType | Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback'] | Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback']]
Valor Padrão: Unset
Extrapolador(es) a ser(em) testado(s) (em ordem) para extrapolar para ruído zero.
As opções disponíveis são:
"exponential", que ajusta os dados utilizando uma função exponencial decrescentedefinido como , onde é o valor com ruído zero ( ) e é uma taxa positiva.
"double_exponential"que usa uma soma de dois exponenciais como na Ref. 1
"polynomial_degree_(1 <= k <= 7)", que utiliza uma função polinomial definida como.
"linear", o que é equivalente a"polynomial_degree_1".
"fallback", que simplesmente retorna os dados brutos correspondentes ao menor ruído
1fator (normalmente) sem realizar qualquer tipo de extrapolação.
Os valores extrapolados (evs_extrapolated e stds_extrapolated) são classificados de acordo com a ordem dos extrapoladores fornecidos. Se mais de um extrapolador for especificado, os valores evs e stds relatados nos dados do resultado referem-se ao primeiro extrapolador bem-sucedido, sendo que o sucesso de um extrapolador é determinado heuristicamente.
Padrão: ("exponential", "linear").
noise_factors
Tipo: UnsetType | Sequence[float]
Valor Padrão: Unset
Fatores de ruído a serem usados para amplificação de ruído.
Padrão: (1, 3, 5).
Tipo
ruído_fatores