راهنمای کامل انواع یادگیری ماشین و کاربردهای هر کدام

راهنمای کامل انواع یادگیری ماشین و کاربردهای هر کدام

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۵ مرداد ۱۴۰۳
آخرین بروزرسانی: ۱۵ مرداد ۱۴۰۳
زمان مطالعه: 10 دقیقه
۵
(۱)

انواع یادگیری ماشین و اهمیت این حوزه از توسعه مدل‌های AI را می‌توانیم در مثالی ساده بگنجانیم. در یک آزمایشگاه هوش مصنوعی، یک کامپیوتر به اشتباه تصویر سگ را به‌عنوان گرگ شناسایی کرد. دلیل این موضوع، رخ دادن اشتباه در عملکرد الگوریتم‌های آن نبود؛ بلکه پس‌زمینه آفتابی در تصویر گرگ باعث چنین چیزی شد.

این اشتباه ساده بر دنیای پیچیده و ظریف یادگیری ماشین تاکید می‌کند؛ علمی که هر جنبه‌ای از نحوه تعامل ما با فناوری را تغییر می‌دهد.

در این مقاله، انواع یادگیری ماشین را تشریح می‌کنیم که به سه دسته یادگیری تحت نظارت، بدون نظارت و تقویتی تقسیم می‌شوند. البته اطلاعات تکمیلی درباره انواع نادر دیگر این علم جذاب هم در اختیارتان قرار می‌دهیم. در پایان، راهنمای جامع و کاربردی برای انتخاب بهترین الگوریتم ML را بررسی می‌کنیم تا بتوانید برای هر پروژه و با هر نیازی، خودتان مناسب‌ترین گزینه را تشخیص دهید.

۶ مورد از انواع یادگیری ماشین 

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

  • تحت نظارت (Supervised Learning)
  • بدون نظارت (Unsupervised Learning)
  • تقویتی (Reinforcement Learning)

در این میان، سه نوع یادگیری ماشین وجود دارد که برای محیط‌ها و شرایط خاص و بسیاری پیچیده استفاده می‌شوند:

  • نیمه‌‌نظارت‌شده (Semi-supervised Learning)
  • خودنظارت (Self-supervised Learning)
  • متعهد (Federated Learning)

در بخش بعد، هرکدام از این شیوه‌ها را با جزئیات بیشتری یاد خواهیم گرفت.

۱. یادگیری تحت نظارت

از انواع یادگیری ماشین، یادگیری تحت نظارت (Supervised Learning) است. در این نوع، از داده‌های برچسب‌گذاری‌شده برای آموزش مدل‌ها استفاده می‌شود. این رویکرد مانند تشریح یک مسئله پیچیده در قالب مثال‌های کاربردی از دنیای واقعی است. 

در این نوع، ورودی‎ها و خروجی‌های مناسب در داده‌های آموزشی (Training Data) جفت و به مدل ارائه می‌شوند.

کاربرد ها و مثال‌ های یادگیری تحت نظارت

  • فیلتر کردن ایمیل: طبقه‌بندی ایمیل‌ها به‌عنوان هرزنامه یا غیرهرزنامه
  • تشخیص‌های حوزه پزشکی: پیش‌بینی بیماری‌ها براساس علائم بالینی مراجع
  • تحلیل‌های مالی و آماری: پیش‌بینی قیمت سهام 
  • تشخیص تصویر: شناسایی اشیا درون تصاویر

مزایای یادگیری تحت نظارت

  • قدرت پیش‌بینی بالا 
  • نتایج ساده و قابل درک

محدودیت‌ های یادگیری تحت نظارت

  • وابستگی زیاد به داده‌های برچسب‌گذاری‌شده
  • فرآیند پرهزینه، زمان‌بر و پیچیده در جمع‌آوری داده‌ها
  • ریسک بالا و بروز خطر بیش‌برازش (Overfitting)؛ پیش‌بینی دقیق در داده‌های آموزش‌دیده‌شده و عملکرد ضعیف در داده‌های دیده‌نشده 

الگوریتم‌ های محبوب یادگیری تحت نظارت

  • رگرسیون خطی (Linear Regression): پیش‌بینی یک خروجی پیوسته 
  • رگرسیون لجستیک (Logistic Regression): پرکاربرد در کارهای مربوط‌به طبقه‌بندی داده‌های باینری 
  • ماشین‌های بردار پشتیبانی (SVM): مسئول پیدا کردن بهترین مرز بین نقاط داده کلاس‌های مختلف 
  • شبکه‌های عصبی (Neural Networks): مدل کردن الگوهای پیچیده با استفاده از لایه‌های نورونی

