شبکه عصبی مصنوعی

از ویکی‌پدیا، دانشنامهٔ آزاد.

شبکه عصبی مصنوعی (به انگلیسی: Artificial Neural Network یا به اختصار ANN) ایده‌ای است الهام‌گرفته از شیوهٔ کارکرد سیستم عصبی زیستی، برای پردازش اطلاعات. عنصر کلیدی این ایده، ایجاد ساختارهایی جدید برای سامانهٔ پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پردازشی فوق العاده بهم‌پیوسته با نام نرون تشکیل شده که برای حل یک مسأله با هم هماهنگ عمل می‌کند.

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

اگر یک شبکه را هم‌ارز با یک گراف بدانیم، فرآیند آموزش شبکه تعیین نمودن وزن هر یال و bias اولیهٔ خواهد.

تصویر:Computer-stub.png این نوشتار دربارهٔ رایانه ناقص است. با گسترش آن به ویکی‌پدیا کمک کنید.


تجزیه و تحلیل داده ها به وسیله

شبکه های عصبی مصنوعی

دکتر هومن شادنیا- shadnia@razi.tums.ac.ir



تجسم کنید که شما روی موضوع فرمولاسیون یک شکل دارویی خاص کار می کنید. فرض کنید که اطلاعات مربوط به چندین نمونه فرمول شناخته شده ، از قبیل غلظت اجزاء، زمان فرایندهای مختلف فرمولاسیون، و پارامترهای فیزیکی از قبیل دما و pH را به یک برنامه کامپیوتر می دهید. سپس زمان پایداری اندازه گیری شده برای نمونه ها را هم به این برنامه می دهید. شما هیچ اطلاع یا فرضیه ای در مورد نحوه تاثیر اطلاعات و پارامترهای داده شده بر روی پایداری اندازه گیری شده ندارید. برنامه مذکور مدتی "فکر می کند" ، داده های سیستم شما را تجزیه و تحلیل می کند، روابط پیچیده بین پارامترها را یافته و مدل ریاضی آنها را می سازد، بطوریکه شما می توانید اطلاعات مربوط به یک نمونه جدید را به آن وارد کنید وبرنامه پایداری آن را با دقت قابل قبولی برای شما پیش بینی کند.


چه اتفاقی افتاد؟


برنامه کامپیوتری مذکور روابط پیچیده میان چند عامل مختلف را با پایداری محصول "حس" و "کشف" کرد، بدون اینکه شما حدس یا فرضیه ای در مورد ماهیت این روابط داشته باشید. هیچ اثری از تستهای پیچیده آماری نیست. حتی مجبور نشدید از داده های ورودی میانگین بگیرید... . تجسم شما یک واقعیت است، که به سادگی قابل تجربه و در دسترس شما است. پیش از این که بیشتر درباره جزئیات این قبیل برنامه ها بدانید، نام آنها را بخاطر بسپرید. نام این سیستم "شبکه های عصبی مصنوعی یا "Artificial Neural Networks" است.


از حدود 1940 بطور همزمان اما جداگانه ، از سویی نوروفیزیولوژیستها سعی میکردند سیستم یادگیری و تجزیه و تحلیل مغز را کشف کنند و از سویی ریاضیدانان تلاش می کردند تا مدل ریاضی بسازند که قابلیت فراگیری و تجزیه تحلیل عمومی مسائل را دارا باشد. از آن زمان ، بارها این اتفاق افتاد که ریاضیدانان یافته های نوروفیزیولوژیستها را پیاده سازی کردند، بدون این که بدانند چرا، و در عمل مشاهده کردند که سیستم پیاده شده کارایی شگفت انگیز سیستم طبیعی را دارد. پس از آن توانستند منطق زیربنایی سیستم طبیعی را درک کنند. اگر چه از همان ابتدا، ریاضیدانان توانسته بودند مدل ریاضی یک سلول عصبی یا نورون را بسازند، اما تا حدود 1974 که دانش مربوط به نوع اتصال این واحدهای شبه نورونی به یکدیگر تکامل لازم را نیافته بود. امروزه برنامه های کاربردی متعددی دردسترس هستند که با این روش کار میکنند. اگر چه کاربرد این برنامه ها بویژه برای افراد عادی کمی مشکل است، اما محققین روز به روز بیشتر و بیشتر آنها را به کار می گیرند. برای تجزیه و تحلیل یک سیستم پیچیده بوسیله روش شبکه های عصبی، نیاز به دانش زیادی درباره سیستم مورد مطالعه نمی باشد، چون عمل تجزیه و تحلیل و یادگیری در مغز شبکه اتفاق می افتد نه در مغز محقق، اما به هر حال بهره گیری از دانش کلی درباره طرز کار این شبکه ها برای کاربران آنها ضروری است، چرا که تنظیمات ساده و کلی در این برنامه ها وجود دارند که آگاهی از آنها برای ساختن یک مدل موفق ضروری است.


