نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی پرتال اطلاعاتی
  • خانه
  • ویندوز 7، XP
  • شبکه های عصبی کار می کنند. به زبان ساده در مورد پیچیده: شبکه های عصبی چیست؟

شبکه های عصبی کار می کنند. به زبان ساده در مورد پیچیده: شبکه های عصبی چیست؟

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

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

کمی تاریخ

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

گام مهم بعدی، توسعه اولین الگوریتم برای محاسبات ANN توسط دونالد هب در سال 1949 بود که برای چندین دهه آینده اساسی شد. در سال 1958، فرانک روزنبلات پارسپترون را توسعه داد، سیستمی که فرآیندهای مغز را تقلید می کند. زمانی، این فناوری مشابه نداشت و هنوز در شبکه های عصبی اساسی است. در سال 1986، دانشمندان آمریکایی و شوروی، عملاً به طور همزمان، مستقل از یکدیگر، روش اساسی آموزش پرسپترون چند لایه را به طور قابل توجهی بهبود بخشیدند. در سال 2007، شبکه های عصبی دستخوش تولدی دوباره شدند. جفری هینتون، دانشمند کامپیوتر بریتانیایی، یک الگوریتم یادگیری عمیق برای شبکه های عصبی چندلایه را پیشگام کرد، که برای مثال اکنون برای کار با ماشین های خودران استفاده می شود.

به طور خلاصه در مورد اصل مطلب

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

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

بسته به حوزه کاربرد، یک شبکه عصبی را می توان به روش های مختلفی تفسیر کرد. برای مثال، از نقطه نظر یادگیری ماشین، ANN یک روش تشخیص الگو است. از نقطه نظر ریاضی، این یک مسئله چند پارامتری است. از دیدگاه سایبرنتیک، مدلی از کنترل تطبیقی ​​رباتیک است. برای هوش مصنوعی، ANN یک جزء اساسی برای مدل‌سازی هوش طبیعی با استفاده از الگوریتم‌های محاسباتی است.

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

وضعیت امروز

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

امروزه بازار شبکه های عصبی بسیار بزرگ است - میلیاردها و میلیاردها دلار. همانطور که تمرین نشان می دهد، بیشتر فناوری های شبکه های عصبی در سراسر جهان تفاوت کمی با یکدیگر دارند. با این حال، استفاده از شبکه‌های عصبی یک تمرین بسیار پرهزینه است که در بیشتر موارد فقط توسط شرکت‌های بزرگ قابل پرداخت است. برای توسعه، آموزش و آزمایش شبکه های عصبی، قدرت محاسباتی زیادی مورد نیاز است، بدیهی است که بازیگران بزرگ در بازار فناوری اطلاعات به اندازه کافی از این قدرت برخوردار هستند. از جمله شرکت های اصلی توسعه دهنده در این زمینه می توان به Google DeepMind، Microsoft Research، IBM، Facebook و Baidu اشاره کرد.

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

چرا شبکه های عصبی هنوز از مغز انسان دور هستند؟

مهم‌ترین تفاوتی که اساس و کارایی سیستم را تغییر می‌دهد، انتقال سیگنال متفاوت در شبکه‌های عصبی مصنوعی و در شبکه بیولوژیکی نورون‌ها است. واقعیت این است که در ANN، نورون ها مقادیری را منتقل می کنند که مقادیر واقعی هستند، یعنی اعداد. در مغز انسان تکانه هایی با دامنه ثابت منتقل می شود و این تکانه ها تقریباً آنی هستند. از این رو، تعدادی از مزایای شبکه های عصبی انسان وجود دارد.

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

نتیجه

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

برای کسانی که می خواهند بیشتر بدانند

  • جنگ بزرگ عصبی: گوگل واقعاً چه کاری انجام می دهد
  • چگونه کامپیوترهای شناختی می توانند آینده ما را تغییر دهند
الگوریتم ها، یادگیری ماشینی

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

نورون جابجایی چیست؟


قبل از شروع موضوع اصلی خود، باید مفهوم نوع دیگری از نورون - نورون جابجایی را معرفی کنیم. نورون بایاس یا بایاس نورون سومین نوع نورون است که در اکثر شبکه های عصبی استفاده می شود. ویژگی این نوع نورون این است که ورودی و خروجی آن همیشه برابر با 1 است و هرگز سیناپس ورودی ندارند. نورون‌های جابجایی می‌توانند یکی یکی در یک لایه در شبکه عصبی وجود داشته باشند، یا کاملاً وجود نداشته باشند، 50/50 نمی‌تواند وجود داشته باشد (وزن‌ها و نورون‌هایی که نمی‌توانند قرار بگیرند به رنگ قرمز در نمودار نشان داده شده‌اند). اتصالات برای نورون های جابجایی مانند نورون های معمولی است - با تمام نورون های سطح بعدی، با این تفاوت که هیچ سیناپسی بین دو نورون سوگیری وجود ندارد. بنابراین، آنها را می توان روی لایه ورودی و همه لایه های پنهان قرار داد، اما نه در لایه خروجی، زیرا آنها به سادگی چیزی برای ایجاد ارتباط ندارند.

نورون سوگیری برای چیست؟



نورون جابجایی برای اینکه بتوان با تغییر نمودار تابع فعال سازی به راست یا چپ، نتیجه خروجی را به دست آورد، مورد نیاز است. اگر گیج کننده به نظر می رسد، بیایید به یک مثال ساده نگاه کنیم که در آن یک نورون ورودی و یک نورون خروجی وجود دارد. سپس می توان تعیین کرد که خروجی O2 برابر با ورودی H1 ضرب در وزن آن خواهد بود و از تابع فعال سازی عبور می کند (فرمول موجود در عکس سمت چپ). در مورد خاص خود، از یک سیگموئید استفاده خواهیم کرد.

از درس ریاضی مدرسه می دانیم که اگر تابع y = ax + b را بگیریم و مقادیر آن را "a" تغییر دهیم، شیب تابع تغییر می کند (رنگ خطوط روی نمودار سمت چپ) و اگر "b" را تغییر دهیم، تابع را به راست یا چپ (رنگ خطوط روی نمودار سمت راست) تغییر می دهیم. بنابراین "a" وزن H1 و "b" وزن نورون بایاس B1 است. این یک مثال تقریبی است، اما این روش کار می کند (اگر به عملکرد فعال سازی در سمت راست در تصویر نگاه کنید، شباهت بسیار زیادی بین فرمول ها مشاهده خواهید کرد). یعنی وقتی در حین تمرین، وزن نورون های مخفی و خروجی را تنظیم می کنیم، شیب تابع فعال سازی را تغییر می دهیم. با این حال، تنظیم وزن نورون‌های سوگیری می‌تواند به ما این فرصت را بدهد که تابع فعال‌سازی را در امتداد محور X تغییر دهیم و نواحی جدیدی را بگیریم. به عبارت دیگر، اگر نقطه مسئول راه حل شما، همانطور که در نمودار سمت چپ نشان داده شده است، قرار داشته باشد، شبکه عصبی شما هرگز نمی تواند بدون استفاده از نورون های بایاس مشکل را حل کند. بنابراین، شما به ندرت شبکه های عصبی را بدون نورون های سوگیری پیدا می کنید.

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

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

