از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه آموزشی، مدرس به بررسی مفهوم گرادیان و نقش آن در بهینهسازی شبکههای عصبی میپردازد. به طور خاص، به الگوریتم گرید دیسنت به عنوان یک روش بهینهسازی معرفی میشود که با تغییر پارامترهای مدل به صورتی کاهش خطا انجام میدهد. همچنین، تأثیر اندازه گام (learning rate) در سرعت و دقت بهینهسازی مورد بررسی قرار میگیرد. در نهایت، اهمیت تکرار و بهینهسازی در یادگیری ماشین مطرح میشود.
نکات کلیدی
گرادیان به عنوان یک بردار در بهینهسازی مدلهای یادگیری عمیق، جهت و اندازه تغییر پارامترها را نشان میدهد.
اندازه گام (learning rate) تأثیر زیادی بر سرعت و دقت بهینهسازی دارد و انتخاب مناسب آن برای مدل ضروری است.
گرید دیسنت یک الگوریتم بهینهسازی است که با تغییر پارامترهای مدل به صورتی خطا را کاهش میدهد.
برخی از مدلها ممکن است به لوکال مینیموم رسیده و به مقدار بهینه نرسند، که یک چالش در بهینهسازی است.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
گرادیان به عنوان یک بردار در بهینهسازی مدلهای یادگیری عمیق، جهت و اندازه تغییر پارامترها را نشان میدهد.
اندازه گام (learning rate) تأثیر زیادی بر سرعت و دقت بهینهسازی دارد. اگر گام بزرگ باشد، مدل ممکن است از مقدار بهینه دور شود و اگر کوچک باشد، به سمت آن حرکت میکند اما به طور کندی.
در برخی موارد، مدل ممکن است به لوکال مینیموم رسیده و به مقدار بهینه نرسد، که یک چالش در بهینهسازی است.
آخرین بهروزرسانی محتوای متنی:
در این دوره جامع، وارد دنیای Deep Learning (یادگیری عمیق) میشویم و مفاهیم اصلی، الگوریتمها و تکنیکهای مورد استفاده در ساخت مدلهای هوش مصنوعی را از پایه یاد میگیریم. این دوره برای افرادی طراحی شده که میخواهند درک عمیقی از شبکههای عصبی، معماریهای مدرن یادگیری عمیق و نحوه پیادهسازی مدلهای هوش مصنوعی با Python و PyTorch داشته باشند. در طول این دوره ابتدا با مفاهیم پایه Deep Learning آشنا میشویم و سپس قدمبهقدم به سمت ساخت و آموزش مدلهای واقعی حرکت میکنیم. در این دوره یاد میگیرید: 🔹 مفاهیم پایه یادگیری عمیق و نحوه عملکرد شبکههای عصبی 🔹 کار با Python، NumPy و PyTorch برای توسعه مدلهای Deep Learning 🔹 ساخت و آموزش Artificial Neural Networks (ANNs) 🔹 مفهوم Gradient Descent و نحوه بهینهسازی مدلها 🔹 جلوگیری از Overfitting با روشهایی مانند Regularization و Cross Validation 🔹 انتخاب Activation Function، Optimizer و Hyperparameterها 🔹 ساخت Feed Forward Neural Networks 🔹 ارزیابی عملکرد مدلهای یادگیری ماشین 🔹 کار با پروژههای عملی Deep Learning 🔹 آشنایی با Autoencoderها 🔹 اجرای مدلهای Deep Learning روی GPU 🔹 طراحی و پیادهسازی Convolutional Neural Networks (CNNs) 🔹 پروژههای مرتبط با تصاویر و Computer Vision 🔹 Transfer Learning و استفاده از مدلهای از پیش آموزشدیده 🔹 Neural Style Transfer 🔹 Generative Adversarial Networks (GANs) 🔹 Recurrent Neural Networks (RNNs) و مدلهای GRU/LSTM 🔹 مباحث اخلاقی و آینده Deep Learning همچنین در بخشهای ابتدایی دوره، مباحث ضروری Python شامل: ✅ ساختار دادهها در Python ✅ Indexing و Slicing ✅ Functions ✅ Flow Control ✅ کار با Text و Plotها بررسی میشود تا بتوانید بدون نیاز به پیشنیازهای پیچیده وارد دنیای Deep Learning شوید. این دوره مناسب چه کسانی است؟ این دوره برای: 🎯 دانشجویان و علاقهمندان هوش مصنوعی 🎯 برنامهنویسانی که میخواهند وارد حوزه Machine Learning و Deep Learning شوند 🎯 Data Scientistها و تحلیلگرانی که میخواهند مهارتهای خود را ارتقا دهند 🎯 افرادی که قصد ساخت پروژههای واقعی AI دارند مناسب است. پیشنیازهای دوره برای شروع این دوره بهتر است با موارد زیر آشنایی اولیه داشته باشید: ✔ مفاهیم پایه برنامهنویسی ✔ آشنایی مقدماتی با Python ✔ آشنایی اولیه با ریاضیات پایه اما تمام مباحث مورد نیاز در طول دوره مرور و توضیح داده خواهد شد. اگر به دنبال یادگیری Deep Learning به صورت اصولی و پروژهمحور هستید، این دوره میتواند مسیر شما را برای ورود به دنیای هوش مصنوعی هموار کند. 📌 برای مشاهده تمام جلسات این دوره، کانال Pista Academy را دنبال کنید. 🌐 وبسایت: https://pistaacademy.ir
باشه. تقریباً تمام ففرآیند آموزش یک شبکه
عصبی حول همین ایده میچرخه.
اینم موضوعاتی که میخوایم پس صحبت کنیم
راجع بهش.
گرید دیسنت اصلاً چیه؟ گریدین دیسنت یک
الگوریتم بهینهسازیه برای پیدا کردن
مقداری از پارامتر مدل استفاده میشه که
مقدار خطا رو تا حد امکان کاهش بده.
در یک شبکه از پارامتر اصلی معمولاً یکی ویته یکی بایاسه.
هدف از آموزشم اینه که بتونم مقادل مناسب
رو برای این پارامترا پیدا کنم. به زبان
بسیار ساده.
مدل یک پیشبینی انجام میده. مقدار خطای
خودشو اندازهگیری میکنه. سپس پارامترشو
یه کمی تغییر میده در جهتی که بتونه اون
خطا رو کاهش بده.
یه مثال فرض کنید. میگه فرض کنید یه دونه پارامتر بیشتر نداریم. دبلیو
مقدار خطا بر اساس این پارامتر به شکل زیر
است
یا از نظر ریاضی این
فرض کنید میگه مدل در ابتدا نمیدونه جواب صفره مثلاً میاد از ۴ شروع میکنه مقدار
خلا میشه چقدر ۴ منهای صفر به توان ۲ میشه
۱۶
حالا باید بفهمیم دبلیو رو بیشتر کنیم یا
کمتر اینجاست که مفهوم گردینت میاد وسط
میگه در یک بعد یعنی در یک بعد گردینت همان مشتق تابهست
یعنی مشتق دبلی د میشه دبلیو
برگشتیم به دوران دبیرستان حکم
طبیعتاً توی دبلیو ۴ گردینتش میشه ۸ عدد مثبت نشون میده که اگه به سمت راست
حرکت بکنیم تابع افزایش پیدا میکنه. پس
برای کاهش تابه باید در جهت مخالف حرکت
کنیم.
اینم فرمول اصلی گرید. بچهها لازم اینا رو یاد بگیرید. اون بک چیزشو فرمولاشوها
مفهومشو یاد بگیرید. خب اینا رو قراره کد
بزنید. خب
پس ما همیشه در جهت خلاف تابع حرکت میکنیم.
لنین ری چیه؟ مشخص میکنید در هر مرحله چقدر حرکت بکنید. مثلاً یه مثالی براتون
بزنم.
شما میدونید که مثلاً قراره به سمت جلو
حرکت بکنید.
خب یه وقتی هست میگید که خب من ۱۰۰ متر
میرم جلو. یکی هست میگه ۸۰ متر. اینجا
میاد یه ترمزی میذارید برای اینکه آدمه
همینوری جلو نره. مثلاً بگه شما ۲ متر د
متر برو جلو. تا برسی به مقصدت یکی میگه
نه ۵ تا ۵ تا برو جلو پس لرنین ریت میزان
حرکت ما در اون جهت مورد نظر رو مشخص
میکنه میزانشو
هرچی لنینو کمتر باشه ما کندتر پیش میریم برای کاهش خطا هرچم بیشتر باشه امکان داره
یهو بپریم یه جامپ زیاد بزنیم و خوب نیست
اینا
میگه گریدن دیسنتو مانند پایین آمدن از کور تصور کنید فرض کنید در ارتفاع یه کوه
قرار داریم و هوا کاملاً مقالوده
پایین دره رو شما نمیبینید پس طبیعتاً
انتظار نباید داشته باشید که یهو طرف شروع
کنه به دوییدن چون جلوشو نمیبینه خب اون
مه حکم لرنی توو داره
ولی جهتو میدونی میدونی به سمت پایین
باید بیا بیایم
بنابراین میایم چیکار میکنیم؟ مه میشه لینینگ ریتمون جهتم که میدونیم به سمت
پایین قدم به قدم آهسته میایم پایین هرچی
لنرن ریتو ببرین بالا یعنی مهو کمتر بکنیم
سرعت شما بیشتر میشه ولی از مسیر لذت
نمیبرید
خب
میگه توی شبکههای عصبی امکان داره میلیاردها ویت وجود داشته باشه شبکه باید
بفهمه که هر کدومو چقدر تغییر بده حالا با
اون ففرآیندی که ما جلسه قبلی صحبت کردیم
توی بک پروگشه وقتی برمیگردیم گردینتها محاسبه میشه
بعد از روی گردینتها ما میفهمیم که ویتها رو باید چهجوری تغییر بدیم
این د تا مفهوم بچهها یکی نیستن حواستون
باشه
میخواستم اینو رد کنم جلوتر بگم ولی فک کنم الان باید بگردم
ما هدفمون این بود که بتونیم به یه مینیموم
لاس برسیم دیگه مینیموم در حقیقت خطا
برسیم این کل هدف ماست
بذار بیایم بالاتر رد نکنم خب
میگه که یه تابع ساده رو تصور کنید ار مساوی ایک د خب این فقط یه دونه مینیموم
داره طبیعتاً این تابع یه مینیموم داره
شما وقتی بکشینش یه جا کف داستان داستانه
خب یه همچین شکلی داره مساوی ایک بذارید
اینجا بکشیم
این ار مساوی ایک د مثلاً این محورمون باشه
اینجوریه
مینیموممون کجاست اینجا تو نقطه صفره یه دونه مینیموم بیشتر نداریم اما
لزوماً همیشه اینجوری نیستش که مثلاً یه
دونه مینیموم داشته باشیم. بعضی از در
حقیقت توابع واقعی دیپلینگ خیلی پیچیدهست.
مثلاً یه همچین شکل و شمالی داره. خب چه
اتفاقی میفته؟ اینجاست که ما امکان داره
چند تا مینیموم داشته باشیم نه لزوماً یه
دونه.
امکان داره یکی از مینیموم ۵ باشه یکی از
مینیمومموم یک باشه. بریم جلوتر.
نقطه اولو بهش میگن لوکال مینیموم. نقطه
دوم بهش میگن گلوبال مینیموم یعنی شما یه
همچین چیزی تصور کنید
شکلی
خب این میشه لوکال مینیموم میشه گلوبال حالا مسئله چیه بذارین جلوتر بهتون بگم
اینو که گفتم
میگه نقطهای که از اطراف خودش کمتره ولی
لزوماً نسبت به کل فرایند کمترین مقدار
لاس نیست ست
مشکل گریدین دیسنت چیه؟ میگه فرض کن گریدن
دیسنت برسه به یه دونه لوکال مینیموم
الگوریتم فکر میکنه که به بهترین حالت
خودش رسیده در صورتی که اگه یه مقدار دیگه
پارامتررو تغییر بدیم امکان داره برسیم به
اون گلوبال مینیم مینیمومه پس این میشه
یکی از مشکلات بزرگ ما
خب پس این میخواستم تفاوت بین این د تا پس میگه وقتی مدل داره ویتا رو عوض میکنه
کنه امکان داره برسه به این نقطه بگه اه
به به چه جای خوبی لاسو آوردم پایین در
صورتی که اگر بتونه پارامتر رو یه مقدار
دیگه تغییر بده و بهترم تغییر بده امکان
داره برسه به این نقطه
خب یه تابعی رو ف تصور کنید با این فرمول ایک ۴ منهای سه ای د مشتقش میشه چی میشه ۴
ایک س۳ منهای ش ایک این تابع اگه بکشیمش
بچهها بریم اینو با هم بکشیم بذار من
اینو همین جا دست به نق بکشم بشمش
خب ببینید
تابش خب
ایناش این محور این اینم محور
فرض کنید اینم یکه این دوئه این ۳ ۴ ۵
اینم منفیشه
اینم مثبت این منفی منفی
میخوایم این تابه رو بیم بکشیم ببینیم
چند تا نقطه منفی داره اول صفر رو میدیم
میشه صفر پس میشه این نقطهمون اینجاست
یک بدی میشه ۴ من ش میشه د منفی د میشه پس
یه نقطهمونم اینجاست
اگر ایکسو د بدم د ب توان سه میشه ۸ ۴۸ تا
۳۲ منهای ۱۲ میشه ۲۰ پس یه نقطه میره خیلی
بالا مثلاً اینجاست فرض کنید
بعد
منفی ی بدم
یه نقطههم پس شد اینجا
این نیست اینو اشتباه کشیده بودم اگه منفی
ی بدم میشه منفی ۴ میشه د اینجا
میگه منفی د بدم میشه منفی ۸ منفی ۳۲ میشه مثبت ۲۰ دوباره میشه میره بالا
۳۲ اینم مثبت ۲۰ خب پس یه همچین شکلی داره میشه تابهمون البته این درجه سه حالا یه
ذره پیش چیز تلا این خطا رو باید برام وصل
بکنیم که فشار بذار من توی چیز بکشمش
براتون این صبر کنید خب بچهها اینجا نگاه
کنید این شکلیه
اینو بزرگترش کنم
یه همچین شکلی داره. حالا سؤالم از شما که این مینیمومش چنده؟ دقت بکنید ما چند تا
نقطه مینیموم داریم؟ اینا صفرم نیستن
بچهها. یه ذره عدداش چیزتره
خب این بزرگش کنم. اینجا ما چند تا مینیموم
داریم؟
اینجا یه حالت کوهتطوریه. من میشه زومش
کرد
یه جوری اگه میشد اینو محدودش کرد عالی میشد آها ایر مینو بذاریم
مثلاً
منفی د تا د رو بکشه فقط
میبینید بچهها اینجا رو
ما از اینجا الان یه دونه این منفی در
حقیقت مینیمومون اینجاست بذار یه دونه
بیشترش بکنم
منفی مثلاً ۱۰ تا ۱۰
یه همچین چیزی
این مثلاً مینیموم ماست تو این بازهها اینم ماکسیموم ولی بازه رو
بزرگتر کنیم امکان داره مینیموم دیگه هم
بیفته
بذار ببینم مثلاً
۳۰ بدیم چی میشه
اینم یه ذره بیشترش کنیم منفی ۲۰ ۲۰
این مینیمومونم روی منفی دوه مینیموم مقدار رو منفی د بذارین خب اینجا
چی داره میگه بهمون خب
میگه ایکسو صفر در نظر بگیریم میشه استارتینگ پورت ما نقطه شروع ما مشتریم
تو اون فرموله میشه صفر پس گریدنس هیچ
حرکتی نمیکنه
اهم
جهت نداره دیگه مقدار وقتی صفر بشه جهت
حرکت ما بهش ندادیم نگفتیم مثبت برو یا
منفی برو چرا استاد این استادی اون بده
چون گریدن دیسنت مقدارش شده صفر نمیتونه
تصمیم بگیره کدوم سمت حرکت بکنه
در حال که ممکنه مینیموم جای دیگهای باشه
مینیمومو دیدیم کجا بود دیگه مینیموم
اینجا بود
ما گدسنتمون اول شد صفر و این گدن دیسنت
صفر معنیش اینه که من رسیدم به نقطه ایدآل
درص که نقطه ایدآل نیست
یه نقطه ایدآل دیگه وجود داره اونم
اینجاست
یعنی ما این نقطه صفر رو پیدا کردیم یم
گفتیم که رسیدیم به حداقل قضیه
راهحل چیه گفته باید استارت اینگیم پورتو تغییر بدیم
حالا گریدینت دیگه صفر نیست و میتونیم
جهتو مشخص بکنیم
خب میگه توی دیپلینگ معمولاً ویتها رو ما صفر
نمیذاریم
از رندم استفاده میکنم برای شروع
یه مقادیر رندم که حالا تو فصل بعدی
بچهها اینا رو مفصل صحبت میکنیم من الان
میخوام یه دیدی پیدا بکنید
مثلاً منفی د بدیم چند میشه تو این فرمولا منفی د بدیم چند میشه هر کدوم باید مشخص
بکنید
بذارید اینو بنویسم
ضرر نداره یه اکسل بذارید باز کنم خب
یه لحظه من صندلیم گیر کردی خب بریم یه دقیقه ببینیم که اینو چهجوری
حساب کتاب کنیم
یه ذره کوچیکش کنم بذار دیگه کار میکنم
خب صفحه رو دو نیم کنیم اینم یه ذره زومشو
زیاد کنیم بیایم بالا میخوایم اینو حساب
کنیم ببینیم چهجوریه برای منفی د خب من
این اسمشو میذارم استارتینگ پوینت
اینم میذارم مقدار گر تی که قراره حساب
بشه برای منفی د مقدار چقدر میشه اینجا تو
این فرموله اینا رو من بنویسم منفی د
منفی ۱
منفی نیم
صفر نیم ۱ ۲ بعد بذارم همه رو تو این
فرموله
خب تو این
منفی د میشه چقدر
منفی منی ۳۲ ۱۲ ازش کم کنید میشه میشه ۲۰
منفی ۱ میشه منفی ۴ ۶ میشه ۲ منفی نیم به
توان سه میشه ۱/شتم میشه ۱/۲وم یه نیم
اینور شما نگه دارید منفی نیم اونورم
میشه سه میشه د و نیم
صفرم که صفره خود نیم میشه
یه نیم سمت چپ داشته باشید یه منفیه این
میشه د و نیم باز دوباره
ی میشه چش منفی د
د د بدیم میشه ۸ ۳۲ تا میشه ۲۰ تا د
خب اینجا این مقدار گرزین دیسنته این به ما میگه که
باید خلاف جهت حرکت بکنیم
میام خلاف جهت حرکت میکنم میرسم به د
باید خلاف جهت برم یه ذره بیشتر شد
صفر شد اینجا دیگه نمیتونم برم جلو گدین
سنت من صفره نمیتونه جهت بده به و فکر
میکنه نشسته به نقطه ایال دست که یه ذره
تغییر بکنه میرسه به منفی د
ولی خب بچهها تو مدلای واقعی ما با یه دونه پارامتر طرف نیستیم امکان داره
پارامتر خ امکان که نه قطعاً پارامترا
خیلی بیشتری داریم
چون د تا پارامتر داریم میگه مشترق به هر دو تاش حساب کنیم و
حالا گرینت دیگه فقط یه دونه عدد نیست مثل
اینجا یک وکتوره یک برداره
تو یه بعد گردینت میشه یک عدد تو دو بعد میشه وکتور
ولی تو شبکههای عصبی ما اصلاً خیلی تعداد
بیشتر از این حرفاست.
بذار من اونایی که مهمه و جلوتر نیاز داریمو بگم.
آها این نکته با میگه که یه جاهایی ما دنبال کم کردن نیستیم دنبال ماکسیمایز
کردیم. اونجاست که گرین اسنت استفاده میشه
مثلاً افزایش میزان ریوارد مثلاً یا مثلاً
ماکسیمایز کردن احتمال مثلاً اینجور جاها
گدن اسنت استفاده میشه نمیرن سراغ دیسنت
خب بریم یه مثال با هم ببینیم چند تا پارامتر داریم لرنین ریتو داریم
نامبر آف اتریشنو داریم استارتینگ پوینتو
داریم فانکشن شیپو داریم بریم پایین میگه
فرض کنید لنینتو من خیلی کوچیک بگیرم
۱۰زارم
حرکتمون چهجوری میشه استپامون ۱زارم ۱زارم۵
۴۹۰ ۴۹۸۰ و الی آخر مدل داره به سمت جواب
حرکت میکنه اما خیلی کند داره حرکت
میکنه
لنیرتو میذارم یدهم
حرکت یه ذره سریعتره و پاداتر.
اما این لنینتو بزرگ بگیرم
مدل ممکنه بارها از دو سمت یه دونه مینیموم بپره.
یعنی چون قد مثلاً فرض کنید شما یه جایی
دنبال یه گنجی هستید فرض کنید مثلاً فرض
کنید شما دنبال یه گنج هستید اینجا رو
تصور کنید گنجه فرض کنید اینجاست خب یه
وقتی از قدماتونو کوچیک کوچیک برمیدارید
به سمت گنج تا برسید به گنج یاست قدماتونو
مثلاً بزرگ بزرگ برمیده امکان داره از رو
گنج رد شید
دوباره که برمیگردیدم امکان داره ازش رد
شید چون قدماتونو بزرگتر دارید برمیدارید
این دستگاه فلزیاب دیدید فرض کنید آروم
میبینید حرکت میکنن برای اینکه گنجو
پیدا کنن اگه اون رو سریع حرکت بکنیم کنه
در گنج رد شن اینم مثل همونه بچهها لینگ
مشخص میکنه که ما چقدر سرعت داشته باشیم
در جهت حرکت به اون نقطه مناسب اگه
سرعتمون زیاد باشه امکان داریم نقطه
مناسبو رد کنیم
ایتشنم بچهها کلاً داستانش اینه که ما چند بار آزمایشمونو تکرار بکنیم. لزوماً
تعداد زیاد تکرار خوب نیست. معمولاً باید
دنبال بهینهش بگردیم.
اه خب این که رد کنیم
خب میخوام اگه چیز مهمی مونده اونو بگیریم و بعد دیگه بریم برای فصل بعدی
خب بذار برقشو فصل بعدی بچهها یه نکته بگما اولش یه مقدار شاید سخت باشه مفاهیم
براتون صبور باشید بریم جلوتر اینا همه
مطالبی که توی عمل وقتی بیاد ساده میشن
خیلی پیچیده نیست بریم بیایم فصل بعدی
بریم سراغ مبحث بعدیمون احتمالاً فکر کنم
میخوام راجع به ای ان صحبت کنیم فعلاً
خداحافظ ‏S