پیاده سازی الگوریتم‌ یادگیری تحت نظارت‌

در این بخش، تمام الگوریتم‌های بالا را به‌شکل یک‌پارچه اعمال و ارزیابی می‌کنیم.

برای انجام این کار، ابتدا مجموعه داده‌ها را بارگیری (Load) می‌کنیم.

 

from sklearn.datasets import load_model
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression, LinearRegression
from sklearn.svm import SVC
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, r2_score
import pandas as pd
import matplotlib.pyplot as plt

 

در مرحله بعد، بیایید مجموعه داده “model” را بارگیری کنیم و برای ساختن مدل‌ها، آن‌ها را مرور کنیم. در پایان، خواهید دید که چگونه این الگوریتم‌ها را می‌توانیم یکی‌یکی اعمال و معیارهای ارزیابی را به چارچوب داده اضافه کنیم تا مقایسه بین آن‌ها ساده شود.

 

# Load the model dataset
model = load_model()
X_model = model.data
y_model_quality = model.target  # For classification
# For simplicity in regression, let's predict the total phenols (a continuous feature) from the model dataset
# This is just for demonstration and not a standard practice
X_model_regression = StandardScaler().fit_transform(X_model)  # Standardize for neural network efficiency
y_model_phenols = X_model[:, model.feature_names.index('total_phenols')]  # Selecting a continuous feature
# Split the dataset for classification
X_train_class, X_test_class, y_train_class, y_test_class = train_test_split(X_model, y_model_quality, test_size=0.2, random_state=42)
# Split the dataset for regression
X_train_reg, X_test_reg, y_train_reg, y_test_reg = train_test_split(X_model_regression, y_model_phenols, test_size=0.2, random_state=42)
# Reinitialize models to reset any previous training
logistic_model = LogisticRegression(max_iter=200)
svm_model = SVC(probability=True)
neural_network_model = MLPClassifier(max_iter=2000)
linear_regression_model = LinearRegression()
# Train and evaluate models for classification
logistic_model.fit(X_train_class, y_train_class)
logistic_pred_class = logistic_model.predict(X_test_class)
logistic_accuracy = accuracy_score(y_test_class, logistic_pred_class)
svm_model.fit(X_train_class, y_train_class)
svm_pred_class = svm_model.predict(X_test_class)
svm_accuracy = accuracy_score(y_test_class, svm_pred_class)
neural_network_model.fit(X_train_class, y_train_class)
neural_network_pred_class = neural_network_model.predict(X_test_class)
neural_network_accuracy = accuracy_score(y_test_class, neural_network_pred_class)
# Train and evaluate Linear Regression for regression
linear_regression_model.fit(X_train_reg, y_train_reg)
linear_regression_pred_reg = linear_regression_model.predict(X_test_reg)
linear_regression_r2 = r2_score(y_test_reg, linear_regression_pred_reg)
# Store results in a DataFrame
results_df_model = pd.DataFrame({
   'Model': ['Logistic Regression (Class)', 'SVM (Class)', 'Neural Network (Class)', 'Linear Regression (Reg)'],
   'Accuracy/R²': [logistic_accuracy, svm_accuracy, neural_network_accuracy, linear_regression_r2]
})
# Display the DataFrame
results_df_model

 

پس از اجرا، خروجی این کدها را به‌شکل زیر خواهید دید.

 

انواع یادگیری ماشین - یادگیری تحت نظارت

 

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

 

# Plotting results for the model dataset
plt.figure(figsize=(10, 6))
plt.barh(results_df_model['Model'], results_df_model['Accuracy/R²'], color=['blue', 'orange', 'green', 'red'])
plt.xlabel('Score')
plt.title('Model Evaluation on model Dataset (Classification & Regression)')
plt.xlim(0, 1.1)  # Extend x-axis a bit for clarity
for index, value in enumerate(results_df_model['Accuracy/R²']):
   plt.text(value, index, f"{value:.2f}", va='center')
plt.savefig("supervised.png")
plt.show()

 

