از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در این جلسه، مدرس به بررسی پارامترهای اصلی شبکههای عصبی مانند ریت، بد سایز، نرمالزیشن، اکتیویشن فانکشن و اپتیمایزر میپردازد و تأثیر آنها بر عملکرد مدل را توضیح میدهد. همچنین، فرآیند تقسیم دادهها به بخشهای آموزشی و تست، ساختار شبکه عصبی و مفاهیم مرتبط با آموزش مدل مانند لرنینگ ریتم، اپوک و کانفیوژن ماتریکس مورد بررسی قرار میگیرد. در پایان، عملکرد مدل بر روی دادههای تست ارزیابی شده و گزارش کلاسیفیکیشن ارائه میشود.
نکات کلیدی
تنظیم پارامترهای شبکه عصبی مانند ریت، نرمالزیشن و اکتیویشن فانکشن بر عملکرد مدل تأثیر زیادی دارد.
دادهها به دو بخش آموزشی و تست تقسیم میشوند و به صورت استاندارد شده به تنسور تبدیل میشوند.
فرآیند آموزش مدل شامل استفاده از لرنر اسکولر، تنظیم لرنینگ ریتم و اپوک است.
کانفیوژن ماتریکس به عنوان یک ابزار برای ارزیابی عملکرد مدل در دادههای تست استفاده میشود.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
نرمالزیشن دادهها به کاهش تأثیر ویژگیهای با مقیاس بزرگ و بهبود عملکرد مدل کمک میکند.
فرآیند آموزش مدل شامل استفاده از لرنر اسکولر، تنظیم لرنینگ ریتم و اپوک است.
عملکرد مدل بر روی دادههای تست ارزیابی میشود و یک گزارش کلاسیفیکیشن ارائه میشود.
آخرین بهروزرسانی محتوای متنی:
در این دوره جامع، وارد دنیای 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
این فصل یکی از مهمترین فصلاییه که تو
این دوره داریم. چرا؟ چون ما تا الان یاد
گرفتیم که چهجوری بتونیم یه دونه شبکههای
عصبی رو بسازیم. اون لایهها رو کنار
همدیگه قرار بدیم و چگونه ترینشون کنیم.
اما یه سؤال مهمتر پیش میاد. چی باعث
میشه که این شبکه عصبی خوب کار کنه یا بد
کار کنه؟ چه تنظیماتیه؟
قراره تو این فصل با یه سری پارامترا مثل ریت که دیدیمش قبلاً اپتیمایزر
بد سایز اکتیویشن فانکشن ها نرمالزیشن و
لاست فانکشن داشته باشه.
توی شبکه عصبی ما دو گروه مقدار داریم. گروه اول چیزا هستن که مدل خودش تو
ترینینگ یاد میگیره. مثل وزنها و بایاس.
وضع چی بود؟ وقتی شما یه لایه شبکه عصبی
رو وصل میکردید به یه لایه دیگه. بذارید
من یه عکس براتون بیارم.
خب بچهها مثلاً این این عکسو نگاه کنید. من یه ذره کوچیکش کنم اینو بذارمش اینجا
اوکی
بریم جلو بذارمش اینجا خب
وز چیه من اینو ثابتشم بکنم اینجا
این ورودیمونه فرض کنیم شر کارسرمونم یه لایه داره یه خروجی هم یه دونه سلول پس دو
حالت هست یا صفره یا یکه
این هر سلول ورودی وصل به تمام سلولهای
اون لایه اول و این ارتباطه هر کدوم یک
وزنی داره
یعنی مقدار اینجا ضرب در این وزن میشه بعد
به اضافه مقدار این ضرب در وزن بعدی و الی
آخر بعد هر کدوم از این سلولهای لایه این
لایه هم یک بایاسی هم دارن که این بایاسه
میاد جمع میشه با اون مقداره
این میشه د تا مفهوم وزن و بایاس این
چهجوری یاد میگیره؟ این فراآیند یادتون
باشه یه بار میرفت تا انتها یه خروجی به
ما میداد. اگر خروجی نسبت به مقدار واقعی
اختلاف داشت دوباره این مسیرو برمیگشت
و تو این مسیر برگشت میاد چیکار میکرد؟
میاد این وزنا رو تغییر میداد دوباره از
اول. یعنی تو فراوند یادگیری بود که درق
این وزنا رو یاد میگرفت.
لنین ریت و بد سایز و نامبر آف لایرز و هیدن یونیت و اکتیویشن فانکشن و اپتیمایزر
و دروپود ریت اینا رو ما قبل ترینینگ
انتخاب میکنیم یعنی قبل از اینکه اصلایند
ترینینگ شروع بشه ما میایم اینا رو تعیین
میکنیم
به اینا میگن هایپر پارامترز به اینا میگن
مودل پارامتر به این دو تای بالا
پس از هایپر پارامتری که ما اول دوره
بهتون گفتم موضع این فصل میمونه مربوط
میشه به این دوستان
مثلاً فرض کن ما برای یه مدل مییم اینو
تعیین میکنیم اینا هایپر مارامتره مثلاً
این هایپر پارامتره
پس یه نکته اساسی که توی شبکه اثر وجود داره اینه که شما این پارامترا رو چهجوری
تنظیم بکنید
خب خب اومده یه دیتا ستی رو به عنوان سمپل آورده
که روش کار بکنیم من اینو بدم پایین
یه دتاس داریم که برای بررسی کیفیت یک
شرابه مثلاً
یه سری ویژگیاها داره حالا خیلی کاری
نداریم اینا چین مثلاً غلظتش پی اچش
الکلیتش مثلاً و حالا چیزای دیگه
و یه ستون تارگتم طبیعاً داریم که نشون
میده این کیفیتش چیه مثلاً احتمالاً یه
عددی عددیه آره اونهاش
یه عددی احتمالاً مثلاً شاید ۱ تا ۱۰ باشه
یا مثلاً میتونیم اینجوری هم مشخص بکنیم مثلاً بگیم اونایی که زیر ششه کلاس صفر
بالای شش کلاس یک مثلاً میتونیم
کلاسیفیکیشنم بکنیمش
خب [صدای خرناس] یکی از متاپ پارامتراهای
مهم بد سایزه فرض کنید مثلاً میگم ما
دیتاست ما ۱۶۰۰ تا سمپل داخلشه
اگر بعد سایزو ۱۲ بگیریم
ببخشید ۳۲ بگیریم ۱۶۰۰ تقسیم بر ۳۲ میشه
۵۰ بج یعنی ما برای اینکه یه دونه اپوک
داشته باشیم باید ۵۰ بار بچ ۵۰ بچ داشته
باشیم
ولی اگه ۲۵۶ بگیریم تعداد بچههامون میشه
۷ تا یعنی هر ۷ ب یه دونه پک میشه
در نتیجه تعداد دفعاتی که داره ویت آپدیت
میشه کمتر میشه
میان چیکار میکنن؟ میان یه آرایی از بد سایز در نظر میگیرن. بعد برای هر کدوم
میان لاسو محاسبه میکنن، اکیورسی مسا
محاسبه میکنن ببینن برای کدوم بد سایز
بهتره
و طبیعتاً بهترین بدساز از قبل معلوم
نیست.
هایپر پارامتر معمولاً از قبل شما
نمیتونید بهترین مقدارشو به دست بیارید.
باید یه فرایندیو طی بکنید.
موضوع بعدی بحث نرمالزیشنه. قبلاً راجع به نرمالیش صحبت کردیم. گفتیم که زمانی که
ستونهای عددییمون مقادیرشون با همدیگه
رنجاش متفاوته بهتره که اینا همه نرمالایز
بشن تو یه رنج بیفتن.
چرا؟ چون اپتیمایزیشنو میگه سختتر
میکنه. پس معمولاً میان دادهها رو
نرمالایز میکنن یا استاندارد میکنن. یکی
از این دو تا فرقی نمیکنه. این فرمول
استاندارد کردنه نرمالایزم فکر کنم فرمولش
اینه که
فرمول نرمالایز الان یادم رفت فکر کنم یه فرمولیه که ارتباطی داره با مینیموم و
ماکسیموم و مقدرا الان حالا جلوتر
احتمالاً به میگه
اینم دقیقاً روش انجام نرمالازه
بخش استاندارده
یه نکته رو قبلاً بار گفته بودیم. زمانی که دارید استاندارد میکنید، نرمالز
میکنید با دستگاه ترنسفورم این کارو شما
انجام میدید. خب اما رو دیتای ترند
میزنید فیت ترنسفورم. اما رو دیتای تست
نباید این کارو بکنید بچهها یا دیتا
ولیدیشن نباید فیت ترنسفورم بزنید فقط
ترنسفورم خالی که فقط ترنسفورمو انجام
بده.
میگه نرمالزیشن مخصوصاً برای شبکههای عصبی خیلی مهمه چون گریدن دیسنت روی فیچر
با مقرس به متفاوت مسیر نامناسبی رو درست
میکنه.
میگه فرض کن د تا فیچر دارید یکی مثلاً ۲
هزارمه یکی ۲۵۰ هزاره
این خیلی اثرش زیاده توی فرمولامون برای
اینکه این اثراشون همه به یک اندازه باشه
نرمالایز میکنیم
بچ نرمالزیشن با استاندر اسکار فرق داره استاند اسکار قبل از ورود داده به
شبکههای عصبی استفاده میشه اما بچ
نرمالزیشن یک لایه داخل شبکههای عصبیه
بچهها
یعنی خودش یه لایهست
به این صورت بچهها
خیلی مفهومشو کاری نداریم خب بیایم یه دونه شارکا عصبیر ساخته اینجا
ببینیم چیکار کرده یه لایه ورودی گذاشته
بعد یه لایه بهچون نومریزیشن گذاشته این
اکتیویشن فانکشنه لایه بعدی دوباره بج
دوباره اکتیویشن فانکشن و لایه خروجیمون
هنگام ترینینگ و هنگام اه
خب میخوایم اینجا یه مقایسه انجام میده این یه مدل شکار از طریق که وجود داره چیز
خاصی هم نداره یه لایهست بعد اکتیویشن
دوباره یه لایه بعد اکتیویشن و در نهایت
لایه خروجی درسته
مدل دوم اومده یه بچمالزیشن اینجا اضافه
کرده
میگه که میگه هدف اون نیست که ثابت کنیم بچهها همیشه بهتره هدف مشاهده اثر اون
روی فرایند آموزشه میگه فند آموزشو بهتر
میکنه
بحث اکتیویشن فانکشنا رو اومده توضیح داده چرا اکتیویشن فانکشنا مهمن چرا ما لایهها
رو پشت هم نمیتونیم بدون اکتیویشن فانکشن
چرا باید یه اکتیویشن فانکشن اون وسط
اضافه بکنیم.
میگه که اکتیویشن فانکشنا باعث میشن که
اگر رابطه خطی وجود داشته باشه از بین بره
و تبدیل بکنه رابطه غیرخطی.
اینا هم معروف اکتیویشن فانکشن هستن که
وجود دارن.
حالا هر کدوم یه مدل فرا کار میکنه.
مثلاً اکتیویشن فانکشن آ ای یو ورودی رو
میگیره. اگه ورودی کوچکتر از صفر باشه
میشه صفر. اگه بزرگتر از صفر باشه میشه
خودش.
و اکتیویشن فانکشن مختلف که هر کدوم فرمولاش متفاوته.
میگه شما نمیتونید بفهمید که کدوم اکتیویشن فانکشن برای دیتا ستشون مناسبه
چون بر اساس دیتا ست و اون معماری دادتون
متفاوته یعنی یه جا امکان داره این خوب
باشه یه جا امکان داره مثلاً این خوب باشه
نمیشه خطی
ا خب
بذارید ببینم نکته دیگه داره
لاس فانکشنو قبلاً صحبت کردیم شما زمانی
که
یک ورودی میدید یک خروجی میگیرید
خروجیتون رو با مقدار واقعی مقایسه
میکنید اختلاف اینا میشه لاس
بعد برمیگردید و از اونا رو تغییر میدید
دوباره خروج جی رو چک میکنید.
حالا این فرمولاشه که ما فعلاً رد میشیم از این چون قراره باید این مثالی رو بزنیم
با همدیگه.
میگه گریدینت ممکنه که در طول فراوند آموزش مرتباً جهت خود تغییر بده.
مومنتوم میاد مقداری از حرکت قبلی رو نگه
میداره.
مومنتوم میتواند حرکت در جهت پایدار رو
سریعتر بکند. کارش اینه. حالا
اینا رو باید توی مثال ببینیم بچهها.
اصلاً آدامو قبلاً دیده بودیم یکی از این اپتیمایزرای خیلی خوبه
میگه لرینگ ابتدای ترین ممکن بزرگتر باشد تا سریعتر حرکت کنیم ولی نزدیک مینیموم
بهتر از قدمها کوچکتر شوند
یعنی چی میگه اول کار
قدما رو بزرگتر برداریم جلوتر تر که میریم
قدما باید کوچیکتر بشه. این مثل چی
میمونه؟ فرض کنید شما با ماشین دارید
میرید یه دیواری اون جلو میخواد بهش
برسید. اول که دارید میرید با سرعت زیاد
میرید. هرچی به دیوار که دارید نزدیکتر
میشید سرعتتون رو کمتر میکنید. لینی ریتم
همین داستانه.
اما مهمترین سؤال فصل اینه که چهجوری ما اینا رو انتخاب بکنیم برای شارکار
حسابمون؟ هیچ بچهها جواب ثابتی وجود
نداره. باید آزمایش بکنید. یعنی مقادیر
مختلفو بذارید، خروجی رو ببینید و با
همدیگه مقایسه بکنید.
اما مثلاً برای شروع میگه اکتیویشن فانکشنو همیشه اینو بذارید اپتیمایز از
این استفاده بکنید لینی ریتو اینو بذارید
بعد سایز ۳۲ باشه و بقیه موارد یعنی میگه
برای شروع اینا مقادیر معمولاً خوبیه
ولی میگه روند اینجوری بهتره که شما یه بار مدلتو آموزش میدید بعد ارزیابی
میکنید بعد یکی یا چند تا از پا هایپر
پارامترا تغییر میدید دوباره فرند آموزشو
طی میکنید همه رو با هم عوض نکنید
هیچ وقت داده تست برای تنظیم هایپر
پارامتر استفاده نکنید
با ولیدیشن این کارو بکنید خب
اینم یه پروژه کامله که الان با همدیگه
ببینیم
اینجا چیزایی که لازم داره ایمپورت کرده کار خاصی نداره دیتا ستو اینجا میخونه
همون دیتاست ست شرابی که بهتون گفتم
بعد ستون فیچرها و تارگتو جدا میکنم اوکی
اینو بگذریم بعد میاد داده رو به دو قسمت ترین و تست تقسیم میکنه ۲۰ تست ۸۰ برای
اولشن ولیدیشن و ترین استفاده میشه اینجا
هم میاد از داده ترین
قسمت ترین و ولیدیشنو جدا میکنه. همین
۲۰ از اون ۸۰ ۲۰ میره برای ولیدیشن
۶۴ش میمونه برای ترین.
بعد تو مرحله بعدی باید استاندارد بکنیم
ستونهای عددمون رو. داده ترینمون با دستور
فیت ترنسفورم. داده ولیدیشن و تستمون رو
با دستور ترنسفورم
خب تنسور چیه بچهها شما در حقیقت یه مرحله خیلی مهمه تو شبکه
میاید اعدادتون رو تبدیل میکنید به بردار
برای نگهداری پردازش داده از تنسور بچهها
مثلاً اگه شما یه دونه عدد داشته باشید یک
بردار صفر بعدی دارید اگه د تا یه چند تا
عدد داشته باشید پشت هم میشه یه دونه
بردار یک بعدی مثلاً یه آرایی از عددا اگر
یک جدول داشته باشید که سطر و ستون داره
میشه یک تنسور دو بعدی مفهومش اینه
خب بعد میاد بچب بندی میکنه اینا رو ۳۲
تا ۳۲ تا در نظر میگیره دیتای ترن رو بعد
میا حالا خود شبکهها عصبیو طراحی بکنیم
اینجا
میاد اینجا یه لایه گذاشته ۶۴ تا ورودی
داره
بعد
ببخشید
ورودیش اینه ۶۴ تا سلول عصبی داره بعد بچ
نرمالزیشنو گذاشته اکتیویشن و دروپود لایه
[صدای خرناس] دوم ۶۴ تا ورودی داره که از
مرحله قبلی گرفته اما خودش ۳۲ تا خروجی
داره یه مرحله بعد دوباره در نهایت اون ۳۲
تا خروجی رو میده به لایه آخر و یه دونه
خروجی به من میده خروجیمون چیه؟ کیفیت اون
شرابهست
برای ساختن مدل اول میایم دیتای ترینو بهش میدیم مدل آموزش ببینه
برای محاسبه لاست فانکشنم اومده از این استفاده کرده بعد اومده اپتیمایزررو اضافه
کرده
لرنر اسکولر بچهها از اسمش مشخصه یه جورایی اسکولر یعنی چی؟
ما در حالت عادی میایم لین ریتو بچهها یه
عددی میذاریم بعد مدلمونو میبریم طراحی
میکنیم بعد اگر دیدیم خوب نبود
برمیگردیم لرنی ریتمونو مثلاً تغییر
میدیم یکی از هایپر پارامترامونه
اما اسکجولر خودش خودکار این کارو میکنه
یعنی میاد یه مقدار اولیه و لین ری در نظر
میگیره بعدش اگر ببینه ففرآیندون خوب جلو
نمیره خودش لنینگ ریتو میاد دوباره تغییر
میده این یعنی خودکار میاد این کار انجام
میده و استفاده ازش چیز باحالیه.
بعد اینم ترنین لوپمونه. بچهها رو میده.
بچههای ۳۲ تایی ۳۲ تایی رو میده کل دیتا
که تموم شد میشه یه اپوک. حالا بستگی که
چند تا اپک شما در نظر گرفته باشید چند
دور دیتا بره در نهایتم ولیدیشن اتفاق
میفته
بعد
اینجا میایم لرنین ریتمون رو اگر ولیدیشن لاس بهتر نشده باشه دوباره کمتر میکنیم
لن دیک بچهها مفهومش یعنی چی دیک یعنی چی یعنی کم کردن پایین آوردن یعنی شما میاید
میگید که مدل من الان خوب عمل نمیکنه
میام سرعت یادگیریشو میارم پایین
که بهتر یاد بگیره
استاپینگ یعنی چی؟ اگر دیدم نه مدل من هیچ جوره یاد نمیگیره آموزشو کاملاً متوقف
میکنم. این د تا مفهوم اینه.
با این دسته میتونیم وثنینگو ببینیم. بعد
روی داده تست اینجا میریم تست میکنیم.
بعد اکیوره محاسبه میکنیم. بر مبنای داده پیشبینی شده.
و داده واقعی
بعد کلاسیفیکیشن ریپورتو میسازیم ببینیم
که دقتمون چهجوری اون چار تا عددا ترو
پازیتیو و ترو نگتیو و فارس نگتیو و فارس
پازیتیو این جدله رو میسازه ببینه که
پیشبینیاش چهجوریه و بعد میره اینا رو
حساب میکنه بر اساس کلاسیفیکیشن پورت
میتونه اون کلاسی این در حقیقت کلاسی
کانفیوژن ماتریکسشم میتونیم بکشیم من یه
اشتباه گفتم اون ترو پازیتیو و اینا همین
کانفیوژن ماتریکسه اینه
این یه سوتی کوچیک دادم اینه
کلاسیفیکیشن [صدای خرناس] ریپورت یه چیز دیگهست یه ریپورت کلی راجع
به نحوه عملکرد در حقیقت مدلمون میده یه
همچین شکل و شمایلی داره
قبلاً یه بار نشونتون داده بودم
اگه یکیشو آورد نشون بده
چی شد چرا نشون نمیده عکسشو
ایناش
مقادیر مختلفو حساب میکنه
و تو دورههای مختلف چهجوری میوز
میایم پایینتر کامپیوژن مازیک بعد میاد لاست فانکشنو میکشه یادتون باشه نمودارش
چهجوری بود از یه کم میشد کم میشد کم میشد
یه جا دیگه تکون نمیخورد یه جا زان زانو
میزد. زانویی داشت اصطلاحاً.
خب اینم از این فصل بچهها. بریم بیام
ادامهشو جلسه بعدی صحبت کنیم. فعلاً خلاص