شبکه های عصبی مصنوعی در واقع مثلثی هستند که 3 ضلع مفهومی دارند: 1- سیستم تجزیه و تحلیل داده ها، 2- نورون یا سلول عصبی 3- شبکه یا قانون کار گروهی نورونها. در یک تعریف کلاسیک، هایکین می گوید: شبکه عصبی عبارت است از مجموعه ای عظیم از پردازشگرهای موازی که استعداد ذاتی برای ذخیره اطلاعات تجربی و بکارگیری آن دارند و این شبکه دست کم از دو بابت شبیه مغز است: 1- مرحله ای موسوم به یادگیری دارد 2- وزن های سیناپسی جهت ذخیره دانش به کار می روند.


وظیفه شبکه های عصبی یادگیری است. تقریبا چیزی شبیه یادگیری یک کودک خردسال. یادگیری در شبکه های عصبی رایج به شکل Supervised یا یادگیری تحت نظارت است. والدین تصاویر حیوانات مختلف را به کودک نشان می دهند و نام هرکدام رابه کودک می گویند. ما روی یک حیوان، مثلا سگ، تمرکز می کنیم. کودک تصاویر انواع مختلف سگ را می بیند و در کنار اطلاعات ورودی (تصاویر و صدا) برای هر نمونه، به او گفته می شود که این اطلاعات مربوط به یک نوع "سگ" هست یا خیر. بدون اینکه به او گفته شود، سیستم مغز او اطلاعات ورودی را تجزیه و تحلیل می کند و به یافته هایی در زمینه هر یک از پارامترهای ورودی از قبیل "رنگ، اندازه، صدا، داشتن پنجه یا سم یا شاخ" می رسد. پس از مدتی او قادر خواهد بود یک "نوع جدید" از سگ را که قبلا هرگز ندیده است شناسایی کند. از آنجایی که در مورد هر نمونه جانور در مرحله یادگیری به کودک گفته شده که آیا سگ هست یا خیر، این نوع یادگیری، تحت نظارت نامیده می شود. نوع دیگر یادگیری یعنی یادگیری بدون نظارت یا Unsupervised هم توسط شبکه های عصبی شبیه سازی شده است و کاربردهای کمتری دارد.


مقایسه مدلسازی کلاسیک در مقایسه با مدلسازی شبکه عصبی:

الف: سناریوی مدلسازی کلاسیک

جهت درک ویژگیهای مدلسازی بکمک شبکه های عصبی، لازم است که ابتدا مدلسازی کلاسیک را تجسم کنیم.: پارامترهای A,B,C,D سیستم مارا تعریف می کنند، این پارامترها می توانند غلظت مواد شیمیایی و پارامترهای فیزیکی فرمولاسیون باشند. ممکن است پارامترهای فیزیولوژیک یا پاتولوژیک وضعیت بیماران باشند. در کنار هر سری پارامتر که یک نمونه (فرمول شکل دارویی یا بیمار یا هر نمونه دیگر) را تعریف می کند یک پاسخ R وجود دارد که می تواند پایداری فرمول دارویی یا پارامتری نمایانگر وضعیت بیمار باشد.


مدلسازی کلاسیک از نخستین قدم خطای بزرگی را مرتکب می شود که فقط در سیستمهای ساده (خطی یا نزدیک به خطی) قابل صرف نظر است. نخستین قدم در روش کلاسیک برای بررسی داده ها بررسی شاخصهای تمایل به مرکز (میانگین،...) و شاخصهای پراکندگی (انحراف معیار، ...) است. از این مرحله به بعد در روش کلاسیک کاری با تک تک نمونه ها نداریم و اهمیت فردی آنها از بین می رود. بعنوان مثال ممکن است مقدار پارامتر A (مثلا غلظت ماده شیمیایی A) در دمای صفر تا 15 درجه (دما پارامتر B است) روی پایداری دارو یا R تاثیر مثبت داشته باشد، و از 15 درجه به بالا تاثیر منفی داشته باشد، به این ترتیب نگاه همزمان به پارامترهای A و B برای درک تاثیر آن دو بر روی R ضروری است، در حالیکه ما با گرفتن میانگین (یا دیگر مشتقات آماری) از کل ستونهای A وB و سایرین، اثر همراهی مقادیر A و B را از صورت مساله پاک کرده ایم. در هیچ یک از روشهای کلاسیک مدلسازی با داده های فردی (تک تک نمونه ها) کاری نداریم و این یک اشکال مهم است. در واقع روش کلاسیک با عملی شبیه به هوموژن کردن یا آسیاب کردن داده ها، پیچیدگی روابط آنها را محو می کند و به این دلیل از کشف این پیچیدگیها باز می ماند.