حال خروجی را در نمودارهای رنگی خواهیم دید.

 

انواع یادگیری ماشین - یادگیری تحت نظارت

 

نتایج ارزیابی این کدها به‌شکل زیر هستند:

  • رگرسیون لجستیک: یک عملکرد عالی را برای طبقه‌بندی با دقت ۹۷% از خود نشان می‌دهد. این نتیجه نشان‌دهنده تناسب دقیق برای الگوی مجموعه داده‌ها است؛
  • SVM: دقت کمتری را در ۸۱% نشان می‌دهد که نشان‌دهنده عدم تناسب بالقوه یا نیاز به تنظیم پارامتر و بهینه‌سازی انتخاب هسته است؛
  • شبکه عصبی: به دقت بالایی مشابه رگرسیون لجستیک دست می‌یابد که توانایی آن را در مدل‌سازی روابط پیچیده در مجموعه داده نشان می‌دهد؛
  • رگرسیون خطی: یک امتیاز R² کامل اما غیرواقعی را گزارش می‌کند. این امتیاز دلالت بر تناسب بیش‌ازحد خوش‌بینانه دارد که بررسی دقیق‌تر را برای نشت داده‌های احتمالی یا تطبیق بیش‌برازش ضروری می‌کند.

۲. یادگیری بدون نظارت

یادگیری بدون نظارت شامل آموزش مدل‌ها با استفاده از داده‌هایی است که پاسخ‌های برچسب‌گذاری‌شده ندارند؛ یعنی برای پیش‌بینی نتایج، هیچ داده نمونه‌ای را در Dataset ندارید.

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

کاربردها و مثال‌های یادگیری بدون نظارت:

  • تجزیه‌وتحلیل سبد خرید: کشف ارتباط بین محصولاتی که اغلب با هم خریداری می‌شوند؛
  • خوشه‌بندی ژنتیکی: گروه‌بندی ژن‌ها با الگوهای مشابه
  • تجزیه‌وتحلیل شبکه‌های اجتماعی: شناسایی ارتباط‌ها در شبکه‌های بزرگ
  • تشخیص ناهنجاری: شناسایی تراکنش‌های تقلبی در بانک‌داری

مزایای یادگیری بدون نظارت

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

محدودیت‌های یادگیری بدون نظارت

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

الگوریتم‌های محبوب یادگیری بدون نظارت

  • K-means Clustering: گروه‌بندی داده‌ها براساس شباهت ویژگی‌ها در تعداد k خوشه 
  • خوشه‌بندی سلسله‌مراتبی (Hierarchical Clustering): ساخت درختی از خوشه‌ها با ادغام یا تقسیم مستمر خوشه‌های موجود 
  • تجزیه‌وتحلیل کامپوننت اصلی (PCA): کاهش ابعاد داده‌ها درعین حفظ تغییرات 
  • رمزگذارهای خودکار (Autoencoders): شبکه‌های عصبی طراحی‌شده برای فشرده‌سازی داده‌ها به‌صورت نمایشی، با ابعاد کمتر و بازسازی آن‌ها 

کاربرد یادگیری بدون نظارت

در این بخش کدی می‌نویسیم تا ابتدا کتابخانه‌های مرتبط را بارگذاری کنیم.

 

from sklearn.cluster import KMeans, AgglomerativeClustering
from sklearn.metrics import silhouette_score
from sklearn.decomposition import PCA
from sklearn.neural_network import MLPRegressor

 

در مرحله بعد، داده‌ها را استاندارد و الگوریتم‌های معرفی‌شده را اعمال کنیم. نتیجه این کار، اضافه شدن نتایج به Dictionary در پایتون است. در پایان آن‌ها را با هم مقایسه خواهیم کرد.

 

# Standardize the data for clustering and autoencoder
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_wine)
# Apply K-means Clustering
kmeans = KMeans(n_clusters=3, random_state=42)  # We choose 3 as a starting point, as there are 3 classes of wine
kmeans.fit(X_scaled)
kmeans_labels = kmeans.labels_
kmeans_silhouette = silhouette_score(X_scaled, kmeans_labels)
# Apply Hierarchical Clustering
hierarchical = AgglomerativeClustering(n_clusters=3)  # Same number of clusters for comparison
hierarchical.fit(X_scaled)
hierarchical_labels = hierarchical.labels_
hierarchical_silhouette = silhouette_score(X_scaled, hierarchical_labels)
# Apply PCA
pca = PCA(n_components=0.95)  # Retain 95% of the variance
X_pca = pca.fit_transform(X_scaled)
pca_explained_variance = pca.explained_variance_ratio_.sum()
# Train an Autoencoder - For simplicity, we'll design a small one
autoencoder = MLPRegressor(hidden_layer_sizes=(32, 16, 32),
                          max_iter=2000,
                          random_state=42)
