پاسخ کوتاه: پیشپردازش هوش مصنوعی مجموعهای از مراحل تکرارپذیر است که دادههای خام و با واریانس بالا را به ورودیهای مدل سازگار تبدیل میکند، از جمله تمیز کردن، رمزگذاری، مقیاسبندی، توکنسازی و تبدیل تصویر. این مهم است زیرا اگر ورودیهای آموزشی و ورودیهای تولید متفاوت باشند، مدلها میتوانند بیصدا شکست بخورند. اگر یک مرحله پارامترها را «یاد میگیرد»، آن را فقط روی دادههای آموزشی تطبیق دهید تا از نشت اطلاعات جلوگیری شود.
پیشپردازش هوش مصنوعی هر کاری است که شما قبل (و گاهی اوقات در حین) آموزش یا استنتاج، روی دادههای خام انجام میدهید تا یک مدل بتواند از آن یاد بگیرد. این فقط «پاکسازی» نیست. این شامل پاکسازی، شکلدهی، مقیاسبندی، رمزگذاری، افزایش و بستهبندی دادهها در یک نمایش سازگار است که بعداً مدل شما را بیسروصدا دچار مشکل نکند. [1]
نکات کلیدی:
تعریف : پیشپردازش، جداول خام، متن، تصاویر و گزارشها را به ویژگیهای آماده برای مدل تبدیل میکند.
سازگاری : برای جلوگیری از خطاهای عدم تطابق، تبدیلهای یکسانی را در طول آموزش و استنتاج اعمال کنید.
نشت : مقیاسدهندهها، رمزگذارها و توکنسازها را فقط روی دادههای آموزشی نصب کنید.
تکرارپذیری : خطوط لولهای با آمار قابل بررسی بسازید، نه توالیهای سلولی نوتبوکهای موقت.
نظارت بر تولید : انحراف و رانش را ردیابی کنید تا ورودیها به تدریج عملکرد را کاهش ندهند.
مقالاتی که شاید بعد از این مطلب دوست داشته باشید بخوانید:
🔗 چگونه مدلهای هوش مصنوعی را برای عملکرد در دنیای واقعی آزمایش کنیم
روشهای عملی برای ارزیابی سریع دقت، استحکام و بایاس.
🔗 آیا هوش مصنوعی تبدیل متن به گفتار وجود دارد و چگونه کار میکند؟
اصول اولیه TTS، کاربردهای کلیدی و محدودیتهای رایج امروزی را توضیح میدهد.
🔗 آیا هوش مصنوعی امروز میتواند دستخطهای شکسته را به طور دقیق بخواند؟
چالشهای تشخیص، بهترین ابزارها و نکات مربوط به دقت را پوشش میدهد.
🔗 هوش مصنوعی در انجام وظایف رایج چقدر دقیق است؟
عوامل دقت، معیارها و قابلیت اطمینان در دنیای واقعی را تجزیه و تحلیل میکند.
پیشپردازش هوش مصنوعی به زبان ساده (و آنچه که نیست) 🤝
پیشپردازش هوش مصنوعی ، تبدیل ورودیهای خام (جداول، متن، تصاویر، گزارشها) به ویژگیهای آماده برای مدل است. اگر دادههای خام را یک گاراژ بههمریخته در نظر بگیرید، پیشپردازش به معنای برچسبگذاری جعبهها، دور ریختن خرتوپرتهای شکسته و چیدن وسایل روی هم است تا بتوانید بدون آسیبدیدگی از آن عبور کنید.
این خود مدل نیست. این چیزهایی است که مدل را ممکن میسازد:
-
تبدیل دستهها به اعداد (وان-هات، ترتیبی و غیره) [1]
-
مقیاسبندی محدودههای عددی بزرگ به محدودههای معقول (استانداردسازی، حداقل-حداکثر و غیره) [1]
-
تبدیل متن به شناسههای ورودی (و معمولاً یک ماسک توجه) [3]
-
تغییر اندازه/برش تصاویر و اعمال تبدیلهای قطعی در مقابل تبدیلهای تصادفی به طور مناسب [4]
-
ساخت خطوط لوله تکرارپذیر به طوری که ورودیهای آموزشی و «زندگی واقعی» به طور نامحسوس از هم جدا نشوند [2]
یک نکته کاربردی کوچک: «پیشپردازش» شامل هر اتفاقی میشود که به طور مداوم قبل از اینکه مدل ورودی را ببیند، رخ میدهد . برخی تیمها این را به «مهندسی ویژگی» در مقابل «پاکسازی دادهها» تقسیم میکنند، اما در واقعیت این مرزها محو میشوند.

چرا پیشپردازش هوش مصنوعی بیش از آنچه مردم میگویند اهمیت دارد 😬
یک مدل، یک تطبیقدهندهی الگو است، نه یک ذهنخوان. اگر ورودیهای شما متناقض باشند، مدل قوانین متناقضی را یاد میگیرد. این فلسفی نیست، به طرز دردناکی به معنای واقعی کلمه است.
پیشپردازش به شما کمک میکند:
-
، پایداری یادگیری را بهبود بخشید (به خصوص هنگامی که مقیاسبندی/رمزگذاری در میان باشد). [1]
-
با تبدیل واقعیت آشفته به چیزی که یک مدل میتواند از آن تعمیم دهد (به جای حفظ کردن مصنوعات عجیب و غریب)، نویز را کاهش دهید
-
از حالتهای خرابی خاموش مانند نشتی و عدم تطابق آموزش/سرویس (نوعی که در اعتبارسنجی «شگفتانگیز» به نظر میرسد و سپس در مرحله تولید با شکست مواجه میشود) جلوگیری کنید. [2]
-
سرعت تکرار را افزایش دهید زیرا تبدیلهای تکرارپذیر، هر روز هفته، اسپاگتیهای دفترچه یادداشت را شکست میدهند.
همچنین، بخش زیادی از «عملکرد مدل» از همین جا سرچشمه میگیرد. مثلاً... به طرز شگفتآوری زیاد. گاهی اوقات ناعادلانه به نظر میرسد، اما این واقعیت است 🙃
چه چیزی یک خط لوله پیشپردازش هوش مصنوعی خوب را میسازد؟ ✅
یک «نسخه خوب» از پیشپردازش معمولاً این ویژگیها را دارد:
-
تکرارپذیر : ورودی یکسان → خروجی یکسان (هیچ تصادفی بودن مرموزی وجود ندارد، مگر اینکه عمداً افزایش داده شده باشد).
-
سازگاری در خدمت آموزش : هر کاری که در زمان آموزش انجام میدهید، به همان روش در زمان استنتاج اعمال میشود (پارامترهای برازششده یکسان، نقشههای دستهبندی یکسان، پیکربندی توکنایزر یکسان و غیره). [2]
-
ایمنی در برابر نشت : هیچ چیز در ارزیابی/آزمایش بر هیچ
از نصب. (کمی بعد در مورد این تله بیشتر صحبت خواهیم کرد.) [2] -
قابل مشاهده : میتوانید بررسی کنید که چه چیزی تغییر کرده است (آمار ویژگیها، موارد از دست رفته، تعداد دستهبندیها) بنابراین اشکالزدایی، مهندسی مبتنی بر ارتعاشات نیست.
اگر پیشپردازش شما مجموعهای از سلولهای دفترچه یادداشت به نام final_v7_really_final_ok ... میدانید که چطور است. تا زمانی که دیگر کار نکند، کار میکند 😬
بلوکهای سازندهی اصلی پیشپردازش هوش مصنوعی 🧱
پیشپردازش را به عنوان مجموعهای از بلوکهای سازنده در نظر بگیرید که در یک خط لوله ترکیب میشوند.
۱) تمیز کردن و اعتبارسنجی 🧼
وظایف معمول:
-
حذف موارد تکراری
-
مدیریت مقادیر گمشده (حذف، جایگذاری یا نمایش صریح مقادیر گمشده)
-
اعمال انواع، واحدها و محدودهها
-
تشخیص ورودیهای ناقص
-
استانداردسازی قالبهای متنی (فضای خالی، قواعد حروف بزرگ و کوچک، ویژگیهای خاص یونیکد)
این بخش خیلی جذاب نیست، اما از اشتباهات خیلی احمقانه جلوگیری میکند. این را با عشق میگویم.
۲) کدگذاری دادههای دستهبندیشده 🔤
اکثر مدلها نمیتوانند مستقیماً از رشتههای خام مانند "red" یا "premium_user" .
رویکردهای رایج:
-
کدگذاری تکداغ (رده → ستونهای دودویی) [1]
-
کدگذاری ترتیبی (رده → شناسه عدد صحیح) [1]
نکته کلیدی این نیست که کدام رمزگذار را انتخاب میکنید - نکته کلیدی این است که نگاشت بین آموزش و استنتاج ثابت بماند و «شکل» خود را تغییر ندهد. به این ترتیب است که در نهایت مدلی خواهید داشت که در حالت آفلاین خوب به نظر میرسد و در حالت آنلاین به صورت جنزده عمل میکند. [2]
۳) مقیاسبندی و نرمالسازی ویژگیها 📏
مقیاسبندی زمانی اهمیت پیدا میکند که ویژگیها در محدودههای بسیار متفاوتی قرار داشته باشند.
دو اثر کلاسیک:
-
استانداردسازی : حذف میانگین و مقیاس به واریانس واحد [1]
-
مقیاسبندی حداقل-حداکثر : هر ویژگی را در یک محدوده مشخص مقیاسبندی کنید [1]
حتی وقتی از مدلهایی استفاده میکنید که «عمدتاً از پسِ کار برمیآیند»، مقیاسبندی اغلب باعث میشود که خطوط لوله راحتتر قابل درک باشند و شکستن تصادفی آنها دشوارتر شود.
۴) مهندسی ویژگی (معروف به تقلب مفید) 🧪
اینجاست که با ایجاد سیگنالهای بهتر، کار مدل را آسانتر میکنید:
-
نسبتها (کلیکها / نمایشها)
-
پنجرههای متحرک (N روز گذشته)
-
تعداد (رویدادها به ازای هر کاربر)
-
تبدیلهای لگاریتمی برای توزیعهای دنبالهدار سنگین
اینجا یه جورایی هنر وجود داره. بعضی وقتا یه ویژگی رو خلق میکنی، بهش افتخار میکنی... اما هیچ فایدهای نداره. یا بدتر از اون، دردناکه. این طبیعیه. از نظر احساسی به ویژگیها وابسته نشو - اونا هم تو رو دوست ندارن 😅
۵) تقسیم دادهها به روش صحیح ✂️
این موضوع تا زمانی که بدیهی به نظر نرسد، بدیهی به نظر میرسد:
-
تقسیمهای تصادفی برای دادههای iid
-
تقسیمبندیهای مبتنی بر زمان برای سریهای زمانی
-
تقسیمبندیهای گروهبندیشده هنگام تکرار موجودیتها (کاربران، دستگاهها، بیماران)
و نکتهی مهم: قبل از برازش پیشپردازشی که از دادهها یاد میگیرد، تقسیم کنید . اگر مرحلهی پیشپردازش شما پارامترها (مانند میانگینها، واژگان، نقشههای دستهبندی) را «یاد میگیرد»، باید آنها را فقط از آموزش یاد بگیرد. [2]
پیشپردازش هوش مصنوعی بر اساس نوع داده: جدولی، متنی، تصویری 🎛️
پیشپردازش بسته به آنچه به مدل میدهید، شکل آن را تغییر میدهد.
دادههای جدولی (صفحات گسترده، لاگها، پایگاههای داده) 📊
مراحل رایج:
-
استراتژی ارزش از دست رفته
-
کدگذاری دستهبندیشده [1]
-
مقیاسبندی ستونهای عددی [1]
-
مدیریت دادههای پرت (قوانین دامنه اغلب اوقات بر «برش تصادفی» غلبه میکنند)
-
ویژگیهای مشتقشده (جمعبندیها، تأخیرها، آمار چرخشی)
توصیه کاربردی: گروههای ستون را به طور واضح تعریف کنید (عددی در مقابل دستهبندی در مقابل شناسهها). خودتان در آینده از شما تشکر خواهید کرد.
دادههای متنی (NLP) 📝
پیشپردازش متن اغلب شامل موارد زیر است:
-
توکنسازی به توکنها/زیرکلمات
-
تبدیل به شناسههای ورودی
-
لایه گذاری/کوتاه سازی
-
ساخت ماسکهای توجه برای دستهبندی [3]
یک قانون کوچک که دردسر را کم میکند: برای تنظیمات مبتنی بر ترانسفورماتور، تنظیمات توکنایزر مورد انتظار مدل را دنبال کنید و مگر اینکه دلیلی داشته باشید، آزادانه حرکت نکنید. آزادکاری روشی است که در نهایت به این نتیجه میرسید که «حرکت میکند اما عجیب است»
تصاویر (بینایی کامپیوتر) 🖼️
پیش پردازش معمول:
-
تغییر اندازه / برش به شکلهای سازگار
-
تبدیلهای قطعی برای ارزیابی
-
تبدیلهای تصادفی برای تقویت آموزش (مثلاً برش تصادفی) [4]
یک نکتهی مهم که مردم از آن غافل میشوند: «تبدیلهای تصادفی» فقط یک حس و حال نیستند - آنها به معنای واقعی کلمه هر بار که فراخوانی میشوند، از پارامترها نمونهبرداری میکنند. برای تنوع آموزشی عالی است، اما اگر فراموش کنید تصادفی بودن را خاموش کنید، برای ارزیابی افتضاح است. [4]
تلهای که همه در آن میافتند: نشت دادهها 🕳️🐍
نشت زمانی است که اطلاعات از دادههای ارزیابی به آموزش نفوذ میکند - اغلب از طریق پیشپردازش. این میتواند باعث شود مدل شما در طول اعتبارسنجی جادویی به نظر برسد، سپس در دنیای واقعی شما را ناامید کند.
الگوهای نشتی رایج:
-
مقیاسبندی با استفاده از آمار کل مجموعه دادهها (به جای فقط آموزش) [2]
-
ساخت نقشههای دستهبندی با استفاده از آموزش+آزمون [2]
-
هر
fit()یاfit_transform()که مجموعه تست را «میبیند» [2]
قاعده کلی (ساده، بیرحمانه، مؤثر):
-
هر چیزی که متناسبی ، فقط باید در تمرین متناسب باشد.
-
سپس تبدیل میکنید . [2]
و اگر میخواهید بدانید «چقدر میتواند بد باشد؟»، بررسی کنید: اسناد خود scikit-learn یک مثال نشتی را نشان میدهند که در آن یک ترتیب پیشپردازش نادرست، دقتی حدود 0.76 روی اهداف تصادفی ایجاد میکند - سپس پس از رفع نشتی، به حدود 0.5 کاهش مییابد. اینگونه است که نشتی میتواند به طرز قانعکنندهای اشتباه به نظر برسد. [2]
وارد کردن پیشپردازش به مرحله تولید بدون هرج و مرج 🏗️
بسیاری از مدلها در تولید شکست میخورند، نه به این دلیل که مدل «بد» است، بلکه به این دلیل که واقعیت ورودی تغییر میکند - یا خط تولید شما تغییر میکند.
پیشپردازش با رویکرد تولید معمولاً شامل موارد زیر است:
-
مصنوعات ذخیره شده (نگاشتهای رمزگذار، پارامترهای مقیاسپذیر، پیکربندی توکنایزر) بنابراین استنتاج دقیقاً از همان تبدیلهای آموختهشده استفاده میکند [2]
-
قراردادهای ورودی دقیق (ستونها/انواع/محدودههای مورد انتظار)
-
نظارت بر انحراف و رانش ، زیرا دادههای تولید میشوند [5]
اگر تعاریف مشخصی میخواهید: نظارت بر مدل هوش مصنوعی Vertex گوگل، انحراف در ارائه آموزش (انحراف توزیع تولید از آموزش) و رانش استنتاج (تغییر توزیع تولید در طول زمان) را تشخیص میدهد و از نظارت هم برای ویژگیهای دستهبندیشده و هم برای ویژگیهای عددی پشتیبانی میکند. [5]
چون غافلگیریها پرهزینه هستند. و نه از نوع سرگرمکنندهاش.
جدول مقایسه: ابزارهای رایج پیشپردازش + مانیتورینگ (و اینکه برای چه کسانی مناسب هستند) 🧰
| ابزار / کتابخانه | بهترین برای | قیمت | چرا جواب میدهد (و کمی صداقت) |
|---|---|---|---|
| پیشپردازش سایکیت-لرن | خطوط لوله جدولی ML | رایگان | انکودرهای جامد + مقیاسپذیرها (OneHotEncoder، StandardScaler و غیره) و رفتار قابل پیشبینی [1] |
| توکنسازهای چهره در آغوش گرفتن | آمادهسازی ورودی NLP | رایگان | شناسههای ورودی + ماسکهای توجه را به طور مداوم در طول اجراها/مدلها تولید میکند [3] |
| تبدیلهای مشعل | بینایی متحول میشود + تقویت میشود | رایگان | روش تمیز برای ترکیب تبدیلهای قطعی و تصادفی در یک خط لوله [4] |
| نظارت بر مدل هوش مصنوعی ورتکس | تشخیص رانش/کجی در محصول | پولی (ابری) | مانیتورها دارای انحراف/انحراف هستند و در صورت تجاوز از آستانهها هشدار میدهند [5] |
(بله، جدول هنوز هم نظراتی دارد. اما حداقل نظرات صادقانهای هستند 😅)
یک چک لیست پیشپردازش کاربردی که واقعاً میتوانید از آن استفاده کنید 📌
قبل از آموزش
-
تعریف یک طرح ورودی (انواع، واحدها، محدودههای مجاز)
-
بررسی مقادیر از دست رفته و مقادیر تکراری
-
تقسیم دادهها به روش صحیح (تصادفی / مبتنی بر زمان / گروهبندی)
-
پیشپردازش متناسبسازی فقط روی آموزش (
fit/fit_transformروی آموزش باقی میماند) [2] -
ذخیره مصنوعات پیشپردازش تا استنتاج بتواند از آنها دوباره استفاده کند [2]
در طول آموزش
-
فقط در صورت لزوم، تقویت تصادفی را اعمال کنید (معمولاً فقط تقسیم آموزش) [4]
-
پیشپردازش ارزیابی را قطعی نگه دارید [4]
-
پیگیری تغییرات پیشپردازش مانند تغییرات مدل (چون واقعاً همینطور هستند)
قبل از استقرار
-
اطمینان حاصل کنید که استنتاج از مسیر پیشپردازش و مصنوعات یکسان استفاده میکند [2]
-
تنظیم مانیتورینگ انحراف/انحراف (حتی بررسیهای اولیه توزیع ویژگیها نیز بسیار مفید است) [5]
بررسی عمیق: اشتباهات رایج در پیشپردازش (و نحوهی اجتناب از آنها) 🧯
اشتباه ۱: «من خیلی سریع همه چیز را به حالت عادی برمیگردانم» 😵
اگر پارامترهای مقیاسبندی را روی کل مجموعه داده محاسبه کنید، اطلاعات ارزیابی را فاش میکنید. روی قطار قرار دهید، بقیه را تبدیل کنید. [2]
اشتباه ۲: دستهبندیها به سمت هرج و مرج میروند 🧩
اگر نگاشت دستهبندی شما بین آموزش و استنتاج تغییر کند، مدل شما میتواند بیسروصدا جهان را اشتباه بخواند. نگاشتها را از طریق مصنوعات ذخیرهشده ثابت نگه دارید. [2]
اشتباه ۳: افزایش تصادفی و مخفیانه در ارزیابی 🎲
تبدیلهای تصادفی در آموزش عالی هستند، اما وقتی میخواهید عملکرد را اندازهگیری کنید، نباید «مخفیانه» فعال باشند. (تصادفی به معنای تصادفی است.) [4]
سخنان پایانی 🧠✨
پیشپردازش هوش مصنوعی، هنر منظم تبدیل واقعیت آشفته به ورودیهای مدل سازگار است. این شامل تمیز کردن، رمزگذاری، مقیاسبندی، توکنسازی، تبدیل تصویر و از همه مهمتر، خطوط لوله و مصنوعات تکرارپذیر میشود.
-
پیشپردازش را عمداً انجام دهید، نه سرسری. [2]
-
ابتدا تقسیم کنید، تبدیلها را فقط روی آموزش تطبیق دهید، از نشت جلوگیری کنید. [2]
-
از پیشپردازش متناسب با روش (توکنسازها برای متن، تبدیلها برای تصاویر) استفاده کنید. [3][4]
-
انحراف/انحراف تولید را زیر نظر داشته باشید تا مدل شما به آرامی به سمت بیمعنی شدن نرود. [5]
و اگر زمانی گیر کردید، از خودتان بپرسید:
«اگر این مرحلهی پیشپردازش را فردا روی دادههای کاملاً جدید اجرا کنم، آیا هنوز هم منطقی خواهد بود؟»
اگر پاسخ «اممم... شاید؟» است، این سرنخ شماست 😬
سوالات متداول
پیشپردازش هوش مصنوعی به زبان ساده چیست؟
پیشپردازش هوش مصنوعی مجموعهای تکرارپذیر از مراحل است که دادههای خام نویزدار و با واریانس بالا را به ورودیهای سازگار تبدیل میکند که مدل میتواند از آنها یاد بگیرد. این میتواند شامل تمیز کردن، اعتبارسنجی، کدگذاری دستهها، مقیاسبندی مقادیر عددی، توکنسازی متن و اعمال تبدیلهای تصویر باشد. هدف این است که اطمینان حاصل شود که آموزش و استنتاج تولید، «نوع» یکسانی از ورودی را میبینند، بنابراین مدل بعداً به سمت رفتار غیرقابل پیشبینی سوق پیدا نمیکند.
چرا پیشپردازش هوش مصنوعی در تولید بسیار مهم است؟
پیشپردازش اهمیت دارد زیرا مدلها به نمایش ورودی حساس هستند. اگر دادههای آموزشی به گونهای متفاوت از دادههای عملیاتی مقیاسبندی، کدگذاری، توکنسازی یا تبدیل شوند، ممکن است با خطاهای عدم تطابق آموزش/سرویس مواجه شوید که در حالت آفلاین مشکلی ندارند، اما در حالت آنلاین بیسروصدا از کار میافتند. خطوط لوله پیشپردازش قوی همچنین نویز را کاهش میدهند، پایداری یادگیری را بهبود میبخشند و تکرار را سرعت میبخشند، زیرا شما در حال حل کردن مسائل پیچیده دفترچه یادداشت نیستید.
چگونه میتوانم از نشت دادهها هنگام پیشپردازش جلوگیری کنم؟
یک قانون ساده کار میکند: هر چیزی که دارای یک برازش ، باید فقط روی دادههای آموزشی برازش داشته باشد. این شامل مقیاسدهندهها، رمزگذارها و توکنایزرهایی میشود که پارامترهایی مانند میانگینها، نقشههای دستهبندی یا واژگان را یاد میگیرند. شما ابتدا تقسیم میکنید، روی تقسیم آموزشی برازش میدهید، سپس اعتبارسنجی/آزمایش را با استفاده از مبدل برازششده تبدیل میکنید. نشت میتواند اعتبارسنجی را «بهطور جادویی» خوب جلوه دهد و سپس در استفاده در محیط عملیاتی از بین برود.
رایجترین مراحل پیشپردازش برای دادههای جدولی چیست؟
برای دادههای جدولی، خط لوله معمول شامل تمیز کردن و اعتبارسنجی (انواع، محدودهها، مقادیر گمشده)، رمزگذاری دستهبندی (یکپارچه یا ترتیبی) و مقیاسبندی عددی (استانداردسازی یا حداقل-حداکثر) است. بسیاری از خطوط لوله، مهندسی ویژگیهای مبتنی بر دامنه مانند نسبتها، پنجرههای غلتان یا شمارشها را اضافه میکنند. یک عادت عملی این است که گروههای ستون را به طور صریح تعریف کنید (عددی در مقابل دستهبندی در مقابل شناسهها) تا تبدیلهای شما سازگار بمانند.
پیشپردازش برای مدلهای متنی چگونه کار میکند؟
پیشپردازش متن معمولاً به معنای توکنسازی به توکنها/زیرکلمات، تبدیل آنها به شناسههای ورودی و مدیریت لایهگذاری/برش برای دستهبندی است. بسیاری از گردشهای کاری ترانسفورماتور همچنین در کنار شناسهها، یک ماسک توجه ایجاد میکنند. یک رویکرد رایج، استفاده از پیکربندی توکنساز مورد انتظار مدل به جای بداههپردازی است، زیرا تفاوتهای کوچک در تنظیمات توکنساز میتواند منجر به نتایج «آموزش میدهد اما رفتار غیرقابل پیشبینی دارد» شود.
چه تفاوتی در پیشپردازش تصاویر برای یادگیری ماشین وجود دارد؟
پیشپردازش تصویر معمولاً اشکال و مدیریت پیکسلهای سازگار را تضمین میکند: تغییر اندازه/برش، نرمالسازی و تقسیمبندی واضح بین تبدیلهای قطعی و تصادفی. برای ارزیابی، تبدیلها باید قطعی باشند تا معیارها قابل مقایسه باشند. برای آموزش، افزایش تصادفی (مانند برشهای تصادفی) میتواند استحکام را بهبود بخشد، اما تصادفی بودن باید عمداً به تقسیم آموزش محدود شود، نه اینکه به طور تصادفی در طول ارزیابی رها شود.
چه چیزی یک خط لوله پیشپردازش را به جای شکننده بودن، «خوب» میکند؟
یک خط لوله پیشپردازش هوش مصنوعی خوب، تکرارپذیر، ایمن در برابر نشت و قابل مشاهده است. تکرارپذیر به این معنی است که ورودی یکسان، خروجی یکسانی تولید میکند، مگر اینکه تصادفی بودن عمداً تقویت شده باشد. ایمن در برابر نشت به این معنی است که مراحل برازش هرگز به اعتبارسنجی/آزمایش نمیرسند. قابل مشاهده به این معنی است که میتوانید آمارهایی مانند گمشدگی، تعداد دستهها و توزیع ویژگیها را بررسی کنید، بنابراین اشکالزدایی بر اساس شواهد است، نه احساس درونی. خط لولهها همیشه از توالیهای نوتبوک تککاره پیشی میگیرند.
چگونه میتوانم پیشپردازش آموزش و استنتاج را ثابت نگه دارم؟
نکته کلیدی این است که دقیقاً از همان مصنوعات آموختهشده در زمان استنتاج استفاده مجدد شود: پارامترهای مقیاسدهنده، نگاشتهای رمزگذار و پیکربندیهای توکنساز. شما همچنین به یک قرارداد ورودی (ستونها، انواع و محدودههای مورد انتظار) نیاز دارید تا دادههای تولید نتوانند بیسروصدا به شکلهای نامعتبر تغییر شکل دهند. سازگاری فقط «انجام مراحل مشابه» نیست - بلکه «انجام مراحل مشابه با پارامترها و نگاشتهای متناسب» است
چگونه میتوانم مشکلات پیشپردازش مانند رانش و کجشدگی را در طول زمان رصد کنم؟
حتی با وجود یک خط تولید (pipeline) محکم، دادههای تولید تغییر میکنند. یک رویکرد رایج، نظارت بر تغییرات توزیع ویژگیها و هشدار در مورد انحراف (skew) در خدمت آموزش (training-serving) (انحراف تولید از آموزش) و رانش استنتاج (inference drift) (تغییرات تولید در طول زمان) است. نظارت میتواند سبک (بررسیهای توزیع اولیه) یا مدیریتشده (مانند نظارت بر مدل هوش مصنوعی Vertex) باشد. هدف، تشخیص زودهنگام تغییرات ورودی است - قبل از اینکه به آرامی عملکرد مدل را از بین ببرند.
منابع
[1] رابط برنامهنویسی کاربردی scikit-learn:
پیشپردازش sklearn (رمزگذارها، مقیاسکنندهها، نرمالسازی) [2] scikit-learn: مشکلات رایج - نشت دادهها و نحوه جلوگیری از آن
[3] اسناد مبدلهای چهره در آغوشگیرنده: توکنسازها (شناسههای ورودی، ماسکهای توجه)
[4] اسناد PyTorch Torchvision: تبدیلها (تغییر اندازه/نرمالسازی + تبدیلهای تصادفی)
[5] اسناد هوش مصنوعی Google Cloud Vertex: مروری بر نظارت بر مدل (کجی و رانش ویژگی)