• یادگیری شبکه های عصبی: از کجا شروع کنیم شبکه های عصبی: انواع، اصل عملکرد و دامنه

    در نیمه اول سال 2016، جهان در مورد پیشرفت های زیادی در زمینه شبکه های عصبی شنید - گوگل (یک بازیکن شبکه در AlphaGo)، مایکروسافت (تعدادی از خدمات برای شناسایی تصویر)، استارت آپ های MSQRD، Prisma و دیگران نشان دادند. الگوریتم های آنها

    به نشانک ها

    سردبیران سایت می گویند که چه هستند شبکه های عصبیآنها برای چه هستند، چرا آنها سیاره زمین را در حال حاضر تسخیر کردند، و نه سالها قبل یا بعد، چقدر می توانید از آنها درآمد کسب کنید و بازیگران اصلی بازار چه کسانی هستند. کارشناسان موسسه فیزیک و فناوری مسکو، Yandex، Mail.Ru Group و Microsoft نیز نظرات خود را به اشتراک گذاشتند.

    شبکه های عصبی چیست و چه وظایفی را می توانند حل کنند

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

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

    آندری کالینین، رئیس Mail.ru Search در Mail.Ru Group، خاطرنشان می‌کند که شبکه‌های عصبی قادر به حل وظایف مشابه دیگر الگوریتم‌های یادگیری ماشین هستند، تفاوت فقط در رویکرد یادگیری است.

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

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

    شرشولسکی معتقد است در کوتاه مدت (5 تا 10 سال) شبکه های عصبی به طور گسترده تری مورد استفاده قرار خواهند گرفت:

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

    میخائیل بورتسف، رئیس آزمایشگاه سیستم‌های عصبی و یادگیری عمیق در مرکز MIPT برای سیستم‌های زنده، یک نقشه آزمایشی از توسعه شبکه‌های عصبی برای سال‌های 2016-2018 ارائه می‌دهد:

    • سیستم های تشخیص و طبقه بندی اشیاء در تصاویر.
    • رابط های تعامل صوتی برای اینترنت اشیا؛
    • سیستم های نظارت بر کیفیت خدمات در مراکز تماس؛
    • سیستم‌های تشخیص مشکلات (از جمله پیش‌بینی زمان نگهداری)، ناهنجاری‌ها، تهدیدات فیزیکی-سایبری؛
    • امنیت فکری و سیستم های نظارت؛
    • جایگزینی بخشی از عملکرد اپراتورهای مرکز تماس توسط ربات ها؛
    • سیستم های تجزیه و تحلیل ویدئویی؛
    • سیستم های خودآموزی که کنترل را بهینه می کند جریان موادیا محل اشیاء (در انبارها، حمل و نقل)؛
    • سیستم‌های کنترل هوشمند و خودآموز برای فرآیندها و دستگاه‌های تولید (از جمله دستگاه‌های رباتیک)؛
    • ظهور سیستم های ترجمه جهانی "در حال پرواز" برای کنفرانس ها و استفاده ی شخصی;
    • ظهور ربات های مشاور پشتیبانی فنییا دستیاران شخصی، از نظر عملکرد نزدیک به یک شخص.

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

    چرا شبکه های عصبی در حال حاضر بسیار محبوب شده اند؟

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

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

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

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

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

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

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

    بر اساس برخی برآوردها، بیش از نیمی از حرفه ها خودکار خواهند شد - این حداکثر مقداری است که می توان با آن بازار الگوریتم های یادگیری ماشین (و به ویژه شبکه های عصبی) را افزایش داد - آندری کالینین، گروه Mail.Ru

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

    چرا توسعه دهندگان شبکه های عصبی برنامه های تلفن همراه را برای بازار انبوه ایجاد می کنند؟

    در چند ماه گذشته، چندین پروژه سرگرمی پرمخاطب با استفاده از شبکه های عصبی به طور همزمان در بازار ظاهر شده اند - این هم یک سرویس ویدیویی محبوب است که شبکه اجتماعی فیس بوک است و هم برنامه های کاربردی روسیبرای پردازش تصویر (سرمایه گذاری از Mail.Ru Group در ژوئن) و دیگران.

    توانایی‌های شبکه‌های عصبی خود را نیز گوگل نشان داد (فناوری AlphaGo در Go قهرمان شد؛ در مارس 2016، این شرکت 29 نقاشی کشیده شده توسط شبکه‌های عصبی و غیره را در حراجی فروخت) و مایکروسافت (پروژه CaptionBot که به رسمیت می‌شناسد. تصاویر در تصاویر و ایجاد خودکار شرح‌ها برای آن‌ها؛ پروژه WhatDog که نژاد سگ را از روی عکس مشخص می‌کند؛ سرویس HowOld که سن یک فرد را در عکس مشخص می‌کند و غیره) و Yandex (در ماه ژوئن) ، این تیم سرویسی برای تشخیص اتومبیل ها در تصاویر در برنامه Avto.ru ایجاد کرد؛ یک آلبوم موسیقی ارائه کرد؛ در ماه مه او پروژه LikeMo.net را برای طراحی به سبک هنرمندان مشهور ایجاد کرد.

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

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

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

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

    بازیگران اصلی در بازار شبکه های عصبی

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

    در میان بازیگران اصلی بازار، کالینین از گوگل و بخش آن Google DeepMind که شبکه AlphaGo را ایجاد کرد و Google Brain نام می برد. مایکروسافت پیشرفت های خاص خود را در این زمینه دارد - آنها توسط آزمایشگاه تحقیقاتی مایکروسافت اداره می شوند. شبکه های عصبی در IBM، فیس بوک (بخش تحقیقات هوش مصنوعی فیس بوک)، بایدو (موسسه بایدو) ایجاد می شوند. یادگیری عمیق) و دیگران. پیشرفت های زیادی در دانشگاه های فنی در سراسر جهان انجام می شود.

    گریگوری باکونوف، مدیر انتشار فناوری در Yandex، خاطرنشان می‌کند که پیشرفت‌های جالبی در زمینه شبکه‌های عصبی در میان استارت‌آپ‌ها نیز دیده می‌شود. به عنوان مثال، ClarifAI را به خاطر می‌آورم. این یک استارت آپ کوچک است که زمانی توسط افرادی از Google ساخته شده است. در حال حاضر آنها احتمالا بهترین در جهان در شناسایی محتوای یک عکس هستند." این استارت آپ ها عبارتند از MSQRD، Prisma و غیره.

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

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

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

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


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

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

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

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

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

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

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

    به رسمیت شناختن- در حال حاضر، گسترده ترین کاربرد شبکه های عصبی. هنگامی که عکسی را جستجو می‌کنید در 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 نامیده می شود)، ریشه MSE و Arctan. هیچ محدودیتی در استفاده مانند عملکرد فعال سازی وجود ندارد، و شما مختار هستید که هر روشی را که بهترین نتایج را به شما می دهد انتخاب کنید. فقط باید این را در نظر گرفت که هر روش به طور متفاوتی خطاها را شمارش می کند. با Arctan، خطا تقریباً همیشه بزرگتر خواهد بود، زیرا بر اساس این اصل کار می کند: از تفاوت بیشتر، خطا بزرگتر است. Root MSE کوچکترین خطا را خواهد داشت، بنابراین متداول ترین MSE مورد استفاده آنی است که تعادل را در محاسبه خطا حفظ می کند. الگوریتم ها، یادگیری ماشینی

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

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


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

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



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

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

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

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

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

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

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

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

    Gradient Descent چیست؟

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


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

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


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

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


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

    روش چیست انتشار پشت(MOR)؟

    بنابراین به نقطه‌ای رسیده‌ایم که می‌توانیم در مورد چگونگی اطمینان از اینکه NN شما می‌تواند به درستی یاد بگیرد و تصمیمات درستی بدهد بحث کنیم. MOR به خوبی در این 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 و خطای آن را محاسبه کرده‌ایم، می‌توانیم بلافاصله به MOR برویم. همانطور که قبلا ذکر کردم، الگوریتم همیشه با یک نورون خروجی شروع می شود. در این صورت، بیایید مقدار آن را محاسبه کنیم؟ (دلتا) طبق فرمول 1.

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


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

    راه حل

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

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


    این محاسبات نورون O1 را کامل می کند. به یاد داشته باشید که پس از محاسبه دلتای یک نورون، باید فورا وزن تمام سیناپس های خروجی این نورون را به روز کنیم. از آنجایی که در مورد O1 هیچ کدام وجود ندارد، به سراغ نورون های سطح پنهان می رویم و همین کار را انجام می دهیم، با این تفاوت که اکنون فرمول محاسبه دلتای دوم را داریم و ماهیت آن این است که مشتق تابع فعال سازی را از مقدار ورودی ضرب کنیم. با مجموع حاصل از تمام وزن های خروجی و دلتای نورونی که این سیناپس با آن مرتبط است. اما چرا فرمول ها متفاوت است؟ واقعیت این است که تمام ماهیت MOR این است که خطای نورون های خروجی را به تمام وزن های NN گسترش دهد. خطا را فقط می توان در سطح خروجی محاسبه کرد، همانطور که قبلاً انجام دادیم، دلتای را نیز محاسبه کردیم که این خطا از قبل وجود دارد. در نتیجه اکنون به جای خطا از دلتا استفاده می کنیم که از نورون به نورون منتقل می شود. در این صورت، بیایید دلتای 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٪) کاهش دهیم. اکنون باید این کار را بارها و بارها تکرار کنید تا خطای شما به اندازه کافی کوچک شود.

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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


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

    نتیجه

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

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

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

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

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

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

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

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

    هنگام نوشتن کد اولیه، باید اقدامات خود را به معنای واقعی کلمه روی انگشتان توضیح دهید. اگر مثلاً با تصاویر کار کنیم، در مرحله اول، ارزش برای ما اندازه و کلاس آن خواهد بود. اگر مشخصه اول تعداد ورودی ها را به ما بگوید، دومی به خود شبکه عصبی کمک می کند تا با اطلاعات مقابله کند. در حالت ایده آل، پس از بارگذاری داده های اولیه و مقایسه توپولوژی کلاس ها، شبکه عصبی می تواند خود اطلاعات جدید را طبقه بندی کند. فرض کنید تصمیم داریم یک تصویر 3x5 پیکسل را آپلود کنیم. محاسبات سادهبه ما می گوید که ورودی وجود خواهد داشت: 3*5=15. و خود طبقه بندی تعداد کل خروجی ها را تعیین می کند، یعنی. نورون ها مثال دیگر: یک شبکه عصبی باید حرف C را تشخیص دهد. آستانه مشخص شده مطابقت کامل با حرف است، این به یک نورون با تعداد ورودی برابر با اندازه تصویر نیاز دارد.

    بیایید بگوییم که اندازه همان پیکسل 3x5 خواهد بود. تغذیه برنامه تصاویر مختلفحروف یا اعداد، به آن آموزش می دهیم تا تصویر نماد مورد نیاز خود را مشخص کند.

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    اینها تنها گزینه های طبقه بندی شبکه ها نیستند.

    آنها را می توان بر اساس انواع نورون هایی که شبکه را تشکیل می دهند به همگن و هیبریدی تقسیم کرد. و همچنین در heteroassociative یا autoassociative، بسته به روش آموزش شبکه، با یا بدون معلم. همچنین می توانید شبکه ها را بر اساس هدفشان طبقه بندی کنید.

    شبکه های عصبی کجا استفاده می شوند؟

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

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

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

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

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

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

    نورون و سیناپس چیست؟

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

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

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

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

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

    وزن ها به صورت تصادفی تنظیم می شوند.

    طرح شبکه عصبی

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

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

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

    • تابع خطی f(x) = x، ساده‌ترین تابع ممکن، فقط برای آزمایش شبکه عصبی ایجاد شده یا انتقال داده‌ها به شکل اصلی آن استفاده می‌شود.
    • سیگموئید رایج ترین تابع فعال سازی در نظر گرفته می شود و به شکل f(x) = 1/1+e-× است. در حالی که دامنه مقادیر آن از 0 تا 1 است. به آن تابع لجستیک نیز می گویند.
    • مماس هذلولی برای پوشش مقادیر منفی نیز استفاده می شود. F(x) = e²× - 1 / e²× + 1 - این تابع دارای چنین شکلی است و محدوده ای که دارد از -1 تا 1 است. اگر شبکه عصبی استفاده از مقادیر منفی را فراهم نکند، شما نباید از آن استفاده کرد.

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

    ادغام یک شمارنده است که با هر مجموعه آموزشی افزایش می یابد.

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

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

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

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

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

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

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

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

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

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

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