autoencoder.fit(X_scaled, X_scaled)
X_reconstructed = autoencoder.predict(X_scaled)
autoencoder_reconstruction_error = ((X_scaled - X_reconstructed) ** 2).mean()
# Compile the results
unsupervised_results = {
   'K-means Clustering': kmeans_silhouette,
   'Hierarchical Clustering': hierarchical_silhouette,
   'PCA Explained Variance': pca_explained_variance,
   'Autoencoder Reconstruction Error': autoencoder_reconstruction_error
}
unsupervised_results

 

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

  • K-means Clustering: امتیاز شبح و نزدیک‌به ۰.۲۸۵ به‌دست آمد که یک امتیاز متوسط ​​است و نشان می‌دهد که خوشه‌ها هم‌پوشانی دارند؛
  • خوشه‌بندی سلسله مراتبی: امتیاز شبح کمی پایین‌تر در حدود ۰.۲۷۷ به‌دست آمد که نشان‌دهنده سطح مشابهی از هم‌پوشانی خوشه‌ای با میانگین K است؛
  • واریانس توضیح داده شده PCA: PCA حدود ۹۶.۱۷ درصد از واریانس مجموعه داده را حفظ کرد. این موضوع بیان‌گر کاهش قابل‌توجهی در ابعاد و درعین‌حال حفظ درصد زیادی از اطلاعات است؛
  • خطای بازسازی خودکار رمزگذار: خطای کم بازسازی و به‌طور حدودی، ۰.۰۵۰ به این معنی است که رمزگذار خودکار می‌تواند مجموعه داده را با مقدار کمی خطا فشرده و بازسازی کند.

۳. یادگیری تقویتی

یادگیری تقویتی (Reinforcement Learning) یکی از انواع یادگیری ماشین است که در آن، عامل براساس انجام برخی اقدام‌ها در محیط و دستیابی به اهداف، فرآیند تصمیم‌گیری را یاد می‌گیرد.

این الگوریتم ML شبیه آموزش یک حیوان خانگی با اعمال پاداش و مجازات روی عملکرد آن است: حیوانی که تلاش دارد بهترین اقدام‌ها را در طول زمان بیاموزد تا پاداش‌های خود را به حداکثر برساند.

در RL، عامل با محیط خود تعامل دارد، بازخورد را از فرآیند پاداش یا جریمه دریافت و استراتژی خود را برای بهبود پاداش‌های آینده، تنظیم می‌کند. فرآیند یادگیری شامل اکتشاف (آزمایش چیزهای جدید) و بهره‌برداری (استفاده از اطلاعات شناخته‌شده برای به‌دست آوردن حداکثر پاداش) است.

کاربردها و مثال‌های یادگیری تقویتی

  • بازی‌های ویدیویی: آموزش هوش مصنوعی برای اجرای بازی و دریافت برترین جایگاه در بازی‌های ویدیویی پیچیده
  • رباتیک: مجهز کردن ربات‌ها به گرفتن اشیا و راه رفتن 
  • وسایل نقلیه خودران: توسعه سیستم‎هایی برای خودروهای بدون سرنشین و خودران (self-driving) با هدف تصمیم‌گیری در ترافیک واقعی
  • توصیه‌های شخصی‌سازی‌شده: شخصی‌سازی پیشنهادها متناسب‌با اولویت کاربران در طول زمان

مزایای یادگیری تقویتی

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

محدودیت‌های یادگیری تقویتی

  • نیاز به حجم زیادی از داده‌‌ها 
  • وابستگی بالا به سخت‌افزارهای قدرت‌مند برای پردازش سریع
  • دشواری در ایجاد سیستم‌های پاداش‌دهی ایده‌آل 
  • احتمال بالا در بروز نتایج غیرمنتظره توسط عامل

