Blog de Amazon Web Services (AWS)

Implementación de Análisis de Componentes Principales en Amazon Braket

Por Mateo Laguna G., Arquitecto de Soluciones para sector público en Amazon Web Services (AWS)

Contexto

Áreas recientes de la computación como el Aprendizaje Automático tuvieron que enfrentar diferentes obstáculos para alcanzar sus éxitos hoy en día. Un ejemplo de estos problemas es la dimensionalidad de los datos que deben procesarse en nuestra era digital. En un mundo altamente conectado, procesar datos con alta dimensionalidad es una tarea difícil debido a la demanda de recursos, incluso para las supercomputadoras existentes. Por ello, se han creado a lo largo de los años diferentes técnicas para extraer la información más relevante a conjuntos de datos con alta dimensionalidad, como es la técnica del Análisis de Componentes Principales (PCA). En pocas palabras, PCA busca reducir la dimensionalidad (número de variables) de un conjunto de datos, preservando al mismo tiempo tanta variabilidad (es decir, información estadística) como sea [1].

Por otro lado, todas estas técnicas para mejorar el procesamiento de datos y extraer la información más relevante han sido concebidas bajo el paradigma de la computación clásica. La computación clásica recibe su nombre para diferenciarla del paradigma de la computación cuántica que aprovecha las leyes de la mecánica cuántica para aprovechar nuevas propiedades que no están presentes en la computación clásica [2]. Por lo tanto, estas y otras técnicas de aprendizaje automático se están explorando ahora utilizando este nuevo paradigma de computación (esta nueva rama se conoce como Quantum Machine Learning [3]), ya que estos dispositivos cuánticos pueden potencialmente almacenar y procesar exponencialmente más información que sus homólogos clásicos.

Problema

El presente blog está basado en el siguiente código disponible en el repositorio de ejemplos de Amazon Braket cuyo objetivo es implementar PCA en un procesador cuántico mediante Amazon Braket. Amazon Braket es un servicio de AWS totalmente administrado que ayuda a investigadores, científicos y desarrolladores a comenzar con la computación cuántica. La computación cuántica tiene el potencial de resolver problemas computacionales que están fuera del alcance de las computadoras clásicas porque aprovecha las leyes de la mecánica cuántica para procesar información de nuevas maneras.

Obtener acceso al hardware de computación cuántica puede resultar costoso e inconveniente. El acceso limitado dificulta la ejecución de algoritmos, la optimización de diseños, la evaluación del estado actual de la tecnología y la planificación de cuándo invertir sus recursos para obtener el máximo beneficio. Braket ayuda a superar estos desafíos.

Braket ofrece un único punto de acceso a una variedad de tecnologías de computación cuántica. Con Braket el usuario podrá:

  • Explorar y diseñar algoritmos cuánticos e híbridos.
  • Probar algoritmos en diferentes simuladores de circuitos cuánticos.
  • Ejecutar algoritmos en diferentes tipos de computadoras cuánticas.
  • Crear aplicaciones de prueba de concepto.

Utilizaremos el conocido escenario de PCA de los precios de la vivienda en Estados Unidos (el mismo utilizado por [7] a partir de 1996). La idea detrás de este escenario es mostrar cómo una sola variable (es decir, el precio de la casa) puede ser función de muchas otras características como la cantidad de dormitorios, la cantidad de baños, si la cocina ha sido remodelada recientemente, si tiene balcón, los metros cuadrados, si tiene vista al mar, tamaño del lote, cantidad de años de construcción, ubicación de la casa (barrio), si tiene ático o sótano, número de estacionamientos, etc. Por la cantidad de características, es importante reducir los datos a las características que capturan la mayor variación en los datos. Por lo tanto, vamos a utilizar la técnica PCA que busca determinar qué características capturan la mayor variabilidad en los datos [1].

Para nuestro caso, consideremos el número de habitaciones (primera característica) y los metros cuadrados (segunda característica) de varias casas en venta en Los Álamos (siguiendo el mismo ejemplo de [4]). Aquí están los datos sin procesar, tomados de Zillow, para 15 casas (es la primera característica y  es la segunda característica):

PCA tiene tres pasos principales:

