img

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

/
/
/

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

 

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

 

چگونه یادگیری عمیق در مقایسه با یادگیری ماشین متفاوت به نظر می‌رسد ؟
یادگیری ماشین به عنوان شاخه ای از دانش یادگیری محسوب می‌شود و با عنوان « قابلیت یادگیری کامپیوترها بدون برنامه ریزی» توسط آرتور ساموئل در سال ۱۹۵۹ مطرح شده است.
در مبحث یادگیری ماشین، به رایانه ها آموزش داده می‌شود تا مسائل و مشکلات خاص را همراه با لیست بزرگی از قوانین و مدلها حل کنند اما در مبحث یادگیری عمیق، مدل فراهم شده می‌توان نمونه ها و مجموعه کوچکی از دستورالعمل ها را به منظور تغییردر هنگام رخ دادن اشتباه، مورد ارزیابی قرار داد. با گذشت زمان، یک مدل مناسب قادر به حل مسئله به صورت بسیار دقیق خواهد بود. به همین دلیل است که یادگیری عمیق بسیار رایج شده و مورد توجه همگان قرار گرفته است. Nikhil Buduma و Nicholas Locascio نویسندگان کتاب « مبانی یادگیری عمیق» اینطور بیان کرده اند که یادگیری عمیق خود زیر مجموعه ای از شاخه عمومی تر هوش مصنوعی است که یادگیری ماشین نامیده می‌شود و بر ایده یادگیری از نمونه ها دلالت دارد.

 

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

 

اطلاعات بیشتر در مورد یادگیری عمیق
بر طبق اطلاعات موجودر در وب سایت آموزشی رایگان computer4everyone.com، یادگیری عمیق یک شاخه فرعی از یادگیری ماشین محسوب می‌شود که مربوط به الگوریتم های الهام گرفته شده از ساختار و عملکرد مغز (شبکه های عصبی مصنوعی) است.
Andrew ng فردی بود که که به طور رسمی Google Brain را تاسیس کرد و منجر به تجاری سازی تکنولوژی های یادگیری عمیق شد و تعداد بسیار زیادی از سرویسها را به همراه آنها عرضه کرد. وی در مورد مبحث یادگیری عمیق سخنرانی هایی را داشته و مقالاتی را نوشته است. بر طبق گفته های اولیه این فرد در ارتباط با یادگیری عمیق، ng یادگیری عمیق را در شبکه های عصبی مصنوعی سنتی توصیف می‌کند.
از جمله متخصصان دیگری که در زمینه یادگیری عمیق همکاری داشته اند عبارتند از :
– Geoffrey Hinton به جهت معرفی ماشینهای انحصاری Boltzmann که در شبکه های deep-belief مورد استفاده واقع می‌شود و گاهی اوقات از او با عنوان پدر یادگیری ماشین نیز یاد می‌شود.
– Yann LeCun به جهت معرفی شبکه های پیچیده (او شاگرد Hinton به حساب می‌آمد)
– Yoshua Bengio به جهت ایجاد Theano (یک راه حل open-source برای یادگیری عمیق) توسط تیمش
– Juergen Schmidhuber به جهت معرفی شبکه های بازگشتی و LSTM ها (Long short-term memory : یا یک معماری از نوعه شبکه عصبی بازگشتی (RNN))
بر طبق گفته های Andrew ng به دلیل در دسترس بودن حجم زیادی از اطلاعات برای محاسبات و با وجود پیشرفت های اخیر در الگوریتم ها، تکنولوژی یادگیری عمیق به سرعت در سراسر جهان پذیرفته شده است.
میزان کاربردهای یادگیری عمیق در دنیای مدرن بسیار زیاد است و می‌توان از ترکیبات گفتاری، یادگیری بر اساس گذشته، تشخیص چهره، اتومبیلهای خودران، علوم پزشکی، پیش بینی سهام و پیش بینی نرخ املاک به عنوان زمینه های کاربردی آن یاد کرد.

 

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

 

پیش نیازهای درک تکنولوژی یادگیری عمیق
موضوع مورد بحث تعدادی از انجمن ها و وبلاگ ها این است که فردی که میخواهد تکنولوژی یادگیری عمیق را درک کند می‌بایست دانش ریاضی عمیقی داشته باشد. این موضوع باید بر پایه تصمیم گیری در شرایط خاص مورد ارزیابی واقع شود. اگر شما حقیقتاً خواستار درک یادگیری عمیق هستید و مشتاقانه آن را دنبال می‌کنید بهتر است که موارد زیر را در نظر داشته باشید :
– وظایف اصلی شبکه های عصبی
– درک مفاهیم پایه محاسبات
– درک ماتریس ها، بردارها و جبر خطی
– الگوریتم های یادگیری (supervised، unsupervised، online، batch و موارد دیگر)
– برنامه نویسی پایتون
– معادلات ریاضی بر پایه تصمیم گیری در شرایط خاص

 

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

 

 

 

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

 

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

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

 

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

با استفاده از روش های بردار ریاضی، می‌توان این عملیات را به صورت زیر نمایش داد :

Inputs as a vector X = [X1,X2 ….Xn]
And weights of the neuron as W = [W1, W2 …. Wn]
Therefore the output Y can be represented as Y = f(X.W + b)
Where “b” is the bias term.

 

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

 

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

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

 

