مقدمه
یادگیری عمیق یا Deep Learning زیرمجموعهای از یادگیری ماشین میباشد که توسط انواع زبانهای برنامه نویسی مثل پایتون، دستورات مربوط بهآن را در اختیار ماشین قرار میدهند تا دانش موردنیاز را استخراج کرده و فرآیند یادگیری را بهروش کاملاً هوشمند تقلید کند. در زمانهای قدیم، این علم را با نام تشخیص الگو میشناختند اما با گذشت زمان، الگوریتمها بسیار وسیعتر و پیچیدهتر شدند.
یادگیری ماشین، بر پایه دو الگوریتم کاربردی شبکههای عصبی و یادگیری عمیق انجام میگیرد. همواره بهخاطر داشته باشید که الگوریتمهای شبکههای عصبی با الهام گرفتن از ساختار مغز عمل میکنند ولی الگوریتمهای یادگیری عمیق، دارای معماری منحصربهفرد با تعداد لایههای فراوان میباشند که در داخل یک شبکه قرار میگیرد.
تابهحال به مکانیزم ماشینهای خارجی بدون راننده توجه کردهاید؟ در جواب باید بگویم که تکنولوژی یادگیری عمیق بهماشین این قدرت را میدهد که عابر پیاده را از طریق چراغ عقب خودرو تشخیص دهد و هیچ صدمهای بهاو وارد نکند. آیا تا بهامروز، باورتان میشد که روزی ماشینها هم مانند حیوانات بهصورت تعلیم دیده عمل کنند؟ بله. جالب است بدانید که در داخل این خودروهای سواری، یک مدل کامپیوتری آموزش دیده تعبیه شده است که وظایف تعریف شده راننده را بهوسیله عکس، صدا و متن اجرا میکند.
یادگیری عمیق چیست؟
این روش یکی از روشهای یادگیری ماشین میباشد که از متدهای سلسله مراتبی برای آنالیز و واکاوی رفتار انسان استفاده میکند. واحدهای پردازش در روش یادگیری خطی از چند لایه تشکیل میشود که به کمک هر کدام از لایهها، از دادههای ورودی، انواع ویژگیها و خصوصیات استخراج شده و در اختیار ماشین یادگیری قرار میگیرد. فرآیند یادگیری در این روش بهصورت نظارت شده یا بدون نظارت میباشد که منتاظر با سطوح مختلف انتزاعات موجود، سلسلهای از مفاهیم را برای تبدیل بهرفتار مشابه انسان، در اختیار ماشین یا ربات قرار میدهد. اگر میخواهید مبانی یادگیری عمیق را با ویدیوهای آموزشی فرا بگیرید میتوانید به آموزشهای فرادرس مراجعه کنید.
تاریخچه یادگیری عمیق
اولین الگوریتم عملی یادگیرنده، در دهه ۱۹۶۰ توسط دو محقق حوزه علوم کامپیوتر بهنامهای الکسی ایواخننکو و والنتن والا ارائه شد. رفته رفته این الگوریتم به تکامل رسید تا اینکه در سال ۱۹۷۱، یک شبکهی ژرف با ۸ لایه بهمرحله کنفرانس رسید و فرآیند یادگیری را با متد گروهی مدیریت داده، عرضه کرد.
عبارت یادگیری عمیق، برای اولین بار در سال ۱۹۸۶ بهوسیله دانشمند رینا دِختِر در حوزه یادگیری ماشین به کار رفت تاجاییکه او در یک مقاله با عنوان یادگیری به هنگام جستجو در مسائل ارضای محدودیت، از این عبارت محبوب برای تشریح فرآیند سیستم استفاده کرد. چرا میگویم عبارت محبوب؟! دلیل آن این است که از آن زمان تا بهامروز، لفظ یادگیری عمیق بسیار پرکاربرد شده و بر سر زبانها افتاده است.
در سال ۲۰۰۰ هم ایگور آیزنبرگ و همکاران، در حوزه شبکههای عصبی مصنوعی در کتاب نورونهای دودویی چندمقداری و جهانی از روش یادگیری عمیق استفاده کردند و عموماً امروزه یادگیری عمیق از روش تحلیل شبکههای عصبی میتواند الگوریتم آموزش را پیاده کند.
کاربردهای یادگیری عمیق در گذر زمان
هر تکنولوژی بهدنبال پیشرفتها و بهبود نقایص و عیبهایی که دارد؛ بهمرور زمان کاربردها و استفادههای خاص خود را پیدا میکند. الگوریتم یادگیری عمیق هم از این قاعده مستثنی نبوده و کاربردهایی دارند که در ادامه به مهمترین آنها اشاره میکنیم.
۱. شناسایی خودکار گفتار
LSTM RNNها یا سیستمهای شناسایی خودکار گفتار، توانایی یادگیری عمیق در بازههای چند ثانیهای گفتار را دارند که در بازههای زمانی گسسته انجام میگیرند. هر بازه زمانی متناظر، حدوداً ۱۰ میلی ثانیه بوده و میتواند با تشخیص دهندههای سنتی گفتار در حوزه دروازههای فراموشی، رقابت سازنده داشته باشد. اولین الگوریتم شناسایی گفتار، مبتنی بر فعالیتهای مقیاس کوچک طراحی شده و شامل ۶۳۰ متکلم از ۸ گویش اصلی انگلیسی امریکایی میباشد که در طی آن هر متکلم ۱۰ جمله را بیان میکند.
۲. پردازش زبان طبیعی
همان طور که قبلاً هم اشاره شد؛ از اوایل دهه ۲۰۰۰ تکنولوژی شبکههای عصبی با الهام از شرایط بیولوژیکی انسان و حیوانات برای پیادهسازی مدلهای زبانی، مورد استفاده قرار گرفت و اصلیترین دستاور آن این بود که LSTM به پیشرفت ترجمه ماشین و مدلسازی زبان کمک کرد. سایر کاربردهای پردازش زبان طبیعی در نمونهگیری منفی و نشاندن لغات خلاصه میشود.
نشاندن لغت را مثل Word2vec، میتوان بهعنوان یک لایه نمایشی در طی معماری یادگیری عمیق در نظر گرفت که وظیفه تبدیل یک یک لغت اتمی به نمایش مکانی لغت نسبت به سایر لغات را در پایگاه داده دارد. این موقعیت، به عنوان نقطهای در فضای برداری بهنمایش گذاشته میشود.
امکان استفاده از لغت-نشاندن به عنوان یک لایه ورودی RNN به شبکه یادگیری عمیق این اجازه را میدهد که جملات و عبارات را با استفاده از یک گرامر برداریِ ترکیبی، تجزیه کرده و یک گرامر برداری ترکیبی به عنوان گرامر مستقل از متن احتمالی که توسط یک RNN پیاده سازی شده، را تولید کند. روش رمزنگاری بازگشتی که برپایه لغت-نشانی طراحی شده؛ میتواند تشابه جملات را ارزیابی کرده و موقعیت آنها را شناسایی کند
. معماریهای عصبی عمیق، بهترین نتایج را برای بازیابی اطلاعات، تفسیر آماری، فهم زبان گفتگو، تحلیل احساس، ترجمه ماشینی، شناسایی سبک نوشتار، پیوند موجود مفهومی، طبقه بندی متن و غیره ارائه میدهند.
مزایای آموزش یادگیری عمیق
دو دلیل اساسی وجود دارد که کاربران و محققان حوزه علوم کامپیوتر را مشتاق میسازد تا از یادگیری عمیق بهعنوان زیرمجموعهای از هوش مصنوعی استفاده کنند. در ادامه، آن دو دلیل آورده شده است.
- در فرآیند یادگیری عمیق، اطلاعات برچسب گذاری شده در سطح گسترده و بهصورت لحظهای در داخل Labeled Dataها قرار میگیرد. برای مثال، ماشینهای بدون راننده، باید اطلاعاتی مانند ویدئوی خیابانها و تصاویر مربوط بهآنها را با جزئیات در Labeled Data داشتهباشند تا با پردازشهای لازم بهدرستی بهوظیفه خود عمل کنند.
- یادگیری عمیق قابلیت محاسبهگری بسیار بالایی دارد. بهطوری که در این الگوریتم، پردازنده های گرافیکی، ساختاری متوازن با قدرت عملکرد مطلوب دارند و این مزیت باعث میشود؛ در زمان محاسبه اطلاعات در حوزه کلان داده و به صورت خوشهای، زمان آموزش برای فرآیند یادگیری عمیق کاهش یافته و بهحداقل زمان ممکن برسد.
تفاوت های یادگیری ماشین و یادگیری عمیق
دوستان عزیز، همان طور که قبلاً هم در آموزش یادگیری عمیق اشاره شد؛ Deep Learning زیر شاخهای از یادگیری ماشین است. در فرآیند یادگیری ماشین (Machine Learning)، شروع سیستم بهوسیله استخراج دستی ویژگیها کلید میخورد. بهنحوی که از همین ویژگیها برای ساخت مدل دستهبندی استفاده میشود. این درحالی است که در یادگیری عمیق، فرایند استخراج ویژگیها به هیچ عنوان دستی نبوده و این کار در الگوریتم یادگیری عمیق کاملاً خودکار انجام میگیرد.
نکته دیگر این است که در یادگیری عمیق با افزایش تعداد دادههای ورودی، مدل آموزش هم گسترش مییابد ولی در یادگیری ماشین شرایط کاملاً فرق میکند و روال کار بهاین شکل نیست. در یادگیری ماشین، مدل تا میزان خاصی قابل گسترش است و انعطافپذیری بسیار پایینی دارد. بهنحوی که دیگر بعد از آن، با افزایش دادهها تغییری نخواهد کرد. بهعبارت دیگر میتوان نتیجه گرفت که از دلایل اصلی محبوبیت یادگیری عمیق، بهبود و توسعه آن با افزایش تعداد دادههای ورودی است. سایر تفاوتها هم در ادامه، آورده شده است.
عملکرد یادگیری عمیق چگونه است؟
آیا میدانستید که اصطلاح عمیق به تعداد لایههای مخفی شبکه عصبی استفاده شده برای یادگیری ماشین، اشاره دارد؟ نکته جالب، اینکه در ابتدا، شبکههای عصبی میتوانستند ۳ لایه داشته باشند اما امروزه با پیشرفت علوم کامپیوتر، شبکههای عصبی عمیق میتوانند از ۱۵۰ لایه هم تشکیل شوند.
برای درک کامل آموزش یادگیری عمیق این نکته را فراموش نکنید که الگوریتمهای یادگیری عمیق، از حجم بالای دادههای برچسب خورده و معماری شبکه های عصبی تشکیل شدهاند. بهطوری که ویژگیهای مربوط به هرکدام از دادهها را به صورت خودکار استخراج کرده و ما را از نیاز به استخراج دستی ویژگی مصون میسازد.
شبکه های عصبی مصنوعی
شبکههای عصبی مصنوعی که سیستمهای متصل کننده یا ANN نیز نامیده میشوند؛ محاسبهگرهای قوی هستند که از عملکرد ذهن انسان یا حیوانات استفاده میکنند. شبکههای عصبی، با بررسی کردن انواع مثالها و نمونههای موجود، فعالیتها و واکنشهای مغز را یادگیری کرده؛ عملکرد خود را در انجام فعالیتها بهینه میسازد و معمولاً این فرآیند بدون برنامه نویسی خاصی و فقط بهکمک لایههای برچسبگذاری شده انجام میگیرد.
برای درک بهتر، در عملیات شناسایی تصویر، شبکههای عصبی مصنوعی میتوانند یاد بگیرند که تصاویر شامل گلدان را با تحلیل تصاویر نمونه از پیش برچسبگذاری شده با عنوان تصاویر با گلدان یا تصاویر بدون گلدان شناسایی کرده و از نتایجِ تحلیلی حاصله برای شناسایی گلدان در موقعیتهای دیگر استفاده کنند. از شبکههای عصبی مصنوعی زمانی استفاده میشود که الگوریتمهای سنتی قدیمی پاسخگوی نیاز مجموعه نباشند.
شبکههای عصبی مصنوعی از مجموعهای از واحدهای متصل، به نام نورونهای مصنوعی تشکیل میشوند. هر اتصال نورون یا گره باعث انتقال سیگنالی از یک نورون به نورون دیگر شده و در واحد دریافت کننده، سیگنالها و نورونهای پایین متصل به آن پردازش میشوند. حالات بین نورونها با استفاده از بازه اعداد حقیقی بین ۰ و ۱ نمایش داده شده و وزن نورونها با پیشرفت یادگیری، تنظیم میگردد.
این وزن، قدرت سیگنال ارسالی به نورونهای پایین را افزایش یا کاهش میدهد. نورونها در هر کدام از لایههای شبکه عصبی سازماندهی شده و تبدیلات مختلفی را برروی ورودی خود، اِعمال میسازند. سیگنالهای موجود، همواره از اولین لایه که همان لایه ورودی میباشد؛ به آخرین لایه که لایه خروجی نام دارد؛ حرکت میکنند. لازم بهذکر است که ممکن است سیگنالها از برخی لایهها بیش از یک بار عبور کنند.
هدف از ابداع این روش، حل مسائل پیشرو توسط ماشینها و رباتها به روش ذهن هوشمند انسان است. براساس مطالعات و تحقیقات صورت گرفته تا سال ۲۰۲۰، شبکههای عصبی از چندمیلیون واحد و چند میلیون اتصال برخوردار هستند. جالب است بدانید که این عدد بسیار کوچکتر از تعداد نورونهای مغز انسان و حتی بعضی حیوانات مثل سگ هستند اما با این حال، این شبکهها میتوانند فعالیتهای زیادی را در سطح فراانسانی انجام داده و حتی در برخی موارد با انسانها رقابت کنند.
شبکه های عصبی عمیق
در این بخش از آموزش یادگیری عمیق، شبکه عصبی عمیق یا DNN مورد بررسی قرار میگیرد. شبکه عصبی عمیق، زیرمجموعه شبکه عصبی مصنوعی است که از لایههای کثیر و متنوع تشکیل شده است. این لایهها بین لایه ورودی و لایه خروجی قرار میگیرند. شبکه عصبی عمیق روابط ریاضی خطی یا غیر خطی صحیحی را که میتوان از آنها برای تبدیل ورودی به خروجی استفاده کرد؛ پیدا میکنند.
شبکه عصبی عمیق با حرکت در میان لایهها، احتمال بروز هر خروجی را محاسبه و پیشبینی میکند. برای مثال، شبکه عصبی عمیق آموزش دیده تا نوع گلهای داخل گلدان را تشخیص دهد؛ تصویر داده شده توسط کاربر را بررسی کرده؛ احتمال اینکه گل داخل تصویر، یک گل کمیاب باشد را محاسبه نموده و براساس درصد احتمال ممکن، برچسب پیشنهادی را بازمیگرداند. شبکه عصبی عمیق، هر نوع محاسباتی را به عنوان یک لایه در نظر میگیرد. برای یادگیری شبکههای GAN با زبان پایتون میتوانید به آموزشهای فرادرس مراجعه کنید.
شبکههای عصبی عمیق پیچیده، دارای محاسبات ریاضی بیشتر و بهمراتب دارای لایههای زیادتری هستند و ذاتاً بههمین علت است که نام شبکههای عمیق برای آنها انتخاب شده است. هدف نهایی شبکههای عصبی عمیق این است که بهکمک آن، ماشین بهنحوی آموزش داده شود که تصویر را به ویژگیهای آن تجزیه نموده، روندهای موجود در نمونهها را شناسایی کرده و تصاویر جدید را طبق شباهتهایشان طبقهبندی کند.
بسیار مهم است که در انجام این عملیات هیچ گونه دخالت انسانی وجود نداشته باشد. در معماری شبکههای عصبی عمیق، مدلهای ترکیبی تولید میشوند که در آن هر شیء به عنوان ترکیبی از لایههای دادههای ورودی خواهدبود. لایههای اضافی، امکان ترکیب ویژگیهای دیگر لایههای پایینی را فراهم میکنند. معماریهای عمیق شامل چند روش اساسی ترکیبی هستند. میتوان بهجرئت گفت که هر معماری در زمینه سیستم برنامهریزی منحصربهفرد خود موفق عمل میکند و مقایسه عملکرد انواع معماریها بههیچ عنوان ممکن نیست؛ مگر اینکه روی یک مجموعه داده با معیارهای برابر ارزیابی شوند.
در داخل شبکههای عصبی عمیق، دادهها بدون حلقه از لایه ورودی، بهلایه خروجی جریان مییابند. بهاین ترتیب که، DNN نگاشتی از نورونهای مجازی تشکیل داده و به اتصالات میان آنها، وزن یا مقادیر عددی تصادفی اختصاص میدهد. وزنها و ورودیها در یکدیگر ضرب شده و یک خروجی در بازه ۰ تا ۱ برگردانده میشود. اگر شبکه عصبی عمیق نتواند الگوی مورد نظر را تشخیص دهد؛ یک الگوریتم از وزنهای اختصاص داده شده را تنظیم کرده و از طریق آن، تأثیر بعضی از پارامترها را کم یا زیاد میکند و تا زمانیکه محاسبات ریاضی مناسبی را برای پردازش کامل دادهها پیدا نکرده باشد؛ این کار را ادامه میدهد.
کلام آخر در رابطه با آموزش یادگیری عمیق
دوستان و همراهان همیشگی مجموعه پی استور، از اینکه تا آخر این مقاله با همراه بودید؛ از شما متشکریم. با مطالعه این پست آموزشی، مقدمات و ملزومات یادگیری عمیق را آموختید. حال وقت آن رسیده که مطالعه کدها و روشهای برنامه نویسی این الگوریتم در انواع محیطهای برنامه نویسی را شروع کرده و پیادهسازیهایتان را انجام دهید. پیشنهاد میکنیم مقاله زیر را نیز حتماً مطالعه فرمایید:
در هر مرحله که دچار مشکل شدید؛ تیم پی استور آماده پاسخگویی به سؤالات شما عزیزان میباشد. کامیاب باشید.