El primero se llama estandarización lo que significa que debemos ajustar los datos a una escala adecuada (la idea es ajustar las variables iniciales continuas para que cada una de ellas contribuya por igual al análisis). Para conocer más sobre este punto puede consultar el siguiente enlace. Ahora, vamos a dividir cada característica (𝑋1, 𝑋2) por la desviación estándar (𝜎) para que podamos tener ambas características en la misma escala, y luego vamos a restar la media de ambas características (restamos la media porque queremos que las características tengan las características de una distribución normal estándar con media cero):

El siguiente paso para PCA es calcular la matriz de covarianza (la varianza es una medida de dispersión y se puede definir como la dispersión de datos de la media de un conjunto de datos dado. La covarianza se calcula entre dos variables y se utiliza para medir cómo varían las dos variables juntas. Para conocer más sobre estos términos puede consultar el siguiente enlace) que se define por (donde  es la desviación estándar de 𝑋, y observe 𝑐𝑜𝑣[𝑋,𝑋]==𝑣𝑎𝑟(𝑋) lo que significa que la covarianza de la variable consigo misma es la varianza de la variable):

En nuestro caso, nuestra matriz de covarianza sería:

Ahora, el paso final es encontrar los valores propios y los vectores propios de la matriz de covarianza para que podamos encontrar los componentes principales de los datos. Según el número de valores propios, sabemos cuánta varianza captura cada componente principal. En nuestro caso de 2 características, mantendríamos el componente con el valor propio más alto. Podemos calcular usando computación clásica estos valores propios con la biblioteca linalg en Python de Numpy (recordemos que vamos a diagonalizar la matriz de covarianza para encontrar los componentes principales de nuestra técnica):

La razón por la que estamos calculando los valores propios y los vectores propios es porque los componentes principales son vectores propios de la matriz de covarianza de los datos (esto se puede mostrar matemáticamente pero está fuera del alcance de este cuaderno. Para obtener más información relacionada con los vectores propios y los valores propios en PCA, consulte este blog).

Solución

Vamos a implementar el mismo algoritmo cuántico propuesto [4] que tiene los siguientes pasos:

  1. Pre-procesamiento clásico
  2. Preparación del estado
  3. Cálculo de la pureza
  4. Post-procesamiento clásico.
  1. Pre-procesamiento clásico

En el primer paso del algoritmo cuántico se debe construir la matriz de densidad de nuestro sistema cuántico que nos permitirá convertir los valores numéricos clásicos en información cuántica que podremos manipular. Para nuestro caso, la matriz de densidad es:

2. Preparación del estado

En la preparación del estado buscamos un vector de estado que al ser purificado nos devuelva la matriz de densidad que encontramos en el punto anterior. Para entender más a detalle este proceso de purificación sugerimos al lector ver el código del repositorio donde se encuentra más explicado a detalle. En nuestro caso, el vector de estado purificado sería:

3. Cálculo de la pureza

La pureza es una cantidad que puede ser medida en un sistema cuántico que para nuestro caso resulta de especial importancia porque conecta los valores propios de la matriz de covarianza que estamos buscando con el sistema cuántico que hemos construido hasta ahora. Para ver la derivación completa de cómo pasar de la pureza a los valores propios se sugiere revisar el código del repositorio. Para nuestro caso el cálculo de la pureza se da por:

  4. Post-procesamiento clásico

Una vez medidos los valores de la pureza a través del circuito cuántico implementado, se procede a transformar este valor en los valores propios que estamos buscando para nuestro escenario de PCA. Las ecuaciones sobre cómo hacer esto se encuentran en el código del repositorio.

Resultados

Después de tener todas las ecuaciones matemáticas necesarias, procedemos a ejecutar nuestro algoritmo en el servicio de Amazon Braket. El código de nuestro algoritmo cuántico se ve así (el código fue ejecutado en un notebook de Amazon Braket ml.t3.medium):

El diseño del algoritmo se ve así:

El estudio del algoritmo en detalle sale del alcance de este blog, sin embargo, si el lector desea explorar más a fondo cómo fue concebida la idea del algoritmo para solucionar PCA le sugerimos consultar [5].

A continuación, podemos ver los resultados obtenidos de la ejecución de nuestro algoritmo cuántico en los dos diferentes simuladores cuánticos (simulador local y SV1):

Teniendo en cuenta que nuestro valores propios a encontrar eran:

Podemos hallar entonces los errores porcentuales en cada unas de las ejecuciones en los diferentes dispostivos cuánticos respectivamente (e.g. simulador local y SV1):

Conclusiones

