فهرست مقاله
برازش مدل فشار و ولتاژ در متلب با کمترین مربعات، تفکیک آموزش و آزمون، کد کامل و تفسیر خطا.
این آموزش با دادهٔ مصنوعی و مثال تألیفی تهیه شده است. تصاویر، تصویرسازی مفهومیاند و شاهد عملکرد یک دستگاه واقعی نیستند. پاسخ تمرینها در متن آمده است. تاریخ بازبینی: ۲۲ مهر ۱۴۰۵؛ مبنای ساعت انتشار، تهران است.
۱. مسئلهٔ مهندسی و انتخاب مدل پایه
فرض کنید یک حسگر فشار، فشار مرجع را به ولتاژ تبدیل میکند. پیش از انتخاب شبکهٔ عصبی، میخواهیم بدانیم یک رابطهٔ ساده با دو پارامتر چقدر از رفتار آن را توضیح میدهد. مدل ما ولتاژ برابر با عرض از مبدأ بهاضافهٔ حاصلضرب فشار در بهره است. فشار با واحد بار و ولتاژ با واحد ولت ثبت میشود. عرض از مبدأ واحد ولت دارد و بهره با ولت بر بار بیان میشود. وجود واحد در نام متغیر، جلوی اشتباه میان کمیت خام و مقدار تبدیلشده را میگیرد.

این مسئله نمونهای از یادگیری نظارتشده با خروجی پیوسته است، اما نیاز ندارد از آغاز یک مدل پیچیده داشته باشد. معیار مناسب، خطای پیشبینی روی نمونههایی است که در برازش شرکت نکردهاند. در یک پروژهٔ واقعی، دقت مرجع فشار، تکرارپذیری اندازهگیری و تغییر دمای محیط نیز بر نتیجه اثر دارند. دادههای این درس برای توضیح روش ساخته شدهاند؛ از خطای کوچک آنها نمیتوان دربارهٔ دقت محصول یا حسگر بازار نتیجه گرفت. برای مرور آرایه و حل دستگاه، دورهٔ برنامهنویسی متلب را ببینید.
۲. ساخت داده و جدا کردن نقاط آزمون
شش مقدار فشار از صفر تا پنج بار در نظر میگیریم. ولتاژ پایه از رابطهٔ یک بهاضافهٔ ششدهم برابر فشار ساخته میشود و به هر نقطه یک اغتشاش کوچک و مشخص اضافه میکنیم. انتخاب اغتشاش ثابت به جای تصادفی کمک میکند محاسبهٔ دستی و مقایسهٔ دو زبان روشن باشد. نقاط فشار صفر، یک، سه و پنج برای آموزش هستند؛ فشار دو و چهار برای آزمون کنار گذاشته میشوند. بنابراین آزمون درون بازهٔ کالیبراسیون انجام میشود و مسئلهٔ برونیابی را نمیسنجد.

ماتریس طراحی، چهار سطر و دو ستون دارد: ستون اول یکها و ستون دوم فشار آموزشی است. دو ستون باید مستقل باشند تا هر دو پارامتر قابل شناسایی شوند. اگر تمام نقاط آموزشی یک فشار یکسان داشته باشند، تغییر بهره و عرض از مبدأ میتواند همان ولتاژ را تولید کند. داشتن نمونههای بیشتر بهتنهایی این مشکل را حل نمیکند؛ تنوع ورودی اهمیت دارد. برای دادهٔ واقعی، نقاط را در چند تکرار و شرایط محیطی مناسب جمع کنید و طرح جدا کردن داده را پیش از مشاهدهٔ خطای آزمون مشخص کنید.
۳. کد کامل برازش و تبدیل معکوس
کد زیر به MATLAB پایه نیاز دارد و از فایل بیرونی استفاده نمیکند. حل کمترین مربعات با عملگر بکاسلش انجام میشود؛ برای این مسئله لازم نیست معکوس صریح ماتریس را بنویسید. مرجع رسمی mldivide رفتار این عملگر را برای دستگاههای خطی توضیح میدهد. پس از برازش، ولتاژ دو نقطهٔ آزمون را پیشبینی و خطای آنها را محاسبه میکنیم. تبدیل معکوس فقط وقتی معنادار است که بهره صفر یا بسیار نزدیک صفر نباشد.

