یادگیری ماشینی حوزه ای از هوش مصنوعی است که در آن امثال ChatGPT و سایر مدل های معروف ایجاد شده است. این سیستم ها همگی با شبکه های عصبی ایجاد شده اند.

حوزه یادگیری ماشینی که با ایجاد این شبکه های عصبی سروکار دارد، یادگیری عمیق نامیده می شود.

در این پست وبلاگ، یک شبکه عصبی با تعدادی نورون که اجرا می شوند ایجاد می کنیم روی یک کامپیوتر کلاسیک و دیگران در کامپیوترهای کوانتومی.

به این ترتیب، ایجاد و آموزش یک شبکه عصبی با هر دو نوع نورون، یک مدل مبتنی بر هوش مصنوعی ایجاد خواهد کرد روی محاسبات کوانتومی، زیرا بیشتر پردازش در نورون‌های کوانتومی انجام می‌شود.

در مورد اینها صحبت خواهیم کرد:

  • مقدمه ای بر هوش مصنوعی، شبکه های عصبی ترکیبی و مزایای آن
  • هوش مصنوعی کوانتومی در عمل: پیش‌بینی داده‌های گل زنبق با پایتون
  • نتیجه گیری: آینده مدل های هوش مصنوعی کارآمد

توجه: ما یک شبکه عصبی ساده ایجاد خواهیم کرد و از معماری های پیچیده مانند ترانسفورماتورها، غواصی عمیق در فیزیک کوانتومی یا تکنیک های بهینه سازی مدل هوش مصنوعی پیشرفته اجتناب می کنیم.

کد کامل در اینجا موجود است.

مقدمه ای بر هوش مصنوعی، شبکه های عصبی ترکیبی و مزایای آن

pexels-pavel-danilyuk-8438918
عکس پاول دانیلیوک: https://www.pexels.com/photo/elderly-man-thinking-while-looking-at-a-chessboard-8438918/

یادگیری عمیق در هوش مصنوعی چیست؟

یادگیری عمیق زیر شاخه ای از هوش مصنوعی است که از شبکه های عصبی برای پیش بینی الگوهای پیچیده مانند آب و هوا، طبقه بندی تصاویر، پاسخ به متن و غیره استفاده می کند. روی.

هر چه شبکه عصبی بزرگتر باشد، کارهای پیچیده تری می تواند انجام دهد. مانند ChatGPT که می تواند process زبان طبیعی برای تعامل با کاربران

شبکه های عصبی

Firefox_Screenshot_2024-08-03T13-56-12.699Z
شبکه عصبی ساده

یادگیری عمیق آموزش شبکه های عصبی برای پیش بینی داده های آینده است. آموزش یک شبکه عصبی شامل تغذیه داده ها، اجازه یادگیری و سپس انجام پیش بینی است.

شبکه های عصبی از نورون های زیادی تشکیل شده اند که در لایه ها سازماندهی شده اند. همه لایه ها الگوهای متفاوتی از داده ها را دریافت می کنند.

این ساختار نوع لایه به مدل های هوش مصنوعی اجازه می دهد تا داده ها و الگوهای پیچیده را تفسیر کنند. به عنوان مثال، شبکه عصبی در تصویر بالا، به عنوان مثال، با 8 ویژگی از داده های آب و هوا، می تواند آموزش داده شود که آیا باران خواهد بارید یا خیر.

لایه ای که داده ها را می گیرد لایه ورودی و لایه نهایی را لایه خروجی می نامند. بین اینها لایه های پنهانی هستند که الگوهای پیچیده ای را به تصویر می کشند.

البته این یک شبکه عصبی بسیار ساده است، اما ایده آموزش شبکه عصبی برای هر معماری پیچیده یکسان است.

پیشنهاد می‌کنیم بخوانید:  نحوه استفاده از زنجیره هوشمند بایننس (BSC) با MetaMask

شبکه های عصبی ترکیبی – ترکیب محاسبات کوانتومی و کلاسیک

اکنون یک شبکه عصبی ترکیبی ایجاد می کنیم. اساساً لایه های ورودی و خروجی کار خواهند کرد روی کامپیوترهای کلاسیک در حالی که لایه پنهان خواهد بود process داده ها روی یک کامپیوتر کوانتومی

این رویکرد از بهترین محاسبات کلاسیک و کوانتومی برای آموزش شبکه عصبی استفاده می کند.

چرا شبکه های عصبی ترکیبی را نسبت به شبکه های عصبی سنتی انتخاب کنیم؟

pexels-weekendplayer-45072
عکس از Burak The Weekender: https://www.pexels.com/photo/lighted-light-bulb-in-selective-focus-photography-45072/

ایده اصلی استفاده از یک شبکه عصبی ترکیبی این است که پردازش داده ها در یک کامپیوتر کوانتومی انجام شود که بسیار سریعتر از یک کامپیوتر کلاسیک است.

