مباحث یادگیری عمیق و شبکههای عصبی میتوانند گیجکننده باشند. اما باید توجه داشته باشید که برای استخدام یادگیری عمیق در مصاحبههای کاری علوم داده، عمدهی سؤالات از چند مبحث خاص مطرح میشوند. بعد از بررسی صدها نمونه از این مصاحبهها، به ۱۰ مفهوم از یادگیری عمیق رسیدم که اغلب موردتوجه مصاحبهگران قرار میگیرد.
در این نوشتار، این ۱۰ مفهوم را با هم مرور میکنیم:
- توابع فعالسازی
در صورتی که شناختی از شبکه های عصبی و ساختار آنها ندارید پیشنهاد میکنم ابتدا این مقاله را مطالعه کنید تا مشکلی برای استخدام یادگیری عمیق از این بابت نداشته باشید.
بعد از آشنایی مختصر با نورونها/گرهها، درمییابید تابع فعالسازی مثل کلیدی است که تعیین میکند یک نورون خاص باید فعال شود یا خیر.
توابع فعالساز انواع مختلفی دارند، اما از محبوبترین آنها میتوان به تابع یکسوساز خطی یا ReLU اشاره کرد. این تابع از توابع سیگموئید و تانژانت هذلولوی شناختهشدهتر است، زیرا گرادیان کاهشی را با سرعت بیشتری اجرا میکند. با توجه به تصویر بالا، مشاهده میکنید که وقتی x (یا z) خیلی بزرگ باشد، شیب به شدت کاهش مییابد و در نتیجه سرعت کاهش گرادیان به میزان چشمگیری آهسته میشود. اما این نکته برای تابع ReLU صدق نمیکند.
- تابع هزینه
تابع هزینه یک شبکهی عصبی مانند توابع هزینهای است که در سایر مدلهای یادگیری ماشین به کار میروند و برای استخدام یادگیری عمیق آشنایی با آنها ضروری است. تابع هزینه معیاری برای ارزیابی عملکرد مدل، از طریق سنجش شباهت مقادیر پیشبینیشده با مقادیر واقعی است. تابع هزینه با کیفیت مدل رابطهی عکس دارد؛ یعنی هر چه مدل بهتر باشد، تابع هزینه پایینتر خواهد بود و بالعکس.
تابع هزینه را میتوان بهینهسازی کرد.وزنها و پارامترهای بهینهی مدل، با حداقل ساختن تابع هزینه قابل دسترسی هستند.
از توابع هزینهی متداول میتوان به تابع درجه دوم، تابع آنتروپی متقاطع، تابع هزینه نمایی، فاصله هلینگر و واگرایی کولبک-لیبلر اشاره کرد.
- پسانتشار
موردی که برای استخدام یادگیری عمیق باید بدانید این است که پسانتشار ارتباط نزدیکی با تابع هزینه دارد. پسانتشار الگوریتمی است که برای محاسبهی گرادیان تابع هزینه به کار میرود. این الگوریتم با توجه به سرعت و کارآیی بالایی که در مقایسه با سایر رویکردها دارد، از محبوبیت و کاربرد بالایی برخوردار شده است.
نام پسانتشار برگرفته از این واقعیت است که محاسبهی گرادیان از آخرین لایهی وزنها آغاز شده و به سوی گرادیانهای اولین لایه، یعنی به سمت عقب، حرکت میکند. بنابراین خطای لایهی k وابسته به لایهی بعدی یعنی k+1 است.
نحوهی کار الگوریتم پسانتشار را میتوان در این گامها خلاصه کرد:
- انتشار رو به جلو را برای هر جفت ورودی-خروجی محاسبه میکند؛
- انتشار رو به عقب هر جفت را محاسبه میکند؛
- گرادیانها را ترکیب میکند؛
- وزنها را بر اساس نرخ یادگیری و گرادیان کلی، به روزرسانی میکند.
این مقاله به خوبی مبحث پسانتشار را پوشش داده و برای مبحث استخدام یادگیری عمیق مناسب است.
- شبکههای عصبی پیچشی
شبکهی عصبی پیچشی (CNN) نوعی شبکهی عصبی است که به ویژگیهای مختلف ورودی (که اغلب یک تصویر و یا بخشی از یک متن میباشد.) مقادیر اهمیت اختصاص داده و سپس یک خروجی تولید میکند. آنچه باعث مزیت CNNها نسبت به شبکههای عصبی پیشخور میشود این است که وابستگیهای فضایی (پیکسلی) سراسر تصویر، و در نتیجه ترکیب تصویر را بهتر درک میکند.
CNNها در واقع یک عملیات ریاضیاتی به نام کانولوشن اجرا میکنند. طبق تعریف ویکیپدیا، کانولوشن یک عملیات ریاضیاتی است که روی دو تابع انجام میشود و خروجی آن، تابع سومی است که نشان میدهد شکل یکی از آن توابع چطور توسط دیگری تغییر میکند. پس CNN به جای ضربهای ماتریسی معمولی، حداقل در یکی از لایههای خود، از عملیات کانولوشن استفاده میکند.
- شبکههای عصبی بازگشتی
اگر مشتاق استخدام یادگیری عمیق هستید باید بدانید شبکههای عصبی بازگشتی (RNN) نوع دیگری از شبکههای عصبی هستند که به خاطر قابلیت پردازش دادههایی با اندازههای گوناگون، روی دادههای توالی عملکرد بسیار خوبی از خود نشان میدهند. RNNها علاوه بر ورودیهای فعلی، ورودیهای قبلی را هم درنظر میگیرند؛ بنابراین یک ورودی خاص میتواند بر اساس ورودیهای قبلی، خروجیهای متفاوتی تولید کند.
از نظر فنی، RNNها گروهی از شبکههای عصبی هستند که اتصالات بین گرههایشان، علاوه بر یک توالی زمانی، یک گراف جهتدار ایجاد میکند و بدین ترتیب آنها را قادر میسازد از حافظهی داخلی خود برای پردازش توالیهایی با طول متغیر استفاده کنند.
به بیان خلاصه، RNNها نوعی از شبکههای عصبی هستند که اساساً روی دادههای توالی یا سریهای زمانی به کار میروند.
- شبکههای حافظهی کوتاهمدت بلند (LSTM)
شبکههای LSTM نوعی از شبکه های عصبی بازگشتی هستند که برای جبران یکی از نقاط ضعف RNNها یعنی حافظهی کوتاهمدت، ساخته شدهاند و برای استخدام یادگیری عمیق باید با آن آشنا باشید.
به بیان دقیقتر، اگر یک توالی طولانی داشته باشیم (برای مثال رشتهای با بیشتر از ۵-۱۰ گام)، RNNها اطلاعات مربوط به گامهای اول را فراموش خواهند کرد. به عنوان مثال، اگر یک پارگراف را به RNN تغذیه کنیم، احتمال نادیده گرفته شدن اطلاعات ابتدای پارگراف وجود دارد.
LSTMها برای حل این مشکل به وجود آمدند.
در این مطلب میتوانید اطلاعات بیشتری در مورد LSTMها به دست آورید.
- تعریف وزن
هدف از تعریف وزن اطمینان حاصل کردن از این است که شبکهی عصبی به یک راهکار بیهوده همگرایی نخواهد داشت.
اگر مقدار تعریفشده برای همهی وزنها یکی باشد (برای مثال همه ۰ باشند)، همهی واحدها سیگنالی دقیقاً یکسان دریافت میکنند؛ در نتیجه، لایهها طوری رفتار میکنند که فقط یک سلول واحد وجود دارد.
بنابراین، باید به صورت تصادفی مقادیر نزدیک صفر، اما نه خود صفر، را به وزنها اختصاص دهیم. الگوریتم بهینهسازی تصادفی که برای آموزش مدل به کار میرود از این قاعده استثناست.
- مقایسه گرادیان کاهشی تصادفی با گرادیان کاهشی دستهای
افراد مایل به استخدام یادگیری عمیق باید بدانند که گرادیان کاهشی دستهای و گرادیان کاهشی تصادفی دو روش متفاوت برای محاسبهی گرادیان هستند.
گرادیان کاهشی دستهای، گرادیان را بر اساس همهی دیتاست محاسبه میکند. این روش در دیتاستهای بزرگ، سرعت پایینی خواهد داشت، اما برای هموارسازی یا واگرا شدن منیفلد خطا بهتر است.
در روش گرادیان کاهشی تصادفی، گرادیان در هر بازهی زمانی، بر اساس یک نمونهی آموزشی واحد محاسبه میشود. به همین خاطر، این روش از نظر محاسباتی سریعتر و کمهزینهتر است. با این حال، در این روش، بعد از رسیدن به کمینهی سراسری، جستجو در اطراف همچنان ادامه میباید. نتیجهی این روش قابلقبول است، اما بهینه نیست.
- هایپرپارامترها
هایپرپارامترها متغیرهایی هستند که ساختار شبکه را تنظیم میکنند و بر نحوهی آموزش آن نظارت دارند. از جمله هایپرپارامترهای متداول میتوان به این موارد اشاره کرد:
- پارامترهای معماری مدل همچون تعداد لایهها، تعداد واحدهای نهان، و …؛
- نرخ یادگیری (آلفا)؛
- تعریف وزنهای شبکه؛
- تعداد دورهها (دوره به معنی یک چرخهی کامل در دیتاست آموزشی است)
- اندازهی بستهداده
- نرخ یادگیری
نرخ یادگیری یکی از هایپرپارامترهای شبکههای عصبی است که بر اساس خطای برآورد شده در هربار به روزرسانی وزنها، میزان انطباق مدل را تعیین میکند.
اگر نرخ یادگیری خیلی پایین باشد، سرعت آموزش مدل آهسته خواهد بود؛ زیرا در هر تکرار، وزنهای مدل به حداقل میزان ممکن به روزرسانی خواهند شد. به همین دلیل، قبل از رسیدن به کمینه، باید بهروزرسانیهای زیادی انجام شود.
اگر نرخ یادگیری خیلی بالا باشد، توابع زیان رفتاری واگرا خواهند داشت. زیرا در به روزرسانی وزنها، تغییراتی چشمگیر رخ میدهد. این رفتار ممکن است آنقدر شدید باشد که تابع هیچگاه همگرا نشود.
منبع: هوشیو