شما در حال مطالعه نسخه آفلاین یکی از مطالب «مجله فرادرس» هستید. لطفاً توجه داشته باشید، ممکن است برخی از قابلیتهای تعاملی مطالب، مانند امکان پاسخ به پرسشهای چهار گزینهای و مشاهده جواب صحیح آنها، نمایش نتیجه آزمونها، پاسخ تشریحی سوالات، پخش فایلهای صوتی و تصویری و غیره، در این نسخه در دسترس نباشند. برای دسترسی به نسخه آنلاین مطلب، استفاده از کلیه امکانات آن و داشتن تجربه کاربری بهتر اینجا کلیک کنید.
برازش منحنی به برازش یک تابع از پیش تعریف شده اطلاق میشود که متغیرهای مستقل و وابسته را به یکدیگر مربوط میکند. گام اول در محاسبه بهترین منحنی یا خط، پارامتری کردن تابع خطا با استفاده از متغیرهای اسکالر کمتر، محاسبه مشتق خطا نسبت به پارامترها و در نهایت محاسبه پارامترهایی است که تابع هزینه خطا را کمینه میکنند. در روش «برازش حداقل مربعات» (Least-Square Fitting)، به جای آنکه از قدر مطلق خطا استفاده کنیم، مربع آن را در نظر میگیریم، زیرا در این صورت، دادههای دور از منحنی برازش شده با بالا بردن مقیاس توسط اندازه خطا جریمه میشوند. این یعنی اینکه برای مثال، انحراف ۲ به اندازه ۴ در نظر گرفته خواهد شد.
بنابراین، کمینهسازی مجموع مربعات خطا منجر به برازشی میشود که خطاهای کوچکتری را در نظر میگیرد. رایجترین روش برای تعیین پارامترهایی که منحنی را مشخص میکنند، تعیین جهت کاهش خطا و یک گام کوچک در آن جهت و تکرار فرایند تا جایی است که به همگرایی برسیم. این فرایند حل تکراری پارامترها به عنوان روش «گرادیان کاهشی» (Gradient Descent) نیز شناخته میشود. در این آموزش، از محاسبات ماتریسی پایه استفاده میکنیم و آنها را برای به دست آوردن پارامترها به منظور بهترین برازش منحنی به کار میگیریم. در حالتهای خاص، جایی که تابع پیشبین در پارامترهای مجهول خطی است، یک فرم بسته از جواب شبهوارون (Pseudoinverse) را میتوان به دست آورد. در این آموزش، هر دو راهحل گرادیان نزولی و شبهوارون را برای محاسبه پارامترهای برازش بررسی میکنیم.
مشتق مرتبه اول نسبت به اسکالر و بردار
در این بخش اصول حسابان ماتریسی را بیان کرده و نشان میدهیم که چگونه باید از آن برای بیان مشتقات یک تابع استفاده کرد. ابتدا، چند نماد را معرفی میکنیم: یک اسکالر برای حرف انگلیسی کوچک و عادی مثل a، یک بردار با حرف کوچک انگلیسی و پررنگ مثل a و یک ماتریس با حرف انگلیسی بزرگ و پررنگ مثل A.
مشتق یک تابع اسکالر نسبت به یک بردار، برداری از مشتق تابع اسکالر نسبت به تک تک درایههای بردار است. بنابراین، برای تابع f از بردار x داریم:
∂x∂f(x)=[∂x1∂f(x)∂x2∂f(x)...∂xn∂f(x)]T
به طور مشابه، مشتق ضرب نقطهای دو بردار a و x در Rn را میتوان به صورت زیر نوشت:
∂x∂xTa=∂x∂aTx=a
به طور مشابه، داریم:
∂x∂Ax=A
نکته: اگر تابع اسکالر بوده و برداری که نسبت به آن مشتق میگیریم دارای بعد n×n باشد، آنگاه بعد مشتق n×1 است.
مشتق تابع برداری نسبت به اسکالر
مشتق یک تابع برداری نسبت به یک اسکالر، برداری از مشتق درایههای تابع برداری نسبت به متغیر اسکالر است. بنابراین، برای تابع f از متغیر x، خواهیم داشت:
∂x∂f(x)=[∂x∂f1(x)∂x∂f2(x)…∂x∂fm(x)]T
اگر بعد تابع برداری m×1 باشد، آنگاه مشتق آن نسبت به یک اسکالر دارای بعد m×1 خواهد بود.
مشتق تابع برداری نسبت به بردار
مشتق یک تابع برداری نسبت به یک بردار، ماتریسی است که درایههای آن مشتق درایههای تابع برداری نسبت به درایههای بردار هستند. بنابراین، برای تابع برداری f از بردار x، داریم:
نکته: اگر تابع برداری با ابعاد m×1 بوده و برداری که نسبت به آن مشتق میگیریم، دارای بعد n×1 باشد، آنگاه بعد مشتق m×n خواهد بود.
برای حالت خاصی که داشته باشیم:
α(x)=xTAx
مشتق به صورت زیر است:
∂x∂α(x)=xT(AT+A)
برازش حداقل مربعات
مثالی که مفاهیم مذکور بالا را میتوان به آن اعمال کرد، برازش حداقل مربعات خط است. در برازش حداقل مربعات خط، هدف یافتن بردار وزنها به گونهای است که خطای بین مقدار هدف و پیشبینیهای یک مدل خطی را کمینه کند.
تعداد N نقطه آموزش را در نظر بگیرید که برای هر i∈[0,N]، بردار xi∈RM را به یک خروجی اسکالر yi نگاشت میدهد. هدف یافتن بردار خطی a به گونهای است که خطای زیر کمینه شود:
J(a,a0)=21i∑Nj∑m(ajxi,j+a0−yi)2
که در آن، aj برابر با jاُمین درایه و a0 عرض از مبدأ است.
حل: بردار مستقل xi را با قرار دادن درایه جدید ۱ به انتهای آن و بردار a را با قرار دادن a0 در انتها افزایش میدهیم. در نتیجه، تابع هزینه به صورت زیر در خواهد آمد:
J(W)=21i∑Nj∑m+1(wjxi,j−yi)2
تابع هزینه بالا را میتوان به عنوان یک ضرب نقطهای از بردار خطا نوشت:
e(W)=(XW−y).
که در آن، X ماتریسی با اندازه n در m+1 و y یک بردار با طول n و W برداری به طول (m+1) است.
بنابراین، اکنون تابع هزینه J به صورت زیر خواهد بود:
لازم به ذکر است که همه جملات در معادله بالا اسکالر هستند. با مشتقگیری نسبت به W، خواهیم داشت:
∂W∂J=(WTXTX−yTX)
روش گرادیان کاهشی
کمینه زمانی به دست میآید که مشتق بالا برابر با صفر باشد. رایجترین روش مورد استفاده یک راه حل مبتنی بر گرادیان کاهشی است که در آن، از یک حدس اولیه برای W شروع کرده و آن را به صورت زیر بهروز میکنیم:
Wk+1=Wk−μ∂W∂J
میتوان صحیح بودن محاسبه تحلیلی مشتق را بررسی کرد. این کار با استفاده از روش تفاضل مرکزی ∂W∂Jnumerical≈2hJ(W+h)−J(W−h) قابل انجام است.
روش تفاضل مرکزی روش مناسبی است، زیرا این روش دارای خطای O(h2) است، در حالی که خطای روش تفاضل مستقیم O(h) است. از سری تیلور نیز میتوان برای این منظور استفاده کرد.
روش شبهوارون
یک روش دیگر، محاسبه مستقیم بهترین جواب با صفر قرار دادن مشتق اول تابع هزینه است:
∂W∂J=(WTXTX−yTX)=0
با اعمال ترانهاده، مقدار W به صورت زیر به دست میآید:
W=Pseudoinverse(XTX)−1XTy
شبیه ساز برازش حداقل مربعات
در بخشهای بالایی مطلب با کمک مثال به صورت شفاف این مفهوم را توضیح دادهایم. اما در صورت نیاز به کمک بیشتر برای درک بهتر برازش حداقل مربعات پیشنهاد میکنیم که از شبیهساز زیر استفاده کنید. این شبیهساز توسط دانشگاه کلورادو و با هدف کمک به یادگیری هرچه بهتر دانشآموزان طراحی شده است.
مثال برازش حداقل مربعات خط
در این بخش، تعدادی داده تولید کرده و روشهای ارائه شده در بالا را به آنها اعمال میکنیم. میخواهیم بهترین خط برازش کننده را با استفاده از روشهای گرادیان کاهشی و شبهوارون محاسبه و آنها را با هم مقایسه کنیم.
همانطور که گفتیم، روش گرادیان کاهشی برای محاسبه بهترین برازش خط به کار میرود. در این روش از یک مقدار کوچک نرخ یادگیری استفاده میشود. انتخاب نرخ یادگیری خود بحث مفصلی دارد که در اینجا از بیان آن صرفنظر میکنیم. در اینجا فرض میکنیم ۰٫۰۰۰۰۵ انتخاب مناسبی برای نرخ یادگیری باشد. گرادیان با استفاده از معادلهای که پیشتر بیان کردیم، قابل محاسبه است و وزنها (یا ضرایب) در هر مرحله ذخیره میشوند.
برنامههای زیر در پایتون، پیادهسازی روش گرادیان کاهشی را نشان میدهند.
جواب حاصل از اجرای برنامه فوق به صورت نوشتاری و شکل زیر هستند:
شکل ۲: خطای RMS بین خط برازش شده و دادهها در فرایند آموزش
حال برای درک بهتر، شکلهای خط برازش شده را برای تکرارهای مختلف رسم میکنیم. برنامه و شکلها در ادامه آورده شدهاند.
شکل ۳: با افزایش تکرارها خط برازش شده بهبود مییابد.
برازش حداقل مربعات با روش شبهوارون
محاسباتی را که در بالا برای روش شبهوارون بیان کردیم، به صورت زیر در پایتون پیادهسازی میشود:
شکل زیر، حاصل از اجرای این برنامه است.
شکل ۴: برازش خط با روش شبهورارون
برازش دایره
مجموعه نقاطی را در نظر بگیرید که میخواهیم یک دایره را برای آنها برازش کنیم. همانطور که میدانیم، دایره یک تابع خطی نیست. البته، معادله یک دایره را میتوان طوری بازنویسی کرد که برحسب پارامترهای مجهول (یعنی محل مرکز و شعاع) خطی باشد. معادله دایرهای را در نظر بگیرید که مرکز آن (xc,yc) و شعاعش r است:
سید سراج حمیدی دانشآموخته مهندسی برق است و به ریاضیات و زبان و ادبیات فارسی علاقه دارد. او آموزشهای مهندسی برق، ریاضیات و ادبیات مجله فرادرس را مینویسد.
سلام ممنون از آموزشتون
در قسمت شرح مسئله تابع خطایی که باید کمینه شود از کجا آمده است و اینکه چرا xij داریم درحالی که x یک بردار است و باید xi باشد؟؟
رضا
سلام بر استاد عزیز
واقعا عالی بود، خیلی خوب مبحث رو برای من باز کردید. خیلی مثالها عالی بودن، گفتم حتما از استاد عزیز، جناب حمیدی تشکر کنم.
از تیم فرادرس بخاطر سایت خوبتون ممنون و سپاسگزارم.
دستتون طلا
شاد و سلامت باشید.
علیرضا
امید زندی عزیز! دمت گرم و تشکر از تدریس خوبت
Ali
سلام و سپاس از زحمات گروه فرادرس
و تشکر از استاد زندی با نحوه ی عالی تدریسشون
اگر ما یک معادله دیفرانسیل داشته باشیم و بخواهیم جواب تقریبی آن را با استفاده از روش حداقل مربعات خطا(LSE) و یا روش گالرکین بدست بیاوریم چگونه بدست میاید؟
با فرض این که جواب تحلیلی یا دقیق آن را نمی دانیم.
اگه امکانش هست از این دو روش هم آموزش تهیه کنید.
البته بیشتر دنبال کدش هستم!:)
با تشکر
شما در حال مطالعه نسخه آفلاین یکی از مطالب «مجله فرادرس» هستید. لطفاً توجه داشته باشید، ممکن است برخی از قابلیتهای تعاملی مطالب، مانند امکان پاسخ به پرسشهای چهار گزینهای و مشاهده جواب صحیح آنها، نمایش نتیجه آزمونها، پاسخ تشریحی سوالات، پخش فایلهای صوتی و تصویری و غیره، در این نسخه در دسترس نباشند. برای دسترسی به نسخه آنلاین مطلب، استفاده از کلیه امکانات آن و داشتن تجربه کاربری بهتر اینجا کلیک کنید.
سلام ممنون از آموزشتون
در قسمت شرح مسئله تابع خطایی که باید کمینه شود از کجا آمده است و اینکه چرا xij داریم درحالی که x یک بردار است و باید xi باشد؟؟
سلام بر استاد عزیز
واقعا عالی بود، خیلی خوب مبحث رو برای من باز کردید. خیلی مثالها عالی بودن، گفتم حتما از استاد عزیز، جناب حمیدی تشکر کنم.
از تیم فرادرس بخاطر سایت خوبتون ممنون و سپاسگزارم.
دستتون طلا
شاد و سلامت باشید.
امید زندی عزیز! دمت گرم و تشکر از تدریس خوبت
سلام و سپاس از زحمات گروه فرادرس
و تشکر از استاد زندی با نحوه ی عالی تدریسشون
اگر ما یک معادله دیفرانسیل داشته باشیم و بخواهیم جواب تقریبی آن را با استفاده از روش حداقل مربعات خطا(LSE) و یا روش گالرکین بدست بیاوریم چگونه بدست میاید؟
با فرض این که جواب تحلیلی یا دقیق آن را نمی دانیم.
اگه امکانش هست از این دو روش هم آموزش تهیه کنید.
البته بیشتر دنبال کدش هستم!:)
با تشکر