ورودی = H1 * w1 + H2 * w2 + b3
b3 = تعصب * w3

از آنجایی که خروجی آن همیشه 1 است، می توانیم به سادگی تصور کنیم که یک سیناپس اضافی با یک وزن داریم و این وزن را بدون ذکر خود نورون به مجموع اضافه کنیم.

چگونه می توان مجلس شورای ملی را وادار به پاسخ صحیح کرد؟

پاسخ ساده است - شما باید او را آموزش دهید. با این حال، به همان اندازه که پاسخ ساده است، اجرای آن از نظر سادگی، جای دلخواه را دارد. روش‌های مختلفی برای آموزش شبکه‌های عصبی وجود دارد که به نظر من 3 مورد از آنها را که جالب‌ترین آنهاست را مشخص می‌کنم:
  • روش پس انتشار
  • انتشار ارتجاعی (Rprop)
  • الگوریتم ژنتیک
Rprop و GA در مقالات دیگر مورد بحث قرار خواهند گرفت، اما اکنون نگاهی به اصول اولیه خواهیم انداخت - روش انتشار پس‌انداز، که از الگوریتم نزول گرادیان استفاده می‌کند.

Gradient Descent چیست؟

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


با نگاهی به این نمودار، متوجه خواهیم شد که نمودار تابع f (w) وابستگی خطا به وزن انتخاب شده است. در این نمودار، ما به حداقل جهانی علاقه مند هستیم - نقطه (w2، e2) یا به عبارت دیگر، مکانی که نمودار به محور x نزدیکتر است. این نکته به این معنی است که با انتخاب وزن w2 کوچکترین خطا - e2 و در نتیجه بهترین نتیجه ممکن را خواهیم گرفت. روش نزول گرادیان به ما کمک می کند تا این نقطه را پیدا کنیم (شیب به رنگ زرد در نمودار نشان داده شده است). بر این اساس، هر وزن در شبکه عصبی، نمودار و گرادیان مخصوص به خود را خواهد داشت و هر کدام نیاز به یافتن حداقل جهانی دارند.

پس این گرادیان چیست؟ گرادیان برداری است که شیب یک شیب را مشخص می کند و جهت آن را نسبت به هر یک از نقاط روی سطح یا نمودار نشان می دهد. برای یافتن گرادیان، باید مشتق نمودار را در یک نقطه مشخص بگیرید (همانطور که در نمودار نشان داده شده است). با حرکت در جهت این شیب، به آرامی به سمت مناطق پست سر می‌خوریم. حال تصور کنید که خطا یک اسکی باز است و نمودار تابع یک کوه است. بر این اساس، اگر خطا 100٪ باشد، اسکی باز در بالای کوه است و اگر خطا 0٪ باشد، در دشت قرار دارد. مانند همه اسکی بازان، حشره تمایل دارد در سریع ترین زمان ممکن پایین بیاید و ارزش آن را کاهش دهد. در نهایت باید به نتیجه زیر برسیم:


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

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


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

روش انتشار برگشتی (MPA) چیست؟

بنابراین به نقطه‌ای رسیده‌ایم که می‌توانیم در مورد چگونگی اطمینان از اینکه شبکه عصبی شما می‌تواند به درستی یاد بگیرد و تصمیمات درستی بدهد بحث کنیم. MOP در این GIF بسیار خوب ارائه می شود:


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

حالا بیایید از جایی که در مقاله قبلی محاسبات را کنار گذاشتیم ادامه دهیم.

این وظایف از مقاله قبلی


داده ها: I1 = 1، I2 = 0، w1 = 0.45، w2 = 0.78، w3 = -0.12، w4 = 0.13، w5 = 1.5، w6 = 2.3.

ورودی H1 = 1 * 0.45 + 0 * -0.12 = 0.45
خروجی H1 = سیگموئید (0.45) = 0.61

ورودی H2 = 1 * 0.78 + 0 * 0.13 = 0.78
خروجی H2 = سیگموئید (0.78) = 0.69

ورودی O1 = 0.61 * 1.5 + 0.69 * -2.3 = 0.672 -
خروجی O1 = سیگموئید (-0.672) = 0.33

O1ideal = 1 (0xor1 = 1)

خطا = ((1-0.33) ^ 2) /1=0.45

نتیجه 0.33 است، خطا 45٪ است.


از آنجایی که ما قبلاً نتیجه NN و خطای آن را محاسبه کرده ایم، می توانیم بلافاصله به MPA برویم. همانطور که قبلا ذکر کردم، الگوریتم همیشه با نورون خروجی شروع می شود. در این صورت، بیایید مقدار آن را محاسبه کنیم؟ (دلتا) با فرمول 1.

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


بنابراین، محاسبات ما برای نقطه O1 به این صورت خواهد بود.

راه حل

خروجی O1 = 0.33
O1 ایده آل = ​​1
خطا = 0.45

O1 = (1 - 0.33) * ((1 - 0.33) * 0.33) = 0.148


این محاسبات نورون O1 را کامل می کند. به یاد داشته باشید که پس از محاسبه دلتای یک نورون، باید فورا وزن تمام سیناپس های خروجی این نورون را به روز کنیم. از آنجایی که در مورد O1 وجود ندارند، به سراغ نورون های سطح پنهان می رویم و همین کار را انجام می دهیم، با این تفاوت که اکنون فرمول دوم را برای محاسبه دلتا داریم و ماهیت آن این است که مشتق تابع فعال سازی را از ورودی ضرب کنیم. ارزش حاصل از مجموع محصولات تمام وزن های خروجی و دلتای نورونی که این سیناپس با آن متصل است. اما چرا فرمول ها متفاوت است؟ نکته این است که تمام هدف MOR انتشار خطای نورون های خروجی به تمام وزن های شبکه عصبی است. خطا را می توان فقط در سطح خروجی محاسبه کرد، همانطور که قبلاً انجام دادیم، دلتای را نیز محاسبه کردیم که این خطا از قبل وجود دارد. در نتیجه، اکنون به جای خطا، از دلتای استفاده می کنیم که از نورون به نورون دیگر منتقل می شود. در آن صورت، بیایید دلتای H1 را پیدا کنیم:

