آموزش جامع شبکه های عصبی

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

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

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

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

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

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

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

لایه های شبکه عصبی

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

  • ترجمه متن
  • شناسایی چهره ها
  • تشخیص گفتار
  • خواندن دستخط
  • کنترل ربات ها
  • و…

در ادامه مقاله می خواهیم طرز شبکه های عصبی را به شما آموزش دهیم.

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

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

بیایید مثال های واقعی از نحوه تشخیص پلاک خودرو توسط دوربین های ثبت ترافیک و اندازه گیری میزان سرعت وسایل نقلیه در جاده ها را بررسی کنیم. فرض می کنیم ابعاد تصویر ضبط شده، ۲۸ در ۲۸ پیکسل است و از تصویر به عنوان ورودی جهت شناسایی پلاک خودرو ها استفاده می شود. هر نورون دارای یک عدد فعال سازی است که نشان دهنده میزان سیاه و سفید بودن پیکسل مربوطه است که از عدد ۰ تا ۱ متغیر است و عدد ۱ برای پیکسل سفید و ۰ برای پیکسل سیاه است. هر نورون زمانی که عدد فعال سازی نزدیک به رقم ۱ برسد، روشن یا فعال می شود.

پیکسل ها در قالب آرایه ها به داخل لایه ورودی تغذیه می شوند. اگر تصویر شما بیشتر از اندازه ۲۸ پیکسل باشد، شما باید از اندازه آن کم کنید؛ زیرا شما نمی توانید اندازه لایه ورودی را تغییر دهید. ما نام هر ورودی را X1 ،X2 و X3 می نامیم. هر یک از پیکسل ها، یک داده ورودی است که به شبکه عصبی وارد می شود. سپس لایه ورودی، داده ورودی را به بخش لایه پنهان انتقال می دهد. به اتصالات درون شبکه عصبی وزن هایی به صورت تصادفی داده می شود. وزن در مقدار سیگنال های ورودی ضرب می شود و عدد ثابتی به عنوان بایاس به آن افزوده می شود.

نحوه کارکرد شبکه عصبی

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

نحوه کارکرد لایه پنهان شبکه عصبی

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

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

۱- تابع سیگموئید

از تابع سیگموئید برای مدل های پیش بینی احتمالی استفاده می شود.

تابع سیگموئید شبکه عصبی

۲- تابع آستانه

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

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

۳- تابع ReLU

تابع ReLU مقدار را برمی گرداند اما اگر مقدار بیشتر از عدد یک باشد آن را عدد یک در نظر می گیرد و اگر کم تر از عدد صفر باشد آن را خود عدد صفر در نظر می گیرد. تابع RELU امروزه بیشترین میزان کاربرد را دارد.

تابع ReLU شبکه عصبی

۴- تابع تانژانت هایپربولیک

تابع تانژانت هایپربولیک ، شباهت بسیاری به تابع سیگموئید دارد؛ منتها با این تفاوت که رنج عددی آن ۱+ و ۱- است.

تابع تانژانت هایپربولیک شبکه عصبی

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

نحوه کارکرد لایه پنهان شبکه عصبی

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

پس انتشار خطا در شبکه عصبی

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

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

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

انواع شبکه های عصبی به شرح زیر است:

۱- شبکه عصبی پیشخور (Feed-Forward)

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

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

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

۲- شبکه عصبی توابع پایه شعاعی (RBF)

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

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

۳- شبکه های عصبی خود سازمان دهنده کوهنن

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

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

۴- شبکه های عصبی بازگشتی ( RNNs )

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

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

۵- شبکه عصبی کانولوشنی

در این نوع از شبکه های عصبی، داده های ورودی به دسته (Batch) ها برده می شوند و مانند آن است که دارند از یک فیلتر عبور می کنند.

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

۶- شبکه های عصبی ماژولار

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

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

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

مثالی از کاربرد شبکه عصبی

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

کد نویسی زبان و محیط

ما پروژه خود را با ایجاد یک شبکه عصبی در پایتون(نسخه ۳٫۶) ، پیاده سازی می کنیم. کارمان را با واردکردن پکیج های مورد نیاز با استفاده از Keras ، آغاز می کنیم.

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

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

در Anaconda Navigator ، karaspython36 ما در زیر قسمت Environments ، فهرست شده است. از منوی Home می توانیم نوتبوک Jupiter را راه اندازی کنیم و اطمینان حاصل می کنیم که از محیط مناسبی که به تازگی راه اندازی کرده ایم استفاده می کنیم. شما می توانید از هر نوع ویرایشگر دیگری که با آن راحت تر هستید، استفاده کنید.

نحوه کد نویسی این پروژه را در ویدیو زیر می توانید مشاهده کنید : (احتمالا برای مشاهده ویدیو یوتیوب نیازمند استفاده از فیلترشکن هستید)

نتیجه گیری

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

واقعا استفاده از این ابزار ها در زندگی روزمره باورنکردنی و هیجان انگیز است.

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

بیشتر بخوانید :

منبع Simplilearn

درباره‌ی فریبا یزدیان

Faribayazdian1372@gmail.com

همچنین ببینید

تشخیص تصاویر با شبکه های عصبی کانولوشنی

تشخیص تصاویر با شبکه های عصبی کانولوشنی به زبان ساده

در این مطلب می خواهیم بررسی کنیم که شبکه های عصبی کانولوشنی چگونه می توانند …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.