3d rendering robot learning or machine learning with education hud interface
Кому-то может показаться, что квантовые компьютеры и все связанное с ними — это далеко и не скоро, что-то из фантастических фильмов, но это не так. Квантовый мир уже давно рядом с нами. Причем речь идет не только о теоретических исследованиях.
В своей предыдущей статье на Highload я поделился базовыми знаниями о квантовых вычислениях. Поэтому если вы хотите начать сначала — рекомендую вам с ней ознакомиться.
А уже в этом материале мы наконец можем рассмотреть техники вычислений и разобраться, что делать с переводом классических данных в квантовый мир. Начнем!
Представим некие классические данные в неком пространстве. При построении модели машинного обучения вы получаете фактически feature map — определенный эмбединг с хорошо распределенными данными в другом пространстве. На этом и построена эта модель:
Но в квантовом мире перед применением данные нужно закодировать. Далее показано, как закодировать некоторую точку данных в определенном обобщенном пространстве. С помощью бита проходит инициализация каждой точки. Это может быть не только 0. Затем производится ротация, благодаря чему каждая точка данных кодируется в некоторой форме и идет на квантовую оптимизацию:
Для проведения квантовой оптимизации нужно также понимать, насколько близко вы находитесь к оптимуму целевой функции. Он записывается в классическом машинном обучении с помощью функции потерь. На иллюстрации изображена схема этого процесса.
Классические данные кодируются к квантовому типу, находится функция потерь, а за ней — градиент или оператор набла. Если лэеров много, вы получите якобиан. В результате все зацикливается и повторяется круг за кругом:
Что касается формульного вида, то этот процесс описывается следующим образом:
Квантовые механика и вычисления уже настолько распространены, что у нас достаточно широкий выбор языков программирования. Например, Q# от Microsoft, PyQuil и Qiskit от IBM и Pennylane. Я буду рассматривать последнюю.
Следует отметить, что при решении квантовых задач нет такого понятия, как квантовое машинное обучение. Есть квантовая оптимизация, оптимизация квантовых схем.
Под этот процесс можно подвязать машинное обучение. Ведь ML на самом деле и есть оптимизация. Pennylane — это очень удобный и, что главное, кроссплатформенный инструмент. А вот Q#, PyQuil и Qiskit работают только на решениях Microsoft и IBM.
Что касается сервиса, то я буду говорить об AWS Braket, где можно запускать IBM и Microsoft Quantum. Он придает достаточно высокую вариативность квантовых вычислителей. Их выбор также относительно широк. Можно упомянуть D-Wawe, IonQ, Rigetti и OCQ. Я буду говорить о первых двух, потому что они сейчас наиболее популярны на рынке.
Для оценки возможностей этих инстансов и работы с ними возьмем, например, MNIST Classification, QNN, и представим изображение 28х28. Каждый пиксель кодируем с помощью квантовой схемы. Прежде всего, мы инициализируем это с помощью нулевых кубитов.
Подчеркиваю: это не нули, а кубиты — то есть в развернутой форме 1 0 1 0 1 0.
Таким образом мы проходимся со смещением на один пиксель по всему изображению. Это и есть квантовая свертка, когда строится квантовая схема U и осуществляется измерение по каждому каналу.
На уровне кода это выглядит следующим образом. На первом шаге устанавливается библиотека Pennylane, далее импортируется RandomLayers, реализующий квантовые свертки, и numpy, импортируемый из библиотеки Pennylane и поддерживающий квантовые операции с тензорами.
Чтобы показать принципиальное отличие, я использую 500 сэмплов для train, 100 сэмплов для test и 30 — для epochs. Также возьму один лэер и запущу на симуляторе, когда квантовые вычисления эмулируются с помощью классического CPU.
Вы можете увидеть, сколько это займет времени, чтобы потом сравнить с квантовыми инстансами. Сам процесс несложный: сначала происходит простая операция сплита, затем нормализация данных и ее хранение, а в завершение — создание дополнительного разбора для канала.
Самое интересное происходит в следующих двух блоках кода. Первый — это создание квантового сокета или квантовой схемы. Второй — создание квантовой свертки. В этом случае мы берем четыре кубита, в качестве девайса выбираем дефолтный кубит и инициализируем рандомные параметры.
Угол может быть любым — я выбрал 2, умноженные на pi. Это неважно, ведь в процессе оптимизации угол будет меняться. Для построения сокета нужно обратить функцию в декоратор qnode из библиотеки Pennylane. Обратите внимание, здесь ротация производится вокруг оси Y.
Далее забрасываем параметр в RandomLayers и производим измерение с помощью оператора Паули вокруг оси Z. Это принципиально важный аспект. А вот квантовая свертка выходит простая: из изображения 28х28 мы получим следующую свертку уже в виде 14х14. Осуществляем это для каждого пикселя и возвращаем результат.
Дальше запускаем все на обработку. На классическом CPU это заняло около 18 минут.
Если построить это изображение, то за каналами наблюдается некая вариативность. Каналы 1, 2 и 3 сильно отличаются, и только 5-й более или менее похож на предыдущий. Впрочем, это не проблема. Просто нужно знать о таком эффекте.
Теперь тренируем модель из softmax с параметрами, представленными на иллюстрации. Это категориальная кросс-энтропия и метрика точности:
Также тренируем и классическую модель:
Ниже увидим, что точность почти одинакова, но ниже упомянутых 99,22%. Напомню, что я брал значительно меньшее количество сэмплов. Главное — здесь прекрасно видна характеристика квантовой системы. За счет эмулированных шумов она выглядит как забор. А вот без квантового лэера она более гладкая:
Следующий вопрос: как влияет сама ротация? Сохраним конфигурацию системы в предыдущем виде и будем крутить кубиты по разным направлениям. Результаты — на следующей иллюстрации.
RY вы уже видели выше, на RX — картина похожа, а вот с RZ — все плохо. Ведь здесь как раз наблюдается упомянутое квантовое схватывание:
Эту ситуацию я бы рассмотрел более подробно. Если посмотреть на полученные изображения, можно увидеть: 2-й, 3-й и 4-й каналы практически одинаковые (5-й я не выводил).
То есть если вокруг оси Z крутить кубит, который на сфере Блоха направлен определенным образом, то Z у этой частицы не меняется. Хотя при измерениях по X и Y вариативность разных каналов никуда не исчезает. Это большое заблуждение, за этим нужно внимательно следить.
AWS предлагает достаточно много квантовых вычислителей для решения задачи. У нас есть выбор из инстанций D-Wawe, IonQ и других. Я выберу D-Wawe на 2048 кубитов и IonQ на 11 кубитов. По этим показателям первый кажется гораздо более мощным. Но на самом деле ситуация не настолько прямолинейна.
D-Wawe по своей квантово-физической природе работает именно с волновыми функциями. Это самая сырая интерпретация, которая только может быть. IonQ работает с полноценными кубитами. И если для реализации кубита на D-Wawe требуется несколько волновых функций, то на IonQ за кубит отвечает именно один кубит.
При сравнении мощности этих инстанций в одинаковых задачах разница малозаметна. Хотя за счет возможности комплексной реализации большего количества полноценных кубитов D-Wawe может иногда выигрывать.
При сравнении нижеприведенных схем можно заметить принципиальное различие между двумя моделями. В классическом подходе мы имеем дело с нейронами, функциями активации, спегпрогейшеном, градиентами и т.д. Но у квантовой системы никаких нейронов нет. Здесь мы определенным образом строим последовательность сокетов и стараемся их оптимизировать через ротацию для получения кубита в том пространстве, которое смогло бы точнее решить задачу.
Если сильно упростить, вот так выглядит нейронная сеть на квантовом вычислителе по сравнению с классическим:
Также следует упомянуть, что у IonQ есть топология: его 11 кубитов связаны и запутаны друг с другом. У D-Wawe такого нет, ведь он работает с операторами волновых функций, и кубиты неполноценны. Поэтому физический принцип вычисления у этих систем принципиально разный, но на практике для нас разницы нет.
Для запуска задачи на Pennylane на инстансе AWS нужно зарегистрировать выбранный инстанс и передать эндпойнт для Pennylane, для чего нужно только подключиться. Расчетную математику этот фреймворк выполнит сам. Нам остается только построить квантовый оптимизатор.
Для расчета своего примера я использовал IonQ с 2 и 4 лэерами и D-Wawe с 2 и 4 лэерами. Для каждой свертки применил 4, 8 и 16 кубитов для того, чтобы посмотреть на результаты. Они, с точки зрения вычислительной мощности квантовых инстанций, существенно не отличаются между собой. Тем не менее, они очень сильно выигрывают на фоне классического CPU.
Ниже я повторно привел скрин с прошлыми результатами на классическом компьютере, где весь процесс длился около 18 минут. IonQ для 4 лееров достиг такого же показателя примерно за 200 секунд (для 2 лэеров и того меньше). У D-Wawe результаты еще лучше. Экономия примерно в 6 раз — это очень круто. Кстати, зависимость может казаться линейной, хотя она квазинелинейна.
У вас может возникнуть вопрос: не будут ли показатели еще лучше с GPU? По правде говоря, эти устройства более быстрые, но именно в это время. В будущем они точно проигрывают квантовым компьютерам.
По-моему, именно квантовым компьютерам мы со временем будем обязаны появлением первого человекообразного искусственного интеллекта. Такая разработка будет учиться и принимать взвешенные решения. При этом будет делать все на одном домене.
Квантовая система сможет синтезировать данные по разным опытам и получать принципиально новые выводы по сравнению с современными моделями. Так что мы на пороге настоящей революции, и вы, как дата-саентисты, уже можете присоединиться к ней.
Читайте также: Специалистам по Machine Learning платят больше, чем разработчикам: как им стать, нужна ли математика и другие ответы от эксперта
В благословенные офисные времена, когда не было большой войны и коронавируса, люди гораздо больше общались…
Вот две истории из собственного опыта, с тех пор, когда только начинал делать свою карьеру…
«Ты же программист». За свою жизнь я много раз слышал эту фразу. От всех. Кто…
Отличные новости! Если вы пропустили, GitHub Copilot — это уже не отдельный продукт, а набор…
Несколько месяцев назад мы с командой Promodo (агентство инвестировало в продукт более $100 000) запустили…
Пару дней назад прочитал сообщение о том, что хорошие курсы могут стать альтернативой классическому образованию.…