نکته ۳ : برای اطلاعات بیشتر به مقاله Do deep nets really need to be deep ? نوشته Lei Jimmy Ba و Rich Caruana مراجعه کنید.

 

مدتی پیش در سال ۲۰۱۴، یک مجموعه آموزشی همراه با داده های عظیم در شبکه ای کم عمق مشاهده شده است که به طور کامل به یک لایه مخفی متصل شده است که دارای تغییر یا کنترل یک فرآیند با استفاده از نتایج و یا تاثیرات پیش بینی شده (feed-forward) بر روی داده های موجود است و به میزان ۸۶ درصد داده های آزمایشی تولید می‌کند. اما اگر این مجموعه داده های مشابه در یک شبکه عصبی عمیق تر که شامل لایه پیچیده، لایه pooling و سه لایه feed-forward با اتصال کامل بر روی داده های یکسان باشد و رشد یابد، آن مجموعه آموزشی دارای دقت ۹۱ درصدی خواهد بود. میزان افزایش ۵ درصدی در دقت شبکه های عمیق در مقایسه با شبکه های کم عمق وجود دارد و در زیر دلایلی برای این امر ذکر شده است :

۱ – شبکه عمیق پارامترهای بیشتری را دارد .
۲ – شبکه عمیق با توجه به تعداد یکسان پارامترها، می‌تواند عملیات پیچیده تری را یاد بگیرد .
۳ – شبکه های عمیق دارای گرایش بیشتری به یکسو است و عملیات جذابتر و مفیدتری را یاد می‌گیرد که منجر به ایجاد و پیشرفت بسیاری از الگوریتم ها می‌شود.

 

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

 

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

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

 

نکته ۴ : آلفا چیست ؟ پارامتر آلفا همانگونه که در بالا ذکر شد، اندازه هر به روزرسانی عملیات تکراری را به ساده ترین روش ممکن کاهش می‌دهد.

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

 

الگوریتم انتشار رو به عقب (back-propagation) : رویکرد back-propagation برای اولین بار توسط David E.، Geoffrey Hinton و Ronald J. مطرح شد. گاهی اوقات ما نمی‌دانیم که واحدهای مخفی چه کاری را انجام می‌دهند اما آنچه که می‌توانیم انجام دهیم این است که سرعت تغییر عملیات دارای خطا را درهنگام تغییر فعالیت های پنهانی محاسبه کنیم. با این کار، هنگام تغییر مقدار یک ارتباط منحصر به فرد می‌توانیم میزان تغییرات خطا را بیابیم.
هر واحد مخفی می‌تواند بر بسیاری از واحدهای خروجی تاثیر گذاشته و همچنین خطاهای نشات گرفته شده دیگر را در فعالیت های لایه زیرین محاسبه کند. همانطورکه از نام این روش پیداست، برای پیدا کردن نزدیکترین مقادیر ما مجبوریم که عملیات back-propagate را انجام دهیم.
تقلیل گرادیان mini-batch و تصادفی : سه نوع متفاوت از الگوریتم تقلیل گرادیان وجود دارد که در میزان اطلاعات مورد استفاده در محاسبه گرادیان هدف، تفاوت دارد. با اتکا بر میزان داده ها، یک الگوریتم بین دقت به روز رسانی پارامتر و میزان زمان مورد نیاز برای تکمیل به روزرسانی، تعادلی را ایجاد می‌کند. به جای یک سطح خطای ثابت، استفاده از یک سطح خطای پویا و حرکت رو به پایین در این سطح تصادفی، کارآیی به وسیله قابلیت حرکت بر روی سطوح صاف بهبود می‌یابد.

 

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

 

۱ – تقلیل گرادیان دسته ای (Batch) : تقلیل گرادیان دسته ای (تقلیل گرادیان وانیلی)، شیب تابع هزینه را با توجه به پارامتر θ برای کل مجموعه داده های آموزشی محسابه می‌کند :

Θ=Θ—η. ΘJ(Θ)

 

۲- تقلیل گرادیان تصادفی : در مقابل، تقلیل گرادیان تصادفی (SGD) عملیات به روز رسانی پارامتر را برای هر نمونه آزمایشی انجام می‌دهد – X(i) و Y(i) :

Θ=Θ—η. ΘJ(Θ;x(i);y(i))

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

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

Θ=Θ—η. ΘJ(Θ;x(i:i+n);y(i:i+n))

 

نکته ۵ : سیستم های یادگیری ماشین به طور عمده در طبقه بندی یادگیری supervised/unsupervised، یادگیری semi-supervised، یادگیری تقویتی، یادگیری آنلاین و دسته ای جای می‌گیرند. همه این سیستم ها بر روی آموزش مجموعه ای از داده ها فعالیت می‌کنند. این دسته بندی های گسترده بر پایه مجموعه داده های آموزشی به تعدادی الگوریتم مربوطه تقسیم می‌شود. چند نمونه مشهور عبارتند از : نزدیکترین همسایگان k، پسرفت منطقی و خطی، SVM ها، درخت های تصمیم گیری و جنگل های تصادفی، شبکه های عصبی (RNN، CNN ،ANN )، خوشه بندی (K-means، HCA) و موارد دیگر.

نظر بدهید

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

It is main inner container footer text