Desenhe o seu próprio classificadorDesign your own classifier

Neste guia você vai aprender os conceitos básicos por trás do design de modelos de circuito para o classificador centrado em circuito quântico.In this guide you will learn the basic concepts behind the design of circuit models for the quantum circuit centric classifier.

Tal como na aprendizagem profunda clássica, não existe uma regra geral para escolher uma arquitetura específica.As in classical deep learning, there is no general rule for choosing a specific architecture. Dependendo do problema, algumas arquiteturas terão um desempenho melhor do que outras.Depending on the problem some architectures will perform better than others. Mas, há alguns conceitos que podem ser úteis ao projetar o circuito:But, there are some concepts that might be useful when designing the circuit:

  • Um grande número de parâmetros implica um modelo mais flexível, que pode ser adequado para desenhar limites de classificação complicados, mas que também pode ser mais suscetível a excesso de adaptação.A large number of parameters implies a more flexible model, which may be suitable to draw complicated classification boundaries but which may also be more susceptible to overfitting.

  • Os portões de enredar entre os qubits são essenciais para capturar as correlações entre as características quânticas.Entangling gates between qubits are essential to capture the correlations between the quantum features.

Como construir um classificador com Q#How to build a classifier with Q#

Para construir um classificador vamos concatenar rotações controladas parametricadas no nosso modelo de circuito.To build a classifier we are going to concatenate parametrized controlled rotations in our circuit model. Para fazê-lo podemos usar o tipo ControlledRotation definido na biblioteca Quantum Machine Learning.To do it we can use the type ControlledRotation defined in the Quantum Machine Learning library. Este tipo aceita quatro argumentos que determinam: o índice do qubit-alvo, a matriz de índices dos qubits de controlo, o eixo de rotação e o índice do parâmetro associado na matriz de parâmetros que definem o modelo.This type accepts four arguments that determine: the index of the target qubit, the array of indices of the control qubits, the axis of rotation, and index of the associated parameter in the array of parameters defining the model.

Vamos ver um exemplo de um classificador.Let's see an example of a classifier. Na amostra de meias-luas, podemosencontrar o seguinte classificador definido no ficheiro Training.qs .In the half-moons sample, we can find the following classifier defined in the file Training.qs.

    function ClassifierStructure() : ControlledRotation[] {
        return [
            ControlledRotation((0, new Int[0]), PauliX, 4),
            ControlledRotation((0, new Int[0]), PauliZ, 5),
            ControlledRotation((1, new Int[0]), PauliX, 6),
            ControlledRotation((1, new Int[0]), PauliZ, 7),
            ControlledRotation((0, [1]), PauliX, 0),
            ControlledRotation((1, [0]), PauliX, 1),
            ControlledRotation((1, new Int[0]), PauliZ, 2),
            ControlledRotation((1, new Int[0]), PauliX, 3)
        ];
    }

O que estamos definindo aqui é uma função que devolve uma variedade de ControlledRotation elementos, que juntamente com uma variedade de parâmetros e um enviesamento definirão o nosso SequentialModel .What we are defining here is a function that returns an array of ControlledRotation elements, that together with an array of parameters and a bias will define our SequentialModel. Este tipo é fundamental na biblioteca Quantum Machine Learning e define o classificador.This type is fundamental in the Quantum Machine Learning library and defines the classifier. O circuito definido na função acima faz parte de um classificador no qual cada amostra do conjunto de dados contém duas características.The circuit defined in the function above is part of a classifier in which each sample of the dataset contains two features. Portanto, só precisamos de dois qubits.Therefore we only need two qubits. A representação gráfica do circuito é:The graphical representation of the circuit is:

Exemplo de modelo de circuito

Note que, por defeito, as operações da biblioteca Quantum Machine Learning medem o último qubit do registo para estimar as probabilidades de classificação.Note that by default the operations of the Quantum Machine Learning library measure the last qubit of the register to estimate the classification probabilities. Deve ter em mente este facto ao desenhar o seu circuito.You should keep in mind this fact when designing your circuit.

Use as funções da biblioteca para escrever camadas de portõesUse the library functions to write layers of gates

Suponha que temos um conjunto de dados com 784 funcionalidades por exemplo, por exemplo, imagens de 28×28 pixels como o conjunto de dados do MNIST.Suppose we have a dataset with 784 features per instance, e.g. images of 28×28 pixels like the MNIST dataset. Neste caso, a largura do circuito torna-se grande o suficiente para que a escrita à mão cada portão individual se torne uma tarefa possível, mas impraticável.In this case, the width of the circuit becomes large enough so that writing by hand each individual gate becomes a possible but impractical task. É por isso que a biblioteca Quantum Machine Learning fornece um conjunto de ferramentas para gerar automaticamente camadas de rotações parametrizadas.This is why the Quantum Machine Learning library provides a set of tools to automatically generate layers of parametrized rotations. Por exemplo, a função devolve uma série de rotações de LocalRotationsLayer um único qubit descontrolado ao longo de um determinado eixo, com uma rotação para cada qubit no registo, cada parametrizado por um parâmetro de modelo diferente.For instance, the function LocalRotationsLayer returns an array of uncontrolled single-qubit rotations along a given axis, with one rotation for each qubit in the register, each parametrized by a different model parameter. Por exemplo, LocalRotationsLayer(4, X) devolve o seguinte conjunto de portões:For example, LocalRotationsLayer(4, X) returns the following set of gates:

Camada de rotações locais

Recomendamos que explore a referência API da biblioteca Quantum Machine Learning para descobrir todas as ferramentas disponíveis para agilizar o design do circuito.We recommend you explore the API reference of the Quantum Machine Learning library to discover all the tools available to streamline the circuit design.

Passos seguintesNext steps

Experimente diferentes estruturas nos exemplos fornecidos pelas amostras.Try different structures in the examples provided by the samples. Vê alguma alteração no desempenho do modelo?Do you see any changes in the performance of the model? No próximo tutorial, Load your own datasets aprenderá a carregar conjuntos de dados para tentar explorar novas arquiteturas de classificadores.In the next tutorial, Load your own datasets, you will learn how to load datasets to try and explore new architectures of classifiers.