در نهایت نیز، در روش کلاسیک ، شما یک معادله سیستم خواهید داشت که داده های جدید را بدون در نظر گرفتن اثر همراهی پارامترهایش با هم استفاده می کند و مجددا این خطا در پیشگویی اثر R توسط سیستم شما تاثیر خواهد داشت. به این ترتیب سیستم کلاسیک در "استخراج" معنی از داده ها ضعیف و با بازده پایین عمل می کند و در بسیاری از موارد از کشف روابط بین داده ها ناکام می ماند.


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


ب: سناریوی مدلسازی شبکه عصبی:

در یک شبکه عصبی نمونه،اطلاعات و پارامترهای ورودی، هرکدام به شکل یک سیگنال الکتریکی تحریک به کانالهای ورودی مدل ریاضی سلول عصبی وارد می شوند. مدل ریاضی یک سلول عصبی را یک Perceptron می نامند. هر یک از کانالهای ورودی (شبیه اتصالات دندریتها) دارای یک ضریب عددی هستند که ((وزن سیناپسی)) نامیده می شود. شدت تحریک الکتریکی در این ضریب ضرب می شود و به جسم سلولی می رسد. اگر مجموع تحریکات رسیده شده به جسم سلولی کافی باشد، نرون شلیک می کند و در مسیرهای خروجی (شبیه آکسونها) جریان الکتریکی ثابتی را ایجاد می کند. تحریکات لایه ورودی سلولها به یک یا چند لایه واسط می رود که به نامه لایه های مخفی (Hidden Layers) موسوم هستند. ادامه جریان تحریکات در این لایه ها (توسط همان وزنهای سیناپسی) طوری هدایت می شود که پیچیدگیهای تاثیرات جریان ورودی را شبیه سازی می کند. سپس تحریکات به لایه خروجی می روند که هدف نهایی ما است. اگر هدف شبکه عصبی پیشگویی کمی باشد، مجموع شدت تحریکات آخرین عصب خروجی، آن عدد خواهد بود. اگر هدف شبکه عصبی طبقه بندی (Classification) باشد، فعالیت یا خاموش بودن نرونهای لایه آخر نمایانگر این امر خواهد بود، مثلا شلیک نرون خروجی نشان دهنده حضور بیماری و خاموش بودن آن نشانه سلامت است. سیستم شبکه عصبی در فرایند یادگیری طوری وزنهای سیناپسی را تغییر می دهد که بتواند با هر سری تحریکات ورودی (یعنی داده های هر نمونه) جریان خروجی مناسب (یعنی همان پاسخ R) را ایجاد کند. چگونگی ریاضی این تغییر وزنها ظریفترین بخش مکانیسم عملکرد شبکه است که بعدها درباره آن بحث خواهیم کرد.



طرز کار مدل سلول عصبی :

مدل ریاضی یک سلول عصبی که از روی الگوی ریاضی آن ساخته شده است Perceptron نامیده می شود. خطوط ورودی (Input) سیگنالهای تحریکی یا مهاری را به جسم سلولی می آورند که همان پارامترهای تعریف کننده سیستم هستند. مثلا فرض کنیم که غلظت یک ماده  0.6 mol/lit است ، این عدد یکی از پارامترهای تعریف کننده نمونه دارویی ما است، پس این پارامتر بعنوان یک سیگنال الکتریکی با شدت 0.6 به یک کانال ورودی می رود. در ابتدای هر کانال ورودی یک ضریب عددی وجود دارد که شدت تحریک در این عدد ضرب می شوند و حاصل آن که یک Weighted Input نامیده می شود اگر مثبت باشد یک سیگنال تحریکی و اگر منفی باشد یک سیگنال مهاری بر جسم سلولی است. میزان کلیه این سیگنالهای تحریکی یا مهاری که از ورودی های مختلف به جسم سلولی می رسند با هم بصورت خطی جمع می شود (Linear Combination of Weighted Inputs). اگر این حاصل جمع از میزان آستانه یا Threshold کمتر باشد سلول عصبی خاموش می ماند، و در غیر این صورت سلول شلیک میکند (Fire) و جریان الکتریکی ثابتی در خروجی (یا خروجی ها) ایجاد می کند. در واقع خروجی Perceptron معادله ریاضی زیر تعیین می شود:


