این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

طراحی کوانتومی TensorFlow

TensorFlow Quantum (TFQ) برای مشکلات یادگیری ماشین کوانتومی عصر NISQ طراحی شده است. این بدوی های محاسباتی کوانتومی مانند ساخت مدارهای کوانتومی را به اکوسیستم TensorFlow منتقل می کند. مدل ها و عملیاتی که با TensorFlow ساخته شده اند از این بدوی استفاده می کنند تا سیستم های ترکیبی کوانتومی کلاسیک قدرتمند را ایجاد کنند.

با استفاده از TFQ ، محققان می توانند با استفاده از یک مجموعه داده کوانتومی ، یک مدل کوانتومی و پارامترهای کنترل کلاسیک ، یک نمودار TensorFlow بسازند. اینها همه در قالب یک نمودار محاسباتی واحد به عنوان دستیار نمایش داده می شوند. نتیجه اندازه گیری های کوانتومی - که منجر به وقایع احتمالی کلاسیک می شود - توسط گزینه TensorFlow بدست می آید. آموزش با API استاندارد Keras انجام می شود. ماژول tfq.datasets به محققان اجازه می دهد تا مجموعه داده های جدید و جالب کوانتومی را آزمایش کنند.

سیرک

Cirq یک چارچوب برنامه نویسی کوانتومی از Google است. این برنامه برای ایجاد ، اصلاح و فراخوانی مدارهای کوانتومی بر روی یک کامپیوتر کوانتومی یا یک کامپیوتر شبیه سازی کوانتومی شبیه سازی شده ، کلیه عملکردهای اساسی مانند qubits ، دروازه ها ، مدارها و اندازه گیری را در اختیار شما قرار می دهد. TensorFlow Quantum از این Cirq اولیه برای گسترش TensorFlow برای محاسبات دسته ای ، ساخت مدل و محاسبات گرادیان استفاده می کند. برای موثر بودن با TensorFlow Quantum ، ایده خوبی است که با Cirq موثر باشید.

اولیه کوانتومی TensorFlow

TensorFlow Quantum اجزای مورد نیاز برای ادغام TensorFlow با سخت افزار محاسبات کوانتومی را پیاده سازی می کند. برای این منظور ، TFQ دو اولیه داده داده را معرفی می کند:

  • مدار کوانتومی : این نشان دهنده مدارهای کوانتومی تعریف شده Cirq ( cirq.Circuit ) در cirq.Circuit . دسته ای از مدارهای با اندازه متفاوت ، شبیه به دسته های مختلف از داده های با ارزش واقعی ایجاد کنید.
  • جمع cirq.PauliSum : cirq.PauliSum ترکیبات خطی از محصولات تانسور اپراتورهای cirq.PauliSum تعریف شده در Cirq ( cirq.PauliSum ). مانند مدارها ، دسته هایی از اپراتورها با اندازه های مختلف ایجاد کنید.

گزینه های اساسی

tf.Tensor Quantum با استفاده از مدارهای کوانتومی بدوی در یک tf.Tensor ، tf.Tensor اجرا می کند که این مدارها را پردازش می کند و خروجی های معنی دار تولید می کند.

گزینه TensorFlow در C ++ بهینه نوشته شده است. این نمونه ها از مدارها نمونه می گیرند ، مقادیر انتظار را محاسبه می کنند و حالت تولید شده توسط مدارهای معین را تولید می کنند. نوشتن گزینه هایی که انعطاف پذیر و اجرایی باشند ، برخی از چالش ها را دارد:

  1. مدارها به اندازه یكدیگر نیستند برای مدارهای شبیه سازی شده ، شما قادر به ایجاد عملیات استاتیک نیستید (مانند tf.matmul یا tf.add ) و سپس اعداد مختلف را برای مدارهای در اندازه های مختلف جایگزین کنید. این گزینه ها باید برای اندازه های پویا امکان پذیر باشند که نمودار محاسباتی TensorFlow با اندازه مجاز اجازه نمی دهد.
  2. داده های کوانتومی می توانند ساختار مدار متفاوتی را القا کنند. این دلیل دیگری برای پشتیبانی از اندازه های پویا در گزینه های TFQ است. داده های کوانتومی می توانند یک تغییر ساختاری به حالت کوانتومی اساسی باشند که با تغییراتی در مدار اصلی نشان داده شده است. با توجه به اینکه داده های جدید در زمان اجرا تعویض و وارد می شوند ، نمودار محاسباتی TensorFlow پس از ساخت قابل تغییر نیست ، بنابراین پشتیبانی از این ساختارهای متغیر مورد نیاز است.
  3. cirq.Circuits شبیه به نمودارهای محاسباتی است زیرا آنها یک سری عملیات هستند و برخی ممکن است دارای علائم / متغیرهایی باشند. مهم است که این امکان را تا حد ممکن با TensorFlow سازگار کنید.

به دلایل عملکرد ، Eigen (کتابخانه C ++ که در بسیاری از گزینه های TensorFlow استفاده می شود) برای شبیه سازی مدار کوانتومی مناسب نیست. در عوض ، از شبیه سازهای مدار مورد استفاده در آزمایش برتری کوانتومی به عنوان تأیید کننده استفاده می شوند و به عنوان پایه گزینه های TFQ (که همه با دستورالعمل های AVX2 و SSE نوشته شده اند) گسترش می یابد. گزینه هایی با امضاهای عملکردی یکسان ایجاد شده اند که از یک کامپیوتر کوانتومی بدنی استفاده می کنند. جابجایی بین یک کامپیوتر کوانتومی شبیه سازی شده و فیزیکی به آسانی تغییر یک خط کد است. این گزینه ها در circuit_execution_ops.py .

لایه های

لایه های کوانتومی TensorFlow نمونه گیری ، انتظار و محاسبه حالت را با استفاده از رابط tf.keras.layers.Layer در tf.keras.layers.Layer توسعه دهندگان قرار می دهد. ایجاد یک لایه مدار برای پارامترهای کنترل کلاسیک یا برای عملیات بازخوانی راحت است. علاوه بر این ، شما می توانید یک لایه با درجه بالایی از پیچیدگی پشتیبانی از دسته دسته ای ، مقدار پارامتر کنترل دسته ای ایجاد کرده و عملیات خواندن دسته ای را انجام دهید. به عنوان مثال به tfq.layers.Sample مراجعه کنید.

تمایز دهنده ها

برخلاف بسیاری از عملیات TensorFlow ، مشاهدات موجود در مدارهای کوانتومی فرمول هایی برای شیب ندارند که محاسبه آنها نسبتاً آسان است. این امر به این دلیل است که یک کامپیوتر کلاسیک فقط می تواند نمونه مدارهایی را که بر روی یک کامپیوتر کوانتومی اجرا می شوند بخواند.

برای حل این مشکل ، ماژول tfq.differentiators چندین روش مختلف تمایز استاندارد را ارائه می دهد. کاربران همچنین می توانند روش خود را برای محاسبه شیب تعریف کنند - در هر دو تنظیم "دنیای واقعی" محاسبه انتظار مبتنی بر نمونه و دنیای دقیق تحلیلی. روش هایی مانند تفاوت محدود اغلب در محیط تحلیلی / دقیق سریعترین (زمان ساعت دیواری) هستند. در حالی که کندتر (زمان ساعت دیواری) ، روشهای کاربردی تر مانند تغییر پارامتر یا روش تصادفی اغلب مؤثرتر هستند. tfq.differentiators.Differentiator آن با generate_differentiable_op به یک برنامه موجود وصل می generate_differentiable_op و یا به سازنده tfq.layers.Expectation یا tfq.layers.SampledExpectation . برای اجرای یک افتراق دهنده سفارشی ، از کلاس tfq.differentiators.Differentiator ارث tfq.differentiators.Differentiator . برای تعریف یک عملیات شیب برای نمونه گیری یا محاسبه بردار حالت ، از tf.custom_gradient استفاده کنید.

مجموعه داده ها

با افزایش زمینه محاسبات کوانتومی ، داده های کوانتومی و ترکیب مدل بیشتر به وجود می آیند و مقایسه ساختار یافته را دشوار می کند. ماژول tfq.datasets به عنوان منبع داده برای کارهای یادگیری ماشین کوانتومی استفاده می شود. این مقایسه ساختار یافته برای مدل و عملکرد را تضمین می کند.

امید است که با مشارکتهای گسترده در جامعه ، ماژول tfq.datasets رشد کند تا پژوهشی شفاف تر و تکرار شود. مشکلات با دقت حل شده در: کنترل کوانتومی ، شبیه سازی فرمیونی ، طبقه بندی نزدیک به انتقال فاز ، سنجش کوانتومی و غیره همه کاندیداهای خوبی برای علاوه بر tfq.datasets . برای پیشنهاد مجموعه داده جدید ، مسئله GitHub را باز کنید.