هوش مصنوعی با پایتون – شبکه های عصبی

3 سال پیش

هوش مصنوعی با پایتون – شبکه های عصبی

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

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو

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

شبکه های عصبی مصنوعی (ANN) چیست

شبکه عصبی مصنوعی (ANN) یک سیستم محاسباتی کارآمد است که تم اصلی آن از قیاس شبکه های عصبی بیولوژیکی گرفته شده است. ANN ها همچنین به عنوان سیستم های عصبی مصنوعی، سیستم های پردازش توزیع شده موازی و سیستم های اتصال گرایانه نامگذاری شده اند. ANN مجموعه بزرگی از واحدها را به دست می آورد که به نوعی به هم متصل شده اند تا ارتباطات بین آنها برقرار شود. این واحدها که به آنها گره یا نورون نیز گفته می شود، پردازنده های ساده ای هستند که به طور موازی کار می کنند.

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

 

نصب پکیج های مفید

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

pip install NeuroLab

 

اگر از محیط Anaconda استفاده می کنید ، برای نصب NeuroLab از دستور زیر استفاده کنید –

conda install -c labfabulous neurolab

 

ساخت شبکه های عصبی

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

طبقه بندی مبتنی بر Perceptron

گیرنده ها عناصر سازنده شبکه ANN هستند. اگر می خواهید در مورد Perceptron اطلاعات بیشتری کسب کنید ، می توانید این لینک را دنبال کنید.

در زیر یک اجرای مرحله ای کد پایتون برای ساخت یک طبقه بندی ساده مبتنی بر Perceptron شبکه عصبی وجود دارد –

پکیج های لازم را همانطور که نشان داده شده وارد کنید –

import matplotlib.pyplot as plt
import neurolab as nl

مقادیر ورودی را وارد کنید. توجه داشته باشید که این یک نمونه از یادگیری تحت نظارت است، بنابراین شما باید مقادیر هدف را نیز ارائه دهید.

input = [[0, 0], [0, 1], [1, 0], [1, 1]]
target = [[0], [0], [0], [1]]

ایجاد شبکه با ۲ ورودی و ۱ نورون –

net = nl.net.newp([[0, 1],[0, 1]], 1)

اکنون، شبکه را آموزش دهید. در اینجا ، ما از قانون Delta برای آموزش استفاده می کنیم.

error_progress = net.train(input, target, epochs=100, show=10, lr=0.1)

 

اکنون، خروجی را تجسم کنید و نمودار را ترسیم کنید –

plt.figure()
plt.plot(error_progress)
plt.xlabel('Number of epochs')
plt.ylabel('Training error')
plt.grid()
plt.show()

نمودار زیر را مشاهده می کنید که پیشرفت آموزش را با استفاده از معیار خطا نشان می دهد –

 

Perceptron based Classifier

 

شبکه های عصبی تک لایه

در این مثال، ما در حال ایجاد یک شبکه عصبی تک لایه هستیم که متشکل از نورون های مستقلی است که بر روی داده های ورودی برای تولید خروجی کار می کنند. توجه داشته باشید که ما از فایل متنی به نام neural_simple.txt به عنوان ورودی استفاده می کنیم.

پکیج های مفید را همانطور که نشان داده شده وارد کنید –

import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl

مجموعه داده را به صورت زیر بارگیری کنید –

