Используя библиотеку PennyLane Quantum Machine Learning, легко создать квантово-цифровой гибридный эквивалент великолепного уровня LSTM.

В последние годы стартап-компания Xanadu из Торонто представила среду Python под названием PennyLane, которая позволяет пользователям создавать гибридные модели квантового машинного обучения (QML). Хотя еще слишком рано утверждать, что квантовые вычисления взяли верх, есть некоторые области, в которых они могут дать преимущество, например, в открытии лекарств или финансах. Одна из областей, которая до сих пор плохо изучена в QML, - это Обработка естественного языка (NLP), подполе искусственного интеллекта, которая дает компьютерам возможность читать, писать и до некоторой степени понимать письменный текст.

Поскольку документы обычно представляются в виде последовательностей слов, исторически одним из наиболее успешных методов манипулирования данными такого рода была архитектура Рекуррентная нейронная сеть и, в частности, вариант под названием Долгая краткосрочная память (LSTM). Уловка, которая делает эти сети настолько популярными при анализе последовательных данных, - это комбинация памяти и состояния, которая помогает определить, какие компоненты входных данных имеют отношение к вычислению выходных данных. Хотя математика довольно сложна, как мы увидим позже, на данный момент достаточно сказать, что LSTM позволяли машинам выполнять переводы, классификацию и обнаружение намерений с высочайшей точностью до появления трансформаторных сетей. Тем не менее, по крайней мере с образовательной точки зрения интересно покопаться в LSTM, чтобы увидеть, что хорошие квантовые вычисления могут принести в эту область. Для более подробного обсуждения, пожалуйста, обратитесь к Квантовой долгосрочной краткосрочной памяти Чена, Ю и Фанга (arXiv: 2009.01783) и Рекуррентные квантовые нейронные сети Дж. Бауша (arXiv: 2006.14619). По этой же теме см. Также другие мои сообщения К квантовому преобразователю, Классификация научных документов с помощью квантово-расширенного трансферного обучения и Жуткие компьютеры в ЦЕРНе.

Основы LSTM

Для начала давайте рассмотрим внутреннюю работу LSTM. Мы предполагаем, что ввод x состоит из последовательности временных шагов t (например слов), каждый из которых представлен N -мерный вектор признаков (в практических приложениях N может быть большим, например 512). Кроме того, сеть хранит скрытый массив векторов h и вектор состояния c, которые обновляются для каждого элемента входной последовательности. Например, если нас интересует только краткое изложение последовательности (например в анализе настроений), будет возвращен последний элемент массива h. Вместо этого, если нас интересует представление каждого элемента (например для присвоения каждому слову тега части речи, такого как существительное, глагол и т. Д.), Мы хотим иметь доступ к каждому элементу h.

Расчет можно резюмировать в следующих формулах:

где v_t - это объединение входного элемента на шаге t и скрытого состояния на шаге t-1, т.е. v _ t = [h _ (t-1), x_ t]. На языке машинного обучения, заимствованном из анализа электрических цепей, f_t называется затвором забывания, i_t - входным затвором , C_t - это шлюз обновления, а o_t - выходной шлюз. Матрицы W_f, W_i, W_C и W_o и векторы смещения b_f, b_i, b_C и b_o - это параметры, которые были изучены во время контролируемого обучения и реализуют часть расчета, называемую линейная плотная слой, который мы хотим заменить квантовым эквивалентом. Как часто бывает, нелинейность вносится применением функций сигмоид и гиперболический тангенс (tanh) к выходным данным этих четырех плотных слоев, этот эффект заключается в том, чтобы определить, следует ли рассматривать часть ввода (значения, близкие к 1) или игнорировать (значения, близкие к 0).

Реализация Quantum LSTM

Ключевой концепцией квантового машинного обучения является то, что информация хранится в единицах информации, называемых кубитами, которые представляют собой так называемую суперпозицию состояний 0 и 1. Физически они могут представлять, например, ориентацию спина частицы относительно ось магнитного поля или циркуляция электрического тока в сверхпроводнике. В практических целях эти детали можно смело игнорировать. Важно помнить, что вычисления выполняются, сначала помещая входные кубиты в начальное состояние (например строку, такую ​​как 010010), затем они запутываются между собой, поворачиваясь на произвольные углы, и, наконец, наблюдали (измеряли). Цель обучения - найти упомянутые выше углы поворота, которые оптимизируют некоторую функцию стоимости, такую ​​как среднеквадратичная ошибка (MSE) между выходными данными и некоторыми заранее заданными метками. Этот вид квантовой схемы известен как Вариационная квантовая схема. Используя библиотеку PennyLane, можно легко определить VQC как серию объектов AngleEmbedding и StronglyEntanglingLayers.

Одна проблема, которая может быть неочевидной с самого начала, заключается в том, что, хотя биты дешевы, кубиты дороги: трудно поддерживать реальные кубиты в состоянии суперпозиции, их также трудно моделировать. Так что забудьте о разработке схемы с 12 кубитами. Хорошие новости заключаются в том, что, благодаря их природе, для выполнения вычислений, вероятно, потребуется меньше кубитов. Короче говоря, здесь мы представим «одетую квантовую схему», т.е., которая помещает квантовый слой между двумя классическими линейными слоями, чтобы соответствовать размерности. Например, если размер объекта равен 8, а скрытый размер равен 6, но мы можем позволить себе только 4 кубита, нам нужна такая последовательность:

x_in = torch.randn(8)
x = nn.Linear(8, 4)(x_in)
x_q = VQC(x)
x_out = Linear(4, 6)(x_q)

Нам нужен один классический слой, чтобы «сжать» ввод до количества кубитов, и один классический слой, чтобы «раздувать» вывод f_t, i_t, C_t и o_t. чтобы соответствовать размерности скрытых векторов. Таким образом, в целом у нас остается ряд классических параметров, которые необходимо усвоить во время тренировки. Суть расчета выглядит так:

Практическое применение: тегирование части речи

Это работает? Чтобы проверить, имеет ли все вышеперечисленное смысл, нужен интуитивно понятный, но нетривиальный пример. В данном случае я решил адаптировать теги части речи (POS) пример из PyTorch к рассматриваемому случаю. Идея довольно проста: у нас есть набор из двух предложений (Собака съела яблоко и Все прочитали эту книгу), слова которых были помечены тегами POS. Например, первое предложение будет таким [DET, NN, V, DET, NN]. Идея состоит в том, чтобы передать две последовательности через LSTM, который выведет скрытый массив векторов [h_0, h_1, h_2, h_3, h_4], по одному для каждого слова. К выходам LSTM прикрепляется плотный слой голова для расчета вероятности того, что каждое слово может быть определителем, существительным или глаголом (для любопытных, это слой softmax с размерностью 3) .

Следуя примеру с веб-сайта PyTorch, мы обучаем две сети (классическую и квантовую LSTM) для 300 эпох. Это просто игрушечный пример, и его следует воспринимать как таковой, но, тем не менее, результаты обнадеживают. Функция потерь уменьшается в зависимости от эпохи обучения, и после 300 эпох обе сети могут правильно пометить первое предложение. Из-за сложности моделирования квантовой схемы для завершения обучения потребовалось примерно 15 минут, по сравнению с 8 секундами для классического случая. Кроме того, глядя на графики, кажется, что квантовый LSTM нужно обучать дольше, но для нашей цели этого достаточно.

Sentence:  ['The', 'dog', 'ate', 'the', 'apple']
Labels:    ['DET', 'NN', 'V', 'DET', 'NN']
Predicted: ['DET', 'NN', 'V', 'DET', 'NN']
Classical loss at 300 epochs: 0.029
Quantum loss at 300 epochs:   0.250

Выводы

В заключение, библиотеки, такие как PennyLane или TensorFlow Quantum, предлагают высокий уровень абстракции для определения квантовых / цифровых гибридных моделей для квантового машинного обучения. Это область, которая быстро расширяется, и все больше и больше приложений исследуется, что с радостью можно увидеть, посетив тематические конференции, такие как QTML 2020.

Дай мне код! Https://github.com/rdisipio/qlstm