الگوریتم‌های محبوب یادگیری تقویتی

  • Q-learning: روشی مبتنی‌بر ارزش برای یادگیری کیفیت اقدام‌ها و نشان‌دهنده پتانسیل پاداش 
  • Deep Q Network (DQN): ترکیب Q-learning با شبکه های عصبی عمیق و مدیریت ورودی‌های حسی با ابعاد گسترده
  • روش‌های گرادیان خط مشی (Policy Gradient Methods): یادگیری سریع و مستقیم با نگاه به خط‌مشی و تخمین احتمال موفقیت یک اقدام

۴. یادگیری نیمه‌نظارت‌شده 

“Semi-supervised Learning” یک رویکرد ترکیبی است که از داده‌های برچسب‌دار و بدون برچسب برای آموزش مدل استفاده می‌کند. 

این نوع یادگیری ماشین زمانی مفید است که به‌دست آوردن یک مجموعه داده تمام برچسب‌گذاری‌شده، گران یا غیرکاربردی باشد. این روش می‌تواند دقت یادگیری را با داده‌های برچسب‌گذاری‌شده کمتری بهبود بدهد.

۵. یادگیری خودنظارتی 

“Self-supervised Learning” شکلی از یادگیری بدون نظارت است که در آن داده‌ها نظارت (Supervision) را فراهم می‌کنند. در این حالت، مدل یاد می‌گیرد که پیش‌بینی پاسخ به ورودی خود را از سایر قسمت‌های ورودی انجام دهد. این رویکرد در سناریوهایی که داده‌های برچسب‌دار کمیاب و داده‌های بدون برچسب فراوان هستند، بیشترین تاثیر و کاربرد را دارد.

۶. یادگیری متعهد

“Federated Learning” یک رویکرد در یادگیری ماشین است که یک الگوریتم را بر دو پلتفرم آموزش می‌دهد:

  1. در چند دستگاه غیرمتمرکز
  2. سرورهایی که نمونه‌های داده محلی را نگهداری می‌کنند.

این آموزش بدون تبادل داده‌ها و به‌صورت مستقل از پلتفرم‌ها انجام می‌شود. روش یادگیری متعهد برای حفظ حریم خصوصی و امنیت داده‌ها مفید است؛ چون وابستگی به متمرکز کردن مجموعه داده‌های بزرگ را کاهش می‌دهد.

روش انتخاب بهترین الگوریتم یادگیری ماشین براساس پروژه‌ های مختلف 

انتخاب نوع یادگیری ماشین مناسب، به عوامل متعددی از جمله ماهیت داده‌های شما، وظایف محول‌شده و منابع موجود بستگی دارد. در ادامه برخی از بهترین روش های انتخاب الگوریتم یادگیری ماشین را توضیح داده‌ایم:

۱. در نظر گرفتن دسترسی به داده‌ها یا برچسب‌دار بودن آن‌ها

  • مجموعه بزرگی از داده‌های برچسب‌‌گذاری‌شده: یادگیری تحت نظارت
  • داده‌های فاقد برچسب: یادگیری بدون نظارت
  • داده‌های برچسب‌گذاری‌شده محدود: یادگیری نیمه‌نظارت‌شده یا خودنظارت 

۲. میزان پیچیدگی و الزامات کار

  • وظایف نیازمند به تصمیم‌گیری در طول زمان: یادگیری تقویتی برای زمینه‌های رباتیک و اجرای بازی 
  • وظایف طبقه‌بندی یا رگرسیون: الگوریتم‌های یادگیری تحت نظارت

۳. اهمیت بالای حفظ حریم خصوصی

  • آموزش از داده‌های غیرمتمرکز: یادگیری متعهد 

۴. نیاز به منابع محاسباتی قوی

  • بودجه کافی برای سخت‌افزارهای محاسباتی قوی: یادگیری تقویتی 
  • آموزش مدل‌های یادگیری عمیق: یادگیری تقویتی 

۵. ملاحظات خاص فعالیت موردنظر

  • بیوانفورماتیک و امور مالی: یادگیری بدون نظارت

جمع بندی: انواع یادگیری ماشین

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

حال از شما دعوت می‌کنیم که پاسخ سوالات زیر را در بخش نظرات بنویسید. این آزمون روشی برای اطمینان از یادگیری مباحث است تا با خیال راحت، به‌سراغ ادامه مسیر یادگیری خود در حوزه AI بروید.

چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
366 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران