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