اندرو
۸:۲۸
معرفی چند کتاب خوب برای ماشین لرنینگ
۸:۳۲
گرادیان کاهشی (Gradient Descent) - پیدا کردن بهترین مسیر در درهی خطا
گرادیان کاهشی چیه؟فرض کن وسط یه درهی بزرگ و مهآلود ایستادی و میخوای به عمیقترین نقطه دره برسی، اما هیچی رو نمیبینی. تنها کاری که میتونی بکنی اینه که به زیر پات نگاه کنی و ببینی زمین به کدوم سمت شیب داره. منطق چی میگه؟ میگه در جهت تندترین شیب به سمت پایین یه قدم بردار. بعد دوباره بایست، دوباره شیب رو پیدا کن و یه قدم دیگه بردار. اینقدر این کار رو تکرار میکنی تا به جایی برسی که دیگه هیچ شیبی به سمت پایین وجود نداره. اونجا همون نقطهی عمیق دره است.
گرادیان کاهشی دقیقاً همینه!
درهی ما: همون «تابع هزینه» یا (Cost Function) مدلمون هست. این تابع به ما میگه مدل ما چقدر داره بد کار میکنه و چقدر خطا داره. هر چی مقدار این تابع کمتر باشه، یعنی مدل ما بهتره.
عمیقترین نقطه دره: نقطهایه که مدل ما کمترین خطای ممکن رو داره. این همون چیزیه که ما دنبالشیم. پارامترهای بهینه مدل (مثلاً شیب و عرض از مبدأ در رگرسیون خطی) در این نقطه پیدا میشن.
شیب زیر پای ما: همون گرادیان (Gradient) هست. گرادیان در ریاضیات به ما جهت تندترین شیب به سمت بالا رو نشون میده. پس ما در خلاف جهت گرادیان حرکت میکنیم تا به سمت پایین بریم.
اندازهی قدم ما: بهش میگن نرخ یادگیری (Learning Rate). اگه قدمهامون خیلی بزرگ باشه، ممکنه از ته دره رد بشیم و اون طرفش بیفتیم. اگه خیلی کوچیک باشه، هزار سال طول میکشه تا به ته دره برسیم. پس انتخاب اندازهی قدم مناسب خیلی مهمه.
خلاصه: گرادیان کاهشی یک الگوریتم بهینهسازیه که با قدمهای کوچک و تکراری در جهت مخالف شیب خطا، پارامترهای مدل رو جوری تنظیم میکنه که خطا به کمترین حد ممکن برسه.
اگه متوجه شدی لایک کن
گرادیان کاهشی چیه؟فرض کن وسط یه درهی بزرگ و مهآلود ایستادی و میخوای به عمیقترین نقطه دره برسی، اما هیچی رو نمیبینی. تنها کاری که میتونی بکنی اینه که به زیر پات نگاه کنی و ببینی زمین به کدوم سمت شیب داره. منطق چی میگه؟ میگه در جهت تندترین شیب به سمت پایین یه قدم بردار. بعد دوباره بایست، دوباره شیب رو پیدا کن و یه قدم دیگه بردار. اینقدر این کار رو تکرار میکنی تا به جایی برسی که دیگه هیچ شیبی به سمت پایین وجود نداره. اونجا همون نقطهی عمیق دره است.
گرادیان کاهشی دقیقاً همینه!
درهی ما: همون «تابع هزینه» یا (Cost Function) مدلمون هست. این تابع به ما میگه مدل ما چقدر داره بد کار میکنه و چقدر خطا داره. هر چی مقدار این تابع کمتر باشه، یعنی مدل ما بهتره.
عمیقترین نقطه دره: نقطهایه که مدل ما کمترین خطای ممکن رو داره. این همون چیزیه که ما دنبالشیم. پارامترهای بهینه مدل (مثلاً شیب و عرض از مبدأ در رگرسیون خطی) در این نقطه پیدا میشن.
شیب زیر پای ما: همون گرادیان (Gradient) هست. گرادیان در ریاضیات به ما جهت تندترین شیب به سمت بالا رو نشون میده. پس ما در خلاف جهت گرادیان حرکت میکنیم تا به سمت پایین بریم.
اندازهی قدم ما: بهش میگن نرخ یادگیری (Learning Rate). اگه قدمهامون خیلی بزرگ باشه، ممکنه از ته دره رد بشیم و اون طرفش بیفتیم. اگه خیلی کوچیک باشه، هزار سال طول میکشه تا به ته دره برسیم. پس انتخاب اندازهی قدم مناسب خیلی مهمه.
خلاصه: گرادیان کاهشی یک الگوریتم بهینهسازیه که با قدمهای کوچک و تکراری در جهت مخالف شیب خطا، پارامترهای مدل رو جوری تنظیم میکنه که خطا به کمترین حد ممکن برسه.
اگه متوجه شدی لایک کن
۶:۴۷
چرا باید همزمان با رگرسیون مفهوم گرادیان کاهشی را یادش بگیریم؟شاید بپرسی برای یه رگرسیون خطی ساده که فرمول ریاضی مستقیم داره (بهش میگن Normal Equation) و مستقیماً بهترین شیب و عرض از مبدأ رو حساب میکنه، چه نیازی به این همه دنگ و فنگ و قدم برداشتن هست؟
جواب در دو کلمه است: مقیاسپذیری و جهانشمولی!
مقیاسپذیری (Scalability): اون فرمول ریاضی مستقیم، وقتی تعداد ویژگیهای (features) شما خیلی زیاد میشه (مثلاً هزاران ویژگی)، از نظر محاسباتی فوقالعاده سنگین و کُند میشه. حتی ممکنه کامپیوتر شما از پس محاسباتش برنیاد. اما گرادیان کاهشی با دادههای بزرگ و ویژگیهای زیاد خیلی خوب کار میکنه و به مراتب بهینهتره.
جهانشمولی (Universality): رگرسیون خطی سادهترین مدل ماست. وقتی وارد دنیای مدلهای پیچیدهتر مثل رگرسیون لجستیک، شبکههای عصبی و یادگیری عمیق میشی، دیگه فرمول مستقیمی برای پیدا کردن جواب وجود نداره! تنها راه آموزش دادن این مدلهای غولپیکر، استفاده از گرادیان کاهشی و نسخههای پیشرفتهتر اونه.
پس یادگیری گرادیان کاهشی با رگرسیون، مثل اینه که شما کار با موتور یک ماشین رو روی یک ماشین کارتینگ ساده یاد بگیری تا بعداً بتونی موتور یک ماشین فرمول یک رو هم درک کنی. رگرسیون بهترین و سادهترین زمین بازی برای فهمیدن عمیق این مفهوم بنیادین هست.در کلاسهای آنلاین همه این مطالب را درک کرده و کد می زنیم. خیلی جالبه
جواب در دو کلمه است: مقیاسپذیری و جهانشمولی!
مقیاسپذیری (Scalability): اون فرمول ریاضی مستقیم، وقتی تعداد ویژگیهای (features) شما خیلی زیاد میشه (مثلاً هزاران ویژگی)، از نظر محاسباتی فوقالعاده سنگین و کُند میشه. حتی ممکنه کامپیوتر شما از پس محاسباتش برنیاد. اما گرادیان کاهشی با دادههای بزرگ و ویژگیهای زیاد خیلی خوب کار میکنه و به مراتب بهینهتره.
جهانشمولی (Universality): رگرسیون خطی سادهترین مدل ماست. وقتی وارد دنیای مدلهای پیچیدهتر مثل رگرسیون لجستیک، شبکههای عصبی و یادگیری عمیق میشی، دیگه فرمول مستقیمی برای پیدا کردن جواب وجود نداره! تنها راه آموزش دادن این مدلهای غولپیکر، استفاده از گرادیان کاهشی و نسخههای پیشرفتهتر اونه.
پس یادگیری گرادیان کاهشی با رگرسیون، مثل اینه که شما کار با موتور یک ماشین رو روی یک ماشین کارتینگ ساده یاد بگیری تا بعداً بتونی موتور یک ماشین فرمول یک رو هم درک کنی. رگرسیون بهترین و سادهترین زمین بازی برای فهمیدن عمیق این مفهوم بنیادین هست.در کلاسهای آنلاین همه این مطالب را درک کرده و کد می زنیم. خیلی جالبه
۶:۵۰
مفهوم گرادایان کاهشی
۶:۵۱
الگوریتم گرادیان کاهشی که در کلاس آنلاین آن را با پایتون پیاده سازی می کنیم
۶:۵۳
تاثیر انتخاب نرخ یادگیری(همان اندازه قدم ها در پایین آمدن از دره)
۶:۵۴
تاثیر نقطه شروع در رسیدن به مینیم سراسری
۶:۵۵
مدل های ریج (Ridge)، لاسو (Lasso)، الاستیک نت (ElasticNet)
درود. امروز شنبه 19 اردیبهشت است و 3 روز از تولید محتوا در این کانال می گذرد. بعد از اینکه با مفهوم روشهای یادگیری ماشین آشنا شدیم و بعد با رگرسیون و انواع آن، امروز میخواهم در رابطه با ریج و لاسو و الاستیک نت صحبت کنم.
داستان خیلی سادهست. فرض کن ما یه مدل Linear Regression داریم که میخواد مثلاً قیمت خونه رو پیشبینی کنه. اگه تعداد ویژگیها (مثل متراژ، تعداد اتاق، محله، رنگ در، جنس دستگیره و...) خیلی زیاد بشه، مدل گیج میشه و روی دیتای ترینینگ حفظیات میکنه (Overfitting).
این سه تا روش (Ridge, Lasso, ElasticNet) در واقع همون رگرسیون خطی هستن که یه ترمز دستی بهشون اضافه شده تا جلوی Overfit شدن رو بگیرن. به این کار میگن Regularization.
درود. امروز شنبه 19 اردیبهشت است و 3 روز از تولید محتوا در این کانال می گذرد. بعد از اینکه با مفهوم روشهای یادگیری ماشین آشنا شدیم و بعد با رگرسیون و انواع آن، امروز میخواهم در رابطه با ریج و لاسو و الاستیک نت صحبت کنم.
داستان خیلی سادهست. فرض کن ما یه مدل Linear Regression داریم که میخواد مثلاً قیمت خونه رو پیشبینی کنه. اگه تعداد ویژگیها (مثل متراژ، تعداد اتاق، محله، رنگ در، جنس دستگیره و...) خیلی زیاد بشه، مدل گیج میشه و روی دیتای ترینینگ حفظیات میکنه (Overfitting).
این سه تا روش (Ridge, Lasso, ElasticNet) در واقع همون رگرسیون خطی هستن که یه ترمز دستی بهشون اضافه شده تا جلوی Overfit شدن رو بگیرن. به این کار میگن Regularization.
۷:۳۸
حالا فرقشون چیه؟
۱. مدل Ridge (ریج)ریج مثل یه معلم میمونه که میخواد کلاس رو آروم کنه. به هیچ دانشآموزی (ویژگیای) نمیگه از کلاس برو بیرون، ولی به همه میگه "صداتون رو بیارید پایین!". یعنی وزن همه ویژگیها رو کم و متعادل میکنه، ولی هیچوقت وزن هیچ ویژگیای رو صفرِ مطلق نمیکنه.
کی بریم سراغش؟ وقتی که میدونی اکثر ویژگیهایی که تو دیتاست داری مهم هستن و منطقی نیست که حذف بشن. فقط میخوای مدل زیادی به یکی دوتا ویژگی وابسته نشه و تعادل حفظ بشه. مثلاً برای پیشبینی قیمت خونه، میدونی متراژ، سال ساخت و محله همهشون مهمن و نمیخوای مدل هیچکدوم رو نادیده بگیره.
۱. مدل Ridge (ریج)ریج مثل یه معلم میمونه که میخواد کلاس رو آروم کنه. به هیچ دانشآموزی (ویژگیای) نمیگه از کلاس برو بیرون، ولی به همه میگه "صداتون رو بیارید پایین!". یعنی وزن همه ویژگیها رو کم و متعادل میکنه، ولی هیچوقت وزن هیچ ویژگیای رو صفرِ مطلق نمیکنه.
کی بریم سراغش؟ وقتی که میدونی اکثر ویژگیهایی که تو دیتاست داری مهم هستن و منطقی نیست که حذف بشن. فقط میخوای مدل زیادی به یکی دوتا ویژگی وابسته نشه و تعادل حفظ بشه. مثلاً برای پیشبینی قیمت خونه، میدونی متراژ، سال ساخت و محله همهشون مهمن و نمیخوای مدل هیچکدوم رو نادیده بگیره.
۷:۴۰
۲. مدل Lasso (لاسو)لاسو مثل یه مدیر شرکته که میخواد تعدیل نیرو کنه! میاد میگرده اون کارمندایی (ویژگیهایی) که تأثیر خاصی تو شرکت ندارن رو پیدا میکنه و کلاً اخراجشون میکنه. یعنی وزن اون ویژگیهای به دردنخور رو دقیقاً صفر میکنه.
کی بریم سراغش؟ وقتی که تعداد ویژگیهات به شدت زیاده و میدونی خیلیاش چرت و پرته. مثلاً ۱۰۰۰ تا ویژگی داری ولی میدونی نهایتاً ۵۰ تاش به درد میخوره. لاسو اینجا واست مثل یه فیلتر عمل میکنه و خودش اتوماتیک Feature Selection انجام میده. مثلاً تو یه دیتای پزشکی، از بین هزاران ژن، فقط اون چندتایی که واقعاً ربط دارن رو نگه میداره و بقیه رو صفر میکنه.
کی بریم سراغش؟ وقتی که تعداد ویژگیهات به شدت زیاده و میدونی خیلیاش چرت و پرته. مثلاً ۱۰۰۰ تا ویژگی داری ولی میدونی نهایتاً ۵۰ تاش به درد میخوره. لاسو اینجا واست مثل یه فیلتر عمل میکنه و خودش اتوماتیک Feature Selection انجام میده. مثلاً تو یه دیتای پزشکی، از بین هزاران ژن، فقط اون چندتایی که واقعاً ربط دارن رو نگه میداره و بقیه رو صفر میکنه.
۷:۴۲
۳. مدل ElasticNet (الاستیک نت)این مدل ویژگیهای خوب ریج و لاسو را به ارث برده. یعنی هم سعی میکنه اثر ویژگیها رو متعادل کنه و نذاره کسی الکی گنده بشه (مثل Ridge)، و هم اون ویژگیهایی که واقعاً به درد نمیخورن رو حذف میکنه (مثل Lasso).
کی بریم سراغش؟ دو تا حالت خیلی مهم داره: 1. وقتی دیتای خیلی حجیم و پیچیدهای داری و نمیدونی دقیقاً Ridge بهتر جواب میده یا Lasso. 2. وقتی بین ویژگیهات همبستگی (Correlation) بالایی وجود داره. مثلاً اگه دو تا ویژگی عین هم باشن، Lasso ممکنه قاطی کنه و یکیش رو کاملاً شانسی حذف کنه، ولی ElasticNet هوشمندانهتر عمل میکنه و جفتشون رو با یه وزن متعادل نگه میداره.
خلاصه: میخوای چیزی حذف نشه، فقط کنترل بشه؟ Ridge میخوای ویژگیهای اضافه کلاً حذف (صفر) بشن؟ Lasso دیتاست خیلی بزرگه، ویژگیها به هم ربط دارن و یه چیز ترکیبی میخوای؟ ElasticNet
کی بریم سراغش؟ دو تا حالت خیلی مهم داره: 1. وقتی دیتای خیلی حجیم و پیچیدهای داری و نمیدونی دقیقاً Ridge بهتر جواب میده یا Lasso. 2. وقتی بین ویژگیهات همبستگی (Correlation) بالایی وجود داره. مثلاً اگه دو تا ویژگی عین هم باشن، Lasso ممکنه قاطی کنه و یکیش رو کاملاً شانسی حذف کنه، ولی ElasticNet هوشمندانهتر عمل میکنه و جفتشون رو با یه وزن متعادل نگه میداره.
خلاصه: میخوای چیزی حذف نشه، فقط کنترل بشه؟ Ridge میخوای ویژگیهای اضافه کلاً حذف (صفر) بشن؟ Lasso دیتاست خیلی بزرگه، ویژگیها به هم ربط دارن و یه چیز ترکیبی میخوای؟ ElasticNet
۷:۴۴
۷:۴۹
شبتون به خیر. امشب بعد از یه وقفه طولانی به خاطر جنگ ادامه دوره ماشین لرنینگ را شروع کردیم و مروری به جلسات قبل داشتیم.
۱۹:۳۰
درود. امشب ساعت هفت و نیم تا نه ونیم آموزش شبکه عصبی .
۶:۰۶
این دیتاست یکی از بهترین مجموعههای داده برای تمرین و ارزیابی مدلهای پیشبینی مقادیر پیوسته (Regression) است. این دیتاست بر اساس اطلاعات سرشماری سال ۱۹۹۰ کالیفرنیا ساخته شده و شامل ۲۰,۶۴۰ نمونه (بلوکهای سرشماری) است.این دیتاست معمولاً به عنوان جایگزینی برای دیتاست قدیمی Boston Housing (به دلیل مسائل اخلاقی مربوط به آن) استفاده میشود.
هر نمونه در این دیتاست شامل ۸ ویژگی مستقل (Feature) و یک متغیر هدف (Target) است:
ویژگیهای مستقل (Features):1. `MedInc`: میانه درآمد افراد در آن بلوک (بر حسب دهها هزار دلار)2. `HouseAge`: میانه سن خانههای آن بلوک3. `AveRooms`: میانگین تعداد اتاقها به ازای هر خانوار4. `AveBedrms`: میانگین تعداد اتاقخوابها به ازای هر خانوار5. `Population`: کل جمعیت ساکن در آن بلوک6. `AveOccup`: میانگین تعداد افراد یک خانوار7. `Latitude`: عرض جغرافیایی بلوک8. `Longitude`: طول جغرافیایی بلوک
متغیر هدف (Target): MedHouseVal: میانه قیمت خانهها در آن بلوک (بر حسب صدها هزار دلار). هدف اصلی الگوریتمهای ما، پیشبینی دقیق این عدد است!
این دیتاست به دلیل ساختار بسیار خوبی که دارد، در چندین مبحث مهم کاربرد دارد:
1. آموزش و ارزیابی مدلهای رگرسیون: از الگوریتمهای پایهای مثل `Linear Regression` گرفته تا مدلهای پیچیدهتر روی این دادهها تست میشوند.2. مهندسی ویژگی (Feature Engineering): به عنوان مثال، ترکیب تعداد اتاقها و جمعیت میتواند ویژگیهای جدید و معنادارتری برای مدل بسازد.3. نرمالسازی دادهها (Scaling): چون مقیاس ویژگیها با هم متفاوت است (مثلاً جمعیت در بازه هزارتایی است اما میانگین اتاقها تکرقمی)، این دیتاست برای آموزش روشهایی مثل `StandardScaler` یا `MinMaxScaler` بسیار ایدهآل است.
---این دیتاست به صورت پیشفرض در کتابخانه `scikit-learn` وجود دارد و با یک خط کد `fetch_california_housing` قابل فراخوانی است.
۶:۲۰
نمایشی برای دیتاست California Housing
۶:۲۷
در تصویر، ارتباط بین "درآمد متوسط" و "ارزش خانه" با استفاده از یک نمودار پراکندگی نشان داده شده است. هر نقطه آبی، دادههای واقعی را نشان میدهد و یک روند کلی را به تصویر میکشد که در آن با افزایش درآمد متوسط، ارزش خانهها نیز بالاتر میرود. خط قرمز یک خط رگرسیون است که تلاش میکند این رابطه را مدلسازی کند و یک روند صعودی کلی را نشان میدهد؛ به این معنی که با افزایش درآمد متوسط، ارزش خانه نیز تمایل به افزایش دارد.
۶:۲۹
کد تولید کننده شکل قبل
۶:۳۳
۸:۳۶