<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های محسن رمضانی نصرتی</title><link>https://virgool.ir/feed/@m_41917882</link><description></description><language>fa</language><pubDate>2026-11-11 18:42:50</pubDate><image><url>https://files.virgool.ir/upload/users/1355805/avatar/NISjwM.jpeg</url><title>محسن رمضانی نصرتی</title><link>https://virgool.ir/@m_41917882</link></image><item><title>Natural Language inference</title><link>https://virgool.ir/@m_41917882/natural-language-inference-nou0aib2c3fl</link><description>چکیدهپردازش زبان طبیعی (NLP) زیرمجموعه ای از زبان شناسی، علوم کامپیوتر، و هوش مصنوعی مربوط به تعاملات بین رایانه ها و زبان انسان، به ویژه چگونگی برنامه سازی رایانه ها برای پردازش و تجزیه و تحلیل مقادیر زیادی از داده های زبان طبیعی است. هدف کامپیوتری است که قادر به «درک» محتویات اسناد، از جمله ظرایف زمینه ای زبان درون آن ها است. پس از آن فناوری می تواند اطلاعات و بینش های موجود در اسناد را به دقت استخراج کند و همچنین خود اسناد را دسته بندی و سازماندهی کند.تاریخچهپردازش زبان طبیعی ریشه در دهه ۱۹۵۰ دارد. در حال حاضر در سال ۱۹۵۰، آلن تورینگ مقاله ای با عنوان «ماشین آلات محاسباتی و هوش» منتشر کرد که آنچه را که اکنون آزمون تورینگ به عنوان معیار هوش نامیده می شود، پیشنهاد کرد، هر چند در آن زمان که به عنوان مشکلی جدا از هوش مصنوعی بیان نشده بود. آزمون پیشنهادی شامل وظیفه ای است که شامل تفسیر خودکار و نسل زبان طبیعی است.پردازش زبان طبیعی چیست ؟پردازش زبان طبیعی چیست ؟ یا nlp چیست ؟ پردازش زبان طبیعی یا NLP زمینه‌ای از هوش مصنوعی است که به ماشین‌ها توانایی خواندن، درک و استنتاج معنا از زبان‌های انسانی را می‌دهد. ​این یک رشته‌ای است که بر تعامل بین علم داده و زبان انسان تمرکز دارد و در بسیاری از صنایع مقیاس پذیر است. امروزه NLP به لطف پیشرفت‌های بزرگ در دسترسی به داده‌ها و افزایش قدرت محاسباتی در حال شکوفایی است. که به متخصصان اجازه دستیابی به نتایج معنی‌دار در حوزه‌هایی مانند بهداشت و درمان، رسانه، امور مالی و منابع انسانی را می‌دهد. ​پس آموختید که پردازش زبان طبیعی چیست ؟موارد استفاده از NLP (کاربرد پردازش زبان طبیعی)به عبارت ساده، NLP کنترل خودکار زبان طبیعی انسان مانند گفتار یا متن را نشان می‌دهد. و اگر چه این مفهوم جذاب است، ارزش واقعی پشت این فناوری از موارد استفاده آن ناشی می‌شود.پردازش زبان طبیعی می‌تواند: در انجام بسیاری از كارها به شما کمک کند. کاربرد پردازش زبان طبیعی بسیار است و به نظر می‌رسد که زمینه‌های کاربرد آن به صورت روزانه افزایش می‌یابند. بیایید به چند مثال از کاربرد پردازش زبان طبیعی اشاره کنیم :  پیش بینی بیماری هاپردازش زبان طبیعی :براساس سوابق الکترونیکی سلامت و گفتار خود بیمار، تشخیص و پیش بینی بیماری‌ها را امکان پذیر می‌کند. این قابلیت در شرایط سلامتی که از بیماری‌های قلبی عروقی به افسردگی و حتی اسکیزوفرنی می‌رسد، مورد بررسی قرار گرفته است. به عنوان مثال، Amazon Comprehend Medical سرویسی است که از NLP برای استخراج شرایط بیماری، داروها و نتایج درمان از یادداشت‌های بیمار، گزارش‌های آزمایش بالینی و سایر پرونده‌های الکترونیکی سلامت استفاده می‌کند.   شناسایی و استخراج اطلاعاتسازمان‌ها می‌توانند با شناسایی و استخراج اطلاعات در منابعی مانند رسانه‌های اجتماعی، آنچه مشتریان در مورد یک سرویس یا محصول می‌گویند را تعیین کنند. این تجزیه و تحلیل احساسی می‌تواند اطلاعات زیادی در مورد انتخاب‌های مشتریان و محرک‌های تصمیم‌گیری آن‌ها فراهم کند. ​  دستیار شناختییک مخترع در IBM یک دستیار شناختی ایجاد کرد که مانند یک موتور جستجوی شخصی با یادگیری همه چیز در مورد شما کار می‌کند. و سپس یک نام، یک آهنگ، یا هر چیزی که شما نمی‌توانید لحظه‌ای که به آن نیاز دارید به خاطر بیاورید را به شما یادآوری می‌کند.رابط های هوشمند صدا محورالکسا آمازون(Amazon’s Alexa) و سیری اپل(Apple’s Siri ) نمونه‌هایی از رابط‌های هوشمند صدا محور هستند که از NLP برای پاسخ به پیام‌های فوری استفاده می‌کنند. و هر کاری مانند پیدا کردن یک فروشگاه خاص انجام می‌دهند. به ما پیش‌بینی آب و هوا را می‌گویند. بهترین مسیر را به دفتر پیشنهاد می‌کنند یا چراغ‌های خانه را روشن می‌کنند.شناسایی مهارت هاپردازش زبان طبیعی: همچنین در هر دو مرحله جستجو و انتخاب جذب استعداد، شناسایی مهارت‌های استخدام‌های بالقوه و همچنین شناسایی چشم‌انداز پیش از اینکه آن‌ها در بازار کار فعال شوند، مورد استفاده قرار می‌گیرد.​دیگر کاربردهای پردازش زبان طبیعیپردازش زبان طبیعی: به ویژه در صنعت مراقبت‌های بهداشتی در حال شکوفایی است. این تکنولوژی در حال بهبود ارائه خدمات درمانی، تشخیص بیماری و کاهش هزینه‌ها است. در حالیکه سازمان‌های مراقبت بهداشتی در حال پذیرش فزاینده پرونده‌های الکترونیک سلامت هستند. این واقعیت که مستندات بالینی را می‌توان بهبود بخشید به این معنی است که بیماران می‌توانند از طریق مراقبت‌های بهداشتی بهتر، بهتر درک و بهره مند شوند. هدف باید بهینه‌سازی تجربه آن‌ها باشد. و چندین سازمان در حال حاضر بر روی این موضوع کار می‌کنند.شرکت‌هایی مانند آزمایشگاه‌هایWinterlight پیشرفت‌های عظیمی در درمان بیماری آلزایمر با نظارت بر اختلال شناختی از طریق صحبت کردن انجام می‌دهند. و همچنین می‌توانند از آزمایش‌ها و مطالعات بالینی برای طیف گسترده‌ای از اختلالات سیستم عصبی مرکزی حمایت کنند. پس از یك رویکرد مشابه، دانشگاه استنفورد، وایوبات (Woebot)، یک درمانگر چت بات را با هدف کمک به افراد مبتلا به اضطراب و اختلالات دیگر، توسعه داد. ​اما بحث‌های جدی در مورد این موضوع وجود دارد. چند سال پیش مایکروسافت نشان داد که با تجزیه و تحلیل نمونه‌های بزرگ پرس و جوی موتور جستجو، آن‌ها می‌توانند کاربران اینترنتی که از سرطان لوزالمعده رنج می‌برند را حتی قبل از اینکه تشخیص بیماری را دریافت کنند، شناسایی کنند. کاربران چگونه به چنین تشخیصی واکنش نشان می‌دهند؟ و چه اتفاقی می‌افتاد اگر شما به عنوان یک مثبت کاذب مورد آزمایش قرار می‌گرفتید؟ (‏به این معنی که می‌توان بیماری را حتی اگر نداشته باشید تشخیص داد)‏. این موضوع، مربوط بهGoogle Flu Trends است که در سال ۲۰۰۹ اعلام شدقادر به پیش‌بینی آنفولانزا است. اما بعدا به دلیل دقت پایین و ناتوانی در برآورده کردن نرخ‌های پیش‌بینی‌شده، ناپدید شد. ​پردازش زبان طبیعی :ممکن است کلید یک حمایت بالینی موثر در آینده باشد. اما هنوز چالش‌های زیادی برای مواجهه در کوتاه‌مدت وجود دارد. ​بنابرین دیدید که همانطور گفتم کاربرد پردازش زبان طبیعی بسیار است.الگوریتم های پردازش زبان طبیعیجدا از کاربرد بسیار پردازش زبان طبیعی اشکال هایی وجود دارد. اشکالات اصلی که ما این روزها با NLP مواجه می‌شویم مربوط به این واقعیت است که زبان بسیار پیچیده است. فرآیند درک و دستکاری زبان بسیار پیچیده است. و به همین دلیل استفاده از تکنیک‌های مختلف برای رسیدگی به چالش‌های مختلف قبل از اتصال همه چیز به یکدیگر رایج است. زبان‌های برنامه‌نویسی مانند پایتون یا آر (R) به شدت برای انجام این تکنیک‌ها استفاده می‌شوند. اما قبل از این که به کدنویسی (‏که موضوع یک مقاله متفاوت خواهد بود)‏ وارد شویم درک مفاهیم آن‌ها مهم است. بیایید برخی از پرکاربردترین الگوریتم‌های NLP را در زمان تعریف واژگان اصطلاحات خلاصه و توضیح دهیم:بسته کلمات (Bag of Words)یک مدل رایج است که به شما این امکان را می‌دهد که تمام کلمات را در یک متن بشمارید. اساسا یک ماتریس رخداد برای جمله یا سند ایجاد می‌کند. بدون توجه به دستور زبان و ترتیب کلمه. سپس از این فرکانس‌ها یا رخدادهای کلمه به عنوان ویژگی برای آموزش یک طبقه‌بندی کننده استفاده می‌شود. ​برای یک مثال کوتاه، من اولین جمله آهنگ“Across the Universe” را از گروه بیتلز گرفتم:Words are flowing out like endless rain into a paper cup.کلمات چون بارانی بی‌پایان در یک فنجان کاغذی جاری می‌شوند.They slither while they pass, they slip away across the universe​​​​​​​​همچنان که می‌گذرند می‌لغزند و از دنیا می‌گذرند.حال بیایید این کلمات را بشماریم:این رویکرد ممکن است جنبه‌های منفی متعددی مانند عدم وجود معنا و زمینه معنایی را منعکس کند. و حقایقی که کلمات را متوقف می‌کنندمانند“the” یا(” a ” )‏ به تجزیه و تحلیل نویز اضافه می‌کنند. و برخی کلمات بر این اساس وزن ندارند” universe” کم‌تر از کلمه” they” وزن دارد‏.​ ​​​​​​​برای حل این مشکل، یک رویکرد این است که فراوانی کلمات را با این که هر چند وقت یک‌بار در تمام متون ظاهر می‌شوند (‏نه فقط آن چیزی که ما تحلیل می‌کنیم)‏ دوباره مقیاس بندی کنیم. به طوری که امتیازات کلمات مکرر مانند “the” که در سراسر متون دیگر نیز تکرار می‌شوند، جریمه شوند. این رویکرد برای امتیازدهی “Term Frequency Inverse Document Frequency” ‏(TFIDF)‏ نامیده می‌شود. و بسته کلمات را با وزن بهبود می‌بخشد. از طریق TFIDF عبارات مکرر در متن “پاداش” می‌گیرند (‏مانند کلمه“they” در مثال ما) اما اگر این عبارات در متون دیگری که ما نیز در الگوریتم گنجانده‌ایم، تکرار شوند “مجازات” می‌شوند. ​توکن سازی (Tokenization)این فرآیند تقسیم‌بندی متن به جملات و کلمات است. در اصل، این كار برش یک متن به قطعاتی به نام توکن است. و در عین حال برخی کاراکترهای خاص، مانند نقطه‌گذاری را حذف می‌کند. با پیروی از مثال ما، نتیجه توكن‌سازی به صورت زیر خواهد بود:خیلی ساده است، نه؟ خوب، اگر چه ممکن است در این مورد و همچنین در زبان‌هایی مانند انگلیسی کاملا ابتدایی به نظر برسد که کلمات را با یک فضای خالی جدا می‌كند (‏که زبان‌های بخش‌بندی شده نامیده می‌شوند)‏. همه زبان‌ها یکسان رفتار نمی‌کنند، و اگر در مورد آن فکر کنید، فضاهای خالی به تنهایی کافی نیست. حتی برای انگلیسی که توکن‌سازی‌های مناسب را انجام دهد. تقسیم براساس فضاهای خالی ممکن است چیزی را که باید به عنوان یک نشانه در نظر گرفته شود. مانند نام‌های خاص به عنوان مثالSan Franciscoیا New York‏ یا عبارات خارجی وام گرفته شده ‏به عنوان مثال، (laissez faire)‏ را درهم بشکند. ​توکنیزه کردن نیز می‌تواند علائم نگارشی را حذف کند. و مسیر را برای تقسیم‌بندی مناسب کلمه کاهش دهد اما همچنین باعث ایجاد عوارض احتمالی می‌شود. در مورد نقطه‌ای که کلمه اختصاری را همراهی می‌کند (‏به عنوان مثال dr )نقطه پس از آن اختصار باید به عنوان بخشی از یک نشانه در نظر گرفته شود و حذف نشود.فرآیند علامت گذاری می‌تواند به طور خاص زمانی که با حوزه‌های متن زیست پزشکی سر و کار داریم. که حاوی تعداد زیادی خط تیره، پرانتز و دیگر علائم نگارشی هستند، مشکل‌ساز باشدحذف کلمات توقف (Stop Word Removal)شامل خلاص شدن از حروف تعریف، ضمایر و حروف اضافه مانند ” and”، ” the ” یا ” to” در زبان انگلیسی است. در این فرآیند برخی کلمات بسیار رایج که به نظر می‌رسد ارزش کمی یا هیچ ارزشی برای هدف NLP دارند فیلتر می‌شوند. و از متنی که باید پردازش شود حذف می‌شوند. از این رو واژه‌های گسترده و مکرری که در مورد متن مربوطه اطلاعاتی ندارند حذف می‌شوند.کلمات توقف را می‌توان با انجام جستجو در لیست از پیش تعریف‌شده کلمات کلیدی، آزاد کردن فضای پایگاه‌داده و بهبود زمان پردازش، به طور ایمن نادیده گرفت. ​هیچ لیست جهانی از کلمات توقف وجود ندارد. اینها می‌توانند از قبل انتخاب شوند یا از ابتدا ساخته شوند. یک رویکرد بالقوه این است که با استفاده از کلمات توقف از پیش تعریف‌شده شروع کنیم. و کلمات را بعدا به لیست اضافه کنیم. با این حال، به نظر می‌رسد که روند کلی در طول زمان گذشته، استفاده از لیست‌های کلمات توقف استاندارد بزرگ به استفاده از لیست‌های خالی بوده‌است.نکته این است که حذف کلمات می‌تواند اطلاعات مربوطه را پاک کند. و زمینه را در یک جمله مشخص اصلاح کند. به عنوان مثال، اگر ما یک تجزیه و تحلیل احساسی انجام دهیم، ممکن است الگوریتم خود را از مسیر خارج کنیم. اگر یک کلمه توقف مانند“not” را حذف کنیم. تحت این شرایط، شما ممکن است حداقل لیست کلمات توقف را انتخاب کنید. و بسته به هدف خاص خود، عبارات اضافی را اضافه کنید. ​ریشه یابی (Stemming) چیست ؟ریشه یابی چیست ؟ به فرآیند برش انتها یا آغاز کلمات با هدف حذف وندها (‏افزوده‌های واژگانی به ریشه کلمه)‏ اشاره دارد. ​وندها که به ابتدای کلمه متصل می‌شوند پیشوندها نامیده می‌شوند (برای مثال، astro در کلمه )                          ” astrobiology” ‏. و وندهای متصل در انتهای کلمه پسوندها نامیده می‌شوند (‏برای مثال، ” ful” در کلمه)              ” helpful”مشکل این است که وندها می‌توانند اشکال جدیدی از یک کلمه را ایجاد یا گسترش دهند (‏وندهای صرفی نامیده می‌شوند)‏. یا حتی خود کلمات جدیدی خلق کنند (‏وندهای اشتقاقی نامیده می‌شوند)‏. در زبان انگلیسی، پیشوندها همیشه اشتقاقی هستند (‏وند یک کلمه جدید مانند پیشوند ” eco” در کلمه ” ecosystem” ایجاد می‌کند). اما پسوندها می‌توانند اشتقاقی باشند (‏وند یک کلمه جدید مانند پسوند“ist” در کلمه ” guitarist” ایجاد می‌کند) یا صرفی (‏وند یک شکل جدید از کلمه مانند پسوند “er” در کلمه ” faster” ایجاد می‌کند)‏. ​یک رویکرد ممکن این است که فهرستی از وندها و قوانین مشترک را در نظر بگیریم (‏زبان‌های پایتون و آر (R) کتابخانه‌های مختلفی دارند که حاوی وندها و روش‌ها هستند)‏ . و براساس آن‌ها عمل کنیم. اما البته این رویکرد محدودیت‌هایی را ایجاد می‌کند. از آنجا که آنها از رویکردهای الگوریتمی استفاده می‌کنند، نتیجه فرآیند ریشه‌ یابی(stemming) ممکن است یک کلمه واقعی نباشد. و یا حتی معنای کلمه (‏و جمله)‏ را تغییر دهد. برای جبران این اثر می‌توانید آن روش‌های از پیش تعریف‌شده را با اضافه کردن یا حذف وندها و قوانین ویرایش کنید. اما باید در نظر بگیرید که ممکن است عملکرد را در یک حوزه بهبود بخشید. در حالی که یک تخریب را در حوزه دیگر ایجاد کنید. همیشه به کل تصویر نگاه کنید و عملکرد مدل خود را آزمایش کنید. ​بنابراین اگر ریشه یابی کردن محدودیت‌های جدی دارد. چرا ما از آن استفاده می‌کنیم؟ اول از همه، می‌توان از آن برای تصحیح خطاهای املای توکن‌ها استفاده کرد. استفاده و اجرا آن بسیار سریع است (‏آن‌ها عملیات ساده را بر روی یک رشته انجام می‌دهند). و اگر سرعت و عملکرد در مدل NLP مهم هستند، پس ریشه یابی قطعا راهی است كه باید طی شود. به یاد داشته باشید، ما از آن با هدف بهبود عملکرد خود استفاده می‌کنیم، نه به عنوان تمرین دستور زبان.یافتن ریشه کلمه با​  Lemmatization چیست ؟ریشه کلمه چیست ؟ هدف آن کاهش یک کلمه به شکل پایه آن و گروه‌بندی اشکال مختلف یک کلمه یکسان است. برای مثال افعال در زمان گذشته به حال تبدیل می‌شوند (برای مثال ” went” به ” go” تغییر می‌کند. )‏و مترادف‌ها یكپارچه می‌شوند(‏برای مثال ” best” به ” good” تغییر می‌کند)‏، بنابراین کلمات را با معنای مشابه با ریشه شان استاندارد می‌کنند. ​اگرچه به نظر می‌رسد که ارتباط نزدیکی با فرآیند ریشه یابی دارد، اما lemmatization از رویکرد متفاوتی برای رسیدن به شکل ریشه کلمات استفاده می‌کند. ​قیاس کلمات را به شکل دیکشنری خود (‏معروف به لما)‏ حل می‌کند که برای آن نیاز به دیکشنری دقیق دارد که در آن الگوریتم می‌تواند به جستجو بپردازد و کلمات را به لما خود پیوند دهد. ​برای مثال، کلمات “ running“، “ runs” و “ ran” همه شکل‌های کلمه “ run” هستند، بنابراین” run” لما تمام کلمات قبلی است. ​ریشه کلمه همچنین زمینه کلمه را به منظور حل مسایل دیگر مانند ابهام‌زدایی در نظر می‌گیرد. که به این معنی است که می‌تواند بین کلمات یکسانی که معانی متفاوتی دارند بسته به زمینه خاص تمایز قائل شود. به کلماتی مثل “خفاش” (‏که می‌تواند با حیوان یا با چماق فلزی / چوبی به کار رفته در بیس بال مطابقت داشته باشد)‏. یا “بانک” (‏مرتبط با موسسه مالی یا زمین در کنار یک آب) ‏فکر کنید. با ارایه یک پارامتر بخشی از گفتار به یک کلمه (‏خواه اسم باشد، خواه فعل و غیره)‏ می‌توان نقشی را برای آن کلمه در جمله تعریف کرد و ابهام‌زدایی را حذف کرد. ​همانطور که شما ممکن است در حال حاضر نشان دهید، lemmatization یک کار بسیار بیشتر از انجام یک فرآیند ریشه یابی ناشی از منابع است. در عین حال، از آنجا که به دانش بیشتری در مورد ساختار زبان نیاز دارد تا یک رویکرد ریشه‌یابی، به قدرت محاسباتی بیشتری نیاز دارد تا راه‌اندازی یا تطبیق یک الگوریتم ریشه‌یابی. ​مدلسازی موضوعی (Topic Modeling)به عنوان روشی برای کشف ساختارهای پنهان در مجموعه‌ای از متون یا اسناد است. در اصل، متون را برای کشف موضوعات پنهان براساس محتوایشان، پردازش کلمات منحصر به فرد و تخصیص مقادیر براساس توزیع آن‌ها، دسته‌بندی می‌کند. این تکنیک براساس این فرضیات است که هر سند شامل ترکیبی از موضوعات است. و هر موضوع شامل مجموعه‌ای از کلمات است. که به این معنی است که اگر بتوانیم این موضوعات پنهان را پیدا کنیم می‌توانیم معنای متون خود را بیابیم.​الگوریتم LDAاز دنیای تکنیک‌های مدل‌سازی موضوع، احتمالا Latent Dirichlet Allocation (‏LDA)‏ بیش‌ترین کاربرد را دارند. این الگوریتم نسبتا جدید (‏کم‌تر از ۲۰ سال پیش اختراع شد)‏. به عنوان یک روش یادگیری بدون نظارت کار می‌کند. که موضوعات مختلفی را کشف می‌کند که زمینه جمع‌آوری اسناد هستند. در روش‌های یادگیری بدون نظارت مانند این، هیچ متغیر خروجی برای هدایت فرآیند یادگیری وجود ندارد. و داده‌ها توسط الگوریتم‌ها برای یافتن الگوها بررسی می‌شوند. برای اینکه دقیق‌تر باشیم، LDA گروهی از کلمات مرتبط را به صورت زیر پیدا می‌کند:۱. هر کلمه را به یک موضوع تصادفی تخصیص دهید. که در آن کاربر تعداد موضوعاتی را که می‌خواهد کشف کند را تعریف می‌کند. شما خود موضوعات را تعریف نمی‌کنید (‏شما فقط تعداد موضوعات را تعریف می‌کنید)‏. و الگوریتم تمام اسناد را به موضوعات نگاشت خواهد کرد به طوری که کلمات در هر سند عمدتا توسط آن موضوعات خیالی جذب می‌شوند. ​۲. الگوریتم به صورت تکراری از هر کلمه عبور می‌کند. و کلمه را به موضوعی اختصاص می‌دهد. که در آن احتمال تعلق کلمه به یک موضوع، و احتمال ایجاد سند توسط یک موضوع در نظر گرفته می‌شود. این احتمالات چندین بار تا هم‌گرایی الگوریتم محاسبه می‌شوند.برخلاف دیگر الگوریتم‌های خوشه‌بندی مانند K – means که خوشه‌بندی سخت را اجرا می‌کنند (‏که در آن موضوعات مجزا هستند)‏، LDA هر سند را به ترکیبی از موضوعات اختصاص می‌دهد، که به این معنی است که هر سند می‌تواند توسط یک یا چند موضوع توصیف شود(‏برای مثال سند ۱ توسط ۷۰ % از موضوع A، ۲۰ % از موضوع B و ۱۰ % از موضوع C توصیف شود) ‏و نتایج واقع گرایانه تری را منعکس می‌کند.مدلسازی موضوعی برای طبقه بندی متون، ساخت سیستم‌های توصیه گر (به عنوان مثال برای توصیه کتاب به شما بر اساس خوانش‌های گذشته) یا حتی تشخیص روند انتشارات آنلاین بسیار مفید است.آینده چه شکلی است؟در این مقاله آموختید پردازش زبان طبیعی چیست ؟ و دانستید که کاربرد پردازش زبان طبیعی بسیار است که به تعدادی از کاربردهای پردازش زبان طبیعی اشاره شد. در حال حاضر NLP در حال تلاش برای تشخیص تفاوت‌های جزئی در معنای زبان است. چه به دلیل فقدان زمینه، خطاهای هجی کردن و چه تفاوت‌های گویشی.​ ​​​​​​در مارس ۲۰۱۶ مایکروسافت Tay را راه‌اندازی کرد. یک ربات هوش مصنوعی (‏AI)‏ که در توئیتر به عنوان یک آزمایش NLP منتشر شد. ایده این بود که هر چه کاربران بیشتری با Tay صحبت کنند، آن هوشمندتر خواهد شد. خوب، نتیجه این بود که پس از ۱۶ ساعت Tay به خاطر نظرات نژادپرستانه و توهین‌آمیز اش کنار گذاشته شد.بخش دوماستنتاج زبان طبیعیاستنتاج زبان طبیعی(Natural Language Inference) یکی از مهمترین وظایف مطرح شده در پردازش زبان طبیعی (Natural Language Processing) است. این مسئله آنقدر مهم است که آن را آزمونی برای رسیدن پردازش زبان طبیعی به هدف نهایی خود، یعنی درک کامل زبان طبیعی (Natural Language Understanding) توسط ماشین میدانند. در مسئله‌ی استنتاج زبان طبیعی دو عبارت مطرح می‌شود؛ عبارت اول، مقدم (Premise) و عبارت دوم، تالی (Hypothesis) نامیده می‌شود. در این مسئله، نوع ارتباط این دو عبارت در سه کلاس زیر دسته‌بندی می‌شود:1. کلاس دلالت: با توجه به عبارت مقدم، عبارت تالی درست می‌باشد. 2. کلاس تضاد: با توجه به عبارت مقدم، عبارت تالی غلط می‌باشد. 3. کلاس خنثی: با توجه به عبارت مقدم، نمی‌توان درباره‌ی درست یا غلط بودن تالی نظر قطعی داد.با توجه به مثال زیر، از جمله‌ی مقدم می‌توان نتیجه گرفت که تالی دلالت درست است و تالی تضاد نادرست است ونمی‌توان نتیجه گرفت که آیا تالی خنثی درست است یا خیر.باتشکرمحسن رمضانی نصرتی  </description><category>محسن رمضانی نصرتی</category><author>محسن رمضانی نصرتی</author><pubDate>Fri, 03 Jun 2022 00:27:56 +0430</pubDate></item><item><title>واریانس وبایاس</title><link>https://virgool.ir/@m_41917882/واریانس-وبایاس-wxavlmui61vz</link><description>انحراف معیار معیار پایایی نتیجه گیری آماری شما است. فرض کنید می خواهید یک نظرسنجی انجام دهید تا ببینید چه کسی در انتخابات پیروز می شود. اگر با 1000 نفر تماس بگیرید و از آنها بپرسید که چگونه رای می دهند، می توانید اولین تقریب را انجام دهید. می‌توانید بر اساس میزان اطمینان آنها حدس بزنید که نظرسنجی چقدر دقیق بوده است، اما همچنان باید بر اساس حجم نمونه کوچک، دقت را تا حدودی کاهش دهید. و اگر چند روز بعد نظرسنجی دیگری انجام دادید، می‌توانید نتایج نظرسنجی‌ها را مقایسه کنید و از تفاوت برای محاسبه حاشیه خطا استفاده کنید. این همان چیزی است که انحراف معیار است. این انحراف از راه حل محاسبه شده استاندارد است که می توانید در زندگی واقعی انتظار داشته باشید. این نشان می دهد که پیش بینی شما چقدر قابل اعتماد است.وجود بایاس در خطای تمرکز بر آخرین اطلاعاتفرض   کنید که تصمیم گرفته‌اید یک خودرو جدید بخرید. تمام بازار را بررسی می‌کنید و از   میان گزینه‌های موجود، یکی را انتخاب می‌کنید. این خودرو در ایران هم حدود بیست   هزار دستگاه فروش داشته و به نظر می‌رسد که مشتریان راضی هستند. در قدم بعدی، با   دوستان و آشنایان مشورت می کنید. آنها هم نظرات مختلفی در این مورد می‌دهند که   برایند آن خیلی مثبت است و به نظر می‌رسد دلیل خاصی برای نخریدن این خودرو وجود   ندارد. از چند نفر از دارندگان خودرو هم می‌پرسید. آنها هم رضایت دارند.حالا   باید کمی جستجوی اینترنتی انجام دهید. سایت‌های مختلف را می‌بینید. به تالارهای   گفتگو سر می‌زنید. می‌بینید که اوضاع در اینجا هم خوب است. سایت شرکت سازنده را   هم با دقت بررسی می‌کنید و می‌بینید که اوضاع خوب است.به   شرکت عرضه کننده‌ی خودرو مراجعه می‌کنید و در لحظه‌ی ورود با یک مشتری عصبانی   مواجه می‌شوید. مشتری به شما میگوید: از این مدل ماشین می‌خواهید خرید کنید؟   اصلاً این کار را نکنید. من دو ماه پیش ماشینم را گرفتم. الان یک ماه است که   اینجا در نمایندگی مانده. یک بار خاموش شد و دیگر روشن نشد. دلیلش را هنوز   نفهمیده‌اند! هر روز می‌گویند صبر کن فلان قطعه خراب است. آن را عوض کنیم. اما   نتیجه‌ای حاصل نمی‌شود!حالا   خودتان را در این شرایط تصور کنید. آیا هنوز هم به تصمیم خود اصرار دارید؟اکثر   انسانها در چنین شرایطی در تصمیم خود تردید می‌کنند. کم نیستند کسانی که در چنین   شرایطی، حتی تصمیم خود را تغییر می‌دهند.بیایید   کمی دقت کنیم.همینکه   بیست هزار دستگاه از این خودرو فروخته شده، می تواند نشانه این باشد که اوضاع   چندان هم بد نیست. اینکه بستگان و دوستان شما از این خودرو بد نشنیده‌اند و حتی   تعریف هم می‌کنند خبر خوبی است. اینکه در سایت ها و فضای مجازی که به سادگی همگی   می‌توانند اعتراض خود را اعلام کنند، اعتراضی در این زمینه  مشاهده نمی‌شود، خبر   مثبت دیگری است. به نظر می‌رسد که شما، طی چند ماه تحقیق، مجموعه‌ای از اطلاعات   را در اختیار داشته‌اید، اما این یک نفر، عملاً محاسبات شما را به شدت تغییر   داده است.حالا   حالت برعکس را تصور کنید.اولین   روز، قبل از اینکه به خرید این خودرو فکر کنید، همین فرد را می‌بینید. او همین   حرف ها را می‌زند. احتمالاً شما  تصمیم می‌گیرید که خودرو مربوطه را از میان   گزینه های خود خارج کنید. بعد از مدتی از دوستان و آشنایان، نکات مثبتی می‌شنوید.   کمی جستجوی اینترنتی می‌کنید. کم کم به این باور می‌رسید که آنچه نفر اول به شما   گفته بود، یک استثناء بوده و نه یک قاعده.حالا   به سراغ خرید همان خودرو می‌روید و …احتمالاً   خرید را انجام می‌دهید.اگر   از لحاظ علمی و آماری نگاه کنیم، ما مجموعه‌ای از اطلاعات را برای تصمیم‌گیری   گردآوری می‌کنیم و بعد به آنها ارزش می‌دهیم و آنها را با هم ترکیب می‌کنیم و به   نتیجه می‌رسیم.اگر   بحث در مورد موضوعاتی نظیر قیمت سهام در بورس یا قیمت طلا در بازار باشد،   احتمالاً قبول دارید که هر چه اطلاعات جدید‌تر باشند، باید وزن و اهمیت بیشتری   داشته باشند. اما وقتی به مثال بالا یا ده‌ها مثال مشابه می‌رسیم، اطلاعات امروز   از لحاظ ارزش تفاوتی با اطلاعات هفته قبل یا حتی ماه قبل ندارند. اما مغز ما، به   اطلاعات جدید‌تر وزن بیشتری می‌دهد.این خطای شناختی مغز را می‌توان به   نام‌های مختلف معرفی کرد و در گروه‌بندی‌های مختلف خطاهای ذهنی جا داد. ما فعلاً   در این مرحله، آن را مصداقی از «خطای تمرکز» در نظر می‌گیریم. خطایی که در آن   بخشی از اطلاعات ما، به دلیلی، بیشتر از سایر اطلاعات مورد توجه قرار می گیرند.در   مثال فوق، این دلیل، جدیدتر بودن اطلاعات   بود. دلایل دیگری هم وجود دارد که به صورت مستقل به آنها می‌پردازیم.هر   چند این خطا، بسیار کلیدی و ریشه دار است و ما همگی، مصداق‌هایی از آن را تجربه   کرده‌ایم. اما راهکار مواجهه با آن هم، چندان دشوار نیست.هر وقت در   مقابل چنین تصمیمی قرار گرفتید، همه اطلاعات در دسترس را کنار هم قرار دهید.   تلاش کنید امتیاز ثابتی را بر اساس اهمیت میان آنها توزیع کنید (مثلاً صد امتیاز(حالا یک بار دیگر به اطلاعات و ارزش آنها نگاه   کنید و تصمیم بگیرید. اجازه بدهید مثال بالا را با همه اطلاعات در دسترس مرور   کنیم:* تالار گفتگوی … که نظر خیلی مثبت در مورد ماشین … داشت (۳۰ امتیاز)* آقای   … دوست و همکارم که   سالهاست علاقمند به خودرو است و اخبار آن را دنبال می‌کند و از این ماشین دفاع   میکرد (۱۰ امتیاز)* آقای   .. و خانم … و خانم … و آقای .. و آقای … که این خودرو را   حدود یک سال استفاده کرده اند و به شدت توصیه می‌کردند (۴۰ امتیاز)* خانم   … که این خودرو را دو   هفته پیش گرفته و نسبتاً راضی بود (۵ امتیاز)* آقای   … که کنار نمایندگی   فروش عصبانی بود و فریاد میزد (۱۵ امتیاز) الان صد امتیاز بین پنج خبر بالا   توزیع شده.حالا دوباره نگاه کنید. تصمیم شما چه خواهد بود؟</description><category>محسن رمضانی نصرتی</category><author>محسن رمضانی نصرتی</author><pubDate>Fri, 01 Apr 2022 03:20:17 +0430</pubDate></item><item><title>Cross-Validation in Machine Learning</title><link>https://virgool.ir/@m_41917882/cross-validation-in-machine-learning-lnxx5bbkoaif</link><description>اعتبار سنجی متقابل در یادگیری ماشینی:چگونه آن را به درستی انجام دهیم؟در یادگیری ماشینی (ML)، تعمیم معمولاً به توانایی یک الگوریتم برای مؤثر بودن در ورودی های مختلف اشاره دارد. این بدان معنی است که مدل ML با کاهش عملکرد در ورودی های جدید از توزیع یکسان داده های آموزشی مواجه نمی شود.برای انسان تعمیم طبیعی ترین چیز ممکن است. ما می توانیم در پرواز طبقه بندی کنیم. به عنوان مثال، ما قطعاً یک سگ را  می شناسیم حتی اگر قبلاً این نژاد را ندیده باشیم. با این وجود، ممکن است برای یک مدل ML کاملاً یک چالش باشد. به همین دلیل است که بررسی توانایی الگوریتم برای تعمیم یک کار مهم است که در ساخت مدل نیاز به توجه زیادی دارد.برای این کار از Cross-Validation (CV) استفاده می کنیم.در این مقاله به موارد زیر خواهیم پرداخت:· اعتبار متقابل چیست: تعریف، هدف استفاده و تکنیک ها· تکنیک‌های مختلف CV:hold-out, k-folds, Leave-one-out, Leave-p-out, Stratified k-folds, Repeatedk-folds, Nested k-folds, Complete CV· نحوه استفاده از این تکنیک ها: sklearn· Cross-Validation در یادگیری ماشینی: sklearn، CatBoost· Cross-Validation در یادگیری عمیق: Keras، PyTorch، MxNet· بهترین شیوه ها و نکات: سری های زمانی، داده های پزشکی و مالی، تصاویر.Cross-Validation چیست؟اعتبار سنجی متقابل تکنیکی برای ارزیابی یک مدل یادگیری ماشین و آزمایش عملکرد آن است. CV معمولاً در کارهای کاربردی ML استفاده می شود. این به مقایسه و انتخاب یک مدل مناسب برای مسئله مدل‌سازی پیش‌بینی‌کننده خاص کمک می‌کند.درک CV آسان است، پیاده‌سازی آن آسان است و نسبت به سایر روش‌های مورد استفاده برای شمارش امتیازهای کارایی مدل، سوگیری کمتری دارد. همه اینها اعتبارسنجی متقابل را به ابزاری قدرتمند برای انتخاب بهترین مدل برای کار خاص تبدیل می کند.تکنیک های مختلفی وجود دارد که ممکن است برای اعتبارسنجی متقابل یک مدل استفاده شود. با این حال، همه آنها یک الگوریتم مشابه دارند:1- مجموعه داده را به دو بخش تقسیم کنید: یکی برای آموزش، دیگری برای آزمایش2- مدل را روی مجموعه آموزشی آموزش دهید3- اعتبار مدل را در مجموعه آزمایشی تأیید کنید4- مرحله 1-3 را چند بار تکرار کنید. این عدد به روش رزومه ای که استفاده می کنید بستگی دارد5- همانطور که می دانید، تکنیک های CV زیادی وجود دارد. برخی از آنها معمولا استفاده می شوند، برخی دیگر فقط در تئوری کار می کنند.بیایید روش‌های اعتبارسنجی متقاطع را که در این مقاله پوشش داده خواهد شد، ببینیم.· Hold-out· K-folds· Leave-one-out· Leave-p-out· Stratified K-folds· Repeated K-folds· Nested K-folds· CompleteHold-outاعتبار سنجی متقابل Hold-out ساده ترین و رایج ترین تکنیک است. شاید ندانید که این روش نگهدارنده است اما مطمئناً هر روز از آن استفاده می کنید.الگوریتم تکنیک Hold-out:1- مجموعه داده را به دو بخش تقسیم کنید: مجموعه آموزشی و مجموعه تست. معمولاً 80 درصد مجموعه داده به مجموعه آموزشی و 20 درصد به مجموعه آزمایشی می‌رود، اما می‌توانید هر تقسیم‌بندی را انتخاب کنید که مناسب‌تر باشد.2- مدل را روی مجموعه آموزشی آموزش دهید3- در مجموعه آزمایشی اعتبار سنجی کنید4- نتیجه اعتبار سنجی را ذخیره کنیدخودشه.ما معمولاً از روش hold-out در مجموعه داده‌های بزرگ استفاده می‌کنیم، زیرا فقط یک بار نیاز به آموزش مدل دارد.اجرای hold-out واقعاً آسان است. برای مثال، می‌توانید این کار را با استفاده از روش زیر انجام دهید.   sklearn.model_selection.train_test_splitimport numpy as npfrom sklearn.model_selection import train_test_splitX, y = np.arange(10).reshape((5, 2)),     range(5)X_train, X_test, y_train, y_test =     train_test_split(X, y,test_size=0.2,random_state=111)با این حال، hold-out یک نقطه ضعف بزرگ دارد.به عنوان مثال، مجموعه داده ای که از نظر توزیع کاملاً یکنواخت نیست. اگر چنین است، ممکن است پس از تقسیم در یک نقطه ناهموار قرار بگیریم. به عنوان مثال، مجموعه آموزشی مجموعه تست را نشان نخواهد داد. هر دو مجموعه تمرین و تست ممکن است بسیار متفاوت باشند، یکی از آنها ممکن است آسان تر یا سخت تر باشد.علاوه بر این، این واقعیت که ما مدل خود را فقط یک بار آزمایش می کنیم ممکن است یک گلوگاه برای این روش باشد. با توجه به دلایل ذکر شده در بالا، ممکن است نتیجه به دست آمده با تکنیک Hold-out نادرست در نظر گرفته شود.k-FoldK-Fold CV تکنیکی است که معایب روش hold-out را به حداقل می رساند. k-Fold روش جدیدی را برای تقسیم مجموعه داده معرفی می کند که به غلبه بر &#34;تست فقط یک بار گلوگاه(test only once bottleneck )&#34; کمک می کند.الگوریتم تکنیک k-Fold:1- تعدادی چین را از –K انتخاب کنید . معمولاً k   5یا 10 است، اما می‌توانید هر عددی را انتخاب کنید که کمتر از طول مجموعه داده باشد.2- در صورت امکان مجموعه داده را به k قسمت مساوی تقسیم کنید (به آنها چین گفته می شود)3- Fold  K-1 را انتخاب کنید که کدام مجموعه آموزشی باشد. Fold باقیمانده مجموعه تست خواهد بود4- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار Cross-Validation ، باید یک مدل جدید مستقل از مدل آموزش داده شده در تکرار قبلی آموزش دهید.5- در مجموعه آزمایشی اعتبار سنجی کنید6- نتیجه اعتبار سنجی را ذخیره کنید7- مراحل 3 تا 6 را K بار تکرار کنید. هر بار از چین باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر فولد که دارید اعتبارسنجی کرده باشید.8- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.import numpy as npfrom sklearn.model_selection import    KFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([1, 2, 3, 4])kf = KFold(n_splits=2)for train_index, test_index in    kf.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train,     X_test = X[train_index], X[test_index]y_train,     y_test = y[train_index], y[test_index]به طور کلی همیشه بهتر است به جای Hold-out از تکنیک k-Fold استفاده کنید. از آنجایی که آموزش و آزمایش بر روی چندین بخش مختلف مجموعه داده انجام می شود، به صورت مو به مو، مقایسه k-Fold نتیجه پایدارتر و قابل اعتمادتری به دست می دهد. اگر تعداد Fold ها را برای آزمایش مدل بر روی بسیاری از زیر مجموعه‌های مختلف مختلف افزایش دهیم، می‌توانیم امتیاز کلی را قوی‌تر کنیم.با این حال، روش k-Fold یک نقطه ضعف دارد. افزایش k منجر به آموزش مدل های بیشتر می شود و فرآیند آموزش ممکن است واقعاً گران و زمان بر باشد.Leave-one-outاعتبار سنجی متقابل (LOOCV) یک مورد شدیدتر از K-Fold CV است. تصور کنید که k برابر با n باشد که n تعداد نمونه های مجموعه داده است. چنین مورد k-Fold معادل تکنیک Leave-one-out است.الگوریتم تکنیک LOOCV:1- یک نمونه از مجموعه داده را انتخاب کنید که مجموعه آزمایشی خواهد بود2- نمونه های k-1 باقیمانده مجموعه آموزشی خواهند بود3- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود4- در مجموعه آزمایشی اعتبار سنجی کنید5- نتیجه اعتبار سنجی را ذخیره کنید6- مراحل 1 تا 5 n بار تکرار کنید، همانطور که برای n نمونه، n مجموعه آموزشی و تست متفاوت داریم.7- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردید.برای LOOCV sklearn همچنین دارای یک روش داخلی است. می توان آن را در کتابخانه model_selection - sklearn.model_selection.LeaveOneOut پیدا کرد.import numpy as npfrom sklearn.model_selection import LeaveOneOutX = np.array([[1, 2], [3, 4]])y = np.array([1, 2])loo = LeaveOneOut()for train_index, test_index in loo.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]بزرگترین مزیت تأیید اعتبار متقاطع Leave-one-out این است که داده های زیادی را هدر نمی دهد. ما فقط از یک نمونه از کل مجموعه داده به عنوان یک مجموعه آزمایشی استفاده می کنیم، در حالی که بقیه مجموعه آموزشی است. اما وقتی با k-Fold CV مقایسه می‌شود، LOOCV نیاز به ساخت n مدل به جای k مدل دارد، وقتی می‌دانیم که n که مخفف تعداد نمونه‌هایمجموعه داده بسیار بیشتر از k است. این بدان معناست که LOOCV از نظر محاسباتی گرانتر ازk-Fold است، ممکن است زمان زیادی برای اعتبارسنجی متقابل مدل با استفاده ازLOOCV نیاز باشد.بنابراین، جامعه علوم داده یک قاعده کلی بر اساس شواهد تجربی و تحقیقات مختلف دارد که نشان می‌دهد Cross-Validation 5 یا 10 برابر باید بر LOOCV ترجیح داده شود.Leave-p-outLeave-p-out cross-validation (LpOC) شبیه به Leave-one-out CV است زیرا تمام مجموعه های آموزشی و آزمایشی ممکن را با استفاده از نمونه های p به عنوان مجموعه آزمایشی ایجاد می کند. تمام موارد ذکر شده در مورد LOOCV و برای LpOC درست است.با این حال، شایان ذکر است که بر خلاف LOOCV و مجموعه‌های تست k-Fold برای LpOC اگر p بالاتر از 1 باشد، همپوشانی دارند.الگوریتم تکنیک LpOC:1- نمونه های p را از مجموعه داده انتخاب کنید که مجموعه آزمایشی خواهد بود2-  باقیمانده n-p نمونه مجموعه آموزشی خواهد بود3- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار، یک مدل جدید باید آموزش داده شود4- در مجموعه آزمایشی اعتبار سنجی کنید5- نتیجه اعتبار سنجی را ذخیره کنید6- مراحل را Cpn 5-2 بار تکرار کنید7- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردیدمی‌توانید Leave-p-out CV را با استفاده از sklearn – sklearn.model_selection.LeavePOut انجام دهید.import numpy as npfrom sklearn.model_selection import LeavePOutX = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])y = np.array([1, 2, 3, 4])lpo = LeavePOut(2)for train_index, test_index in lpo.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index],     y[test_index]LpOC تمام معایب LOOCV را دارد، اما، با این وجود، به اندازه LOOCV قوی است.Stratified k-Foldگاهی اوقات ممکن است با عدم تعادل زیادی در مقدار هدف در مجموعه داده مواجه شویم. به عنوان مثال، در مجموعه داده‌های مربوط به قیمت ساعت‌های مچی، ممکن است تعداد بیشتری از ساعت‌های مچی قیمت بالایی داشته باشند. در مورد طبقه‌بندی، در مجموعه داده‌های گربه‌ها و سگ‌ها ممکن است تغییر زیادی به سمت طبقه سگ وجود داشته باشد.Stratified k-Fold یک تغییر از تکنیک استاندارد K-Fold CV است که به گونه ای طراحی شده است که در چنین مواردی از عدم تعادل هدف موثر باشد.و به صورت زیر عمل می کند. K-Fold Stratified مجموعه داده را روی k ،  Fold تقسیم می کند به طوری که هر فولد تقریباً دارای درصد مشابهی از نمونه های هر کلاس هدف به عنوان مجموعه کامل است. در مورد رگرسیون، Stratified k-Fold اطمینان حاصل می کند که میانگین مقدار هدف تقریباً در همه چین ها برابر است.الگوریتم تکنیک Stratified k-fold:1- تعدادی fold تا -k را انتخاب کنید2- مجموعه داده را به k ، fold تقسیم کنید. هر فولد باید تقریباً دارای درصد مشابهی از نمونه‌های هر کلاس هدف در مجموعه کامل باشد3- k – 1  ، folds را انتخاب کنید که مجموعه آموزشی خواهد بود. fold باقیمانده مجموعه آزمایشی خواهد بود4- مدل را روی مجموعه آموزشی آموزش دهید. در هر تکرار یک مدل جدید باید آموزش داده شود5- در مجموعه آزمایشی اعتبار سنجی کنید6- نتیجه اعتبارسنجی را ذخیره کنید7- مراحل 3 تا 6 را k بار تکرار کنید. هر بار از چین باقی مانده به عنوان مجموعه تست استفاده کنید. در پایان، شما باید مدل را روی هر فولد که دارید اعتبارسنجی کرده باشید.8- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.همانطور که ممکن است متوجه شده باشید، الگوریتم تکنیک Stratified k-Fold مشابه K-Folds استاندارد است. شما نیازی به کدنویسی اضافی ندارید زیرا این روش همه کارهای لازم را برای شما انجام می دهد.Stratified k-Fold همچنین یک روش داخلی در sklearn داردsklearn.model_selection.StratifiedKFoldimport numpy as npfrom sklearn.model_selection import StratifiedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])skf = StratifiedKFold(n_splits=2)for train_index, test_index in skf.split(X, y):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]تمام موارد ذکر شده در بالا در مورد K-Fold CV برای تکنیک Stratified k-Fold صادق است. هنگام انتخاب بین روش های مختلف CV، مطمئن شوید که از روش مناسب استفاده می کنید. به عنوان مثال، ممکن است فکر کنید که مدل شما عملکرد بدی دارد، صرفاً به این دلیل که از K-Fold CV برای اعتبارسنجی مدلی استفاده می‌کنید که بر روی مجموعه داده با عدم تعادل کلاس آموزش داده شده است. برای جلوگیری از آن، همیشه باید یک تجزیه و تحلیل داده های اکتشافی مناسب روی داده های خود انجام دهید.Repeated k-Foldاعتبارسنجی متقابل k-Fold مکرر یا CV نمونه‌برداری تصادفی فرعی مکرر احتمالاً قوی‌ترین تکنیک از تمام تکنیک‌های CV در این مقاله است. این یک تغییر از k-Fold است اما در مورد K-Folds تکراری k تعداد Foldها نیست. تعداد دفعاتی است که ما مدل را آموزش خواهیم داد.ایده کلی این است که در هر تکرار، نمونه‌هایی را به‌طور تصادفی از سرتاسر مجموعه داده به عنوان مجموعه آزمایشی انتخاب می‌کنیم. به عنوان مثال، اگر تصمیم بگیریم که 20٪ از مجموعه داده ها مجموعه آزمایشی ما باشد، 20٪ نمونه به طور تصادفی انتخاب می شوند و 80٪ بقیه به مجموعه آموزشی تبدیل می شوند.الگوریتم تکنیک Repeated k-Fold:1- تعدادk-a دفعاتی که مدل آموزش داده می شود را انتخاب کنید2- تعدادی نمونه را انتخاب کنید که مجموعه آزمایشی خواهد بود3- مجموعه داده را تقسیم کنید4- روی مجموعه آموزشی تمرین کنید. در هر تکرار اعتبارسنجی متقاطع، یک مدل جدید باید آموزش داده شود5- در مجموعه آزمایشی اعتبار سنجی کنید6- نتیجه اعتبارسنجی را ذخیره کنید7- مراحل 3-6 را k بار تکرار کنید8- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 6 به دست آوردید.K-Fold مکرر مزایای واضحی نسبت به استاندارد k-Fold CV دارد. اولا، نسبت تقسیم train/test به تعداد تکرارها بستگی ندارد. ثانیا، ما حتی می توانیم نسبت های منحصر به فردی را برای هر تکرار تنظیم کنیم. ثالثاً، انتخاب تصادفی نمونه‌ها از مجموعه داده، Repeated k-Fold را برای سوگیری انتخاب قوی‌تر می‌کند.با این حال، برخی از معایب وجود دارد. k-Fold CV تضمین می‌کند که مدل روی همه نمونه‌ها آزمایش می‌شود، در حالی که K-Fold تکراری بر اساس تصادفی‌سازی است که به این معنی است که برخی از نمونه‌ها ممکن است هرگز برای قرار گرفتن در مجموعه آزمایش انتخاب نشوند. در همان زمان، برخی از نمونه ها ممکن است چندین بار انتخاب شوند.Sklearn به شما در پیاده سازی Repeated k-Fold CV کمک می کند.فقط از sklearn.model_selection.RepeatedKFold استفاده کنید. در اجرای sklearn این تکنیک باید تعداد فولدهایی که می خواهید داشته باشید (n_splits) و تعداد دفعاتی که تقسیم انجام می شود (n_repeats) را تنظیم کنید. این تضمین می کند که در هر تکرار چین های مختلفی خواهید داشت.import numpy as npfrom sklearn.model_selection import RepeatedKFoldX = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])y = np.array([0, 0, 1, 1])rkf = RepeatedKFold(n_splits=2,     n_repeats=2, random_state=42)for train_index, test_index in rkf.split(X):print(&#34;TRAIN:&#34;, train_index, &#34;TEST:&#34;, test_index)X_train, X_test = X[train_index], X[test_index]y_train, y_test = y[train_index], y[test_index]Nested k-Foldبرخلاف سایر تکنیک‌های CV، که برای ارزیابی کیفیت یک الگوریتم طراحی شده‌اند، Nested k-Fold CV محبوب‌ترین راه برای تنظیم پارامترهای یک الگوریتم است.تصور کنید که ما یک پارامتر p داریم که معمولاً به الگوریتم پایه ای که ما در حال تایید متقابل آن هستیم بستگی دارد. به عنوان مثال، برای رگرسیون لجستیک، ممکن است پارامتر جریمه باشد که برای تعیین هنجار مورد استفاده در جریمه استفاده می شود.الگوریتم تکنیک Nested k-Fold:1-  تعدادی k-a ، fold را انتخاب کنید ، به عنوان مثال، 10 - اجازه دهید فرض کنیم که این عدد را انتخاب کرده ایم2- یک پارامتر p را انتخاب کنید. فرض کنید الگوریتم ما رگرسیون لجستیک است3- و p پارامتر جریمه p = {&#39;l1&#39;, &#39;l2&#39;, &#39;elasticnet&#39;, &#39;none&#39;}4- مجموعه داده را به 10 تا تقسیم کنید و یکی از آنها را برای آزمایش رزرو کنید5- یکی از fold های آموزشی را برای اعتبار سنجی رزرو کنید6- برای هر مقدار p، 8  fold آموزشی باقیمانده را آموزش دهید و روی فولد اعتبارسنجی ارزیابی کنید. اکنون 4 اندازه گیری دارید7- مراحل 4-5 را 9 بار تکرار کنید. بچرخانید که کدام فولد آموزشی، فولد اعتبارسنجی است. اکنون اندازه گیری 9 * 4 دارید8- P  را انتخاب کنید که میانگین خطای تمرین را بیش از 9 برابر به حداقل برساند. از آن p برای ارزیابی روی مجموعه تست استفاده کنید9- از مرحله 2 ، 10 بار تکرار کنید و از هر تا به نوبت به عنوان تای تست استفاده کنید10- میانگین و انحراف معیار اندازه گیری ارزیابی را در 10 برابر تست ذخیره کنید11- الگوریتمی که بهترین عملکرد را داشت، الگوریتمی بود که بهترین میانگین عملکرد خارج از نمونه را در 10 لایه آزمایشی داشت.این تکنیک از نظر محاسباتی گران است زیرا در طول مراحل 1 تا 10 تعداد زیادی مدل باید آموزش و ارزیابی شوند. با این حال، Nested k-Fold CV معمولا استفاده می شود و ممکن است در چندین کار ML واقعاً مؤثر باشد.متأسفانه، هیچ روش داخلی در sklearn وجود ندارد که بتواند Nested k-Fold CV را برای شما انجام دهد. این لحظه ای است که شما باید یا گوگل کنید و پیاده سازی شخصی را پیدا کنید یا خودتان آن را کدنویسی کنید.Cross-Validation  CompleteCV کامل کم استفاده ترین تکنیک CV است. ایده کلی این است که ما یک عدد ( طول مجموعه آموزشیk -  )را انتخاب  می کنیم و روی هر تقسیم ممکن حاوی k نمونه در مجموعه آموزشی اعتبار سنجی می کنیم.مقدار آن تقسیم‌ها را می‌توان به صورت Сnkمحاسبه کرد که n طول مجموعه داده است. اگر k بالاتر از 2 باشد، باید مدل خود را چندین بار آموزش دهیم که همانطور که قبلاً متوجه شدیم یک زمان فرآیند گران قیمت و از نظر محاسباتی است.به همین دلیل است که CV کامل یا در تحقیقات نظری و یا در صورت وجود فرمول موثری که به به حداقل رساندن محاسبات کمک می کند، استفاده می شود.الگوریتم  Complete cross-validation :1- یک عدد طول مجموعه آموزشی – k را انتخاب کنید2- مجموعه داده را تقسیم کنید3- روی مجموعه آموزشی تمرین کنید4- در مجموعه آزمایشی اعتبار سنجی کنید5- نتیجه اعتبارسنجی را ذخیره کنید6- مراحل 2 تا 5 را  Сnkبار تکرار کنید7- برای به دست آوردن امتیاز نهایی، میانگین نتایجی که در مرحله 5 به دست آوردیدCross-Validation  در:  Machine Learningبیشتر تکنیک های اعتبار سنجی متقابل ذکر شده در بالا به طور گسترده در ML استفاده می شود. مهم است که به خاطر داشته باشید که استفاده از تکنیک CV مناسب ممکن است در زمان شما صرفه جویی کند و به انتخاب بهترین مدل برای کار کمک کند.این بدان معناست که اولاً، بهتر است همیشه مدل را تأیید متقابل کنید و ثانیاً باید یک روش CV مربوطه را انتخاب کنید. بنابراین، دانستن مزایا و معایب تکنیک‌های اعتبارسنجی متقابل حیاتی است.شایان ذکر است که اگر می‌خواهید مدل را اعتبار متقابل کنید، همیشه باید دفترچه راهنمای مدل را بررسی کنید زیرا برخی از الگوریتم‌های ML، به عنوان مثال، CatBoost روش‌های CV داخلی خود را دارند. ممکن است آنها را مربوط به وظیفه ML خود بیابید و به جای روش های داخلی sklearn از آنها استفاده کنید.به طور کلی، همانطور که ممکن است متوجه شده باشید، بسیاری از تکنیک‌های CV دارای روش‌های داخلی sklearn هستند. من به شدت توصیه می کنم از آنها استفاده کنید زیرا این روش ها در زمان زیادی برای کارهای پیچیده تر صرفه جویی می کنند.Cross-Validation در Deep Learning :اعتبار سنجی متقابل در یادگیری عمیق (DL) ممکن است کمی مشکل باشد زیرا اکثر تکنیک های CV حداقل چند بار نیاز به آموزش مدل دارند.در یادگیری عمیق، معمولاً به دلیل هزینه‌های مرتبط با آموزش مدل‌های مختلف، از CV اجتناب می‌کنید. به جای انجام k-Fold یا سایر تکنیک های CV، ممکن است از یک زیرمجموعه تصادفی از داده های آموزشی خود به عنوان نگهدارنده برای اهداف اعتبار سنجی استفاده کنید.به عنوان مثال، کتابخانه یادگیری عمیق Keras به شما امکان می دهد یکی از دو پارامتر را برای تابع fit که آموزش را انجام می دهد، ارسال کنید.1- validation_split  : درصدی از داده هایی که باید برای اعتبار سنجی نگهداری شوند2- validation_data: چند عدد از (X, y) که باید برای اعتبارسنجی استفاده شود. این پارامتر ، پارامتر validation_split را نادیده می گیرد، به این معنی که شما می توانید تنها یکی از این پارامترها را در یک زمان استفاده کنید.همین رویکرد در آموزش های رسمی سایر فریمورک های DL مانند PyTorch و MxNet استفاده می شود. آنها همچنین پیشنهاد می کنند مجموعه داده را به سه بخش تقسیم کنید: آموزش، اعتبار سنجی و آزمایش.1- آموزش – بخشی از مجموعه داده برای آموزش2- اعتبار سنجی - بخشی از مجموعه داده برای اعتبارسنجی در حین آموزش3- تست - بخشی از مجموعه داده برای اعتبار سنجی نهایی مدلبا این حال، اگر مجموعه داده کوچک است (شامل صدها نمونه) می توانید از اعتبارسنجی متقاطع در وظایف DL استفاده کنید. در این مورد، یادگیری یک مدل پیچیده ممکن است یک کار بی ربط باشد، بنابراین مطمئن شوید که کار را بیشتر پیچیده نکنید.بهترین روش ها و نکاتشایان ذکر است که گاهی اوقات انجام اعتبارسنجی متقابل ممکن است کمی مشکل باشد.به عنوان مثال، انجام یک اشتباه منطقی در هنگام تقسیم مجموعه داده بسیار آسان است که ممکن است منجر به یک نتیجه CV غیرقابل اعتماد شود.ممکن است نکاتی را بیابید که باید هنگام تایید متقابل یک مدل در زیر مد نظر داشته باشید:1- هنگام تقسیم داده ها منطقی باشید (آیا روش تقسیم منطقی است(2- از روش CV مناسب استفاده کنید (آیا این روش برای مورد استفاده من قابل اجرا است(3- هنگام کار با سری های زمانی، گذشته را تأیید نکنید (به اولین نکته مراجعه کنید)4- هنگام کار با داده های پزشکی یا مالی، به یاد داشته باشید که به صورت شخصی تقسیم کنید. از داشتن داده برای یک نفر هم در آموزش و هم در مجموعه تست خودداری کنید زیرا ممکن است به عنوان نشت داده در نظر گرفته شود5- هنگام برش تکه‌ها از تصاویر بزرگ‌تر، به یاد داشته باشید که با شناسه تصویر بزرگ تقسیم کنیدالبته، نکات از کار به کار متفاوت است و پوشش همه آنها تقریبا غیرممکن است. به همین دلیل است که انجام یک تجزیه و تحلیل داده های اکتشافی جامد قبل از شروع اعتبارسنجی متقابل یک مدل همیشه بهترین روش است.اندیشه های نهاییCross-validation ابزار قدرتمندی است. هر دانشمند داده باید با آن آشنا باشد. در زندگی واقعی، شما نمی توانید پروژه را بدون Cross-validation یک مدل به پایان برسانید.به نظر من بهترین تکنیک های CV ،  Nested k-Fold و k-Fold ( استاندارد) هستند. من شخصاً از آنها در وظیفه تشخیص تقلب استفاده کردم. Nested k-Fold و همچنین GridSeachCV به من کمک کرد تا پارامترهای مدل خود را تنظیم کنم. از طرف دیگر، k-Fold برای ارزیابی عملکرد مدل من استفاده شد.در این مقاله متوجه شدیم اعتبارسنجی متقابل چیست، چه تکنیک‌های CV در طبیعت وجود دارد و چگونه آنها را پیاده‌سازی کنیم. در آینده الگوریتم های ML قطعاً حتی بهتر از امروز عمل خواهند کرد. با این حال،Cross-validation همیشه برای پشتیبان گیری از نتایج شما مورد نیاز است.امیدواریم با این اطلاعات، مشکلی در تنظیم CV برای پروژه بعدی یادگیری ماشینی خود نخواهید داشت!منابع :1. https://www.geeksforgeeks.org/cross-validation-machine-learning/2. https://machinelearningmastery.com/k-fold-cross-validation/3. https://towardsdatascience.com/cross-validation-in-machine-learning-72924a69872f4. https://towardsdatascience.com/why-and-how-to-do-cross-validation-for-machine-learning-d5bd7e60c1895. https://scikit-learn.org/stable/modules/cross_validation.html</description><category>محسن رمضانی نصرتی</category><author>محسن رمضانی نصرتی</author><pubDate>Fri, 01 Apr 2022 02:42:53 +0430</pubDate></item></channel></rss>