xi*wi>Threshold output =1

xi*wi<Threshold output =0

که در آن xi سیگنال ورودی شمارهi و wi وزن سیناپسی مربوط به آن ورودی است. به این ترتیب مقادیر خاصی وزن های سیناپسی می توانند کاری کنند که سلول عصبی ما روی ورودی های آنالوگ (عددی) همان عملیات منطقی را انجام دهد که یک دروازه منطقی بر روی داده های رقمی (دیجیتال = صفر یا یک) انجام می دهد. به همین ترتیب با دستکاری وزنهای سیناپسی می توان دروازه های منطقی AND و NOT را هم ایجاد کرد. عملیات منطقی پیچیده نیاز به دروازه های دیگری از جمله XOR یا Exclusive OR دارد، این دروازه ها توسط یک سلول قابل شبیه سازی نیستند اما ترکیبی از سلولها می توانند آنها را شبیه سازی کنند.


در عمل تابع ریاضی جسم سلولی نرون تابع کاملا دیجیتال با خروجی 0 یا 1 نیست. این تابع می تواند تابع سیگموئید با یا تابع تانژانت هایپربولیک باشد، و عملا ثابت شده که هر تابع غیر خطی دیگری می تواند کم و بیش جایگزین آن شود، از این رو برنامه های شبیه سازی ANN معمولا انتخاب آن را به عهده کاربر می گذارند. از این تابع با نامهای Active Function, Step Function, Nodal Function نیز یاد می شود.



طرز کار شبکه عصبی:

از بهم پیوستن سلولهای مدل عصبی، مدل شبکه عصبی (Artificial Neural Network) بوجود می آید. وضعیت نسبی سلولها در شبکه (تعداد و گروه بندی و نوع اتصالات آنها) را توپولوژی شبکه می گویند. توپولوژی در واقع سیستم اتصال سخت افزار نورونها به یکدیگر است، که توام با نرم افزار مربوطه (یعنی روش ریاضی جریان اطلاعات و محاسبه وزنها) نوع عملکرد شبکه عصبی را تعیین می کنند. در این توپولوژی یک لایه ورودی وجود دارد که اطلاعات را دریافت می کند، تعدادی لایه مخفی وجود دارند که اطلاعات را از لایه های قبلی می گیرند و در نهایت یک لایه خروجی وجود دارد که نتیجه محاسبات به آنها می رود و جوابها در آن قرار می گیرند. هر سلول در هر لایه به کلیه سلولهای لایه مجاور بعدی متصل می شود. اتصال به خود سلولها، به لایه قبلی، و پرش اتصالات در طول لایه ها مجاز نمی باشد. این توپولوژی به نام Feed forward معروف است زیرا جریان اطلاعات همیشه از ورودی به سوی خروجی است. بین 90 تا 95% کاربردهای شبکه های عصبی امروزی مربوط به این توپولوژی است.

در ابتدا، وزنهای سیناپسی ، مقادیر اتفاقی (راندوم) هستند. علت این مسئله به روش محاسبه وزنها در سیستم NN بر می گردد، که یک روش Iterative یا مبتنی بر تکرار است. فرض کنید که می خواهیم معادله زیر را حل کنیم:

x4+x3+15.5x2+ex+2sin(x) =7.24

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


در شروع مرحله یادگیری یا Learning یا Training ، اطلاعات مربوط به نمونه ها یکی یکی به شبکه داده می شود. بطور مثال از طرفی غلظتهای شیمیایی و پارامترهای فیزیکی فرمولاسیون تک تک نمونه ها به لایه ورودی داده شده و از سوی دیگر مقدار تجربی و اندازه گیری شده پایداری آنها نیز به حافظه شبکه داده می شود (بعنوان متغیری در حافظه کامپیوتر و خارج از توپولوژی شبکه نگهداری می شود). اطلاعات ورودی در شبکه جریان پیدا می کند به این معنی که در وزنهای سیناپسی ضرب شده و نتیجه فعالیت هر نورون بصورت سیگنالی ، خود ورودی نورونهای لایه بعدی خواهد بود. در نهایت، در پایان جریان اطلاعات هرنمونه ، شبکه پاسخی در لایه خروجی خواهد داشت. مثلا اگر هدف پیشگویی پایداری فرمولاسیون است، وزن تنها نورون لایه خروجی نمایشگر ان خواهد بود و در این مرحله ابتدایی، به دلیل استفاده از وزنهای سیناپسی اتفاقی، پاسخ ایجاد شده با میزان تجربی پایداری تفاوت خواهد داشت. این تفاوت (Prediction Error) که تفاضل میزان پیشگویی شده پاسخ توسط شبکه و میزان اندازه گیری شده تجربی آن است باید به صفر نزدیک شود تا شبکه از پیشگویی خوبی برخوردار شود.