علاوه بر این، کامپیوترهای کوانتومی وظایف خاصی را با مصرف انرژی بسیار کمتر انجام می دهند. این کارایی در پردازش و استفاده از انرژی باعث ایجاد مدل‌های هوش مصنوعی کوچکتر و قابل اعتمادتر می‌شود.

این ایده اصلی یک شبکه عصبی ترکیبی است: ایجاد مدل‌های هوش مصنوعی کوچکتر و کارآمدتر.

هوش مصنوعی کوانتومی در عمل: پیش‌بینی داده‌های گل زنبق با پایتون

pexels-googledeepmind-25626507
عکس از Google DeepMind: https://www.pexels.com/photo/quantum-computing-and-ai-25626507/

در این کد، یک مدل هوش مصنوعی مبتنی بر کوانتومی برای پیش‌بینی گونه‌های گل زنبق از مجموعه داده معروف زنبق ایجاد می‌کنیم.

این کد از یک شبیه ساز کوانتومی به نام استفاده می کند 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}%")

1-1

بیایید بلوک به بلوک کد را ببینیم!

واردات کتابخانه ها

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
2-1
واردات کتابخانه ها

در این قسمت از کد، کتابخانه های لازم را وارد کردیم:

  • 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)
3-1
مجموعه داده Iris را بارگیری و از قبل پردازش کنید

در اینجا داده ها را برای آموزش شبکه عصبی آماده کردیم:

  • مجموعه داده 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)]
4-1
دستگاه و مدار کوانتومی را تعریف کنید

این بخش دستگاه و مدار کوانتومی را تعریف می کند:

  • با استفاده از شبیه ساز پیش فرض 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,))
5-1
مدل ترکیبی را تعریف کنید و وزن ها را اولیه کنید

در اینجا، ما در واقع مدل را ایجاد کردیم و وزن آن را شروع کردیم.

  • یک تابع مدل ترکیبی را تعریف می کند که از مدار کوانتومی استفاده می کند.
  • وزن‌ها را برای مدل با استفاده از توزیع نرمال با دانه مشخص برای تکرارپذیری اولیه می‌کند.

تابع هزینه را تعریف کنید و وزن ها را بهینه کنید

# 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)}")
6-1
تابع هزینه را تعریف کنید و وزن ها را بهینه کنید

در نهایت آموزش شبکه عصبی مبتنی بر کوانتومی را آغاز کردیم.

  • یک تابع هزینه را تعریف می کند که میانگین مربعات خطای بین پیش بینی ها و برچسب های واقعی را محاسبه می کند.
  • از 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}%")
7-1
مدل را تست کنید و دقت را ارزیابی کنید

در مرحله بعد، مدل آموزش دیده را ارزیابی می کنیم:

  • پیش بینی می کند روی مجموعه تست با استفاده از وزن های بهینه شده
  • پیش‌بینی‌های کدگذاری‌شده و برچسب‌های واقعی را به برچسب‌های کلاس تبدیل می‌کند.
  • با استفاده از دقت مدل را محاسبه و چاپ می کند accuracy_score.

و نتایج نهایی نشان داد:

Test Accuracy: 66.67%

دقت 67% نتیجه مدل هوش مصنوعی خوبی نیست. این به این دلیل است که ما این شبکه عصبی را برای این داده ها بهینه نکرده ایم.

برای به دست آوردن نتایج بهتر باید ساختار شبکه عصبی را تغییر دهیم.

با این حال، برای این مجموعه داده، فقط با شبکه‌های عصبی معمولی و کتابخانه‌ای مانند optuna برای بهینه‌سازی هایپرپارامتر، دقت بسیار بالاتری بیش از ۹۸ درصد امکان‌پذیر است و می‌توان به راحتی به آن دست یافت.

با این وجود، ما یک مدل هوش مصنوعی کوانتومی ساده ایجاد کردیم.

نتیجه گیری: آینده مدل های هوش مصنوعی کارآمد

pexels-pixabay-210158
عکس از Pixabay: https://www.pexels.com/photo/low-angle-photography-of-grey-and-black-tunnel-looking-white-cloudy-and-blue-sky-210158/

ادغام محاسبات کوانتومی در هوش مصنوعی امکان ایجاد مدل های هوش مصنوعی کوچکتر و کارآمدتر را فراهم می کند. با پیشرفت‌های بیشتر در فناوری کوانتومی، این فناوری بیشتر و بیشتر در هوش مصنوعی اعمال خواهد شد.

به نظر من، آینده هوش مصنوعی در نهایت با کامپیوترهای کوانتومی ادغام خواهد شد.

اینم کد کامل:

GitHub – tiagomonteiro0715/freecodecamp-my-articles-source-code: این مخزن کدی را که من در مقاله‌های خبری freecodecamo خود استفاده می‌کنم در خود نگه می‌دارد.
این مخزن کدی را که در مقاله‌های خبری freecodecamo خود استفاده می‌کنم، نگه می‌دارد. – tiagomonteiro0715/freecodecamp-my-articles-source-code
freecodecamp-my-articles-source-code