ایجاد شبکه عصبی بدون کتابخانه در پایتون (قسمت 2)
ایجاد شبکه عصبی بدون کتابخانه در پایتون (قسمت2)
در قسمت 1 این مقاله شما با مفاهیم اولیه و ساده شبکه عصبی آشنا شدید . در قسمت دوم مفاهیم عمیقتر شبکه عصبی به سادگی مطرح خواهدشد.
فرمول محاسبه خروجی نورون:
شاید برای شما سوال باشد که فرمول ویژه برای محاسبه خروجی نورون چیست؟ ابتدا مجموع وزنی ورودی های نورون را که عبارت است از:
درمرحله بعد این را نرمالایز می کنیم ، که نتیجه بین 0 تا 1 خواهد بود. برای این کار ، از یک تابع ریاضی مناسب استفاده می کنیم ، به نام تابع Sigmoid:
اگر روی نمودار رسم شود ، تابع Sigmoid یک منحنی S شکل ترسیم می کند
بنابراین با جایگزینی معادله اول در معادله دوم ، فرمول نهایی خروجی نورون به شرح زیر است
شاید متوجه شده باشید که ما برای ساده نگه داشتن مسائل از حداقل آستانه عمل استفاده نمی کنیم.
کد پایتون تا این مرحله به صورت زیر است:
from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
random.seed(1)
synaptic_weights = 2 * random.random((3, 1)) – 1
for iteration in xrange(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs – output) * output * (1 – output))
print 1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights))))
فرمول تنظیم وزن :
در طول چرخه تمرین (نمودار 3) ، وزنه ها را تنظیم می کنیم. اما چقدرباید وزن ها را برحسب میزان تنظیم کنیم؟ ما می توانیم از فرمول “Error Weighted مشتق” استفاده کنیم:
چرا این فرمول؟ ابتدا می خواهیم تنظیم را متناسب با اندازه خطا انجام دهیم. ثانیاً ، ما در ورودی ضرب می کنیم ، که یا 0 است یا 1. اگر ورودی 0 باشد ، وزن تنظیم نمی شود.
در نهایت ، ما در گرادیان منحنی Sigmoid ضرب می کنیم برای درک آخرین مورد ، به این نکته ها توجه کنید:
1- ما برای محاسبه خروجی نورون از منحنی سیگموئید استفاده کردیم
2- اگر خروجی یک عدد مثبت یا منفی بزرگ باشد ، به این معنی است که نورون به هر طریقی کاملاً مطمئن بوده است.
3- از نمودار 4 ، می بینیم که در تعداد زیاد ، منحنی سیگموئید دارای یک شیب کم عمق است.
4- اگر نورون مطمئن باشد که وزن موجود درست است نیازی به تنظیمات زیاد ندارد ,با ضرب در شیب منحنی Sigmoid به این امر می رسد.
با استفاده از مشتق می توان گرادیان منحنی Sigmoid را پیدا کرد:
بنابراین با جایگزینی معادله دوم به معادله اول ، فرمول نهایی برای تنظیم وزن ها به شرح زیر است:
فرمول های جایگزینی وجود دارد که به نورون اجازه می دهد سریعتر یاد بگیرد ، امااین فورمول دارای این مزیت است که نسبتاً ساده است.
پایان قسمت 2
دیدگاهتان را بنویسید