تاریخچه شبکه های عصبی مصنوعی
از قرن نوزدهم به طور همزمان اما جداگانه از سویی نروفیزیولوزیستها سعی کردند سامانه یادگیری و تجزیه و تحلیل مغز را کشف کنند و از سوی دیگر ریاضیدانان تلاش کردند تا مدل ریاضی بسازند که قابلیت فراگیری و تجزیه و تحلیل عمومی مسائل را دارا باشد. اولین کوششها در شبیهسازی با استفاده از یک مدل منطقی توسط مک کلوک و والتر پیتز انجام شد که امروزه بلوک اصلی سازنده اکثر شبکه های عصبی مصنوعی است. این مدل فرضیههایی در مورد عملکرد نورونها ارائه میکند. عملکرد این مدل مبتنی بر جمع ورودیها و ایجاد خروجی است. چنانچه حاصل جمع ورودیها از مقدار آستانه بیشتر باشد اصطلاحاً نورون برانگیخته میشود. نتیجه این مدل اجرای توابع ساده مثل AND و OR بود.
نه تنها نروفیزیولوژیستها بلکه روان شناسان و مهندسان نیز در پیشرفت شبیهسازی شبکه های عصبی تأثیر داشتند. در سال ۱۹۵۸ شبکه پرسپترون توسط روزنبلات معرفی گردید. این شبکه نظیر واحدهای مدل شده قبلی بود. پرسپترون دارای سه لایه به همراه یک لایه وسط که به عنوان لایه پیوند شناخته شده میباشد، است. این سامانه میتواند یاد بگیرد که به ورودی داده شده خروجی تصادفی متناظر را اعمال کند.
سامانه دیگر مدل خطی تطبیقی نورون میباشد که در سال ۱۹۶۰ توسط ویدرو و هاف (دانشگاه استنفورد) به وجود آمد که اولین شبکه های عصبی به کار گرفته شده در مسائل واقعی بودند. Adalaline یک دستگاه الکترونیکی بود که از اجزای سادهای تشکیل شده بود، روشی که برای آموزش استفاده میشد با پرسپترون فرق داشت.
در سال ۱۹۶۹ میسکی و پاپرت کتابی نوشتند که محدودیتهای سامانههای تک لایه و چند لایه پرسپترون را تشریح کردند. نتیجه این کتاب پیش داوری و قطع سرمایهگذاری برای تحقیقات در زمینه شبیهسازی شبکه های عصبی بود. آنها با طرح اینکه طرح پرسپترون قادر به حل هیچ مسئله جالبی نمیباشد، تحقیقات در این زمینه را برای مدت چندین سال متوقف کردند.
با وجود اینکه اشتیاق عمومی و سرمایهگذاریهای موجود به حداقل خود رسیده بود، برخی محققان تحقیقات خود را برای ساخت ماشینهایی که توانایی حل مسائلی از قبیل تشخیص الگو را داشته باشند، ادامه دادند. از جمله گراسبگ که شبکهای تحت عنوان Avalanch را برای تشخیص صحبت پیوسته و کنترل دست ربات مطرح کرد. همچنین او با همکاری کارپنتر شبکههای ART را بنانهادند که با مدلهای طبیعی تفاوت داشت. اندرسون و کوهونن نیز از اشخاصی بودند که تکنیکهایی برای یادگیری ایجاد کردند. ورباس در سال ۱۹۷۴ شیوه آموزش پس انتشار (Back Propagation) خطا را ایجاد کرد که یک شبکه پرسپترون چندلایه البته با قوانین نیرومندتر آموزشی بود.
پیشرفتهایی که در سال ۱۹۷۰ تا ۱۹۸۰ بدست آمد برای جلب توجه به شبکه های عصبی بسیار مهم بود. برخی فاکتورها نیز در تشدید این مسئله دخالت داشتند، از جمله کتابها و کنفرانسهای وسیعی که برای مردم در رشتههای متنوع ارائه شد. امروز نیز تحولات زیادی در تکنولوژی ANN ایجاد شدهاست.
چرا از شبکه های عصبی استفاده میکنیم
شبکه های عصبی با توانایی قابل توجه خود در استنتاج نتایج از دادههای پیچیده میتوانند در استخراج الگوها و شناسایی گرایشهای مختلفی که برای انسانها و کامپیوتر شناسایی آنها بسیار دشوار است استفاده شوند. از مزایای شبکه های عصبی میتوان موارد زیر را نام برد:
- یادگیری تطبیقی: توانایی یادگیری اینکه چگونه وظایف خود را بر اساس اطلاعات داده شده به آن یا تجارب اولیه انجام دهد در واقع اصلاح شبکه را گویند.
- خود سازماندهی: یک شبکه عصبی مصنوعی به صورت خودکار سازماندهی و ارائه دادههایی که در طول آموزش دریافت کرده را انجام دهد. نورونها با قاعدهٔ یادگیری سازگار شده و پاسخ به ورودی تغییر مییابد.
- عملگرهای بیدرنگ: محاسبات در شبکه عصبی مصنوعی میتواند به صورت موازی و به وسیله سختافزارهای مخصوصی که طراحی و ساخت آن برای دریافت نتایج بهینه قابلیتهای شبکه عصبی مصنوعی است انجام شود.
- تحمل خطا: با ایجاد خرابی در شبکه مقداری از کارایی کاهش مییابد ولی برخی امکانات آن با وجود مشکلات بزرگ همچنان حفظ میشود.
- دستهبندی: شبکه های عصبی قادر به دستهبندی ورودیها بر ای دریافت خروجی مناسب میباشند.
- تعمیم دهی: این خاصیت شبکه را قادر میسازد تا تنها با برخورد با تعداد محدودی نمونه، یک قانون کلی از آن را به دست آورده، نتایج این آموختهها را به موارد مشاهده از قبل نیز تعمیم دهد. توانایی که در صورت نبود آن سامانه باید بینهایت واقعیتها و روابط را به خاطر بسپارد.
- پایداری-انعطافپذیری: یک شبکه عصبی هم به حد کافی پایدار است تا اطلاعات فراگرفته خود را حفظ کند و هم قابلیت انعطاف و تطبیق را دارد و بدون از دست دادن اطلاعات قبلی میتواند موارد جدید را بپذیرد.
شبکه های عصبی در مقایسه با کامپیوترهای سنتی
یک شبکه عصبی به طور کلی با یک کامپیوتر سنتی در موارد زیر تفاوت دارد:
- شبکه های عصبی دستورات را به صورت سری اجرا نکرده، شامل حافظهای برای نگهداری داده و دستورالعمل نیستند.
- به مجموعهای از ورودیها به صورت موازی پاسخ میدهند.
- بیشتر با تبدیلات و نگاشتها سروکار دارند تا الگوریتمها و روشها.
- شامل ابزار محاسباتی پیچیده نبوده، از تعداد زیادی ابزارساده که اغلب کمی بیشتر از یک جمع وزن دار را انجام میدهند تشکیل شدهاند.
شبکه های عصبی شیوهای متفاوت برای حل مسئله دارند. کامپیوترهای سنتی از شیوه الگوریتمی برای حل مسئله استفاده میکنند که برای حل مسئله مجموعهای از دستورالعملهای بدون ابهام دنبال میشود. این دستورات به زبان سطح بالا و سپس به زبان ماشینکه سامانه قادر به تشخیص آن میباشد تبدیل میشوند. اگر مراحلی که کامپیوتر برای حل مسئله باید طی کند از قبل شناخته شده نباشند و الگوریتم مشخصی وجود نداشته باشد، سامانه توانایی حل مسئله را ندارد.
کامپیوترها میتوانند خیلی سودمندتر باشند اگر بتوانند کارهایی را که ما هیچ پیش زمینهای از آنها نداریم انجام دهند. شبکه های عصبی و کامپیوترها نه تنها رقیب هم نیستند بلکه میتوانند مکمل هم باشند. کارهایی وجود دارند که بهتر است از روش الگوریتمی حل شوند و همینطور کارهایی وجود دارند که جز از طریق شبکه عصبی مصنوعی قابل حل نمیباشند و البته تعداد زیادی نیز برای بدست آوردن بازده حداکثر، از ترکیبی از روشهای فوق استفاده میکنند. به طور معمول یک کامپیوتر سنتی برای نظارت بر شبکه عصبی استفاده میشود. شبکه های عصبی معجزه نمیکنند، اگر به طور محسوس استفاده شوند کارهای عجیبی انجام میدهند.
نورون مصنوعی
یک نورون مصنوعی سامانهای است با تعداد زیادی ورودی و تنها یک خروجی. نورون دارای دو حالت میباشد، حالت آموزش و حالت عملکرد. در حالت آموزش نورون یادمیگیرد که در مقابل الگوهای ورودی خاص برانگیخته شود یا در اصطلاح آتش کند. در حالت عملکرد وقتی یک الگوی ورودی شناسایی شده وارد شود، خروجی متناظر با آن ارائه میشود. اگر ورودی جزء ورودیهای از پیش شناسایی شده نباشد، قوانین آتش برای بر انگیختگی یا عدم آن تصمیمگیری میکند.
از نورونهای انسان تا نورون مصنوعی
با کنار گذاشتن برخی از خواص حیاتی نورونها و ارتباطات درونی آنها میتوان یک مدل ابتدایی از نورون را به وسیله کامپیوتر شبیهسازی کرد.
ساختار شبکه های عصبی
یک شبکه عصبی شامل اجزای سازنده لایهها و وزنها میباشد. رفتار شبکه نیز وابسته به ارتباط بین اعضا است. در حالت کلی در شبکه های عصبی سه نوع لایه نورونی وجود دارد:
- لایه ورودی: دریافت اطلاعات خامی که به شبکه تغذیه شدهاست.
- لایههای پنهان: عملکرد این لایهها به وسیله ورودیها و وزن ارتباط بین آنها و لایههای پنهان تعیین میشود. وزنهای بین واحدهای ورودی و پنهان تعیین میکند که چه وقت یک واحد پنهان باید فعال شود.
- لایه خروجی: عملکرد واحد خروجی بسته به فعالیت واحد پنهان و وزن ارتباط بین واحد پنهان و خروجی میباشد.
شبکههای تک لایه و چند لایهای نیز وجود دارند که سازماندهی تک لایه که در آن تمام واحدها به یک لایه اتصال دارند بیشترین مورد استفاده را دارد و پتانسیل محاسباتی بیشتری نسبت به سازماندهیهای چند لایه دارد. در شبکههای چند لایه واحدها به وسیله لایهها شماره گذاری میشوند (به جای دنبال کردن شماره گذاری سراسری).
هر دو لایه از یک شبکه به وسیله وزنها و در واقع اتصالات با هم ارتباط مییابند. در شبکه های عصبی چند نوع اتصال یا پیوند وزنی وجود دارد: پیشرو: بیشترین پیوندها از این نوع است که در آن سیگنالها تنها در یک جهت حرکت میکنند. از ورودی به خروجی هیچ بازخوردی (حلقه) وجود ندارد. خروجی هر لایه بر همان لایه تأثیری ندارد.
- پسرو: دادهها از گرههای لایه بالا به گرههای لایه پایین بازخورانده میشوند.
- جانبی: خروجی گرههای هر لایه به عنوان ورودی گرههای همان لایه استفاده میشوند.
تقسیمبندی شبکه های عصبی
بر مبنای روش آموزش به چهار دسته تقسیم میشوند:
- وزن ثابت: آموزشی در کار نیست و مقادیر وزنها به هنگام نمیشود. کاربرد: بهینهسازی اطلاعات (کاهش حجم، تفکیکپذیری و فشرده سازی) و حافظههای تناظری
- آموزش بدون سرپرست: وزنها فقط بر اساس ورودیها اصلاح میشوند و خروجی مطلوب وجود ندارد تا با مقایسه خروجی شبکه با آن و تعیین مقدار خطا وزنها اصلاح شود. وزنها فقط بر اساس اطلاعات الگوهای ورودی به هنگام میشوند. هدف استخراج مشخصههای الگوهای ورودی بر اساس راهبرد خوشه یابی یا دستهبندی و تشخیص شباهتها (تشکیل گروههایی با الگوی مشابه) میباشد، بدون اینکه خروجی یا کلاسهای متناظر با الگوهای ورودی از قبل مشخص باشد. این یادگیری معمولاً بر پایه شیوه برترین هم خوانی انجام میگیرد. شبکه بدون سرپرست وزنهای خود را بر پایه خروجی حاصل شده از ورودی تغییر میدهد تا در برخورد بعدی پاسخ مناسبی را برای این ورودی داشته باشد. در نتیجه شبکه یادمیگیرد چگونه به ورودی پاسخ بدهد. اصولاً هدف این است که با تکنیک نورون غالب نورونی که بیشترین تحریک آغازین را دارد برگزیده شود. بنابر این در شبکههای بدون سرپرست یافتن نورون غالب یکی از مهمترین کارها است.
- آموزش با سرپرست: به ازای هر دسته از الگوهای ورودی خروجیهای متناظر نیز به شبکه نشان داده میشود و تغییر وزنها تا موقعی صورت میگیرد که اختلاف خروجی شبکه به ازای الگوهای آموزشی از خروجیهای مطلوب در حد خطای قابل قبولی باشد. در این روشها یا از خروجیها به وزنها ارتباط وجود دارد یا خطا به صورت پس انتشار از لایه خروجی به ورودی توزیع شدهاست و وزنها اصلاح میشوند. هدف طرح شبکهای است که ابتدا با استفاده از دادههای آموزشی موجود، آموزش ببیند و سپس با ارائه بردار ورودی به شبکه که ممکن است شبکه آن را قبلاً فراگرفته یا نگرفته باشد کلاس آن را تشخیص دهد. چنین شبکهای به طور گسترده برای کارهای تشخیص الگو به کار گرفته میشود.
- آموزش تقویتی: کیفیت عملکرد سامانه به صورت گام به گام نسبت به زمان بهبود مییابد. الگوهای آموزشی وجود ندارد اما با استفاده از سیگنالی به نام نقاد بیانی از خوب یا بد بودن رفتار سامانه بدست میآید (حالتی بین یادگیری با سرپرست و بدون سرپرست).
کاربرد شبکه های عصبی
شبکه های عصبی مصنوعی دارای دامنه کاربرد وسیعی میباشند از جمله سامانههای آنالیز ریسک، کنترل هواپیما بدون خلبان، آنالیز کیفیت جوشکاری، آنالیز کیفیت کامپیوتر، آزمایش اتاق اورژانس، اکتشاف نفت و گاز، سامانههای تشخیص ترمز کامیون، تخمین ریسک وام، شناسایی طیفی، تشخیص دارو، فرایندهای کنترل صنعتی، مدیریت خطا، تشخیص صدا، تشخیص هپاتیت، بازیابی اطلاعاتراه دور، شناسایی مینهای زیردریایی، تشخیص اشیاء سه بعدی و دست نوشتهها و چهره و… در کل میتوان کاربردهای شبکه های عصبی را به صورت زیر دستهبندی کرد:
تناظر (شبکه الگوهای مغشوش وبه هم ریختهرا بازشناسی میکند)، خوشه یابی، دستهبندی، شناسایی، بازسازی الگو، تعمیم دهی (به دست آوردن یک پاسخ صحیح برای محرک ورودی که قبلاً به شبکه آموزش داده نشده)، بهینهسازی.
امروزه شبکه های عصبی در کاربردهای مختلفی نظیر مسائل تشخیص الگو که خود شامل مسائلی مانند تشخیص خط، شناسایی گفتار، پردازش تصویر و مسائلی از این دست میشود و نیز مسائل دستهبندی مانند دستهبندی متون یا تصاویر، به کار میروند. در کنترل یا مدل سازی سامانههایی که ساختار داخلی ناشناخته یا بسیار پیچیدهای دارند نیز به صورت روزافزون از شبکه های عصبی مصنوعی استفاده میشود. به عنوان مثال میتوان در کنترل ورودی یک موتور(کنترلکننده موتور) از یک شبکه عصبی استفاده نمود که در این صورت شبکه عصبی خود تابع کنترل را یاد خواهد گرفت. کاربرد مناسب تر شبکه عصبی (در مقایسه با روشهایی از قبیل PID)برای کنترل یک سیستم دور موتور در برابر تغییرات ناگهانی بار و زمان پاسخ دهی نیز مطرح شده است،
معایب شبکه های عصبی
با وجود برتریهایی که شبکه های عصبی نسبت به سامانههای مرسوم دارند، معایبی نیز دارند که پژوهشگران این رشته تلاش دارند که آنها را به حداقل برسانند، از جمله:
- قواعد یا دستورات مشخصی برای طراحی شبکه جهت یک کاربرد اختیاری وجود ندارد.
- در مورد مسائل مدل سازی، صرفاً نمیتوان با استفاده از شبکه عصبی به فیزیک مسئله پی برد. به عبارت دیگر مرتبط ساختن پارامترها یا ساختار شبکه به پارامترهای فرایند معمولاً غیرممکن است.
- دقت نتایج بستگی زیادی به اندازه مجموعه آموزش دارد.
- آموزش شبکه ممکن است مشکل ویا حتی غیرممکن باشد.
- پیش بینی عملکرد آینده شبکه (عمومیت یافتن) آن به سادگی امکانپذیر نیست.
انواع شبکه های عصبی مصنوعی
- Dynamic Neural Network
- Feedforward neural network FNN
- Recurrent neural network RNN
- RNN تکنولوژی speech recognition و handwriting recognition را ممکن کرد.
- Hopfield network
- Boltzmann machine
- Simple recurrent networks
- Echo state network
- Long short term memory network
- Bi-directional RNN
- Hierarchical RNN
- Stochastic neural networks
- RNN تکنولوژی speech recognition و handwriting recognition را ممکن کرد.
- Kohonen Self-Organizing Maps
- Autoencoder
- Backpropagation
- probabilistic neural network PNN
- Time delay neural network TDNN
- Static Neural Network
- Neocognitron
- Radial basis function network RBF
- Learning vector quantization
- Perceptron
- Adaline model
- Convolutional neural network CNN
- Deep Dream Google
- Modular neural networks
- Committee of machines COM
- Associative neural network ASNN
- Memory Network
- Google / Deep Mind
- facebook / MemNN
- Holographic associative memory
- One-shot associative memory
- Neural Turing Machine
- Adaptive resonance theory
- Hierarchical temporal memory
- Other types of Networks
- Instantaneously trained networks ITNN
- Spiking neural networks SNN
- Pulse Coded Neural Networks PCNN
- Cascading neural networks
- Neuro-fuzzy networks
- Growing Neural Gas GNG
- Compositional pattern-producing networks
- Counterpropagation network
- Oscillating neural network
- Hybridization neural network
- Physical neural network
- Optical neural network
- neuromorphic hardware
شبکه های عصبی مصنوعی چیست؟ قسمت 1
شبکه های عصبی مصنوعی چیست؟ قسمت 2
شبکه های عصبی مصنوعی چیست؟ قسمت 3
شبکه های عصبی مصنوعی چیست؟ قسمت 4