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

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

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

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

خب، خیر؛ درواقع به این شکل نبوده است.

حقیقت آن است که مفاهیمی که یادگیری عمیق امروزی براساس آن ها تعریف شده است، از سال ۱۹۴۳ (!) شناخته شده و ایده ها و محاسبه های ریاضی پشت آن از زمانی بسیار دور بر ما شناخته شده بوده، اما تا به امروز(از چند سال گذشته تا به امروز) تکنولوژی پیاده سازی آن ها مهیا نبوده است.

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

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

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

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

برای درک بهتر این موضوع، باید کمی درمورد ساختار پایه ای یک شبکه عصبی مصنوعی ( ANN ) بیاموزیم ( البته در مقاله های دیگر نیز توضیحاتی در این زمینه ارائه داده شده است ). ساده ترین مدل شبکه عصبی مصنوعی می تواند بوسیله سه لایه از “عصب ها” ساخته شود. لایه ورودی، لایه پنهان و لایه خروجی. اطلاعات از طریق لایه ورودی به درون شبکه عصبی جریان پیدا می کند، از لایه پنهان عبور کرده و از طریق لایه خروجی، خارج می شود.

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

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

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

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

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

یادگیری عمیق

مدل هایی از شبکه های عصبی مصنوعی مانند مدل ساده ای که در بالا مطرح شد، به همراه تعداد محدودی از لایه ها و عصب ها، می تواند کارهای زیادی انجام دهد. برای ارائه ویژگی های پیچیده تر و  “یادگیری ” بهترِ مدل های پیچیده پیش بینی و دسته بندی داده ها که به هزاران و یا حتی میلیون ها ویژگی بستگی دارد، نیاز به ANN هایی داریم که کمی پیچیده تر از مدل بالا باشد. این موضوع به سادگی و با افزایش تعداد لایه های پنهان و / یا تعداد عصب ها در هر لایه پنهان، قابل دست یابی است. لایه ها و عصب های بیشتر، می تواند مدل های پیچیده تری را حاصل کند اما در عین حال هزینه زمانی و قدرت مصرفی محاسباتی بیشتری لازم دارد.

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

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

این بحث، زیبا بودن چگونگی انجام چنین کارهای متحیر کننده ای بوسیله چنین ساختارهای ساده (!) را می رساند.

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

منبع Becoming Human CiteSeerX SciLab Deep Learning Book

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

فناوری تشخیص چهره و کاربردهای آن، تاریخچه تکنولوژی تشخیص چهره

فناوری تشخیص چهره و کاربردهای آن + تاریخچه

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

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *