Path: blob/master/site/pt-br/quantum/tutorials/quantum_data.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Dados quânticos
Com base nas comparações feitas no tutorial MNIST, este tutorial explora o artigo recente de Huang et al. que mostra como diferentes datasets afetam as comparações de desempenho. No trabalho, os autores buscam entender como e quando os modelos de aprendizado de máquina clássicos podem aprender tão bem quanto (ou melhor que) os modelos quânticos. O trabalho também apresenta uma separação de desempenho empírica entre o modelo de aprendizado de máquina clássico e quântico através de um dataset cuidadosamente elaborado. Você fará o seguinte:
Preparará um dataset Fashion-MNIST de dimensões reduzidas.
Usará circuitos quânticos para rotular novamente o dataset e computar características de Kernels Quânticos Projetados (PQK).
Treinará uma rede neural clássica com o dataset rotulado novamente e comparará o desempenho com um modelo que tem acesso a características de PQK.
Configuração
WARNING: pip is being invoked by an old script wrapper. This will fail in a future version of pip.
Please see https://github.com/pypa/pip/issues/5599 for advice on fixing the underlying issue.
To avoid this problem you can invoke Python with '-m pip' instead of running pip directly.
1. Preparação de dados
Você começará preparando o dataset Fashion-MNIST para a execução em um computador quântico.
1.1 Baixe o Fashion-MNIST
O primeiro passo é obter o dataset fashion-mnist tradicional. Isso pode ser feito usando o módulo tf.keras.datasets
.
Filtre o dataset para manter apenas "t-shirts/tops" (camisetas/blusas) e "dresses" (vestidos), removendo as outras classes. Ao mesmo tempo, converta o rótulo, y
, para booleano: True para 0 e False para 3.
1.2 Reduza a escala das imagens
Como no exemplo MNIST, você precisará reduzir a escala dessas imagens para que fiquem dentro dos limites para computadores quânticos atuais. Desta vez, porém, você usará uma transformação de PCA para diminuir as dimensões, em vez de uma operação tf.image.resize
.
O último passo é reduzir o tamanho do dataset para apenas 1000 pontos de dados de treinamento e 200 pontos de dados de teste.
2. Rotule novamente e compute as características de PQK
Agora, você preparará um dataset quântico "artificial" ao incorporar componentes quânticos e rotular novamente o dataset Fashion-MNIST truncado que foi criado acima. Para obter a maior separação entre os métodos quântico e clássico, primeiro você preparará as características de PQK e depois rotulará novamente as saídas com base nos valores delas.
2.1 Encoding quântico e características de PQK
Você criará um novo conjunto de características, com base no x_train
, y_train
, x_test
e y_test
que é definido como a 1-RDM em todos os qubits de:
Em que é uma parede de rotações de um único qubit e
Primeiro, você pode gerar a parede de rotações de um único qubit:
É possível verificar rapidamente se isso funciona ao analisar o circuito:
Em seguida, você pode preparar com a ajuda de tfq.util.exponential
, que consegue exponenciar qualquer objeto cirq.PauliSum
comutativo:
Pode ser um pouco mais difícil de verificar esse circuito apenas olhando para ele, mas você ainda pode examinar um caso de dois qubits para ver o que está acontecendo:
Agora, você tem todos os elementos básicos necessários para colocar seus circuitos de encoding juntos:
Escolha alguns qubits e prepare os circuitos de encoding de dados:
Em seguida, compute as características de PQK com base na 1-RDM dos circuitos do dataset acima e armazene os resultados em rdm
, um tf.Tensor
com formato [n_points, n_qubits, 3]
. As entradas em rdm[i][j][k]
= , em que i
indexa sobre pontos de dados, j
indexa sobre qubits e k
indexa sobre .
2.2 Rotule novamente com base nas características de PQK
Agora que você tem essas características geradas com quântica em x_train_pqk
e x_test_pqk
, é hora de rotular novamente o dataset. Para obter a separação máxima entre o desempenho quântico e clássico, você pode rotular novamente o dataset com base nas informações de espectro encontradas em x_train_pqk
e x_test_pqk
.
Observação: essa preparação do dataset para maximizar explicitamente a separação no desempenho entre os modelos clássico e quântico pode parecer trapaça, mas oferece uma prova de existência bastante importante para datasets de modelagem difícil em computadores clássicos e fácil em computadores quânticos. Não haveria razão em buscar a vantagem quântica em QML se não posse possível criar primeiro algo assim para demonstrar a vantagem.
Você já tem tudo o que precisa para rotular novamente o dataset! Agora pode consultar o fluxograma para entender melhor como maximizar a separação de desempenho com essa nova rotulagem:
Para maximizar a separação entre os modelos quântico e clássico, tente maximizar a diferença geométrica entre o dataset original e as matrizes de kernels para características de PQK usando S_pqk, V_pqk
e S_original, V_original
. Um valor grande garante que você se mova inicialmente para a direita no fluxograma descendo em direção a uma vantagem de precisão no caso quântico.
Observação: a computação de quantidades para e também é bastante útil ao tentar entender melhor as separações de desempenho. Nesse caso, garantir um valor grande é o suficiente para ver a separação de desempenho.
3. Compare os modelos
Depois de preparar o dataset, é hora de comparar o desempenho dos modelos. Crie duas pequenas redes feedforward e compare o desempenho quando elas recebem acesso às características de PQK encontradas em x_train_pqk
.
3.1 Crie o modelo otimizado de PQK
Usando os recursos da biblioteca tf.keras
padrão, você pode criar e treinar um modelo com os pontos de dados x_train_pqk
e y_train_new
:
3.2 Crie um modelo clássico
De maneira semelhante ao código acima, agora também é possível criar um modelo clássico que não tem acesso às características de PQK no seu dataset artificial. Esse modelo pode ser treinado usando x_train
e y_label_new
.
3.3 Compare o desempenho
Agora que você treinou os dois modelos, é possível plotar rapidamente as lacunas de desempenho nos dados de validação entre os dois. Geralmente, os dois modelos alcançam uma exatidão > 0,9 nos dados de treinamento. No entanto, nos dados de validação, fica claro que somente as informações encontradas nas características de PQK são suficientes para fazer o modelo generalizar bem para instâncias não vistas.
Sucesso: você criou um dataset quântico artificial que consegue superar modelos clássicos deliberadamente em uma configuração imparcial (mas inventada). Tente comparar os resultados usando outros tipos de modelos clássicos. O próximo passo é ver se você consegue encontrar novos datasets interessantes para superar os modelos clássicos sem precisar criá-los por conta própria.
4. Conclusões importantes
Há várias conclusões importantes que você pode retirar disso e dos experimentos do MNIST:
É bastante improvável que os modelos quânticos atuais superem o desempenho dos modelos clássicos com dados clássicos, especialmente nos datasets clássicos atuais que podem ter mais de um milhão de pontos de dados.
Só porque os dados podem vir de um circuito quântico difícil de simular de forma clássica, não significa necessariamente que os dados se tornam difíceis de aprender para um modelo clássico.
Existem datasets (em última instância, de natureza quântica) que são fáceis para os modelos quânticos aprenderem e difíceis para os modelos clássicos aprenderem, independentemente da arquitetura do modelo ou dos algoritmos de treinamento usados.