شبکه های عصبی شما می توانند کارهای مختلفی را انجام دهند. این که آیا این داده ها را طبقه بندی می کند ، مانند گروه بندی تصاویر حیوانات در گربه ها و سگ ها ، کارهای رگرسیون ، مانند پیش بینی درآمد ماهانه یا هر چیز دیگری. هر کار خروجی متفاوتی دارد و به نوع متفاوتی از عملکرد از دست دادن نیاز دارد.
نحوه پیکربندی توابع ضرر شما می تواند عملکرد الگوریتم شما را ایجاد یا شکسته کند. با پیکربندی صحیح عملکرد ضرر ، می توانید اطمینان حاصل کنید که مدل شما چگونه می خواهید کار کند.
خوشبختانه برای ما ، توابع ضرر وجود دارد که می توانیم از آنها برای استفاده بیشتر از کارهای یادگیری ماشین استفاده کنیم.
در این مقاله ، ما در مورد عملکردهای از دست دادن محبوب در Pytorch و در مورد ساخت توابع از دست دادن سفارشی صحبت خواهیم کرد. پس از اتمام خواندن ، باید بدانید که کدام یک را برای پروژه خود انتخاب کنید.
ممکن است مفید باشد
بررسی کنید که چگونه می توانید آموزش مدل Pytorch خود را کنترل کرده و تمام ابرداده های مدل سازی را با ادغام Neptune + Pytorch پیگیری کنید.
توابع ضرر چیست؟
قبل از اینکه به مشخصات Pytorch بپردازیم ، اجازه دهید حافظه خود را از عملکردهای از دست بدهیم.
توابع از دست دادن برای سنجش خطا بین خروجی پیش بینی و مقدار هدف ارائه شده استفاده می شود. یک تابع ضرر به ما می گوید که مدل الگوریتم تا چه اندازه از تحقق نتیجه مورد انتظار است. کلمه "از دست دادن" به معنای مجازاتی است که مدل برای عدم موفقیت در نتایج مطلوب دریافت می کند.
به عنوان مثال ، یک تابع ضرر (بیایید آن را J بنامیم) می تواند دو پارامتر زیر را بدست آورد:
این عملکرد با مقایسه خروجی پیش بینی شده خود با خروجی مورد انتظار ، عملکرد مدل شما را تعیین می کند. اگر انحراف بین Y_PRED و Y بسیار زیاد باشد ، مقدار از دست دادن بسیار بالا خواهد بود.
اگر انحراف کوچک باشد یا مقادیر تقریباً یکسان باشد ، مقدار از دست دادن بسیار کم را تولید می کند. بنابراین ، شما باید از یک عملکرد ضرر استفاده کنید که می تواند یک مدل را به درستی مجازات کند هنگام آموزش در مجموعه داده های ارائه شده.
توابع ضرر بر اساس بیانیه مشکل تغییر می کنند که الگوریتم شما در تلاش برای حل است.
چگونه توابع از دست دادن pytorch را اضافه کنیم؟
ماژول Pytorch's Torch. دارای چندین عملکرد از دست دادن استاندارد است که می توانید در پروژه خود استفاده کنید.
برای افزودن آنها ، ابتدا باید کتابخانه ها را وارد کنید:
در مرحله بعد ، نوع ضرر مورد نظر خود را تعریف کنید. در اینجا نحوه تعریف میانگین عملکرد از دست دادن خطای مطلق آورده شده است:
پس از اضافه کردن یک عملکرد ، می توانید از آن برای انجام کار خاص خود استفاده کنید.
کدام توابع ضرر در Pytorch موجود است؟
به طور گسترده ، توابع از دست دادن در Pytorch به دو دسته اصلی تقسیم می شوند: ضرر رگرسیون و ضررهای طبقه بندی.
توابع از دست دادن رگرسیون در هنگام پیش بینی مدل ، مانند سن یک شخص ، استفاده می شود.
توابع از دست دادن طبقه بندی هنگامی که مدل در حال پیش بینی یک مقدار گسسته است ، مانند اینکه یک ایمیل اسپم است یا خیر ، استفاده می شود.
توابع از دست دادن رتبه بندی زمانی استفاده می شود که مدل مسافت نسبی بین ورودی ها را پیش بینی می کند ، مانند رتبه بندی محصولات با توجه به اهمیت آنها در صفحه جستجوی تجارت الکترونیکی.
اکنون انواع مختلفی از توابع از دست دادن را در Pytorch و نحوه استفاده از آنها کشف خواهیم کرد:
1. Pytorch میانگین خطای مطلق (عملکرد L1 از دست دادن)
میانگین خطای مطلق (MAE) ، که به آن از دست دادن L1 نیز گفته می شود ، میانگین مجموع اختلافات مطلق بین مقادیر واقعی و مقادیر پیش بینی شده را محاسبه می کند.
این اندازه خطاها را در مجموعه ای از مقادیر پیش بینی شده بررسی می کند ، بدون اینکه به جهت مثبت یا منفی آنها توجه کند. اگر از مقادیر مطلق خطاها استفاده نشود ، مقادیر منفی می توانند مقادیر مثبت را لغو کنند.
از دست دادن Pytorch L1 به این صورت بیان شده است:
x مقدار واقعی و مقدار پیش بینی شده را نشان می دهد.
چه زمانی می توان از آن استفاده کرد؟
- مشکلات رگرسیون ، به ویژه هنگامی که توزیع متغیر هدف دارای مسافتی است ، مانند مقادیر کوچک یا بزرگ که فاصله زیادی از میانگین دارند. به نظر می رسد که نسبت به Outliers قوی تر است.
مثال
2. عملکرد Pytorch میانگین عملکرد از دست دادن خطای مربع
میانگین خطای مربع (MSE) ، که به آن از دست دادن L2 نیز گفته می شود ، میانگین اختلافات مربع بین مقادیر واقعی و مقادیر پیش بینی شده را محاسبه می کند.
از دست دادن Pytorch MSE همیشه بدون در نظر گرفتن نشانه مقادیر واقعی و پیش بینی شده ، نتیجه مثبتی را به دست می آورد. برای افزایش دقت مدل ، باید سعی کنید از دست دادن L2 کاهش دهید - یک مقدار عالی 0. 0 است.
این مربع دلالت بر این دارد که اشتباهات بزرگتر خطاهای حتی بزرگتر از موارد کوچکتر ایجاد می کند. اگر طبقه بندی کننده 100 باشد ، خطا 10،000 است. اگر 0. 1 خاموش باشد ، خطا 0. 01 است. این الگوی را برای اشتباهات بزرگ مجازات می کند و اشتباهات کوچک را تشویق می کند.
از دست دادن Pytorch L2 به این صورت بیان شده است:
x مقدار واقعی و مقدار پیش بینی شده را نشان می دهد.
چه زمانی می توان از آن استفاده کرد؟
- MSE عملکرد پیش فرض از دست دادن برای اکثر مشکلات رگرسیون Pytorch است.
مثال
3. عملکرد از دست دادن احتمال ورود به سیستم منفی Pytorch
عملکرد منفی ورود به سیستم منفی (NLL) فقط در مدل هایی با عملکرد SoftMax به عنوان یک لایه فعال سازی خروجی اعمال می شود. SoftMax به یک تابع فعال سازی اشاره دارد که عملکرد نمایی عادی هر واحد در لایه را محاسبه می کند.
عملکرد SoftMax به صورت زیر بیان می شود:
این تابع یک بردار ورودی از اندازه n می گیرد ، و سپس مقادیر را به گونه ای تغییر می دهد که هر یک از آنها بین 0 تا 1 قرار می گیرد. علاوه بر این ، خروجی را عادی می کند به گونه ای که مجموع مقادیر N بردار برابر با 1 باشد.
NLL از یک مفهوم منفی استفاده می کند زیرا احتمالات (یا احتمال) بین صفر و یک متفاوت است و لگاریتم های مقادیر در این محدوده منفی است. در پایان ، مقدار از دست دادن مثبت می شود.
در NLL ، به حداقل رساندن عملکرد ضرر به ما کمک می کند تا خروجی بهتری داشته باشیم. احتمال ورود به سیستم منفی از تقریب حداکثر برآورد احتمال (MLE) بازیابی می شود. این بدان معنی است که ما سعی می کنیم احتمال ورود به سیستم مدل را به حداکثر برسانیم و در نتیجه NLL را به حداقل برسانیم.
در NLL ، این مدل به دلیل پیش بینی صحیح با احتمالات کوچکتر مجازات می شود و برای پیش بینی با احتمالات بالاتر تشویق می شود. لگاریتم مجازات را انجام می دهد.
NLL نه تنها به درست بودن پیش بینی اهمیت می دهد بلکه در مورد مدل در مورد پیش بینی با نمره بالا نیز اهمیت دارد.
از دست دادن Pytorch NLL به این صورت بیان شده است:
در جایی که x ورودی است ، y هدف ، W وزن است و n اندازه دسته ای است.
چه زمانی می توان از آن استفاده کرد؟
- مشکلات طبقه بندی چند طبقه
مثال
4- عملکرد از دست دادن آنتروپی پیتورچ
این تابع از دست دادن تفاوت بین دو توزیع احتمال را برای مجموعه ای از وقایع یا متغیرهای تصادفی محاسبه می کند.
از آن برای استفاده از نمره ای استفاده می شود که میانگین تفاوت بین مقادیر پیش بینی شده و مقادیر واقعی را خلاصه می کند. برای افزایش دقت مدل ، باید سعی کنید نمره را به حداقل برسانید-نمره متقابل آنتروپی بین 0 تا 1 است و یک مقدار کامل 0 است.
سایر توابع ضرر ، مانند ضرر مربع ، پیش بینی های نادرست را مجازات می کنند. متقاطع آنتروپی به دلیل اعتماد به نفس و اشتباه بسیار مجازات می شود.
بر خلاف از دست دادن احتمال ورود به سیستم ، که بر اساس اعتماد به نفس پیش بینی مجازات نمی شود ، متقابل آنتروپی پیش بینی های نادرست اما مطمئن را مجازات می کند ، و همچنین پیش بینی های صحیح اما کمتر با اعتماد به نفس.
عملکرد متقاطع آنتروپی دارای طیف گسترده ای از انواع است که از این نوع رایج ترین نوع آنتروپی باینری (BCE) است. از دست دادن BCE عمدتا برای مدلهای طبقه بندی باینری استفاده می شود. یعنی مدل هایی که فقط 2 کلاس دارند.
از دست دادن آنتروپی متقاطع Pytorch به این صورت بیان شده است:
در جایی که x ورودی است ، y هدف ، W وزن است ، c تعداد کلاس ها است و N بعد از آن مینی دسته را شامل می شود.
چه زمانی می توان از آن استفاده کرد؟
- وظایف طبقه بندی باینری ، که برای آن عملکرد پیش فرض از دست دادن در Pytorch است.
- ایجاد مدلهای با اعتماد به نفس - پیش بینی دقیق و با احتمال بالاتر خواهد بود.
مثال
5. عملکرد از دست دادن Hinge Pytorch
از دست دادن تعبیه لولا برای محاسبه ضرر در هنگام وجود تانسور ورودی ، x و برچسب تانسور ، y استفاده می شود. مقادیر هدف بین است ، که آن را برای کارهای طبقه بندی باینری مفید می کند.
با استفاده از عملکرد Hinge Loss ، هر زمان که تفاوت در علامت بین مقادیر کلاس واقعی و مقادیر کلاس پیش بینی شده وجود داشته باشد ، می توانید خطای بیشتری ایجاد کنید. این انگیزه نمونه هایی را برای داشتن علامت مناسب ایجاد می کند.
ضرر تعبیه شده لولا به این صورت بیان شده است:
چه زمانی می توان از آن استفاده کرد؟
- مشکلات طبقه بندی ، به ویژه هنگام تعیین اینکه آیا دو ورودی متفاوت هستند یا مشابه هستند.
- یادگیری تعبیه های غیرخطی یا کارهای یادگیری نیمه نظارت.
مثال
6. عملکرد ضرر رتبه بندی حاشیه Pytorch
از دست دادن رتبه بندی حاشیه معیار را برای پیش بینی مسافت نسبی بین ورودی ها محاسبه می کند. این متفاوت از سایر توابع از دست دادن ، مانند MSE یا Cross-entropy است که یاد می گیرند مستقیماً از مجموعه ورودی های معین پیش بینی کنند.
با از دست دادن رتبه بندی حاشیه ، می توانید ضرر را به شرط آنکه ورودی های X1 ، X2 و همچنین یک تانسور برچسب ، Y (حاوی 1 ی ا-1) محاسبه کنید.
هنگامی که y == 1 ، اولین ورودی به عنوان یک مقدار بزرگتر فرض می شود. این رتبه بالاتر از ورودی دوم خواهد بود. اگر y == -1 باشد ، ورودی دوم بالاتر خواهد بود.
از دست دادن رتبه بندی حاشیه Pytorch به این صورت بیان شده است:
چه زمانی می توان از آن استفاده کرد؟
مثال
7. عملکرد از دست دادن حاشیه سه گانه Pytorch
از دست دادن حاشیه سه گانه معیار اندازه گیری از دست دادن سه گانه در مدل ها را محاسبه می کند. با استفاده از این عملکرد ضرر ، می توانید ضرر را به شرط آنکه تانسرهای ورودی ، x1 ، x2 ، x3 و همچنین حاشیه ای با مقدار بیشتر از صفر محاسبه کنید.
یک سه گانه شامل یک (لنگر) ، P (مثالهای مثبت) و N (نمونه های منفی) است.
از دست دادن حاشیه سه گانه Pytorch به این صورت بیان شده است:
چه زمانی می توان از آن استفاده کرد؟
- تعیین شباهت نسبی موجود بین نمونه ها.
- در مشکلات بازیابی مبتنی بر محتوا استفاده می شود
مثال
8. تابع ضرر واگرایی PyTorch Kullback-Leibler
واگرایی Kullback-Leibler که به KL Divergence کوتاه شده است، تفاوت بین دو توزیع احتمال را محاسبه می کند.
با استفاده از این تابع از دست دادن، می توانید مقدار اطلاعات از دست رفته (بیان شده در بیت) را در صورتی که از توزیع احتمال پیش بینی شده برای تخمین توزیع احتمال هدف مورد انتظار استفاده شود، محاسبه کنید.
خروجی آن نزدیکی دو توزیع احتمال را به شما می گوید. اگر توزیع احتمال پیش بینی شده بسیار دور از توزیع احتمال واقعی باشد، منجر به زیان بزرگی خواهد شد. اگر مقدار KL Divergence صفر باشد، به این معنی است که توزیع های احتمال یکسان هستند.
KL Divergence دقیقاً مانند ضرر آنتروپی متقابل عمل می کند، با تفاوت کلیدی در نحوه مدیریت احتمالات پیش بینی شده و واقعی. متقاطع آنتروپی مدل را با توجه به اطمینان پیش بینی ها تنبیه می کند و KL Divergence این کار را نمی کند. KL Divergence فقط ارزیابی می کند که چگونه پیش بینی توزیع احتمال متفاوت از توزیع حقیقت زمین است.
ضرر واگرایی KL به صورت زیر بیان می شود:
x نشان دهنده احتمال برچسب واقعی و y نشان دهنده احتمال برچسب پیش بینی شده است.
چه زمانی می توان از آن استفاده کرد؟
- تقریب توابع پیچیده
- وظایف طبقه بندی چند کلاسه
- اگر می خواهید مطمئن شوید که توزیع پیش بینی ها مشابه داده های آموزشی است
مثال
چگونه یک تابع از دست دادن سفارشی در PyTorch ایجاد کنیم؟
PyTorch به شما امکان می دهد توابع از دست دادن سفارشی خود را برای پیاده سازی در پروژه های خود ایجاد کنید.
در اینجا نحوه ایجاد تابع ساده Cross-Entropy Loss برای خود آورده شده است.
ایجاد تابع از دست دادن سفارشی به عنوان یک تابع پایتون
ایجاد تابع ضرر سفارشی با تعریف کلاس
بیایید ضریب Dice را تغییر دهیم، که شباهت بین دو نمونه را محاسبه می کند تا به عنوان یک تابع ضرر برای مسائل طبقه بندی باینری عمل کند:
چگونه عملکردهای از دست دادن PyTorch را نظارت کنیم؟
کاملاً بدیهی است که در حین آموزش یک مدل، برای ردیابی عملکرد مدل، باید به مقادیر تابع ضرر توجه داشت. همانطور که ارزش ضرر مدام کاهش می یابد، مدل بهتر می شود. چند راه وجود دارد که می توانیم این کار را انجام دهیم. بیایید نگاهی به آنها بیندازیم.
برای این کار، ما یک شبکه عصبی ساده ایجاد شده در PyTorch را آموزش خواهیم داد که طبقه بندی را بر روی مجموعه داده معروف Iris انجام می دهد.
انجام واردات مورد نیاز برای دریافت مجموعه داده.
در حال بارگیری مجموعه داده
مقیاس بندی مجموعه داده به صورت میانگین=0 و واریانس=1، همگرایی سریع مدل را می دهد.
تقسیم مجموعه داده ها به قطار و آزمایش در یک نسبت 80-20.
وارد کردن واردات لازم برای شبکه عصبی و آموزش آن.
تعریف شبکه ما
تعریف توابع برای دقت و آموزش شبکه.
ایجاد مدل ، بهینه ساز و شیء عملکرد از دست دادن.
1. نظارت بر از دست دادن Pytorch در نوت بوک
اکنون باید برای نظارت بر ضرر و همچنین صحت ، اظهارات چاپی را در عملکرد train_network مشاهده کرده اید. این یکی از راه های انجام آن است.
ما چنین خروجی می گیریم.

