Начиная работать с Qiskit и погружаясь в изучение приложений машинного обучения в квантовой области, вы наверняка быстро зайдете в тупик. Стараясь выбраться из него в попытке что-то сделать со своими данными, вы, вероятно, будете знакомиться с примерами учебника по Qiskit, заглядывать в соответствующие репозитории на GitHub, обращаться к другим источникам, таким как Kaggle, руководства на YouTube или сайт вопросов и ответов Quantum Computing Stack Exchange.
После анализа начальных демонстраций QSVM, VQC и/или QSVC вам станет ясно, что почти все они используют специфические “демонстрационные” массивы, встроенные фреймы данных или специально подготовленные фиктивные “квантово-представленные” переменные. Типичным примером может служить набор данных “вино”. В коде будет нечто подобное:
from qiskit.ml.datasets import wine
Такая запись может быть полезна только для начальных тестов и ознакомления с кодом. Однако в ней отсутствует важнейшая информация: полная схема кодирования данных, их технологическая подготовка (EDA), уменьшение размерности и некоторые другие шаги, необходимые для использования реальных данных в квантовых цепочках.
Другой проблемой является использование более значительного числа размерностей и точек данных. Почти все официальные и неофициальные публичные фрагменты кода Qiskit используют минимальное количество размерностей и образцов для обучения и тестирования. Например:
n = 2 # размерность каждой точки данных
sample_Total, training_input, test_input, class_labels = wine(training_size=24, test_size=6, n=n, plot_data=True)
Проблема здесь заключается в быстром переходе к карте признаков, бэкенду, экземпляру и определению модели без какой-либо глубокой “работы с данными”, а также в примитивном подходе с использованием набора данных, который уже был подготовлен как “хороший пример”. Остается только восхищаться подобным результатом:
testing_accuracy : 1.0
test_success_ratio : 1.0
predicted_labels : [0 1 2 2 2 2]
predicted_classes : ['A', 'B', 'C', 'C', 'C', 'C']
К сожаленью, это не реальный результат, о чем вы наверняка догадались. Что же предпринять, чтобы продолжить исследования с использованием данных? Ниже приведены несколько шагов и предложений.
Можете использовать наборы данных Kaggle, связанные с финансами, розничной торговлей, здравоохранением или любой другой темой, которая вам кажется интересной.
Предположим, у вас есть закодированный фрейм данных с базовым EDA и с целочисленной целевой переменной. В этом случае можно приступить к следующим простым, но важным шагам: стандартизации (StandardScaler), удалению среднего значения, масштабированию до единичной дисперсии и уменьшению размерности (PCA).
scaler = StandardScaler()
scaler.fit(df)
df_scaler = scaler.transform(df)
n_dim = 3
pca = PCA(n_dim)
pca.fit(df)
df_pca = pca.transform(df_scaler)
Количество измерений, используемых в PCA, должно быть равно количеству кубитов, необходимых для последующего запуска квантовой модели.
Наконец, можно разделить набор данных и создать обучающий и тестовый вход для квантовой или гибридной квантовой модели, а также настроить конфигурацию для алгоритма, карты признаков, бэкенда и некоторых других переменных, которые вам понадобятся. В этом примере представлен VQC (вариационный квантовый классификатор):
feature_map = ZZFeatureMap(feature_dimension=feature_dim, reps=2)
optimizer = SPSA(maxiter=40, c0=4.0, skip_calibration=True)
var_form = TwoLocal(feature_dim, ['ry', 'rz'], 'cz', reps=3)
vqc = VQC(optimizer, feature_map, var_form, training_input, test_input, datapoints[0])
backend = BasicAer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=1024, seed_simulator=seed, seed_transpiler=seed)
result = vqc.run(quantum_instance)
Осталось обсудить еще много вопросов относительно результатов ваших исследований и времени, необходимого для их получения при увеличении количества используемых кубитов/размерностей, а также более значительного количества точек данных с применением как симуляторов, так и реальных квантовых машин. Кроме того, вам придется пройти через множество различных установок и провести несколько тестов. Для этого у вас есть несколько альтернатив:
- Просто зайдите в блокнот Jupyter Notebook и начните исследование.
- Постарайтесь поближе познакомиться с сообществом Qiskit и его сторонниками, чтобы расширить свои знания и найти ответы на все вопросы.
- Обратитесь к специалистам по QML, чтобы пройти весь процесс вместе с ними, либо запросите обучение или консультации у таких компаний, как Quanvia.
Читайте также:
- Почему логарифмы так важны в машинном обучении
- Простое руководство по визуализации данных в машинном обучении
- Исследование операций: что, когда и как
Читайте нас в Telegram, VK и Дзен
Перевод статьи Javier Mancilla: Example vs. Reality. How can I train a Quantum Machine Learning model using data from a CSV?