از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
چگونه یک مدل هوش مصنوعی کوانتومی برای پیش بینی داده های گل زنبق با پایتون بسازیم
سرفصلهای مطلب
یادگیری ماشینی حوزه ای از هوش مصنوعی است که در آن امثال ChatGPT و سایر مدل های معروف ایجاد شده است. این سیستم ها همگی با شبکه های عصبی ایجاد شده اند.
حوزه یادگیری ماشینی که با ایجاد این شبکه های عصبی سروکار دارد، یادگیری عمیق نامیده می شود.
در این پست وبلاگ، یک شبکه عصبی با تعدادی نورون که اجرا می شوند ایجاد می کنیم روی یک کامپیوتر کلاسیک و دیگران در کامپیوترهای کوانتومی.
به این ترتیب، ایجاد و آموزش یک شبکه عصبی با هر دو نوع نورون، یک مدل مبتنی بر هوش مصنوعی ایجاد خواهد کرد روی محاسبات کوانتومی، زیرا بیشتر پردازش در نورونهای کوانتومی انجام میشود.
در مورد اینها صحبت خواهیم کرد:
- مقدمه ای بر هوش مصنوعی، شبکه های عصبی ترکیبی و مزایای آن
- هوش مصنوعی کوانتومی در عمل: پیشبینی دادههای گل زنبق با پایتون
- نتیجه گیری: آینده مدل های هوش مصنوعی کارآمد
توجه: ما یک شبکه عصبی ساده ایجاد خواهیم کرد و از معماری های پیچیده مانند ترانسفورماتورها، غواصی عمیق در فیزیک کوانتومی یا تکنیک های بهینه سازی مدل هوش مصنوعی پیشرفته اجتناب می کنیم.
کد کامل در اینجا موجود است.
مقدمه ای بر هوش مصنوعی، شبکه های عصبی ترکیبی و مزایای آن
یادگیری عمیق در هوش مصنوعی چیست؟
یادگیری عمیق زیر شاخه ای از هوش مصنوعی است که از شبکه های عصبی برای پیش بینی الگوهای پیچیده مانند آب و هوا، طبقه بندی تصاویر، پاسخ به متن و غیره استفاده می کند. روی.
هر چه شبکه عصبی بزرگتر باشد، کارهای پیچیده تری می تواند انجام دهد. مانند ChatGPT که می تواند process زبان طبیعی برای تعامل با کاربران
شبکه های عصبی
یادگیری عمیق آموزش شبکه های عصبی برای پیش بینی داده های آینده است. آموزش یک شبکه عصبی شامل تغذیه داده ها، اجازه یادگیری و سپس انجام پیش بینی است.
شبکه های عصبی از نورون های زیادی تشکیل شده اند که در لایه ها سازماندهی شده اند. همه لایه ها الگوهای متفاوتی از داده ها را دریافت می کنند.
این ساختار نوع لایه به مدل های هوش مصنوعی اجازه می دهد تا داده ها و الگوهای پیچیده را تفسیر کنند. به عنوان مثال، شبکه عصبی در تصویر بالا، به عنوان مثال، با 8 ویژگی از داده های آب و هوا، می تواند آموزش داده شود که آیا باران خواهد بارید یا خیر.
لایه ای که داده ها را می گیرد لایه ورودی و لایه نهایی را لایه خروجی می نامند. بین اینها لایه های پنهانی هستند که الگوهای پیچیده ای را به تصویر می کشند.
البته این یک شبکه عصبی بسیار ساده است، اما ایده آموزش شبکه عصبی برای هر معماری پیچیده یکسان است.
شبکه های عصبی ترکیبی – ترکیب محاسبات کوانتومی و کلاسیک
اکنون یک شبکه عصبی ترکیبی ایجاد می کنیم. اساساً لایه های ورودی و خروجی کار خواهند کرد روی کامپیوترهای کلاسیک در حالی که لایه پنهان خواهد بود process داده ها روی یک کامپیوتر کوانتومی
این رویکرد از بهترین محاسبات کلاسیک و کوانتومی برای آموزش شبکه عصبی استفاده می کند.
چرا شبکه های عصبی ترکیبی را نسبت به شبکه های عصبی سنتی انتخاب کنیم؟
ایده اصلی استفاده از یک شبکه عصبی ترکیبی این است که پردازش داده ها در یک کامپیوتر کوانتومی انجام شود که بسیار سریعتر از یک کامپیوتر کلاسیک است.
علاوه بر این، کامپیوترهای کوانتومی وظایف خاصی را با مصرف انرژی بسیار کمتر انجام می دهند. این کارایی در پردازش و استفاده از انرژی باعث ایجاد مدلهای هوش مصنوعی کوچکتر و قابل اعتمادتر میشود.
این ایده اصلی یک شبکه عصبی ترکیبی است: ایجاد مدلهای هوش مصنوعی کوچکتر و کارآمدتر.
هوش مصنوعی کوانتومی در عمل: پیشبینی دادههای گل زنبق با پایتون
در این کد، یک مدل هوش مصنوعی مبتنی بر کوانتومی برای پیشبینی گونههای گل زنبق از مجموعه داده معروف زنبق ایجاد میکنیم.
این کد از یک شبیه ساز کوانتومی به نام استفاده می کند default.qubit
، که رفتار کامپیوتر کوانتومی را تقلید می کند روی یک کامپیوتر کلاسیک
این به دلیل استفاده از مدل های ریاضی برای شبیه سازی عملیات کوانتومی امکان پذیر است.
با این حال، با برخی تغییرات کد، می توانید این کد را اجرا کنید روی پلتفرم های آی بی ام، آمازون یا مایکروسافت برای اجرای واقعی آن روی یک کامپیوتر کوانتومی
import pennylane as qml
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Load and preprocess the Iris dataset
data = load_iris()
X = data.data
y = data.target
# Standardize the features
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# One-hot encode the labels
encoder = OneHotEncoder(sparse=False)
y_onehot = encoder.fit_transform(y.reshape(-1, 1))
# Split the dataset
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y_onehot, test_size=0.2, random_state=42)
# Define a quantum device
n_qubits = 4
dev = qml.device('default.qubit', wires=n_qubits)
# Define a quantum node
@qml.qnode(dev)
def quantum_circuit(inputs, weights):
for i in range(len(inputs)):
qml.RY(inputs[i], wires=i)
for i in range(n_qubits):
qml.RX(weights[i], wires=i)
qml.RY(weights[n_qubits + i], wires=i)
return [qml.expval(qml.PauliZ(i)) for i in range(n_qubits)]
# Define a hybrid quantum-classical model
def hybrid_model(inputs, weights):
return quantum_circuit(inputs, weights)
# Initialize weights
np.random.seed(0)
weights = np.random.normal(0, np.pi, (2 * n_qubits,))
# Define a cost function
def cost(weights):
predictions = np.array([hybrid_model(x, weights) for x in X_train])
loss = np.mean((predictions - y_train) ** 2)
return loss
# Optimize the weights using gradient descent
opt = qml.GradientDescentOptimizer(stepsize=0.1)
steps = 100
for i in range(steps):
weights = opt.step(cost, weights)
if i % 10 == 0:
print(f"Step {i}, Cost: {cost(weights)}")
# Test the model
predictions = np.array([hybrid_model(x, weights) for x in X_test])
predicted_labels = np.argmax(predictions, axis=1)
true_labels = np.argmax(y_test, axis=1)
# Calculate the accuracy
accuracy = accuracy_score(true_labels, predicted_labels)
print(f"Test Accuracy: {accuracy * 100:.2f}%")
بیایید بلوک به بلوک کد را ببینیم!
واردات کتابخانه ها
import pennylane as qml
import numpy as np
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
در این قسمت از کد، کتابخانه های لازم را وارد کردیم:
pennylane
وpennylane.numpy
: برای ایجاد و دستکاری مدارهای کوانتومی.sklearn.datasets
: برای بارگذاری مجموعه داده Iris.sklearn.preprocessing
: برای پیش پردازش داده ها مانند مقیاس بندی و رمزگذاری.sklearn.model_selection
: برای تقسیم داده ها به مجموعه های آموزشی و آزمایشی.sklearn.metrics
: برای ارزیابی دقت مدل.
مجموعه داده Iris را بارگیری و از قبل پردازش کنید
# Load and preprocess the Iris dataset
data = load_iris()
X = data.data
y = data.target
# Standardize the features
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# One-hot encode the labels
encoder = OneHotEncoder(sparse=False)
y_onehot = encoder.fit_transform(y.reshape(-1, 1))
# Split the dataset
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y_onehot, test_size=0.2, random_state=42)
در اینجا داده ها را برای آموزش شبکه عصبی آماده کردیم:
- مجموعه داده Iris را بارگیری می کند و ویژگی ها را استخراج می کند (
X
) و برچسب ها (y
). - با استفاده از واریانس میانگین و واحد، ویژگی ها را استاندارد می کند
StandardScaler
. - یک داغ برچسب ها را برای طبقه بندی چند کلاسه با استفاده از کدگذاری می کند
OneHotEncoder
. - مجموعه داده را به مجموعه های آموزشی و آزمایشی با نسبت 80/20 تقسیم می کند.
دستگاه و مدار کوانتومی را تعریف کنید
# Define a quantum device
n_qubits = 4
dev = qml.device('default.qubit', wires=n_qubits)
# Define a quantum node
@qml.qnode(dev)
def quantum_circuit(inputs, weights):
for i in range(len(inputs)):
qml.RY(inputs[i], wires=i)
for i in range(n_qubits):
qml.RX(weights[i], wires=i)
qml.RY(weights[n_qubits + i], wires=i)
return [qml.expval(qml.PauliZ(i)) for i in range(n_qubits)]
این بخش دستگاه و مدار کوانتومی را تعریف می کند:
- با استفاده از شبیه ساز پیش فرض PennyLane یک دستگاه کوانتومی با 4 کیوبیت راه اندازی می کند.
- مدار کوانتومی را تعریف می کند (
quantum_circuit
) که ورودی ها و وزن ها را می گیرد. مدار دروازه های چرخشی را اعمال می کند (RY
،RX
) برای رمزگذاری ورودی ها و پارامترها و اندازه گیری مقادیر مورد انتظارPauliZ
اپراتورها روی هر کیوبیت
مدل ترکیبی را تعریف کنید و وزن ها را اولیه کنید
# Define a hybrid quantum-classical model
def hybrid_model(inputs, weights):
return quantum_circuit(inputs, weights)
# Initialize weights
np.random.seed(0)
weights = np.random.normal(0, np.pi, (2 * n_qubits,))
در اینجا، ما در واقع مدل را ایجاد کردیم و وزن آن را شروع کردیم.
- یک تابع مدل ترکیبی را تعریف می کند که از مدار کوانتومی استفاده می کند.
- وزنها را برای مدل با استفاده از توزیع نرمال با دانه مشخص برای تکرارپذیری اولیه میکند.
تابع هزینه را تعریف کنید و وزن ها را بهینه کنید
# Define a cost function
def cost(weights):
predictions = np.array([hybrid_model(x, weights) for x in X_train])
loss = np.mean((predictions - y_train) ** 2)
return loss
# Optimize the weights using gradient descent
opt = qml.GradientDescentOptimizer(stepsize=0.1)
steps = 100
for i in range(steps):
weights = opt.step(cost, weights)
if i % 10 == 0:
print(f"Step {i}, Cost: {cost(weights)}")
در نهایت آموزش شبکه عصبی مبتنی بر کوانتومی را آغاز کردیم.
- یک تابع هزینه را تعریف می کند که میانگین مربعات خطای بین پیش بینی ها و برچسب های واقعی را محاسبه می کند.
- از PennyLane استفاده می کند
GradientDescentOptimizer
برای به حداقل رساندن تابع هزینه با به روز رسانی مکرر وزن ها. این هزینه را هر 10 مرحله برای پیگیری پیشرفت چاپ می کند.
چاپ می کند:
Step 0, Cost: 0.35359229278282217
Step 10, Cost: 0.3145818194833503
Step 20, Cost: 0.28937668289628116
Step 30, Cost: 0.2733108557682183
Step 40, Cost: 0.26273285477208475
Step 50, Cost: 0.25532913470009133
Step 60, Cost: 0.24973939376050813
Step 70, Cost: 0.24517135825709957
Step 80, Cost: 0.2411459409849017
Step 90, Cost: 0.23735091263019087
مدل را تست کنید و دقت را ارزیابی کنید
# Test the model
predictions = np.array([hybrid_model(x, weights) for x in X_test])
predicted_labels = np.argmax(predictions, axis=1)
true_labels = np.argmax(y_test, axis=1)
# Calculate the accuracy
accuracy = accuracy_score(true_labels, predicted_labels)
print(f"Test Accuracy: {accuracy * 100:.2f}%")
در مرحله بعد، مدل آموزش دیده را ارزیابی می کنیم:
- پیش بینی می کند روی مجموعه تست با استفاده از وزن های بهینه شده
- پیشبینیهای کدگذاریشده و برچسبهای واقعی را به برچسبهای کلاس تبدیل میکند.
- با استفاده از دقت مدل را محاسبه و چاپ می کند
accuracy_score
.
و نتایج نهایی نشان داد:
Test Accuracy: 66.67%
دقت 67% نتیجه مدل هوش مصنوعی خوبی نیست. این به این دلیل است که ما این شبکه عصبی را برای این داده ها بهینه نکرده ایم.
برای به دست آوردن نتایج بهتر باید ساختار شبکه عصبی را تغییر دهیم.
با این حال، برای این مجموعه داده، فقط با شبکههای عصبی معمولی و کتابخانهای مانند optuna برای بهینهسازی هایپرپارامتر، دقت بسیار بالاتری بیش از ۹۸ درصد امکانپذیر است و میتوان به راحتی به آن دست یافت.
با این وجود، ما یک مدل هوش مصنوعی کوانتومی ساده ایجاد کردیم.
نتیجه گیری: آینده مدل های هوش مصنوعی کارآمد
ادغام محاسبات کوانتومی در هوش مصنوعی امکان ایجاد مدل های هوش مصنوعی کوچکتر و کارآمدتر را فراهم می کند. با پیشرفتهای بیشتر در فناوری کوانتومی، این فناوری بیشتر و بیشتر در هوش مصنوعی اعمال خواهد شد.
به نظر من، آینده هوش مصنوعی در نهایت با کامپیوترهای کوانتومی ادغام خواهد شد.
اینم کد کامل:
منتشر شده در 1403-08-09 08:00:08