اگر می خواهیم نیز می توانیم این مقادیر را با استفاده از Matplotlib ترسیم کنیم.
ما نمودار مانند این را نشان می دهیم که همبستگی بین از دست دادن و دقت را نشان می دهد.

این روش بد نیست و کار را انجام می دهد. اما باید به یاد داشته باشیم که هرچه بیانیه و مدل مشکل ما پیچیده تر شود ، تکنیک نظارتی پیشرفته تر به آن نیاز دارد.
2. نظارت بر از دست دادن Pytorch با neptune. ai
یک روش ساده تر برای نظارت بر معیارهای شما ، ورود به آنها در خدماتی مانند نپتون و تمرکز بر کارهای مهم تر مانند ساخت و آموزش مدل است.
برای این کار ، ما فقط باید چند قدم کوچک را دنبال کنیم.
توجه: برای به روزترین نمونه کد ، لطفاً به اسناد ادغام نپتون-پیتورچ مراجعه کنید.
ما همچنین می توانیم متغیرهای پیکربندی مانند:
در اینجا نحوه نگاه در UI آمده است.

نمای ابرداده در UI نپتون |آن را در برنامه مشاهده کنید
سرانجام ، ما می توانیم با اضافه کردن فقط چند خط به عملکرد train_network خود ، ضرر خود را وارد کنیم. به خطوط مرتبط با "اجرا" توجه کنید.
این چیزی است که ما در داشبورد می گیریم. کاملا یکپارچه