input_data = np.loadtxt(“/Users/admin/neural_simple.txt')

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

array([[2. , 4. , 0. , 0. ],
      [۱٫۵, ۳٫۹, ۰٫ , ۰٫ ],
      [۲٫۲, ۴٫۱, ۰٫ , ۰٫ ],
      [۱٫۹, ۴٫۷, ۰٫ , ۰٫ ],
      [۵٫۴, ۲٫۲, ۰٫ , ۱٫ ],
      [۴٫۳, ۷٫۱, ۰٫ , ۱٫ ],
      [۵٫۸, ۴٫۹, ۰٫ , ۱٫ ],
      [۶٫۵, ۳٫۲, ۰٫ , ۱٫ ],
      [۳٫ , ۲٫ , ۱٫ , ۰٫ ],
      [۲٫۵, ۰٫۵, ۱٫ , ۰٫ ],
      [۳٫۵, ۲٫۱, ۱٫ , ۰٫ ],
      [۲٫۹, ۰٫۳, ۱٫ , ۰٫ ],
      [۶٫۵, ۸٫۳, ۱٫ , ۱٫ ],
      [۳٫۲, ۶٫۲, ۱٫ , ۱٫ ],
      [۴٫۹, ۷٫۸, ۱٫ , ۱٫ ],
      [۲٫۱, ۴٫۸, ۱٫ , ۱٫ ]])

اکنون، این چهار ستون را به ۲ ستون داده و ۲ برچسب جدا کنید –

data = input_data[:, 0:2]
labels = input_data[:, 2:]

داده های ورودی را با استفاده از دستورات زیر رسم کنید –

plt.figure()
plt.scatter(data[:,0], data[:,1])
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('Input data'

اکنون، همانطور که در اینجا نشان داده شده است، حداقل و حداکثر مقادیر را تعیین کنید –

dim1_min, dim1_max = data[:,0].min(), data[:,0].max()
dim2_min, dim2_max = data[:,1].min(), data[:,1].max()

 

بعد، تعداد سلولهای عصبی در لایه خروجی را به شرح زیر تعریف کنید –

nn_output_layer = labels.shape[1]

اکنون، یک شبکه عصبی تک لایه تعریف کنید –

dim1 = [dim1_min, dim1_max]
dim2 = [dim2_min, dim2_max]
neural_net = nl.net.newp([dim1, dim2], nn_output_layer)

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

error = neural_net.train(data, labels, epochs = 200, show = 20, lr = 0.01)

اکنون، پیشرفت آموزش را با استفاده از دستورات زیر تجسم و ترسیم کنید –

plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Training error')
plt.title('Training error progress')
plt.grid()
plt.show()

اکنون، از نقاط داده تست در طبقه بندی بالا استفاده کنید –

print('\nTest Results:')
data_test = [[1.5, 3.2], [3.6, 1.7], [3.6, 5.7],[1.6, 3.9]] for item in data_test:
   print(item, '-->', neural_net.sim([item])[0])

 

شما می توانید نتایج آزمون را همانطور که در اینجا نشان داده شده است پیدا کنید –

[۱٫۵, ۳٫۲] --> [1. 0.]
[۳٫۶, ۱٫۷] --> [1. 0.]
[۳٫۶, ۵٫۷] --> [1. 1.]
[۱٫۶, ۳٫۹] --> [1. 0.]

نمودارهای زیر را می توانید به عنوان خروجی کدی که تاکنون بحث شده مشاهده کنید –

Single Layer Neural Networks

Number of Epochs

 

شبکه های عصبی چند لایه

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

y = 2x2+8.

پکیج های لازم را همانطور که نشان داده شده وارد کنید –

import numpy as np
import matplotlib.pyplot as plt
import neurolab as nl

براساس معادله فوق، برخی از داده ها را ایجاد کنید –

min_val = -30
max_val = 30
num_points = 160
x = np.linspace(min_val, max_val, num_points)
y = 2 * np.square(x) + 8
y /= np.linalg.norm(y)

 

اکنون، این مجموعه داده را به صورت زیر تغییر شکل دهید –

data = x.reshape(num_points, 1)
labels = y.reshape(num_points, 1)

مجموعه داده های ورودی را با استفاده از دستورات زیر تجسم و رسم کنید –

plt.figure()
plt.scatter(data, labels)
plt.xlabel('Dimension 1')
plt.ylabel('Dimension 2')
plt.title('Data-points')

اکنون، شبکه عصبی را با داشتن دو لایه مخفی با neurolab با ده نورون در اولین لایه پنهان، شش نورون در لایه مخفی دوم و یک لایه در لایه خروجی ایجاد کنید.

neural_net = nl.net.newff([[min_val, max_val]], [10, 6, 1])

اکنون از الگوریتم آموزش گرادیان استفاده کنید –

neural_net.trainf = nl.train.train_gd

اکنون شبکه را با هدف یادگیری در مورد داده های تولید شده در بالا آموزش دهید –

error = neural_net.train(data, labels, epochs = 1000, show = 100, goal = 0.01)

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

output = neural_net.sim(data)
y_pred = output.reshape(num_points)

اکنون تسک طرح و  تجسم را بنویسید-

plt.figure()
plt.plot(error)
plt.xlabel('Number of epochs')
plt.ylabel('Error')
plt.title('Training error progress')

اکنون ما خروجی واقعی در مقابل خروجی پیش بینی شده را ترسیم خواهیم کرد –

x_dense = np.linspace(min_val, max_val, num_points * 2)
y_dense_pred = neural_net.sim(x_dense.reshape(x_dense.size,1)).reshape(x_dense.size)
plt.figure()
plt.plot(x_dense, y_dense_pred, '-', x, y, '.', x, y_pred, 'p')
plt.title('Actual vs predicted')
plt.show()

در نتیجه دستورات فوق، می توانید نمودارها را همانطور که در زیر نشان داده شده مشاهده کنید –

Multi Layer Neural Networks

 

Training Error Progress

Actual vs Predicted

 

منبع.

لیست جلسات قبل آموزش هوش مصنوعی با برنامه نویسی پایتون

  1. آموزش هوش مصنوعی با برنامه نویسی پایتون – مفهوم کلی
  2. شروع آموزش هوش مصنوعی با برنامه نویسی پایتون
  3. یادگیری ماشین در هوش مصنوعی با برنامه نویسی پایتون
  4. هوش مصنوعی با برنامه نویسی پایتون، آماده ‌سازی داده ها
  5. هوش مصنوعی با پایتون، یادگیری نظارت شده و طبقه بندی
  6. هوش مصنوعی با برنامه نویسی پایتون – یادگیری تحت نظارت: رگرسیون
  7. هوش مصنوعی با برنامه نویسی پایتون – برنامه نویسی منطقی
  8. هوش مصنوعی با پایتون – یادگیری بدون نظارت: خوشه بندی
  9. هوش مصنوعی با پایتون – پردازش زبان طبیعی
  10. هوش مصنوعی با پایتون – پکیج NLTK
  11. هوش مصنوعی با پایتون – تجزیه و تحلیل داده های سری زمانی
  12. هوش مصنوعی با پایتون – تشخیص گفتار
  13. هوش مصنوعی با پایتون – جستجوی کاشف
  14. هوش مصنوعی با پایتون – بازی

 

0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه