Saltar al contenido principal

Introducción al Quantum Machine Learning

Descripción general y motivación

Antes de comenzar, por favor completa esta breve encuesta previa al curso: es importante para mejorar nuestra oferta de contenido y la experiencia del usuario.

¡Bienvenido al Quantum Machine Learning!

El siguiente video ofrece una breve introducción que se complementa con el texto a continuación.

Para un breve resumen y complemento del video:

  • Hemos presenciado que un problema se resolvió por primera vez en una computadora cuántica y luego las personas encontraron una forma de resolverlo en una supercomputadora clásica. Este ciclo, en el que la computación clásica y cuántica se empujan mutuamente a sus límites, probablemente continuará durante varios años más.
  • Existen problemas específicos donde la computación cuántica puede ofrecer una ventaja demostrable sobre la computación clásica, siempre que se logren avances en la reducción de errores y en el número de qubits disponibles. Pero aún estamos en una fase de exploración, buscando conjuntos de datos aptos para lo cuántico y mapas de características cuánticos útiles.
  • El Quantum Machine Learning (QML) es uno de muchos campos emocionantes donde la computación cuántica puede complementar o ampliar los flujos de trabajo clásicos existentes.

El Machine Learning (ML) aplica algoritmos a conjuntos de datos, por lo que el QML podría plausiblemente incorporar la mecánica cuántica en el lado de los datos o de los algoritmos, o en ambos. Todas estas posibilidades son potencialmente interesantes. Sin embargo, nos centraremos principalmente en algoritmos cuánticos aplicados a datos clásicos. Una razón es que los problemas de ML con datos clásicos ya han sido ampliamente estudiados y están ampliamente disponibles. Existe un gran interés en resolver problemas que comienzan con datos clásicos. Otra razón es la falta de QRAM. Sin la posibilidad de almacenar grandes cantidades de datos cuánticos durante un período prolongado, los métodos que comienzan con datos cuánticos aún están lejos de la aplicabilidad industrial. También es incierto cómo los datos clásicos pueden hacerse "accesibles cuánticamente" de manera eficiente. Dos tipos de ML particularmente interesantes son el aprendizaje supervisado, donde un algoritmo se entrena con un conjunto de datos etiquetados, y el aprendizaje no supervisado, donde el algoritmo intenta aprender una distribución a partir de muestras no etiquetadas. Un algoritmo no supervisado podría, por ejemplo, aprender a generar nuevas muestras de la misma distribución o agrupar las muestras en grupos con características similares.

QML_CR_background_Sup_Unsup.avif

La imagen izquierda muestra dos categorías de datos etiquetados, como en el aprendizaje supervisado. En este caso, las categorías son linealmente separables. La imagen derecha muestra clústeres de datos. En una tarea de aprendizaje no supervisado, estos datos inicialmente no estarían etiquetados, y el algoritmo examinaría la distribución y posiblemente buscaría clústeres. Para visualizar los clústeres identificados por el algoritmo a modo de ejemplo, los puntos de datos se han etiquetado ahora. Una diferencia fundamental entre ambos es que el proceso de aprendizaje supervisado comienza con datos ya etiquetados, mientras que el proceso no supervisado comienza con datos no etiquetados, aunque los datos pueden terminar con etiquetas al final.

Quienes estén familiarizados con el Machine Learning ya saben que muchos métodos de solución implican mapear datos a espacios de mayor dimensión. Esto se ha investigado especialmente en el contexto de los kernels. Como breve recordatorio: a veces los datos pueden separarse por una línea, un plano o un hiperplano (a menudo decimos simplemente "hiperplano" por simplicidad) en las mismas dimensiones en las que se presentan. Eso muestra la primera imagen arriba. A veces, sin embargo, los datos no son separables por un hiperplano en esas dimensiones, como muestra la segunda imagen. No obstante, puede existir una estructura en los datos que puede aprovecharse mediante un mapeo a dimensiones más altas, de modo que los datos sean separables en ese espacio de mayor dimensión. Esto lo ilustra el mapeo de los datos 2D con simetría circular al espacio 3D, donde los puntos de datos están dispuestos a lo largo de una superficie paraboloide.

QML_CR_background_2D-3D.avif

Un objetivo común en QML es encontrar un mapeo del espacio de características de menor dimensión a un espacio de mayor dimensión que separe nuestros puntos de datos de manera tan efectiva que podamos usar el mapeo para clasificar nuevos puntos de datos. Sin embargo, esto no es una tarea fácil, y cualquier discusión sobre el potencial beneficio de la computación cuántica en el Machine Learning debe ir acompañada de las limitaciones correspondientes. En particular, debemos abordar los matices en la selección de conjuntos de datos y los desafíos para alcanzar la escala de utilidad. También debemos dejar de intentar superar a los algoritmos clásicos de ML en datos que los algoritmos clásicos ya manejan de manera eficiente y buena, y en su lugar desplazar la discusión hacia la exploración de nuevos mapas de características que podrían ser útiles.

Gestión de expectativas

Muchos de los conjuntos de datos descritos en la literatura para aplicaciones de QML están "diseñados por características" (feature-engineered), es decir, se selecciona o genera específicamente un conjunto de datos para demostrar un caso de uso estrecho en el que la computación cuántica es útil. Si esto suena a trampa, hemos malinterpretado la tarea real. No es que algunos mapas de características cuánticos nos permitan resolver todas o muchas tareas de clasificación de manera más eficiente o escalable que los algoritmos clásicos de ML. Más bien, algunos mapas de características cuánticos (no todos) se comportan de manera diferente a los clásicos. La tarea real consiste en investigar circuitos cuánticos en el contexto de estructuras de datos complejas. Algunas preguntas concretas son:

  1. ¿Qué circuitos cuánticos se comportan de manera más novedosa en comparación con alternativas clásicas?
  2. ¿Existen problemas reales con datos cuyas propiedades se investigan mejor con tales circuitos cuánticos novedosos?
  3. ¿Escalan estos circuitos cuánticos en computadoras cuánticas near-term?

Explicación insuficiente

Frecuentemente se encuentra una explicación simplificada de cómo la computación cuántica puede ser poderosa. Dice algo así:

Así como las computadoras clásicas usan bits de información, las computadoras cuánticas usan qubits. Para un cierto número de bits, digamos 4, una computadora clásica puede asumir cualquiera de los 24=162^4 = 16 estados posibles, mientras que una computadora cuántica puede existir en una superposición de los 16 estados simultáneamente, y las operaciones pueden realizarse sobre toda esta superposición. En algunos casos, esto nos permite diseñar de manera natural algoritmos de aprendizaje potencialmente interesantes basados en mapeos a espacios de mayor dimensión.

Esta es una afirmación correcta, pero es insuficiente y algo engañosa, como explicaremos. También se destacan las diferencias entre coeficientes complejos y reales, por ejemplo:

Un sistema clásico probabilístico, en el que un sistema puede describirse como estando en diferentes estados con ciertas probabilidades, puede representarse de la siguiente manera.

s=a0000+b0001+c0010+...a,b,cR|s\rangle = a|0000\rangle+b|0001\rangle+c|0010\rangle+... a, b, c \in \reals

En tal sistema, los coeficientes aa, bb, cc, etc., solo pueden tener sentido si son números reales positivos. Los estados en las computadoras cuánticas se describen mediante amplitudes de probabilidad, que pueden ser números complejos.

ψ=A0000+B0001+C0010+...A,B,CC|\psi \rangle = A|0000\rangle+B|0001\rangle+C|0010\rangle+... A, B, C \in \mathbb{C}

Las afirmaciones anteriores se formularon con mucho cuidado para que sean correctas (muchas afirmaciones superficialmente similares son falsas). Pero estas afirmaciones correctas no explican el poder de la computación cuántica en el Machine Learning. Por un lado, cualquier aplicación de la computación cuántica al Machine Learning implicará mediciones, y no podemos medir un qubit de modo que esté simultáneamente en múltiples estados. Podemos preparar un qubit en una superposición como ψ=12(0+1)|\psi\rangle = \frac{1}{\sqrt{2}}\left(|0\rangle+|1\rangle\right), pero una medición arroja 0|0\rangle o 1|1\rangle. Solo por esto, esta historia sobre la dimensionalidad creciente es incompleta. Además, en el contexto de los kernels, una mayor dimensionalidad en la computación cuántica no puede ser una condición suficiente para mayor capacidad computacional frente a las alternativas clásicas, ya que los kernels gaussianos son de dimensión infinita. Hay sutilezas aquí, ya que los mapeos de características gaussianos solo se usan en combinación con el "truco del kernel", que evita la necesidad de calcular un vector mapeado de dimensión infinita. Pero el punto se mantiene:

La alta dimensionalidad de los estados cuánticos entrelazados no es paralelismo exponencial y no es una condición suficiente para mayor rendimiento en Machine Learning.

En las siguientes lecciones presentamos flujos de trabajo para incorporar circuitos cuánticos en tareas de Machine Learning, y lo hacemos con el objetivo explícito de facilitar la exploración del poder de la computación cuántica. Ningún mapa de características o algoritmo en este curso se presenta como un camino rápido hacia mejores resultados de ML para problemas generales, porque tal mapa de características o algoritmo no existe. En su lugar, presentamos una amplia gama de herramientas cuánticas que pueden emplearse en la exploración de la computación cuántica útil.

Descuantización

La descuantización se refiere al reemplazo de un algoritmo cuántico dado por uno clásico que, para un conjunto determinado de tareas, se desempeña de manera similar al algoritmo cuántico, típicamente incluyendo el comportamiento de escalado. Según algunas definiciones, el algoritmo clásico solo debería ser polinomialmente más lento que el algoritmo cuántico.

Varios algoritmos de Quantum Machine Learning (QML), de los que inicialmente se pensaba que ofrecían ventajas significativas de velocidad sobre los algoritmos clásicos, han sido descuantizados en los últimos años. Este proceso de descuantización ha proporcionado conocimientos importantes sobre las ventajas potenciales y las limitaciones de los enfoques cuánticos para el Machine Learning.

Uno de los resultados de descuantización más notables proviene del trabajo de Ewin Tang sobre sistemas de recomendación. Tang descubrió un algoritmo clásico que podía manejar tareas de recomendación con velocidades que anteriormente se pensaba que solo eran alcanzables por computadoras cuánticas. Este descubrimiento cuestionó la suposición de que los algoritmos cuánticos tendrían una ventaja exponencial para este problema. Trabajos más recientes de Shin et al. se centran en identificar las condiciones de descuantizabilidad de la clase de funciones de un modelo variacional de ML cuántico.

Un enfoque común para la descuantización (aunque no el único) es considerar la sobrecarga de carga de datos. Es decir: cualquier algoritmo cuántico aplicado a datos clásicos tiene un paso en el que los datos clásicos se codifican en la computadora cuántica. Si un algoritmo cuántico asume que los datos cuánticos ya están presentes, se está ocultando efectivamente el tiempo necesario para la codificación. Hay contextos en los que la suposición de datos cuánticos puede ser razonable, pero muchas aplicaciones interesantes comienzan con datos clásicos. Algunos casos de descuantización han demostrado que el algoritmo cuántico ya no supera a su contraparte clásica cuando se incluye este tiempo de codificación y la carga de datos clásica puede realizarse de manera eficiente.

Incluso si un algoritmo no puede ser descuantizado, eso no significa que sea más eficiente o escalable que todos los algoritmos clásicos. Como ejemplo extremo y construido: imagina desarrollar un algoritmo que selecciona los jj elementos más grandes de un conjunto de tamaño kk. Se podría escribir un algoritmo cuántico que use el algoritmo de Shor para descomponer cada uno de los kk elementos en factores primos, y luego determine los elementos más grandes basándose en los factores primos. Tal algoritmo probablemente no pueda ser descuantizado, pero es significativamente más ineficiente que los algoritmos clásicos que realizan la misma selección de los elementos más grandes (aunque sin el paso de factorización innecesario).

Prueba de existencia

En 2021, los investigadores de IBM Quantum® Yunchao Liu, Srinivasan Arunachalam y Kristan Temme publicaron un artículo en Nature: A rigorous and robust quantum speed-up in supervised machine learning. De manera consistente con las limitaciones anteriores, para este trabajo se selecciónó cuidadosamente un problema de clasificación que (1) es demostrablemente difícil clásicamente y (2) es adecuado para que los algoritmos cuánticos demuestren una ventaja de velocidad.

El artículo trata sobre la clasificación de datos basada en logaritmos discretos. Para citar el artículo: "Para un primo grande pp y un generador gg de Zp=1,2,...,p1\mathbb{Z}^*_p = {1, 2, . . . , p − 1}, es una conjetura ampliamente sostenida que ningún algoritmo clásico puede calcular logg(x)\text{log}_g(x) para una entrada xZpx \in \mathbb{Z}^*_p en tiempo polinomial en n=log2(p)n = \lceil{\text{log}_2(p)}\rceil, el número de bits necesarios para representar pp". En contraste, se sabe que el algoritmo de Shor resuelve el problema del logaritmo discreto en tiempo polinomial. Esta elección del problema cumple simultáneamente con los criterios mencionados: dificultad clásica (improbable de descuantizar) e idoneidad conocida para algoritmos cuánticos.

Mediante esta elección reflexiva del problema de clasificación, los autores pudieron demostrar una ventaja de velocidad exponencial con métodos de kernel cuántico (brevemente esbozados abajo y discutidos en lecciones posteriores), que es tanto de extremo a extremo como robusta. "De extremo a extremo" se refiere aquí a las suposiciones sobre comenzar con datos clásicos; los autores incluyen en este caso el tiempo de codificación de datos. "Robusta" significa aquí que los datos a clasificar están separados por el algoritmo cuántico con un margen grande, de modo que el éxito de la clasificación es robusto frente a influencias reales como el error de muestreo finito.

Todo esto pretende mostrar que existen problemas donde los kernels cuánticos pueden lograr una ventaja de velocidad exponencial. Pero el estado actual de la ciencia es que tales problemas se seleccionan sobre la base de observaciones o justificaciones teóricas de que deberían ser adecuados para algoritmos cuánticos. No es realista esperar una ventaja cuántica para tareas de Machine Learning que las computadoras clásicas ya manejan muy bien.

Identificar tales casos ideales para la exploración de la utilidad cuántica es una enorme responsabilidad para los estudiantes de este curso. Y no es una tarea que pueda abordarse en un curso como este. Esta exploración es una tarea para toda la IBM Quantum Network, compuesta por investigadores como tú. Este curso demuestra flujos de trabajo de QML y estrategias de codificación para que puedas comenzar a buscar utilidad cuántica en tu campo de especialización.

Esperamos que esta introducción haya aclarado algunas cosas sobre el Quantum Machine Learning:

  1. Los algoritmos cuánticos pueden ofrecer una ventaja de velocidad exponencial sobre los algoritmos clásicos para problemas muy específicos que son clásicamente difíciles y adecuados para algoritmos cuánticos.
  2. La alta dimensionalidad de los estados entrelazados en la computación cuántica es importante, pero no es suficiente para simplemente obtener una ventaja sobre los algoritmos clásicos.
  3. Encontrar problemas que sean adecuados para algoritmos cuánticos es una tarea extremadamente difícil que, en gran parte, recaerá en los estudiantes de este curso.

Preguntas de comprensión

¿Qué distingue a los estados cuánticos de los estados clásicos?

Respuesta:

Mucho. Particularmente destacable: coeficientes complejos y superposición con una sola copia. Hay muchas otras diferencias que se discutirán en lecciones futuras, incluyendo entrelazamiento e interferencia.

¿Verdadero o falso? Los estados cuánticos altamente entrelazados nos permiten resolver la mayoría de los problemas de Machine Learning de manera más eficiente en una computadora cuántica.

Respuesta:

Falso. La mayoría de los problemas de Machine Learning se resuelven de manera muy eficiente mediante algoritmos clásicos, y los algoritmos cuánticos probablemente no proporcionarán una ventaja de velocidad significativa. El objetivo en QML es encontrar conjuntos de datos con características que se describan bien mediante estados cuánticos, y/o encontrar mapeos de características de datos que optimicen la precisión de los modelos.

Objetivos de aprendizaje del curso

Al completar este curso, podrás desarrollar las siguientes competencias y habilidades fundamentales. Los estudiantes serán capaces de:

  1. Explicar qué es QML y dónde la computación cuántica se conecta con el Machine Learning clásico.

  2. Aplicar vocabulario cuántico y términos clave a los flujos de trabajo de ML.

  3. Identificar los componentes principales de un flujo de trabajo de QML (varios tipos).

  4. Identificar y distinguir entre diferentes tipos de QML.

  5. Implementar métodos de kernel cuántico y clasificadores cuánticos variacionales con Qiskit Runtime Primitives y según Qiskit Patterns.

  6. Identificar dónde QML es más prometedor y dónde no lo es.

  7. Adaptar un problema de ejemplo a su propio conjunto de datos.

  8. Ser consciente de los problemas en QML como el tiempo de entrenamiento, el ruido y los errores acumulativos en múltiples mediciones de estado.

  9. Hacer recomendaciones sobre dónde QML podría beneficiar a su propia organización.

Estructura del curso

Este curso consta de varias lecciones. Cada lección contiene varias preguntas de comprensión en el texto, con las que puedes practicar nuevas habilidades o verificar tu comprensión sobre la marcha. Estas no son obligatorias.

Al final del curso hay un cuestionario de 20 preguntas. Debes alcanzar al menos el 70% para obtener tu insignia de Quantum Machine Learning a través de Credly. Si alcanzas al menos el 70%, tu insignia se te enviará automáticamente por correo electrónico poco después. Solo puedes enviar el cuestionario dos veces. Después de la primera entrega, tienes la oportunidad de volver a intentar las preguntas que fallaste. Después de la segunda entrega, tu resultado es definitivo. Encontrarás más detalles junto al cuestionario.

La estructura del curso es la siguiente:

  • Lección 1: Introducción y descripción general
  • Lección 2: Repaso de Machine Learning
  • Lección 3: Codificación de datos
  • Lección 4: Métodos de kernel cuántico y Support Vector Machines
  • Lección 5: Clasificadores cuánticos variacionales / Redes neuronales
  • Examen para la insignia

Ejecuta tu primer código QML

A menudo es útil ver hacia dónde nos dirigimos antes de descomponer las piezas individuales y profundizar en los fundamentos. Las siguientes celdas de código ejecutan una instancia simple de un método de kernel cuántico. Concretamente, se calcula un único elemento de la matriz kernel. Los usuarios que aún no estén familiarizados con los métodos de kernel o los kernels cuánticos no deben sentirse intimidados; varias lecciones en este curso abordarán lo que se hace exactamente en estas celdas.

Con este código también presentamos Qiskit Patterns: un framework para manejar la computación cuántica a escala de utilidad. Este framework consta de cuatro pasos que son muy generales y pueden aplicarse a la mayoría de los problemas (aunque en algunos flujos de trabajo ciertos pasos se recorren varias veces).

Qiskit Patterns:

  • Paso 1: Mapear entradas clásicas a un problema cuántico
  • Paso 2: Optimizar el problema para la ejecución cuántica
  • Paso 3: Ejecutar con Qiskit Runtime Primitives
  • Paso 4: Analizar / Post-procesamiento

En las siguientes celdas ofrecemos solo explicaciones superficiales de los diferentes pasos, justo lo suficiente para que encuentres la lección correspondiente para aprender más.

# Added by doQumentation — required packages for this notebook
!pip install -q numpy pandas qiskit
# Import some qiskit packages required for setting up our quantum circuits.
from qiskit.circuit import Parameter, ParameterVector, QuantumCircuit
from qiskit.circuit.library import unitary_overlap

# Import StatevectorSampler as our sampler.
from qiskit.primitives import StatevectorSampler

# Step 1: Map classical inputs to a quantum problem:

# Start by getting some appropriate data. The data imported below consist of 128 rows or data points.
# Each row has 14 columns that correspond to data features, and a 15th column with a label (+/-1).
!wget https://raw.githubusercontent.com/qiskit-community/prototype-quantum-kernel-training/main/data/dataset_graph7.csv

# Import some required packages, and write a function to pull some training data out of the csv file you got above.
import pandas as pd
import numpy as np

def get_training_data():
"""Read the training data."""
df = pd.read_csv("dataset_graph7.csv", sep=",", header=None)
training_data = df.values[:20, :]
ind = np.argsort(training_data[:, -1])
X_train = training_data[ind][:, :-1]

return X_train

# Prepare training data
X_train = get_training_data()

# Empty kernel matrix
num_samples = np.shape(X_train)[0]

# Prepare feature map for computing overlap between two data points.
# This could be pre-built feature maps like ZZFeatureMap, or a custom quantum circuit, as shown here.
num_features = np.shape(X_train)[1]
num_qubits = int(num_features / 2)
entangler_map = [[0, 2], [3, 4], [2, 5], [1, 4], [2, 3], [4, 6]]
fm = QuantumCircuit(num_qubits)
training_param = Parameter("θ")
feature_params = ParameterVector("x", num_qubits * 2)
fm.ry(training_param, fm.qubits)
for cz in entangler_map:
fm.cz(cz[0], cz[1])
for i in range(num_qubits):
fm.rz(-2 * feature_params[2 * i + 1], i)
fm.rx(-2 * feature_params[2 * i], i)

# Pick two data points, here 14 and 19, and assign the features to the circuits as parameters.
x1 = 14
x2 = 19
unitary1 = fm.assign_parameters(list(X_train[x1]) + [np.pi / 2])
unitary2 = fm.assign_parameters(list(X_train[x2]) + [np.pi / 2])

# Create the overlap circuit
overlap_circ = unitary_overlap(unitary1, unitary2)
overlap_circ.measure_all()
overlap_circ.draw("mpl", scale=0.6, style="iqp")

# Step 2: Optimize problem for quantum execution

# Use Qiskit Runtime service to get the least busy backend for running on real quantum computers.
# from qiskit_ibm_runtime import QiskitRuntimeService

# service = QiskitRuntimeService(channel="ibm_quantum")
# backend = service.least_busy(
# operational=True, simulator=False, min_num_qubits=overlap_circ.num_qubits
# )

# Transpile the circuits optimally for the chosen backend using a pass manager.
# from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
# pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
# overlap_ibm = pm.run(overlap_circ)

# Step 3: Execute using Qiskit Runtime Primitives

# Specify the number of shots to use.
num_shots = 10_000

## Evaluate the problem using statevector-based primitives from Qiskit
sampler = StatevectorSampler()
counts = (
sampler.run([overlap_circ], shots=num_shots).result()[0].data.meas.get_int_counts()
)

# Step 4: Analyze and post-processing

# Find the probability of 0.
counts.get(0, 0.0) / num_shots
--2025-05-09 10:04:28--  https://raw.githubusercontent.com/qiskit-community/prototype-quantum-kernel-training/main/data/dataset_graph7.csv
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 49405 (48K) [text/plain]
Saving to: ‘dataset_graph7.csv.2’

dataset_graph7.csv. 100%[===================>] 48.25K --.-KB/s in 0.03s

2025-05-09 10:04:29 (1.37 MB/s) - ‘dataset_graph7.csv.2’ saved [49405/49405]
0.8199

Aunque no necesitas entender todos los pasos anteriores, deberíamos intentar comprender la salida para saber por qué hacemos esto. Muchos procesos en Machine Learning utilizan productos internos como parte de la clasificación binaria (entre otras cosas). La mecánica cuántica tiene una conexión obvia con esto, ya que las probabilidades de medir diferentes estados ϕi|\phi_i\rangle están dadas por el producto interno con un estado inicial ψ|\psi\rangle: Pi=ϕiψ2P_i = |\langle\phi_i|\psi\rangle|^2. Lo que hemos hecho arriba, entonces, es crear un circuito cuántico que contiene las características de nuestros dos puntos de datos, mapearlos al espacio de un vector cuántico y luego estimar el producto interno en ese espacio mediante mediciones. Este es un ejemplo de estimación de kernel cuántico. Ten en cuenta que solo hemos implementado este proceso para dos de los puntos de datos (el 14.° y el 19.°). Si hiciéramos esto para todos los pares posibles, podríamos tomar la salida (en este caso el número 0,821...) y llenar una matriz de resultados que describe la superposición entre todos los puntos en el conjunto de datos de entrenamiento. Esa es la "matriz kernel".

Verifica tu comprensión

Lee la siguiente pregunta, piensa en tu respuesta y luego haz clic en el triángulo para ver la solución.

En el proceso anterior calculamos una entrada de la matriz kernel para los puntos de datos 14.° y 19.°. ¿Qué valor deberíamos obtener si usamos el mismo punto de datos dos veces (p. ej., el 14.° y nuevamente el 14.°)? En otras palabras: ¿cuáles deberían ser las entradas diagonales en la matriz kernel? Responde a esta pregunta sin ruido, pero ten en cuenta que las desviaciones de tu respuesta son posibles con ruido.

Respuesta:

Las diagonales deberían ser 1,0. Este proceso debería calcular el producto interno normalizado de un vector consigo mismo, lo cual siempre debe ser uno.