Resumiendo lo que hemos hecho, a lo largo de todo el código implementamos la técnica de Análisis de Componentes Principales bajo el paradigma de la computación cuántica. Implementamos la técnica PCA para el famoso problema del precio de las viviendas en los EE. UU., donde nuestro objetivo final es encontrar los valores propios de nuestra matriz de covarianza de nuestros datos (es decir, los componentes principales).

La forma en que implementamos la técnica PCA se dividió en cuatro etapas: i) Preprocesamiento clásico, ii) Preparación del estado, iii) Cálculo de pureza, iv) Postprocesamiento clásico. Después de explicar cada paso con los detalles matemáticos y físicos necesarios, implementamos el algoritmo cuántico utilizando el SDK de Amazon Braket con dos dispositivos: el simulador local y el Amazon Braket SV1.

Nuestros resultados para el valor propio que estábamos buscando son los mismos que predijimos usando el cálculo clásico con un error porcentual menor al 5%. Finalmente, vimos que para este escenario particular, la técnica PCA se implementó correctamente utilizando algoritmos, circuitos y dispositivos cuánticos. Sin embargo, sabemos que la tecnología aún se encuentra en una etapa temprana, pero demostrar que podemos dar estos pequeños pasos trae esperanza y optimismo para el futuro de la computación cuántica y sus aplicaciones en el aprendizaje automático.

Referencias

[1] Ian T. Jolliffe and Jorge Cadima. Principal component analysis: A review and recent developments. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 374, April 2016.

[2] C. He, J. Li, W. Liu, J. Peng, and Z. J. Wang. A low-complexity quantum principal component analysis algorithm,. IEEE Transactions on Quantum Engineering, 3(3):1–13, 2022.

[3] Lin Jie et al. An improved quantum principal component analysis algorithm based on the quantum singular threshold method. Physics Letters A, 383:2862–68, aug 2019.

[4] J. , Abhijith, et al. «Quantum Algorithm Implementations for Beginners». ACM Transactions on Quantum Computing, vol. 3, n.o 4, dic 2022, pp. 1-92. arXiv.org, https://doi.org/10.1145/3517340.

[5] Schmied, Roman. «Quantum State Tomography of a Single Qubit: Comparison of Methods». Journal of Modern Optics, vol. 63, n.o 18, oct 2016, pp. 1744-58. DOI.org (Crossref), https://doi.org/10.1080/09500340.2016.1142018.

[6] An special thanks to the Github repository of Haokai Zhang available at: https://github.com/Haokai-Zhang/ExampleQPCA/blob/master/5qubit-qPCA.ipynb

[7] Kelley Pace, R., y Ronald Barry. «Sparse spatial autoregressions». Statistics & Probability Letters, vol. 33, n.o 3, may 1997, pp. 291-97. ScienceDirect, https://doi.org/10.1016/S0167-7152(96)00140-X.

[8] Simulating Quantum Circuits with Amazon Braket | AWS Quantum Technologies Blog. sept 2021, https://aws.amazon.com/blogs/quantum-computing/simulating-quantum-circuits-with-amazon-braket/.


Sobre el autor

Mateo Laguna G. es Arquitecto de Soluciones en Amazon Web Services para el Sector Público en Latinoamérica. Mateo hace parte del equipo de entusiastas por el cómputo cuántico dentro de AWS. Como físico e ingeniero su mayor tema de interés es el cómputo cuántico donde encuentra que sus dos profesiones coinciden.

 

 

 

 

 

Revisores técnicos

 

 

Juan Moreno es un Evangelizador de Tecnologías Cuánticas en el Centro de Redes Cuánticas de AWS. Ha pasado la mayor parte de su carrera brindando soporte a infraestructura y servicios en la nube en diversidad de industrias y geografías, enfocado en operación a gran escala y con amplia experiencia en gestión de equipos. Su pasión es servir de ayuda a los clientes que comienzan e integran tecnologías cuánticas en su infraestructura. En su tiempo libre es estudiante de Ciencias Físicas, practica y enseña yoga y disfruta de actividades de ocio con su esposa y amigos.

 

 

Camilo García es un Arquitecto de Soluciones en Amazon Web Services para el Sector Público en la región Andina y el Caribe. Camilo ha profundizado en temas de resiliencia, con énfasis en recuperación de desastres. Le apasionan los temas de TI en las organizaciones, manejo de redes y diseño de sistemas resilientes.