راه حل

خروجی H1 = 0.61
w5 = 1.5
O1 = 0.148

H1 = ((1 - 0.61) * 0.61) * (1.5 * 0.148) = 0.053


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

در اینجا نقطه A نقطه ابتدای سیناپس و نقطه B در انتهای سیناپس است. بنابراین، می توانیم گرادیان w5 را به صورت زیر محاسبه کنیم:

راه حل

خروجی H1 = 0.61
O1 = 0.148

GRADw5 = 0.61 * 0.148 = 0.09


اکنون ما تمام داده های لازم برای به روز رسانی وزن w5 را داریم و این کار را به لطف عملکرد MOP انجام خواهیم داد، که مقداری را محاسبه می کند که یک یا آن وزن باید تغییر کند و به نظر می رسد این است:


من قویاً توصیه می کنم که قسمت دوم عبارت را نادیده نگیرید و از لحظه استفاده کنید زیرا این به شما امکان می دهد با حداقل های محلی مشکلی نداشته باشید.

در اینجا ما 2 ثابت را می بینیم که قبلاً در مورد الگوریتم نزول گرادیان صحبت کردیم: E (epsilon) - نرخ یادگیری،؟ (آلفا) - لحظه. با ترجمه فرمول به کلمات، دریافت می کنیم: تغییر وزن سیناپس برابر است با ضریب سرعت یادگیری ضرب در گرادیان این وزن، لحظه ضرب شده در تغییر قبلی در این وزن را اضافه کنید (در تکرار اول برابر است با 0). در این صورت تغییر وزن w5 را محاسبه کرده و با افزودن W5 به آن مقدار آن را به روز می کنیم.

راه حل

E = 0.7
? = 0.3
w5 = 1.5
GRADw5 = 0.09
w5 (i-1) = 0

W5 = 0.7 * 0.09 + 0 * 0.3 = 0.063
w5 = w5 + w5 = 1.563


بنابراین، پس از اعمال الگوریتم، وزن ما 0.063 افزایش یافت. حالا من به شما پیشنهاد می کنم همین کار را برای H2 انجام دهید.

راه حل

خروجی H2 = 0.69
w6 = -2.3
O1 = 0.148
E = 0.7
? = 0.3
w6 (i-1) = 0

H2 = ((1 - 0.69) * 0.69) * (-2.3 * 0.148) = -0.07

GRADw6 = 0.69 * 0.148 = 0.1

W6 = 0.7 * 0.1 + 0 * 0.3 = 0.07

W6 = w6 + W6 = -2.2


و البته، I1 و I2 را فراموش نکنید، زیرا آنها همچنین دارای سیناپس های وزنی هستند که ما نیز باید آنها را به روز کنیم. با این حال، به یاد داشته باشید که ما نیازی به یافتن دلتا برای نورون های ورودی نداریم، زیرا آنها سیناپس ورودی ندارند.

راه حل

w1 = 0.45، w1 (i-1) = 0
w2 = 0.78، w2 (i-1) = 0
w3 = -0.12،؟ w3 (i-1) = 0
w4 = 0.13، w4 (i-1) = 0
H1 = 0.053
H2 = -0.07
E = 0.7
? = 0.3

GRADw1 = 1 * 0.053 = 0.053
GRADw2 = 1 * -0.07 = -0.07
GRADw3 = 0 * 0.053 = 0
GRADw4 = 0 * -0.07 = 0

W1 = 0.7 * 0.053 + 0 * 0.3 = 0.04
? w2 = 0.7 * -0.07 + 0 * 0.3 = -0.05
w3 = 0.7 * 0 + 0 * 0.3 = 0
w4 = 0.7 * 0 + 0 * 0.3 = 0

W1 = w1 + W1 = 0.5
w2 = w2 +؟ w2 = 0.73
w3 = w3 +؟ w3 = -0.12
w4 = w4 + w4 = 0.13


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

راه حل

I1 = 1
I2 = 0
w1 = 0.5
w2 = 0.73
w3 = -0.12
w4 = 0.13
w5 = 1.563
w6 = -2.2

ورودی H1 = 1 * 0.5 + 0 * -0.12 = 0.5
خروجی H1 = سیگموئید (0.5) = 0.62

ورودی H2 = 1 * 0.73 + 0 * 0.124 = 0.73
خروجی H2 = سیگموئید (0.73) = 0.675

ورودی O1 = 0.62 * 1.563 + 0.675 * -2.2 = -0.51
خروجی O1 = سیگموئید (-0.51) = 0.37

O1ideal = 1 (0xor1 = 1)

خطا = ((1-0.37) ^ 2) /1=0.39

نتیجه 0.37 است، خطا 39٪ است.


همانطور که می بینیم پس از یک بار تکرار MPA، ما موفق شدیم خطا را 0.04 (6٪) کاهش دهیم. اکنون باید این کار را بارها و بارها تکرار کنید تا زمانی که خطای شما به اندازه کافی کوچک شود.

چه چیز دیگری باید در مورد فرآیند یادگیری بدانید؟

یک شبکه عصبی را می توان با یا بدون معلم آموزش داد (یادگیری تحت نظارت، بدون نظارت).

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

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

همچنین روش جالبی وجود دارد یادگیری تقویتی(یادگیری تقویتی). این روش سزاوار یک مقاله جداگانه است، اما من سعی خواهم کرد به طور خلاصه ماهیت آن را شرح دهم. این روش زمانی قابل اجراست که بتوانیم بر اساس نتایج دریافتی از شورای ملی، آن را ارزیابی کنیم. مثلاً ما می خواهیم به مجلس ملی یاد بدهیم که PAC-MAN بازی کند، آن وقت هر بار که مجلس ملی امتیازهای زیادی به دست آورد، تشویقش می کنیم. به عبارت دیگر، ما به NS این حق را می دهیم که هر راهی را برای رسیدن به هدف بیابد، به شرطی که نتیجه خوبی داشته باشد. به این ترتیب، شبکه شروع به درک آنچه می‌خواهد از آن به دست آورد و سعی می‌کند بهترین راه را برای دستیابی به این هدف بدون ارائه مداوم داده‌ها توسط «معلم» بیابد.

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

مختصری در مورد هر روش:

تصادفی(گاهی اوقات به صورت آنلاین نیز نامیده می شود) این روش طبق اصل زیر کار می کند - پیدا شد؟ w بلافاصله وزن مربوطه را به روز کنید.

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

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

