You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+291Lines changed: 291 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -262,6 +262,296 @@ Conteúdo:
262
262
- Revisão rápida de classificação, regressão e redes neurais;
263
263
- Introdução ao Machine Learning Quântico (QML);
264
264
- Diferenças e vantagens potenciais do QML;
265
+
266
+
## [QML] Quantum Neural Networks (QNNs)
267
+
Arquitetura de Quantum Neural Networks (QNNs): As **Redes Neurais Quânticas** (Quantum Neural Networks – QNNs) são modelos de aprendizado de máquina que utilizam circuitos quânticos parametrizados (Parameterized Quantum Circuits – PQCs) como seus blocos fundamentais. Elas se inserem no paradigma de **aprendizado híbrido quântico‑clássico**, onde a parte quântica processa informações em espaços de Hilbert de alta dimensionalidade e a parte clássica otimiza os parâmetros e realiza o pós‑processamento.
268
+
269
+
Neste texto, exploraremos a arquitetura típica de uma QNN, seus componentes, variações, técnicas de treinamento e implementações práticas usando as bibliotecas **PennyLane** e **Qiskit Machine Learning**.
270
+
271
+
1. Componentes fundamentais de uma QNN
272
+
273
+
Uma QNN é composta por três camadas principais:
274
+
275
+
1.**Codificação (Encoding)**
276
+
Transforma dados clássicos $\mathbf{x} \in \mathbb{R}^d$ em um estado quântico $|\psi(\mathbf{x})\rangle$ através de portas parametrizadas pelos dados. Exemplos comuns:
277
+
-*Angle encoding*: cada feature vira um ângulo de rotação ($R_y$, $R_z$).
278
+
-*Amplitude encoding*: os dados normalizados definem as amplitudes do estado.
279
+
-*Basis encoding*: cada bit clássico é representado diretamente por um qubit.
280
+
281
+
2.**Camadas variacionais (Ansatz)**
282
+
Sequência de portas quânticas com parâmetros treináveis $\boldsymbol{\theta}$. Essas portas introduzem correlações (emaranhamento) e transformações não‑lineares. Um ansatz típico combina:
283
+
- Rotações individuais (ex: $R_y(\theta_i)$)
284
+
- Portas de emaranhamento (ex: $CNOT$, $CZ$, $CR_x$)
285
+
- Repetição de blocos (camadas)
286
+
287
+
3.**Medição e pós‑processamento**
288
+
Um ou mais qubits são medidos, produzindo valores esperados de observáveis (ex: $\langle Z \rangle$). Esses valores são combinados por uma camada clássica (ex: *softmax*, *sigmoid*) para gerar a saída final.
289
+
290
+

291
+
292
+
---
293
+
294
+
2. Arquiteturas comuns de QNN
295
+
296
+
2.1 Classificador Variacional (VQC)
297
+
298
+
O **Variational Quantum Classifier** (VQC) é a QNN mais simples: dados são codificados, passam por um ansatz, e os valores esperados alimentam um classificador linear.
Proposto por Pérez‑Salinas et al. (2020), este modelo insere os dados repetidamente entre camadas variacionais, aumentando a capacidade expressiva.
321
+
322
+
```
323
+
Camada 1: Encoding → Variacional
324
+
Camada 2: Encoding → Variacional
325
+
...
326
+
Camada L: Encoding → Variacional → Medição
327
+
```
328
+
329
+
Cada re‑uploading permite que os dados influenciem o circuito em múltiplos pontos, o que equivale a aumentar a não‑linearidade.
330
+
331
+
2.3 Quantum Convolutional Neural Networks (QCNN)
332
+
333
+
Inspiradas em CNNs clássicas, as QCNNs aplicam convoluções e pooling quânticos para reduzir gradualmente o número de qubits. São especialmente úteis para dados estruturados (ex: imagens) e possuem vantagens teóricas na detecção de simetrias.
334
+
335
+
```python
336
+
defqcnn_layer(params, wires):
337
+
# Exemplo de convolução + pooling
338
+
qml.CNOT(wires=[wires[0], wires[1]])
339
+
qml.RY(params[0], wires=wires[0])
340
+
qml.RY(params[1], wires=wires[1])
341
+
# Pooling: mede um qubit e condiciona o outro
342
+
m = qml.measure(wires[0])
343
+
qml.cond(m, qml.PauliX)(wires[1])
344
+
return [wires[1]] # reduz número de qubits
345
+
```
346
+
347
+
2.4 Quantum Generative Adversarial Networks (QGAN): Redes adversárias onde tanto o gerador quanto o discriminador são circuitos quânticos (ou híbridos). Gerador aprende a produzir distribuições de dados; discriminador tenta distinguir dados reais dos gerados.
348
+
349
+
3. Treinamento de QNNs: O treinamento de uma QNN consiste em minimizar uma função custo $C(\boldsymbol{\theta})$ usando otimizadores clássicos. Como a saída de um circuito quântico é geralmente contínua (valor esperado), podemos usar gradientes calculados via:
350
+
351
+
-**Parameter Shift Rule**: regra exata para portas da forma $e^{-i\theta P/2}$:
-**Gradientes automáticos** via frameworks (PennyLane, TensorFlow Quantum, Qiskit) que internamente aplicam a regra ou realizam diferenciação numérica.
355
+
356
+
A otimização é realizada com otimizadores clássicos: Adam, SGD, COBYLA, etc. Em ambientes híbridos, a retropropagação (backpropagation) ocorre normalmente, com as portas quânticas tratadas como camadas diferenciáveis.
357
+
358
+
4. Implementações práticas em Python
359
+
360
+
4.1 QNN com PennyLane + PyTorch (classificação binária)
361
+
362
+
```python
363
+
import pennylane as qml
364
+
import torch
365
+
import torch.nn as nn
366
+
from sklearn.datasets import make_classification
367
+
from sklearn.model_selection import train_test_split
368
+
from sklearn.preprocessing import StandardScaler
369
+
370
+
# Configuração do dispositivo quântico
371
+
n_qubits =4
372
+
dev = qml.device('default.qubit', wires=n_qubits)
373
+
374
+
@qml.qnode(dev, interface='torch')
375
+
defquantum_layer(weights, inputs):
376
+
# Angle encoding
377
+
qml.AngleEmbedding(inputs, wires=range(n_qubits))
378
+
# Camadas variacionais
379
+
for i inrange(len(weights)):
380
+
qml.RY(weights[i], wires=i % n_qubits)
381
+
qml.CNOT(wires=[i % n_qubits, (i+1) % n_qubits])
382
+
# Medição de um observável por qubit
383
+
return [qml.expval(qml.PauliZ(i)) for i inrange(n_qubits)]
n_layers =len(params) //2# 2 parâmetros por camada (um por qubit)
506
+
for l inrange(n_layers):
507
+
# Encoding
508
+
qml.RY(x[0], wires=0)
509
+
qml.RY(x[1], wires=1)
510
+
# Variacional
511
+
qml.RY(params[2*l], wires=0)
512
+
qml.RY(params[2*l+1], wires=1)
513
+
qml.CNOT(wires=[0,1])
514
+
return qml.expval(qml.PauliZ(0))
515
+
516
+
# Os parâmetros são treinados para classificar (ex: usando PyTorch)
517
+
```
518
+
519
+
5. Desafios e considerações
520
+
521
+
-**Barren plateaus**: em grandes circuitos aleatórios, os gradientes tendem a zero exponencialmente, dificultando o treinamento. Estratégias incluem inicialização cuidadosa, escolha de ansatz estruturados e uso de técnicas como *layerwise learning*.
522
+
-**Hardware NISQ**: ruído, número limitado de qubits e baixa fidelidade restringem a complexidade dos circuitos.
523
+
-**Expressividade**: nem todo problema se beneficia da computação quântica; há necessidade de entender quando uma QNN pode superar modelos clássicos.
524
+
-**Overfitting**: assim como redes clássicas, QNNs podem sofrer com sobreajuste, exigindo regularização e validação cuidadosa.
525
+
526
+
6. Tendências futuras
527
+
528
+
-**Circuitos mais profundos e tolerantes a falhas**: com o avanço da correção de erros, QNNs maiores poderão ser implementadas.
529
+
-**Integração com frameworks clássicos**: o ecossistema PennyLane, Qiskit, TensorFlow Quantum e outros continuam a evoluir, permitindo prototipagem híbrida transparente.
530
+
-**Aplicações práticas**: química computacional, otimização, finanças e problemas de simetria (ex: partículas físicas) são áreas onde QNNs já mostram vantagens.
531
+
532
+
7. Conclusão
533
+
534
+
As Quantum Neural Networks representam um dos caminhos mais promissores para a combinação de computação quântica e aprendizado de máquina. Sua arquitetura modular – codificação, ansatz variacional e pós‑processamento – permite flexibilidade e integração com bibliotecas clássicas. Apesar dos desafios atuais (barren plateaus, hardware ruidoso), as QNNs já podem ser estudadas e aplicadas em simulações e pequenos dispositivos reais, servindo como laboratório para explorar o potencial quântico na IA.
Agora você tem uma base sólida para projetar, treinar e explorar suas próprias Quantum Neural Networks.
554
+
265
555
- Arquitetura de Quantum Neural Networks (QNNs);
266
556
- Bibliotecas para QML;
267
557
- Qiskit Machine Learning e Pennylane.
@@ -280,6 +570,7 @@ Implementação:
280
570
- Construção de um classificador quântico usando Qiskit e Pennylane;
281
571
- Comparação com modelos clássicos.Estudo de Caso:Projeto final: Aplicação prática do QML em um problema de classificação simples nos computadores quânticos da Google (ex.: reconhecimento de padrões em imagens ou séries temporais).
282
572
573
+
## [QML] Correção de Erros Quânticos
283
574
Correção de Erros Quânticos: Desafios dos Sistemas Quânticos: Os sistemas quânticos são inerentemente frágeis. A interação com o ambiente, imperfeições no controle e limitações dos dispositivos atuais introduzem erros que comprometem a execução de algoritmos quânticos de larga escala. A **correção de erros quânticos (QEC)** é a área que desenvolve códigos e protocolos para proteger a informação quântica, permitindo computação tolerante a falhas.
0 commit comments