Path: blob/master/site/pt-br/quantum/tutorials/noise.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Ruído
O ruído está presente em computadores quânticos modernos. Qubits são suscetíveis à interferência do ambiente ao redor, fabricação imperfeita, TLS e, às vezes, até raios gama. Para obter a correção de erros em grande escala, os algoritmos atuais precisam manter a funcionalidade na presença de ruído. Por isso, testar algoritmos com ruído é um passo importante para validar o funcionamento de algoritmos / modelos quânticos nos computadores quânticos da atualidade.
Neste tutorial, você explorará as noções básicas da simulação de circuito ruidoso no TFQ pela API tfq.layers
de alto nível.
Configuração
1. Sobre o ruído quântico
1.1 Ruído de circuito básico
O ruído em um computador quântico afeta as amostras de bitstring que você consegue medir nele. De maneira intuitiva, você pode considerar que um computador quântico ruidoso "insere", "exclui" ou "substitui" portas em locais aleatórios, como o diagrama abaixo:
Com base nessa intuição, ao lidar com ruído, você não está mais usando um de estado puro único, e sim um conjunto de todas as realizações ruidosas possíveis do seu circuito desejado: , em que fornece a probabilidade de o sistema estar em .
Revendo a foto acima, se soubéssemos antes que a execução do sistema era perfeita em 90% do tempo ou apresentava erros em 10% do tempo com apenas esse modo de falha, nosso conjunto seria:
Se houvesse mais de uma forma para o circuito falhar, então o conjunto conteria mais do que apenas dois termos (um para cada nova realização ruidosa que poderia ocorrer). é chamado de matriz densidade, que descreve seu sistema ruidoso.
1.2 Uso de canais para modelar o ruído do circuito
Infelizmente, na prática, é praticamente impossível saber todas as maneiras que o circuito pode falhar e suas probabilidades exatas. Para simplificar, você pode supor que, após cada operação no circuito, há algum tipo de canal que captura mais ou menos como essa operação pode falhar. Você pode criar rapidamente um circuito com um pouco de ruído:
Você pode examinar a matriz densidade sem ruído com:
E a matriz densidade ruidosa com:
Ao comparar os dois s diferentes, você pode ver que o ruído afetou as amplitudes do estado (e, consequentemente, as probabilidades da amostragem). No caso sem ruído, é sempre esperada a amostragem do estado . No entanto, no estado ruidoso, há agora uma probabilidade diferente de zero para a amostragem de ou ou também:
Sem nenhum ruído, você sempre obterá :
Ao aumentar o ruído um pouco mais, ficará cada vez mais difícil distinguir o comportamento desejado (fazendo a amostragem de ) e o ruído:
Observação: teste canais diferentes no circuito para gerar ruído. Encontre canais comuns compatíveis com ambos o Cirq e o TFQ aqui.
2. Ruído básico no TFQ
Com essa compreensão de como o ruído pode afetar a execução do circuito, você pode explorar como o ruído funciona no TFQ. O TensorFlow Quantum usa a simulação baseada em monte-carlo / trajetória como alternativa à simulação de matriz densidade. Isso ocorre porque a complexidade de memória da simulação de matriz densidade limita grandes simulações a <= 20 qubits com métodos tradicionais de simulação de matriz densidade total. O monte-carlo / trajetória troca esse custo da memória pelo custo adicional de tempo. A opção backend='noisy'
está disponível para todas as tfq.layers.Sample
, tfq.layers.SampledExpectation
e tfq.layers.Expectation
(no caso de Expectation
, é necessário um parâmetro repetitions
).
2.1 Amostragem de ruído no TFQ
Para recriar as plotagens acima usando o TFQ e a simulação de trajetória, é possível usar tfq.layers.Sample
2.2 Expectativa baseada em amostra de ruído
Para calcular a expectativa baseada em amostra de ruído, é possível usar tfq.layers.SampleExpectation
:
Compute as estimativas da expectativa sem ruído com a amostragem do circuito:
Compare isso às versões ruidosas:
É possível ver que o ruído afetou especialmente a exatidão de , com a concentração rápida de my_really_noisy_circuit
em direção a 0.
2.3 Cálculo da expectativa analítica ruidosa
Os cálculos da expectativa analítica ruidosa são praticamente idênticos ao acima:
3. Ruído de dados quânticos e modelos híbridos
Agora que você implementou algumas simulações de circuitos ruidosos no TFQ, pode testar como os modelos clássicos-quânticos híbridos e quânticos são afetados pelo ruído, comparando e contrastando o desempenho com e sem ruído. Uma verificação inicial para ver se um modelo ou algoritmo é robusto ao ruído é testar com um modelo despolarizador em todo o circuito, que é algo assim:
Em que cada fatia de tempo do circuito (às vezes chamada de "momento") tem um canal despolarizador anexado após cada operação de porta dela. O canal despolarizador aplicará um dos com a probabilidade ou não aplicará nada (manterá a operação original) com a probabilidade .
3.1 Dados
Para este exemplo, você pode usar alguns circuitos preparados no módulo tfq.datasets
como dados de treinamento:
Escrever uma pequena função helper ajudará a gerar os dados para o caso ruidoso x sem ruído:
3.2 Defina um circuito do modelo
Agora que você tem os dados quânticos em formato de circuitos, precisará de um circuito para modelar esses dados, assim como é possível escrever uma função helper com os dados para gerar esse circuito opcionalmente com ruído:
3.3 Criação e treinamento do modelo
Depois de criar os dados e o circuito do modelo, a função helper final necessária é uma que formará um tf.keras.Model
quântico híbrido com e sem ruído:
4. Compare o desempenho
4.1 Referência sem ruído
Com o código de criação do modelo e geração de dados, você agora pode comparar e contrastar o desempenho do modelo nos cenários com e sem ruído. Primeiro, é possível realizar um treinamento sem ruído de referência:
Explore os resultados e a exatidão:
4.2 Comparação ruidosa
Agora, você pode criar um novo modelo com a estrutura ruidosa e compará-lo ao acima. O código é praticamente igual:
Observação: no diagrama do modelo, agora há uma tfq.layers.NoisyPQC
em vez de tfq.layers.PQC
, porque a probabilidade de despolarização não é mais zero. O treinamento levará muito mais tempo, já que a simulação ruidosa é muito mais cara do que a sem ruído.
Sucesso: ainda foi possível treinar o modelo ruidoso com um leve ruído de despolarização. Experimente diferentes modelos de ruído para ver como e quando o treinamento falhará. Também fique atento à funcionalidade ruidosa em tfq.layers
e tfq.noise
.