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

هدف، آشنایی با جریان کار آموزش شبکه و ارزیابی مستقل است. مسئلهٔ ما پیشبینی دمای ایستا در دادهٔ مصنوعی است؛ نه شبیهسازی دینامیکی موتور و نه شبکهٔ مبتنی بر قوانین فیزیک. برای پایهٔ برنامهنویسی، دورهٔ متلب برای برق و مکانیک و برای مقایسهٔ یک مدل ساده، رگرسیون و کالیبراسیون حسگر را مرور کنید. تعریف دقیق ورودی و خروجی، پیش از انتخاب تعداد لایهها ضروری است.
۲. تقسیم داده و نرمالسازی بدون استفاده از آزمون
۲۴۰ نمونه تولید میکنیم و پس از یک جایگشت مشخص، ۱۶۸ نمونه برای آموزش، ۳۶ نمونه برای اعتبارسنجی و ۳۶ نمونه برای آزمون کنار میگذاریم. میانگین و انحراف معیار جریان فقط از قسمت آموزشی محاسبه میشوند. همان دو مقدار برای تبدیل اعتبارسنجی و آزمون استفاده میشوند. محاسبهٔ مقیاس از تمام نمونهها، اطلاعات بیرون از آموزش را وارد آمادهسازی مدل میکند. صفر نبودن انحراف معیار و واحد داده را پیش از اجرای این تبدیل بررسی کنید.

جایگشت تصادفی در این مثال پذیرفتنی است، چون نمونهها از یک رابطهٔ ایستای مصنوعی ساخته شدهاند. برای دادهٔ زماندار یک موتور، پنجرههای پشتسرهم مستقل نیستند؛ تقسیم تصادفی ممکن است اطلاعات یک آزمایش را همزمان در آموزش و آزمون قرار دهد. در آن حالت تقسیم بر اساس آزمایش، دستگاه یا زمان مناسبتر است. این تصمیم تابع سناریوی استفاده است: پیشبینی در آینده، انتقال به دستگاه تازه یا تکرار در همان دستگاه، پرسشهای متفاوتی هستند.
۳. پیادهسازی مدرن با dlnetwork و trainnet
این مثال به Deep Learning Toolbox نیاز دارد و برای APIهای موجود در R2024b نوشته شده است. شبکه یک ورودی، یک لایهٔ پنهان با ۱۶ واحد و خروجی اسکالر دارد؛ تابع هزینه، میانگین مربع خطاست. خروجی شبکه لایهٔ regressionLayer ندارد و هزینه به trainnet داده میشود. راهنمای مهاجرت رسمی MathWorks مسیر dlnetwork و trainnet را برای جریان کار جدید توصیه میکند. استفاده از نام جدید تابع، بهتنهایی کیفیت مدل را تضمین نمیکند.

rng(17);
current_A = linspace(0,8,240)';
temperature_C = 25 + 0.8*current_A.^2 + 0.2*randn(240,1);
order = randperm(240);
tr = order(1:168); va = order(169:204); te = order(205:240);
mu = mean(current_A(tr)); sigma = std(current_A(tr));
Xtr = (current_A(tr)-mu)/sigma;
Xva = (current_A(va)-mu)/sigma;
Xte = (current_A(te)-mu)/sigma;
layers = [featureInputLayer(1,Normalization="none")
fullyConnectedLayer(16)
tanhLayer
fullyConnectedLayer(1)];
network = dlnetwork(layers);
options = trainingOptions("adam",MaxEpochs=200, ...
MiniBatchSize=32,Shuffle="every-epoch", ...
ValidationData={Xva,temperature_C(va)}, ...
ExecutionEnvironment="cpu",Verbose=false);
network = trainnet(Xtr,temperature_C(tr),network,"mse",options);
pred_C = minibatchpredict(network,Xte);
pred_C = pred_C(:);
assert(numel(pred_C)==numel(te) && all(isfinite(pred_C)));
rmse_C = sqrt(mean((pred_C-temperature_C(te)).^2));
baseline_C = mean(temperature_C(tr));
baseline_rmse_C = sqrt(mean((baseline_C-temperature_C(te)).^2));
fprintf('network RMSE = %.6f C\n',rmse_C);
fprintf('constant baseline RMSE = %.6f C\n',baseline_rmse_C);
کد کامل است، اما اجرای واقعی آن در محیط هدف این مرحله تأیید نشده است؛ مجوز نصب محلی MATLAB خطا داد. بنابراین برای RMSE شبکه عدد از پیش ساختهای ارائه نمیکنیم. فایل را در محیط دارای مجوز معتبر اجرا کنید و خروجی واقعی، نسخهٔ نرمافزار و جعبهابزار را همراه نتیجه ذخیره کنید. محیط CPU برای محدود کردن وابستگی به سختافزار انتخاب شده است.
۴. پاسخ ارزیابی و محدودیت نتیجه
پاسخ مثال، دو مقدار محاسبهشده در زمان اجراست: خطای شبکه روی ۳۶ نقطهٔ آزمون و خطای مدل ثابت که فقط میانگین دمای آموزشی را پیشبینی میکند. هر دو با واحد درجهٔ سلسیوس گزارش میشوند. اگر شبکه از این مبنا بهتر نباشد، ابتدا آمادهسازی داده، زمان آموزش و تعریف مسئله را بررسی کنید. برای این رابطهٔ ساختهشده، یک رگرسیون درجهٔ دوم نیز مبنای قویتری است و باید پیش از ادعای ارزش شبکه مقایسه شود.

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

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