هایپرپارامترها چیست؟

هایپرپارامترها مقادیری هستند که باید به صورت دستی و اغلب با آزمون و خطا انتخاب شوند. از جمله این مقادیر عبارتند از:
  • لحظه و سرعت یادگیری
  • تعداد لایه های پنهان
  • تعداد نورون ها در هر لایه
  • وجود یا عدم وجود نورون های جابجایی
در انواع دیگر شبکه های عصبی، فراپارامترهای اضافی وجود دارد، اما ما در مورد آنها صحبت نمی کنیم. انتخاب فراپارامترهای مناسب بسیار مهم است و مستقیماً بر همگرایی شبکه عصبی شما تأثیر می گذارد. درک اینکه آیا از نورون های سوگیری استفاده کنید یا نه به اندازه کافی آسان است. تعداد لایه‌ها و نورون‌های پنهان در آن‌ها را می‌توان بر اساس یک قانون ساده با نیروی بی‌رحم محاسبه کرد - هر چه تعداد نورون‌ها بیشتر باشد، نتیجه دقیق‌تر است و زمان بیشتری را برای آموزش آن صرف خواهید کرد. با این حال، لازم به یادآوری است که برای حل مسائل ساده نباید یک شبکه عصبی با 1000 نورون بسازید. اما با انتخاب لحظه و سرعت یادگیری، همه چیز کمی پیچیده تر است. این فراپارامترها بسته به کار و معماری شبکه عصبی متفاوت خواهند بود. به عنوان مثال، برای راه حل XOR، نرخ یادگیری می تواند در محدوده 0.3 - 0.7 باشد، اما در یک شبکه عصبی که قیمت سهام را تجزیه و تحلیل و پیش بینی می کند، نرخ یادگیری بالاتر از 0.00001 منجر به همگرایی ضعیف شبکه عصبی می شود. اکنون نباید روی هایپرپارامترها تمرکز کنید و سعی کنید به طور کامل نحوه انتخاب آنها را درک کنید. این با تجربه همراه خواهد بود، اما در حال حاضر به شما توصیه می کنم فقط آزمایش کنید و به دنبال نمونه هایی برای حل یک مشکل خاص در شبکه باشید.

همگرایی چیست؟



همگرایی نشان می دهد که آیا معماری شبکه عصبی درست است و آیا فراپارامترها به درستی مطابق با وظیفه در دست انتخاب شده اند یا خیر. فرض کنید برنامه ما یک خطای NS را در هر تکرار به گزارش خروجی می دهد. اگر با هر تکرار خطا کاهش یابد، در این صورت ما در مسیر درستی هستیم و شبکه عصبی ما همگرا می شود. اگر خطا بالا و پایین بپرد یا در یک سطح مشخص ثابت شود، NN همگرا نمی شود. در 99٪ موارد، این مشکل با تغییر پارامترها حل می شود. 1% باقیمانده به این معنی است که شما در معماری شبکه عصبی خطا دارید. همچنین اتفاق می افتد که همگرایی تحت تأثیر بازآموزی شبکه عصبی قرار می گیرد.

بازآموزی چیست؟

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


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

نتیجه

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

بر این اساس، شبکه عصبی دو عدد را به عنوان ورودی می گیرد و باید عدد دیگری را در خروجی بدهد - پاسخ. حالا در مورد خود شبکه های عصبی.

شبکه عصبی چیست؟


شبکه عصبی مجموعه ای از نورون ها است که توسط سیناپس ها به هم متصل شده اند. ساختار شبکه عصبی مستقیماً از زیست شناسی وارد دنیای برنامه نویسی شد. به لطف این ساختار، دستگاه توانایی تجزیه و تحلیل و حتی به خاطر سپردن اطلاعات مختلف را به دست می آورد. شبکه های عصبی همچنین قادرند نه تنها اطلاعات دریافتی را تجزیه و تحلیل کنند، بلکه می توانند آن را از حافظه خود نیز بازتولید کنند. برای علاقه مندان، حتما 2 ویدیو از TED Talks را تماشا کنید: ویدئو 1 , ویدئو 2). به عبارت دیگر، شبکه عصبی یک تفسیر ماشینی از مغز انسان است که حاوی میلیون ها نورون است که اطلاعات را به شکل تکانه های الکتریکی منتقل می کنند.

شبکه های عصبی چیست؟

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

شبکه های عصبی برای چیست؟

شبکه های عصبی برای حل مسائل پیچیده ای که نیاز به محاسبات تحلیلی مشابه محاسبات مغز انسان دارند، استفاده می شود. رایج ترین کاربردهای شبکه های عصبی عبارتند از:

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

پیش بینی- توانایی پیش بینی مرحله بعدی. به عنوان مثال، صعود یا سقوط یک سهم بر اساس وضعیت بازار سهام.

به رسمیت شناختن- در حال حاضر، گسترده ترین استفاده از شبکه های عصبی. هنگامی که به دنبال عکسی هستید یا در دوربین های تلفن هنگامی که موقعیت صورت شما را تشخیص می دهد و آن را برجسته می کند و موارد دیگر در Google استفاده می شود.

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

نورون چیست؟

نورون یک واحد محاسباتی است که اطلاعات را دریافت می کند، محاسبات ساده ای را روی آن انجام می دهد و آن را بیشتر ارسال می کند. آنها به سه نوع اصلی تقسیم می شوند: ورودی (آبی)، پنهان (قرمز) و خروجی (سبز). همچنین یک نورون سوگیری و یک نورون زمینه وجود دارد که در مقاله بعدی در مورد آنها صحبت خواهیم کرد. در صورتی که یک شبکه عصبی از تعداد زیادی نورون تشکیل شده باشد، اصطلاح لایه معرفی می شود. بر این اساس، یک لایه ورودی وجود دارد که اطلاعات را دریافت می کند، n لایه پنهان (معمولاً بیش از 3) که آن را پردازش می کند و یک لایه خروجی که نتیجه را دریافت می کند. هر یک از نورون ها دارای 2 پارامتر اصلی هستند: داده های ورودی و داده های خروجی. در مورد نورون ورودی: ورودی = خروجی. در بقیه موارد، کل اطلاعات تمام نورون‌ها از لایه قبلی وارد فیلد ورودی می‌شود، پس از آن با استفاده از تابع فعال‌سازی نرمال می‌شود (در حال حاضر، فقط آن را نشان دهید f (x)) و وارد فیلد خروجی می‌شود.


مهم به خاطر سپردنکه نورون ها با اعداد در محدوده یا [-1،1] عمل می کنند. اما، شما می‌پرسید، سپس اعدادی را که از این محدوده خارج می‌شوند، کنترل کنید؟ در این مرحله ساده ترین جواب تقسیم 1 بر آن عدد است. این فرآیند عادی سازی نامیده می شود و اغلب در شبکه های عصبی استفاده می شود. بیشتر در این مورد بعدا.

سیناپس چیست؟


سیناپس ارتباط بین دو نورون است. سیناپس ها دارای 1 پارامتر هستند - وزن. به لطف او، اطلاعات ورودی هنگامی که از یک نورون به نورون دیگر منتقل می شود تغییر می کند. فرض کنید 3 نورون وجود دارد که اطلاعات را به نورون بعدی منتقل می کند. سپس 3 وزن مربوط به هر یک از این نورون ها داریم. برای نورونی با وزن بیشتر، این اطلاعات در نورون بعدی غالب خواهد بود (مثلاً مخلوط کردن رنگ). در واقع مجموعه وزن های یک شبکه عصبی یا ماتریس وزن ها نوعی مغز کل سیستم است. به لطف این وزن ها است که اطلاعات ورودی پردازش شده و به نتیجه تبدیل می شود.

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

یک شبکه عصبی چگونه کار می کند؟


در این مثال، بخشی از یک شبکه عصبی به تصویر کشیده شده است که حروف I نشان دهنده نورون های ورودی، حرف H نشان دهنده نورون پنهان و حرف w نشان دهنده وزن ها هستند. از فرمول می توان دریافت که اطلاعات ورودی مجموع تمام داده های ورودی ضرب در وزن های مربوطه است. سپس ورودی 1 و 0 را می دهیم. اجازه دهید w1 = 0.4 و w2 = 0.7 داده های ورودی نورون H1 به صورت زیر خواهد بود: 1 * 0.4 + 0 * 0.7 = 0.4. اکنون که ورودی داریم، می‌توانیم با وصل کردن ورودی به تابع فعال‌سازی، خروجی را دریافت کنیم (در ادامه در مورد آن بیشتر توضیح خواهیم داد). حالا که خروجی داریم، آن را منتقل می کنیم. و بنابراین، برای همه لایه‌ها تکرار می‌کنیم تا به نورون خروجی برسیم. با راه اندازی چنین شبکه ای برای اولین بار، خواهیم دید که پاسخ بسیار دور از واقعیت است، زیرا شبکه آموزش ندیده است. ما او را برای بهبود نتایجش آموزش خواهیم داد. اما قبل از اینکه نحوه انجام این کار را یاد بگیریم، اجازه دهید چند اصطلاح و ویژگی یک شبکه عصبی را معرفی کنیم.

تابع فعال سازی

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

تابع خطی


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

سیگموئید


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

مماس هایپربولیک


استفاده از مماس هذلولی تنها زمانی منطقی است که مقادیر شما می توانند منفی و مثبت باشند، زیرا محدوده تابع [-1,1] است. استفاده از این تابع فقط با مقادیر مثبت نامناسب است، زیرا به طور قابل توجهی نتایج شبکه عصبی شما را بدتر می کند.

مجموعه آموزشی

مجموعه آموزشی مجموعه ای از داده ها است که یک شبکه عصبی روی آن کار می کند. در مورد ما استثنایی یا (xor)، ما فقط 4 نتیجه متفاوت داریم، یعنی 4 مجموعه آموزشی خواهیم داشت: 0xor0 = 0، 0xor1 = 1، 1xor0 = 1.1xor1 = 0.

تکرار

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

دوران

هنگام راه اندازی شبکه عصبی، این مقدار روی 0 تنظیم می شود و دارای سقف تنظیم دستی است. هر چه دوره بزرگتر باشد، شبکه آموزش بهتری می گیرد و بر این اساس نتیجه آن بهتر می شود. هر بار که کل مجموعه های آموزشی را مرور می کنیم، دوره افزایش می یابد، در مورد ما، 4 مجموعه یا 4 تکرار.


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

خطا

خطا درصدی است که نشان دهنده اختلاف بین پاسخ های مورد انتظار و دریافتی است. خطا در هر دوره ای شکل می گیرد و باید کاهش یابد. اگر این اتفاق نیفتد، شما کار اشتباهی انجام می دهید. خطا را می توان به روش های مختلفی محاسبه کرد، اما ما فقط سه روش اصلی را در نظر خواهیم گرفت: میانگین مربعات خطا (از این پس MSE)، Root MSE و Arctan. هیچ محدودیتی برای استفاده مانند عملکرد فعال سازی وجود ندارد، و شما مختار هستید که هر روشی را که بهترین نتایج را به شما می دهد انتخاب کنید. فقط باید این را در نظر گرفت که هر روش به روش های مختلف خطاها را می شمارد. در Arctan، خطا، تقریباً همیشه، بزرگتر خواهد بود، زیرا طبق این اصل کار می کند: هر چه تفاوت بیشتر باشد، خطا بیشتر است. Root MSE کمترین خطا را خواهد داشت، بنابراین اغلب از MSE استفاده می شود که تعادل را در محاسبه خطا حفظ می کند.


ریشه MSE



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

وظیفه

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

داده ها: I1 = 1، I2 = 0، w1 = 0.45، w2 = 0.78، w3 = -0.12، w4 = 0.13، w5 = 1.5، w6 = 2.3.

شبکه های عصبی

نمودار یک شبکه عصبی ساده سبز مشخص شده است ورودیعناصر، به رنگ زرد - مرخصی روزانهعنصر

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

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

کرونولوژی

برنامه های کاربردی شناخته شده

خوشه بندی

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

انتخاب تجربی ویژگی های شبکه

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

انتخاب تجربی پارامترهای آموزشی

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

آموزش واقعی شبکه

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

بررسی کفایت آموزش

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

طبقه بندی بر اساس نوع اطلاعات ورودی

  • شبکه های عصبی آنالوگ (استفاده از اطلاعات به شکل اعداد واقعی)؛
  • شبکه های عصبی باینری (با اطلاعات ارائه شده به صورت باینری عمل می کنند).

طبقه بندی بر اساس ماهیت یادگیری

  • یادگیری نظارت شده - فضای خروجی راه حل های شبکه عصبی شناخته شده است.
  • یادگیری بدون نظارت - یک شبکه عصبی فضای خروجی راه حل ها را فقط بر اساس ورودی تشکیل می دهد. چنین شبکه هایی را خودسازماندهی می نامند.
  • Reinforcement Learning سیستمی برای تخصیص جریمه ها و پاداش ها از سوی محیط است.

طبقه بندی بر اساس ماهیت تنظیم سیناپس

طبقه بندی زمان انتقال سیگنال

در تعدادی از شبکه های عصبی، تابع فعال سازی ممکن است نه تنها به ضرایب وزنی اتصالات بستگی داشته باشد. w منj، بلکه در زمان ارسال یک پالس (سیگنال) از طریق کانال های ارتباطی τ منj... بنابراین، به طور کلی، عملکرد ارتباط فعال کننده (انتقال دهنده). ج منjاز عنصر تو منبه عنصر تو jبه نظر می رسد:. سپس شبکه همزمان منjهر پیوند برابر با صفر یا ثابت ت است. نامتقارنشبکه ای است که زمان انتقال آن τ منjبرای هر پیوند بین عناصر تو منو تو jخود، بلکه ثابت است.

طبقه بندی بر اساس ماهیت پیوندها

شبکه های پیشخور

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

شبکه های عصبی مکرر

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

توابع پایه شعاعی

شبکه های عصبی مصنوعی با استفاده از شبکه های مبتنی بر شعاعی به عنوان توابع فعال سازی (این گونه شبکه ها به اختصار شبکه های RBF نامیده می شوند). نمای کلی تابع پایه شعاعی:

، مثلا،

جایی که ایکسبردار سیگنال های ورودی نورون است، σ عرض پنجره تابع، φ ( y) یک تابع نزولی است (اغلب در خارج از یک بخش خاص برابر با صفر است).

شبکه شعاعی-پایه با سه ویژگی مشخص می شود:

1. تنها لایه پنهان

2. فقط نورون های لایه پنهان تابع فعال سازی غیرخطی دارند

3. وزن سیناپسی اتصالات لایه های ورودی و پنهان برابر با یک است

درباره روش آموزش - به ادبیات مراجعه کنید

کارت های خودسازماندهی

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

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

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

لانه سازی اولیه مش در فضای داده دلخواه است. بسته نویسنده SOM_PAK گزینه هایی را برای آرایش اولیه تصادفی گره ها در فضا و گزینه ای برای آرایش گره ها در یک صفحه ارائه می دهد. پس از آن، گره ها طبق الگوریتم زیر شروع به حرکت در فضا می کنند:

  1. نقطه داده به صورت تصادفی انتخاب شده است ایکس .
  2. نزدیک ترین به ایکسگره کارت (BMU - بهترین واحد تطبیق).
  3. این گره یک قدم معین به سمت x منتقل می شود. با این حال، به تنهایی حرکت نمی کند، بلکه تعداد معینی از نزدیک ترین گره ها را از یک محله خاص روی نقشه به همراه دارد. از میان تمام گره‌های متحرک، گره مرکزی - نزدیک‌ترین گره به نقطه داده - به شدت جابه‌جا می‌شود و بقیه جابجایی‌های کوچک‌تری را تجربه می‌کنند، هر چه از BMU دورتر باشند. در تنظیم نقشه دو مرحله وجود دارد - مرحله سفارش و مرحله تنظیم دقیق. در مرحله اول، مقادیر زیادی از محله انتخاب می شود و حرکت گره ها ماهیت جمعی دارد - در نتیجه، نقشه "صاف می شود" و تقریباً ساختار داده را منعکس می کند. در مرحله تنظیم دقیق، شعاع همسایگی 1-2 است و موقعیت های جداگانه گره ها تنظیم می شود. علاوه بر این، مقدار جابجایی در طول زمان به طور یکنواخت کاهش می یابد، یعنی در ابتدای هر یک از مراحل تمرینی بزرگ و در پایان به صفر نزدیک می شود.
  4. الگوریتم تعداد معینی از دوره ها را تکرار می کند (مشخص است که تعداد مراحل بسته به کار می تواند بسیار متفاوت باشد).

انواع شبکه های شناخته شده

  • شبکه همینگ؛
  • نئوگنیترون؛
  • شبکه عصبی آشفته؛
  • شبکه ضد گسترش;
  • شبکه توابع پایه شعاعی (شبکه RBF)؛
  • شبکه رگرسیون تعمیم یافته؛
  • شبکه احتمالی؛
  • شبکه عصبی سیامی؛
  • شبکه های تشدید تطبیقی

تفاوت ماشین‌های با معماری فون نویمان

یک دوره طولانی تکامل به مغز انسان ویژگی های بسیاری داده است که در ماشین هایی با معماری فون نویمان وجود ندارد:

  • همزمانی انبوه؛
  • ارائه توزیع شده اطلاعات و محاسبات؛
  • توانایی یادگیری و تعمیم.
  • تطبیق پذیری؛
  • ویژگی پردازش اطلاعات متنی؛
  • تحمل اشتباهات؛
  • مصرف برق کم.

شبکه های عصبی - تقریب دهنده های جهانی

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

نمونه های کاربردی

پیش بینی سری زمانی مالی

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

روانشناسی

مجموعه‌ای از آثار M. G. Dorrer و همکاران به مطالعه مسئله امکان توسعه شهود روان‌شناختی در سیستم‌های خبره شبکه‌های عصبی اختصاص دارد. نتایج به‌دست‌آمده رویکردی را برای افشای مکانیسم شهود شبکه‌های عصبی ارائه می‌کند، که زمانی خود را نشان می‌دهد که وظایف تشخیصی روان‌شناسی را حل می‌کنند. برای تکنیک های کامپیوتری غیر استاندارد ایجاد شد شهودیرویکرد به تشخیص روانی، که شامل حذف ساخت و ساز است واقعیت توصیف شده... این به شما امکان می دهد کار روی تکنیک های تشخیص روانی را کوتاه و ساده کنید.

شیمی انفورماتیک

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

