Path: blob/master/site/es-419/quantum/tutorials/barren_plateaus.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Barren plateaus
En este ejemplo analizaremos los resultados de McClean, 2019 que dice que no cualquier estructura de red neuronal cuántica tendrá un buen desempeño para el aprendizaje. En particular, verá que una familia grande cualquiera de circuitos cuánticos aleatorios no sirve como una red neuronal cuántica buena, ya que tiene gradientes que se desvanecen casi en todas partes. En este ejemplo, no entrenaremos ningún modelo para un problema de aprendizaje específico, sino que nos centraremos en un problema más simple, el de entender el comportamiento de los gradientes.
Preparación
Instalar TensorFlow Quantum:
Ahora, hay que importar TensorFlow y las dependencias del módulo:
1. Resumen
Los circuitos cuánticos aleatorios con muchos bloques que tienen el siguiente aspecto ( es una rotación Pauli):
Donde si se define como el valor de expectativa w.r.t. para cualquier bit cuántico y , entonces, hay un problema, que la media de es muy cercana a 0 y no varía mucho más. Lo notaremos a continuación:
2. Generación de circuitos cuánticos
La construcción de la publicación es fácil de seguir. Se implementa una función simple que genera un circuito cuántico aleatorio, a veces denominado red neuronal cuántica (QNN), con la profundidad dada en un conjunto de bits cuánticos:
Los autores investigan el gradiente de un solo parámetro . Sigamos y coloquemos un sympy.Symbol
en el circuito donde estaría . Como los autores no analizan las estadísticas de ningún otro símbolo del circuito, reemplacémoslo con valores aleatorios ahora, en vez de más tarde.
3. Ejecución de los circuitos
Generemos algunos de estos circuitos con un observable para hacer pruebas de la afirmación de que los gradientes no varían mucho. Primero, generemos un lote de circuitos aleatorios. Elijamos un observable ZZ aleatorio y calculemos el lote de gradientes y la variancia con TensorFlow Quantum.
3.1 Cálculo de la variancia por lotes
Escribamos una función ayudante que calcule la variancia del gradiente de un observable sobre un conjunto de circuitos:
3.1 Preparación y ejecución
Elijamos la cantidad de circuitos aleatorios que generaremos junto con su profundidad y la cantidad de bit cuánticos que deberían participar. Después, grafiquemos los resultados.
En este gráfico se muestra que para los problemas de aprendizaje automático cuántico, no se puede, simplemente, adivinar un ansatz de QNN aleatorio y esperar obtener el mejor resultado. En el circuito del modelo, debe haber alguna estructura presente para que los gradientes varíen al punto en que el aprendizaje efectivamente se produzca.
4. Heurística
Una heurística interesante de Grant, 2019 permite empezar muy cerca de la opción aleatoria, pero tampoco tanto. Con los mismos circuitos que McClean et al., los autores proponen una técnica de inicialización diferente para los parámetros de control clásico para evitar los barren plateaus. La técnica de inicialización inicia algunas capas con parámetros de control totalmente aleatorios. Pero en las capas que la siguen inmediatamente, elige parámetros tales que la transformación inicial hecha por las primeras pocas capas se deshace. A esto los autores lo llaman bloque de identidad.
La ventaja de esta heurística es que al cambiar un solo parámetro, todos los otros bloques que se encuentran fuera del bloque actual seguirán siendo de identidad; y la señal de gradiente consigue volverse mucho más fuerte que antes. De este modo, el usuario puede elegir qué variables y bloques desea modificar para obtener una señal de gradiente más fuerte. Esta heurística no impide que el usuario caiga en un barren plateau durante la fase de entrenamiento (y restringe una actualización totalmente simultanea), simplemente, garantiza que se podrá comenzar fuera del plateau.
4.1 Construcción de una nueva red neuronal cuántica
Ahora, construimos una función para generar redes neuronales cuánticas de bloques de identidad. Esta implementación es un poco diferente a la de la publicación. Por ahora, observamos el comportamiento del gradiente de un único parámetro para ser coherentes con McClean et al, y para que se puedan hacer algunas simplificaciones.
Para generar un bloque de identidad y entrenar el modelo, por lo general necesitamos y no . Inicialmente y son los mismos ángulos, pero se aprenden de forma diferente. De lo contrario, deberíamos obtener siempre la identidad, incluso después del entrenamiento. La elección de la cantidad de bloques de identidad es empírica. Mientras más profundo sea el bloque, más pequeña será la variancia en medio de ese bloque. Pero al principio y al final del bloque, la variancia de los gradientes de parámetro debería ser grande.
4.2 Comparación
Aquí podemos ver que la heurística ayuda a mantener la variancia del gradiente para que no se desvanezca, ya que rápidamente, hace lo siguiente:
Es una excelente mejora para obtener señales de gradientes más fuertes a partir de redes neuronales cuánticas aleatorias (cercanas).