معمولترین روال (Routine) برای کاهش این خطا ، روش توزیع معکوس خطا (Back propagation of error) است که در 95% کاربردهای امروزی شبکه عصبی، روش مورد استفاده به همراه توپولوژی Feed Forward است. در این روش، پس از محاسبه خطای پیشگویی، وزنهای سیناپسی از آخرین لایه به سوی نخستین لایه، بتدریج طوری تغییر می کنند که خطای پیشگویی کمتر شود. در واقع Back propagation ، سرشکن کردن خطا بر روی سلولهای یک لایه و نیز لایه های بعدی است. پس از این ، اطلاعات نمونه دوم به شبکه خورانده می شود. مسلما، با همان وزنهای سیناپسی، نمونه جدید مجددا خطا خواهد داشت. بنابراین روش توزیع معکوس مجددا دست به کار شده و وزنها را طوری تغییر می دهد که کمترین خطا را (هم برای این نمونه و هم برای نمونه پیشین) ایجاد کنند. به این ترتیب پس از خوراندن تعداد نمونه کافی به ورودی شبکه، تمام فضای n بعدی روابط پارامترها توسط شبکه تجزیه می شود. در این حالت گفته می شود که شبکه Converge شده است به این معنی که در منحنی خطای پیشگویی به مقعر ترین نقطه (minimum) رسیده است. این به معنای موفقیت در مرحله یادگیری است و شبکه Converge شده آماده است تا برای پیشگویی بکار رود.


اگر همه شرایط ایده آل باشد، حال نوبت استفاده از شبکه است. با وارد کردن اطلاعات مربوطه به یک نمونه جدید می توانید میزان پایداری آن را پیشگویی کنید. این در حالی است که هیچگونه فرضیه ای در باره نحوه برهم کنش و روابط میان پارامترهای ورودی نداشتید و هیچ گونه محاسبه ریاضی نیز انجام ندادید. این فوق العاده است!


لازم است که نکاتی چند درباره توپولوژی شبکه بدانیم. یکی از پارامترهایی که توسط کاربر در کلیه برنامه های شبیه سازی شبکه های عصبی قابل کنترل است تعداد سلولهای هر لایه و تعداد لایه ها است. هر سلول عصبی یک گره (Node) نیز گفته می شود.


تعداد سلولهای لایه ورودی به تعداد ورودی ها است. در عمل سعی بر این است که کلیه پارامترهایی که در پاسخ تاثیر دارند در نظر گرفته شوند، البته باید در نظر گرفت که اطلاعات بی استفاده ورودی کار شبکه را مشکل تر می کنند، زیرا اگر چه شبکه عصبی به نویز (داده های دارای خطا) مقاوم است اما در هر صورت اگر میزان نویز بیش از حد زیاد باشد ممکن است شبکه نتواند Converge شود.


تعداد گره ها در لایه خروجی بسته به پیشگویی مورد نظر ما دارد. اگر قرار است شبکه میزان پایداری دارو را پیشگویی کند، پس در ازای داده های هر نمونه در مرحله یادگیری، یک عدد (میزان پایداری تجربی اندازه گیری شده) به آن داده می شود. به این ترتیب یک سلول در لایه خروجی کافی خواهد بود که مجموعه کلیه تحریکات وارد بر آن (Sum of Weighted Inputs) همان عدد مورد نظر ما خواهد بود. اگر قرار است که شبکه، سرطانی بودن یا نبودن یک بیمار را پیشگویی کند، پس در ازای داده های هر بیمار،در مرحله یادگیری یک ستون حاوی صفر یا یک به شبکه داده می شود، صفر به معنای بیمار سالم و یک به معنای بیمار سرطانی خواهد بود. به این ترتیب، یک سلول در لایه خروجی کافی خواهد بود، که فعالیت آن به معنی یک (سرطانی) و خاموش بودن آن به معنی صفر (سالم) خواهد بود. اگر قرار بر این است که شبکه گروه خونی بیمار را پیشگویی کند، به تعداد گروههای خونی مورد نظر گره خواهیم داشت که روشن شدن هر کدام نشانه تعلق بیمار به یک گروه خونی خاص خواهد بود.


تعداد لایه ها و تعداد گره ها در هر لایه مخفی از پارامترهایی است که توسط کاربر قابل تنظیم است. با بررسی های دانشمندان مشخص شده که سیستم ادراک بشر (اعم از سیستم مرکزی مغز و لایه های عصبی گسترده در بدن) جمعا یک شبکه 6 تا 7 لایه را تشکیل می دهند. هر چه تعدادلایه ها بیشتر باشد، سیستم قادر به درک پیچیدگیهای بیشتری است. از لحاظ ریاضی اصطلاحا گفته می شود که افزودن هر لایه ، یک مرحله به قدرت Encode/Decode اطلاعات می افزاید. بیشتر مسائلی که محققین با آن سروکار دارند با 2 تا 3 لایه مخفی قابل حل هستند. زیاد بودن لایه ها دقت عددی پیشگویی را کم می کند، و ممکن است مانع Converge شدن شبکه گردد.


نکته دیگر تعداد گره ها در هر لایه است. بطور تخمینی تعداد مناسب گره های لایه های مخفی بین نصف تا یک و نیم برابر تعداد گره های لایه ورودی (یعنی تعداد ورودی های سیستم) است. منابع مختلف مقیاسهای تجربی متفاوتی بعنوان حدس اولیه برای این تعداد پیشنهاد کرده اند. در قسمتهای بعدی خواهیم دید که کم بودن مفرط تعداد گره ها قدرت تجزیه و تحلیل ( و بدنبال آن دقت عددی پیشگویی) را کاهش می دهد. از سویی زیاد بودن مفرط این تعداد منجر می شود که سیستم، بجای تجزیه و تحلیل داده ها، آنها را حفظ کند (Memorizing) که این مسئله بسیا ر مهم در قسمتهای آتی بیشتر بحث خواهد شد.


میزان یادگیری:

یک اتصال سیناپسی واحد بین دو نورون را در نظر بگیرید. فرض کنید که روال توزیع معکوس دستورالعملی صادر کرده که وزن این اتصال از میزان W1 باید به W2 تغییر یابد. تغییر وزن W2-W1 را گرادیان وزنی می نامند. این تغییر وزن برای کاهش خطای پیشگویی نمونه شماره 2 لازم است اما سبب افزایش خطای پیشگویی نمونه شماره 1 می شود. بسته به نوع سیستم، ما می توانیم تعیین کنیم که اهمیت هر دستورالعمل توزیع معکوس چقدر است، یعنی سیستم د هر مرحله چقدر باید برای کاهش خطای پیشگویی عمل کند.


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


به این منظور پارامتری به نام میزان یادگیری یا Learning rate تعریف و در گرادیان ضرب می شود که گفته می شود متناسب با اهمیت هر نمونه است. اگر اهمیت هر نمونه زیاد باشد (مشابه اولین گروه سیستمها) این پارامتر باید نزدیک به 1 باشد. اگر اهمیت هر نمونه کم باشد (مشابه دسته دوم سیستمها) این پارامتر باید کمتر باشد.


Momentum

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


در کل، هر وزن سیناپسی W1 هنگامی که قرار است به وسیله ضریب g به میزان W2 تغییر یابد، مقدار g تحت تاثیر Lr (میزان یادگیری) و mk (ضریب مومنتوم) قرار می گیرد، که میزان Lr برای هر سیستم ثابت است ، اما میزان mk تحت تاثیر

دو عامل است، یکی میزان momentum تعیین شده (که حداکثر mk را تعیین می کند) و یکی سابقه تغییر وزن در همان گره سیناپسی خاص که اگر در چند مرحله متوالی در وزن سیناپسی مذکور تغییر مشابه (کاهشی یا افزایشی) مشاده شود میزان mk زیاد شده و به momentum نزدیک می شود. به این ترتیب، برخلاف تاثیر ضریب یادگیری، تاثیر مومنتوم عملا بر روی اتصالات سیناپسی مختلف متفاوت است و تنها میزان حداکثر مجاز آن برای کل سیستم یکسان است.