شرکت فناوران اینترنت اشیاء هیوا

يادگيری عمیق

یادگیری عمیق چیست؟

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

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

یادگیری عمیق چگونه کار می کند؟

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

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

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

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

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

روش های یادگیری عمیق

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

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

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

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

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

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

شبکه‌های عصبی به اشکال مختلف از جمله شبکه‌های عصبی مکرر، شبکه‌های عصبی کانولوشنال (convolutional)، شبکه‌های عصبی مصنوعی و شبکه‌های عصبی feed forward وجود دارند و هر کدام مزایایی برای موارد استفاده خاص دارند. با این حال، همه آنها به روش های مشابهی عمل می کنند ( با تغذیه داده ها و اجازه دادن به مدل تا برای خود تشخیص دهد که آیا تفسیر یا تصمیم درستی در مورد یک عنصر داده‌ای داده است یا خیر).

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

نمونه های یادگیری عمیق

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

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

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

محدودیت ها و چالش ها

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

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

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

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

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

یادگیری عمیق در مقابل یادگیری ماشین

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

شرکت فناوران اینترنت اشیاء هیوا از سال ۱۳۹۷ با بهره‌گیری از دانش، تخصص و تجربه افراد توانمند در زمینه یادگیری عمیق و یادگیری ماشین فعالیت می کند.