یادداشت ها (ویرایش)

  1. مک کالوچ دبلیو اس، پیتس دبلیو.، حساب منطقی ایده های مربوط به فعالیت عصبی // در مجموعه: "Automata" ed. سی. ای. شانون و جی. مک کارتی. - م .: انتشارات خارجی. چاپ، 1956 .-- ص 363-384. (ترجمه مقاله انگلیسی 1943)
  2. تشخیص الگو و کنترل تطبیقی برنارد ویدرو
  3. ویدو بی.، استرنز اس., پردازش سیگنال تطبیقی. - م .: رادیو و ارتباطات، 1368 .-- 440 ص.
  4. Werbos P. J.فراتر از رگرسیون: ابزارهای جدید برای پیش بینی و تحلیل در علوم رفتاری. Ph.D. پایان نامه، دانشگاه هاروارد، کمبریج، کارشناسی ارشد، 1974.
  5. گالوشکین A.I.سنتز سیستم های تشخیص الگوی چند لایه - M .: "انرژی"، 1974.
  6. روملهارت دی.ای.، هینتون جی.ای.، ویلیامز آر.جی., یادگیری بازنمایی های داخلی با انتشار خطا. در: پردازش توزیع شده موازی، ج. 1، صص 318-362. مطبوعات کمبریج، MA، MIT. 1986.
  7. Bartsev S.I.، Okhonin V.A.شبکه های پردازش اطلاعات تطبیقی کراسنویارسک: موسسه فیزیک، شعبه سیبری آکادمی علوم اتحاد جماهیر شوروی، 1986. پیش چاپ N 59B. - 20 ص.
  8. آزمایشگاه های BaseGroup - کاربرد عملی شبکه های عصبی در مسائل طبقه بندی
  9. این نوع رمزگذاری گاهی اوقات به عنوان کد "1 از N" نامیده می شود.
  10. سیستم های باز - مقدمه ای بر شبکه های عصبی
  11. میرکس ای. ام.، شبکه های عصبی منطقی شفاف و تولید دانش صریح از داده ها، در کتاب: نورو انفورماتیک / A. N. Gorban، V. L. Dunin-Barkovsky، A. N. Kirdinو دیگران - نووسیبیرسک: علم. Siberian Enterprise RAS, 1998 .-- 296 با ISBN 5020314102
  12. ذکر این داستان در مجله Popular Mechanics
  13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - شبکه های تکراری به عنوان دستگاه های ذخیره سازی انجمنی]
  14. Kohonen، T. (1989/1997/2001)، نقشه های خودسازماندهی، برلین - نیویورک: Springer-Verlag. چاپ اول 1989، ویرایش دوم 1997، ویرایش سوم توسعه یافته 2001، ISBN 0-387-51387-6، ISBN 3-540-67921-9
  15. A. Yu. Zinovievتجسم داده های چند بعدی - کراسنویارسک: اد. دانشگاه فنی دولتی کراسنویارسک، 2000. - 180 p.
  16. گوربن ا.ن.، قضیه تقریب تعمیم یافته و قابلیت های محاسباتی شبکه های عصبی، مجله ریاضیات محاسباتی سیبری، 1998. جلد 1، شماره 1. ص 12-24.
  17. Gorban A.N.، Rossiyev D.A.، Dorrer M.G., MultiNeuron - Neural Networks Simulator for Medical, Physiological, and Psychological Applications, Wcnn'95, Washington, DC: کنگره جهانی شبکه های عصبی 1995 نشست سالانه بین المللی انجمن شبکه های عصبی: هتل رنسانس، واشنگتن دی سی، ایالات متحده آمریکا، 17 تا 21 ژوئیه، 1995.
  18. دورر ام.جی.شهود روانشناختی شبکه های عصبی مصنوعی، دیس. ... 1998. سایر نسخه های آنلاین:,
  19. Baskin I.I.، Palyulin V.A.، Zefirov N.S.کاربرد شبکه های عصبی مصنوعی در تحقیقات شیمیایی و بیوشیمیایی، وستن. مسکو اون-تا. سر 2. شیمی. 1999. ج 40. شماره 5.
  20. Galberstam N.M.، Baskin I.I.، Palyulin V.A.، Zefirov N.S.شبکه های عصبی به عنوان روشی برای یافتن ساختار وابستگی - ویژگی ترکیبات آلی // پیشرفت در شیمی... - 2003. - T. 72. - شماره 7. - S. 706-727.
  21. Baskin I.I.، Palyulin V.A.، Zefirov N.S.پرسپترون های چندلایه در مطالعه روابط ساختار-ویژگی برای ترکیبات آلی // مجله شیمی روسیه (ژورنال انجمن شیمی روسیه به نام D.I. مندلیف)... - 2006. - T. 50. - S. 86-96.

پیوندها

  • شبکه عصبی مصنوعی برای PHP 5.x - پروژه جدی برای توسعه شبکه های عصبی در زبان برنامه نویسی PHP 5.X
  • انجمن شبکه های عصبی و الگوریتم های ژنتیک
  • میرکس ای. ام.، نورو انفورماتیک: کتاب درسی. کتابچه راهنمای دانش آموزان با برنامه هایی برای کارهای آزمایشگاهی.
  • نمونه های گام به گام پیاده سازی معروف ترین انواع شبکه های عصبی در متلب، جعبه ابزار شبکه عصبی
  • مجموعه ای از مواد در شبکه های عصبی و تجزیه و تحلیل پیش بینی
  • کاربرد دشمن شبکه های عصبی در پیش بینی قیمت سهام
بر این اساس، شبکه عصبی دو عدد را به عنوان ورودی می گیرد و باید عدد دیگری را در خروجی بدهد - پاسخ. حالا در مورد خود شبکه های عصبی.

شبکه عصبی چیست؟


شبکه عصبی مجموعه ای از نورون ها است که توسط سیناپس ها به هم متصل شده اند. ساختار شبکه عصبی مستقیماً از زیست شناسی وارد دنیای برنامه نویسی شد. به لطف این ساختار، دستگاه توانایی تجزیه و تحلیل و حتی به خاطر سپردن اطلاعات مختلف را به دست می آورد. شبکه های عصبی همچنین قادرند نه تنها اطلاعات دریافتی را تجزیه و تحلیل کنند، بلکه می توانند آن را از حافظه خود نیز بازتولید کنند. برای علاقه مندان، حتما 2 ویدیو از TED Talks را تماشا کنید: ویدئو 1 , ویدئو 2). به عبارت دیگر، شبکه عصبی یک تفسیر ماشینی از مغز انسان است که حاوی میلیون ها نورون است که اطلاعات را به شکل تکانه های الکتریکی منتقل می کنند.

شبکه های عصبی چیست؟

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

شبکه های عصبی برای چیست؟

شبکه های عصبی برای حل مسائل پیچیده ای که نیاز به محاسبات تحلیلی مشابه محاسبات مغز انسان دارند، استفاده می شود. رایج ترین کاربردهای شبکه های عصبی عبارتند از:

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

پیش بینی- توانایی پیش بینی مرحله بعدی. به عنوان مثال، صعود یا سقوط یک سهم بر اساس وضعیت بازار سهام.

به رسمیت شناختن- در حال حاضر، گسترده ترین استفاده از شبکه های عصبی. هنگامی که به دنبال عکسی هستید یا در دوربین های تلفن هنگامی که موقعیت صورت شما را تشخیص می دهد و آن را برجسته می کند و موارد دیگر در Google استفاده می شود.

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

نورون چیست؟


نورون یک واحد محاسباتی است که اطلاعات را دریافت می کند، محاسبات ساده ای را روی آن انجام می دهد و آن را بیشتر ارسال می کند. آنها به سه نوع اصلی تقسیم می شوند: ورودی (آبی)، پنهان (قرمز) و خروجی (سبز). همچنین یک نورون سوگیری و یک نورون زمینه وجود دارد که در مقاله بعدی در مورد آنها صحبت خواهیم کرد. در صورتی که یک شبکه عصبی از تعداد زیادی نورون تشکیل شده باشد، اصطلاح لایه معرفی می شود. بر این اساس، یک لایه ورودی وجود دارد که اطلاعات را دریافت می کند، n لایه پنهان (معمولاً بیش از 3) که آن را پردازش می کند و یک لایه خروجی که نتیجه را دریافت می کند. هر یک از نورون ها دارای 2 پارامتر اصلی هستند: داده های ورودی و داده های خروجی. در مورد نورون ورودی: ورودی = خروجی. در بقیه موارد، کل اطلاعات تمام نورون‌ها از لایه قبلی وارد فیلد ورودی می‌شود، پس از آن با استفاده از تابع فعال‌سازی نرمال می‌شود (در حال حاضر، فقط آن را نشان دهید f (x)) و وارد فیلد خروجی می‌شود.


مهم به خاطر سپردنکه نورون ها با اعداد در محدوده یا [-1،1] عمل می کنند. اما، شما می‌پرسید، سپس اعدادی را که از این محدوده خارج می‌شوند، کنترل کنید؟ در این مرحله ساده ترین جواب تقسیم 1 بر آن عدد است. این فرآیند عادی سازی نامیده می شود و اغلب در شبکه های عصبی استفاده می شود. بیشتر در این مورد بعدا.

سیناپس چیست؟


سیناپس ارتباط بین دو نورون است. سیناپس ها دارای 1 پارامتر هستند - وزن. به لطف او، اطلاعات ورودی هنگامی که از یک نورون به نورون دیگر منتقل می شود تغییر می کند. فرض کنید 3 نورون وجود دارد که اطلاعات را به نورون بعدی منتقل می کند. سپس 3 وزن مربوط به هر یک از این نورون ها داریم. برای نورونی با وزن بیشتر، این اطلاعات در نورون بعدی غالب خواهد بود (مثلاً مخلوط کردن رنگ). در واقع مجموعه وزن های یک شبکه عصبی یا ماتریس وزن ها نوعی مغز کل سیستم است. به لطف این وزن ها است که اطلاعات ورودی پردازش شده و به نتیجه تبدیل می شود.

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

یک شبکه عصبی چگونه کار می کند؟


در این مثال، بخشی از یک شبکه عصبی به تصویر کشیده شده است که حروف I نشان دهنده نورون های ورودی، حرف H نشان دهنده نورون پنهان و حرف w نشان دهنده وزن ها هستند. از فرمول می توان دریافت که اطلاعات ورودی مجموع تمام داده های ورودی ضرب در وزن های مربوطه است. سپس ورودی 1 و 0 را می دهیم. اجازه دهید w1 = 0.4 و w2 = 0.7 داده های ورودی نورون H1 به صورت زیر خواهد بود: 1 * 0.4 + 0 * 0.7 = 0.4. اکنون که ورودی داریم، می‌توانیم با وصل کردن ورودی به تابع فعال‌سازی، خروجی را دریافت کنیم (در ادامه در مورد آن بیشتر توضیح خواهیم داد). حالا که خروجی داریم، آن را منتقل می کنیم. و بنابراین، برای همه لایه‌ها تکرار می‌کنیم تا به نورون خروجی برسیم. با راه اندازی چنین شبکه ای برای اولین بار، خواهیم دید که پاسخ بسیار دور از واقعیت است، زیرا شبکه آموزش ندیده است. ما او را برای بهبود نتایجش آموزش خواهیم داد. اما قبل از اینکه نحوه انجام این کار را یاد بگیریم، اجازه دهید چند اصطلاح و ویژگی یک شبکه عصبی را معرفی کنیم.

تابع فعال سازی

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

تابع خطی


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

سیگموئید


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

مماس هایپربولیک


استفاده از مماس هذلولی تنها زمانی منطقی است که مقادیر شما می توانند منفی و مثبت باشند، زیرا محدوده تابع [-1,1] است. استفاده از این تابع فقط با مقادیر مثبت نامناسب است، زیرا به طور قابل توجهی نتایج شبکه عصبی شما را بدتر می کند.

مجموعه آموزشی

مجموعه آموزشی مجموعه ای از داده ها است که یک شبکه عصبی روی آن کار می کند. در مورد ما، انحصاری یا (xor) ما فقط 4 نتیجه متفاوت داریم، یعنی 4 مجموعه آموزشی خواهیم داشت: 0xor0 = 0، 0xor1 = 1، 1xor0 = 1.1xor1 = 0.

تکرار

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

دوران

هنگام راه اندازی شبکه عصبی، این مقدار روی 0 تنظیم می شود و دارای سقف تنظیم دستی است. هر چه دوره بزرگتر باشد، شبکه آموزش بهتری می گیرد و بر این اساس نتیجه آن بهتر می شود. هر بار که کل مجموعه های آموزشی را مرور می کنیم، دوره افزایش می یابد، در مورد ما، 4 مجموعه یا 4 تکرار.


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

خطا

خطا درصدی است که نشان دهنده اختلاف بین پاسخ های مورد انتظار و دریافتی است. خطا در هر دوره ای شکل می گیرد و باید کاهش یابد. اگر این اتفاق نیفتد، شما کار اشتباهی انجام می دهید. خطا را می توان به روش های مختلفی محاسبه کرد، اما ما فقط سه روش اصلی را در نظر خواهیم گرفت: میانگین مربعات خطا (از این پس MSE)، Root MSE و Arctan. هیچ محدودیتی برای استفاده مانند عملکرد فعال سازی وجود ندارد، و شما مختار هستید که هر روشی را که بهترین نتایج را به شما می دهد انتخاب کنید. فقط باید این را در نظر گرفت که هر روش به روش های مختلف خطاها را می شمارد. در Arctan، خطا، تقریباً همیشه، بزرگتر خواهد بود، زیرا طبق این اصل کار می کند: هر چه تفاوت بیشتر باشد، خطا بیشتر است. Root MSE کمترین خطا را خواهد داشت، بنابراین اغلب از MSE استفاده می شود که تعادل را در محاسبه خطا حفظ می کند.

مقالات مرتبط برتر