از دست دادن Pytorch در نپتون |در برنامه مشاهده کنید
می توانید این اجرای را در اینجا در برنامه نپتون مشاهده کنید. نیازی به گفتن نیست ، شما می توانید این کار را با هر عملکرد ضرر انجام دهید.
توجه: برای به روزترین نمونه کد ، لطفاً به اسناد ادغام نپتون-پیتورچ مراجعه کنید.
افکار نهایی
ما متداول ترین توابع از دست دادن در Pytorch را پشت سر گذاشتیم. می توانید هر عملکردی را که متناسب با پروژه شما باشد ، انتخاب کنید یا عملکرد سفارشی خود را ایجاد کنید.
امیدوارم این مقاله به عنوان راهنمای شروع سریع شما برای استفاده از توابع از دست دادن Pytorch در کارهای یادگیری ماشین شما باشد.
اگر می خواهید خود را عمیق تر در موضوع غوطه ور کنید یا در مورد سایر کارکردهای ضرر و زیان بیاموزید ، می توانید از اسناد رسمی Pytorch بازدید کنید.
این یک ردیاب آزمایش و رجیستری مدل است که با هر پشته MLOP ادغام می شود.
مدل ابرداده را از هر نقطه خط لوله خود وارد کنید. نتایج را در برنامه وب مشاهده کنید.
ویدیو های آموزشی فارکس...
ما را در سایت ویدیو های آموزشی فارکس دنبال می کنید
برچسب :
نویسنده : محبوب امانی
بازدید : 71
تاريخ : پنجشنبه
24 فروردين
1402 ساعت: 16:18