pressure_bar = (0:5)';
noise_V = [0.01;-0.01;0.015;0.005;-0.02;-0.005];
voltage_V = 1 + 0.6*pressure_bar + noise_V;
train_idx = [1 2 4 6]; test_idx = [3 5];
Xtrain = [ones(numel(train_idx),1), pressure_bar(train_idx)];
beta = Xtrain\voltage_V(train_idx);
Xtest = [ones(numel(test_idx),1), pressure_bar(test_idx)];
pred_V = Xtest*beta;
rmse_V = sqrt(mean((pred_V-voltage_V(test_idx)).^2));
recovered_bar = (voltage_V(test_idx)-beta(1))/beta(2);
fprintf('offset = %.6f V\ngain = %.6f V/bar\n',beta(1),beta(2));
fprintf('test RMSE = %.6f V\n',rmse_V);
disp(recovered_bar);
assert(rank(Xtrain)==2 && beta(2)>0);
وضعیت اجرا: محاسبات مرجع با نسخهٔ پایتون همین دادهها بررسی شدهاند؛ اجرای این فایل در MATLAB به دلیل خطای مجوز نصب محلی تأیید نشده است. این تفاوت را در گزارش آزمایش حفظ کنید. مشاهدهٔ متن درست کد یا پاسخ تحلیلی، جای اجرای آن در محیط هدف و بررسی نسخه و مجوز را نمیگیرد.
۴. پاسخ عددی و تفسیر خطا
مرجع عددی مستقل، عرض از مبدأ ۱٫۰۰۳۰۵۱ ولت و بهرهٔ ۰٫۵۹۸۶۴۴ ولت بر بار را میدهد. خطای ریشهٔ میانگین مربع در دو نقطهٔ آزمون تقریباً ۰٫۰۱۶۲۱۲ ولت است. فشار بازیابیشده برای نقاط مرجع دو و چهار بار، به ترتیب حدود ۲٫۰۲۴۴۹۰ و ۳٫۹۷۰۵۵۵ بار میشود. این اعداد با دادهٔ مصنوعی تعریفشده ارتباط دارند و مشخصات یک حسگر واقعی نیستند. اختلاف پارامترها با رابطهٔ اولیه طبیعی است، چون چهار نقطهٔ آموزشی اغتشاش دارند.

خطا را با واحد گزارش کنید. عدد خطا در ولتاژ، مستقیماً خطای فشار نیست؛ برای تبدیل تقریبی، مقیاس بهره را در نظر بگیرید. دو خطا با علامتهای متفاوت ممکن است در میانگین ساده همدیگر را خنثی کنند، در حالی که خطای مربع همچنان آنها را نشان میدهد. همچنین دو نقطهٔ آزمون برای تخمین پایدار کیفیت کافی نیستند. در کاربرد صنعتی باید خطا در سراسر بازه، نقاط نزدیک حدود کاری و شرایط تغییر دما بررسی شود. نسخهٔ NumPy همین مثال امکان مقایسهٔ روش را فراهم میکند.
۵. تمرین حلشده و مسیر توسعهٔ مدل
تمرین: برای ولتاژ ۲٫۸ ولت، فشار را با مدل برازششده تخمین بزنید. پاسخ: اختلاف ولتاژ با عرض از مبدأ را بر بهره تقسیم میکنیم و تقریباً سه بار به دست میآید. تمرین دوم: اگر فشار تمام نمونههای آموزشی برابر دو بار باشد، آیا بهره و عرض از مبدأ جداگانه مشخص میشوند؟ پاسخ: خیر؛ ستون فشار مضربی از ستون یکهاست و رتبهٔ ماتریس طراحی کاهش مییابد. مرجع rank در متلب برای بررسی رتبهٔ عددی مفید است؛ آستانهٔ عددی را با مسئله و مقیاس داده هماهنگ کنید.

پیش از افزودن جملهٔ درجهٔ دوم، باقیماندهها را برحسب فشار رسم کنید و دنبال الگوی تکرارشونده بگردید. اگر خطا بدون الگوی مشخص است، افزایش پیچیدگی ممکن است فقط اغتشاش را دنبال کند. اگر انحنا در تکرارهای مستقل باقی میماند، مدل جدید را روی دادهٔ جداگانه مقایسه کنید. آموزش شبکهٔ عصبی با trainnet مرحلهٔ بعد را نشان میدهد، اما نتیجهٔ آن باید در برابر یک مدل پایه ارزیابی شود. نگهداری داده، واحد، روش تقسیم و نسخهٔ کد، بخش ضروری گزارش کالیبراسیون است.
منابع و مطالعهٔ بیشتر
بررسی منابع: ۲۲ مهر ۱۴۰۵. تحلیلها و پیشنهادهای اجرایی، جمعبندی نویسندهاند.


