هنگامی که داده های شما در خط لوله TFX قرار می گیرند، می توانید از اجزای TFX برای تجزیه و تحلیل و تبدیل آن ها استفاده کنید. حتی قبل از آموزش مدل می توانید از این ابزارها استفاده کنید.
دلایل زیادی برای تجزیه و تحلیل و تبدیل داده های شما وجود دارد:
- برای پیدا کردن مشکلات در داده های خود مشکلات رایج عبارتند از:
- داده های از دست رفته، مانند ویژگی هایی با مقادیر خالی.
- برچسبها بهعنوان ویژگی در نظر گرفته میشوند، به طوری که مدل شما در طول آموزش به پاسخ درست نگاه میکند.
- ویژگی هایی با مقادیر خارج از محدوده مورد انتظار شما.
- ناهنجاری داده ها
- مدل آموخته شده انتقال دارای پیش پردازشی است که با داده های آموزشی مطابقت ندارد.
- برای مهندسی مجموعه ویژگی های موثرتر. به عنوان مثال، می توانید شناسایی کنید:
- به خصوص ویژگی های آموزنده.
- ویژگی های اضافی
- ویژگی هایی که در مقیاس بسیار متفاوت هستند که ممکن است یادگیری را کند کنند.
- ویژگی هایی با اطلاعات پیش بینی منحصر به فرد کم یا بدون.
ابزارهای TFX هم می توانند به یافتن باگ های داده کمک کنند و هم به مهندسی ویژگی کمک کنند.
اعتبارسنجی داده های TensorFlow
بررسی اجمالی
اعتبارسنجی دادههای TensorFlow ناهنجاریها را در آموزش و ارائه دادهها شناسایی میکند و میتواند به طور خودکار با بررسی دادهها یک طرح واره ایجاد کند. کامپوننت را می توان برای شناسایی کلاس های مختلف ناهنجاری در داده ها پیکربندی کرد. می تواند
- با مقایسه آمار داده ها با طرحواره ای که انتظارات کاربر را کدگذاری می کند، بررسی اعتبار را انجام دهید.
- با مقایسه مثالهایی در آموزش و ارائه دادهها، انحراف سرویسدهی آموزشی را تشخیص دهید.
- انحراف داده ها را با نگاه کردن به یک سری داده تشخیص دهید.
ما هر یک از این عملکردها را به طور مستقل مستند می کنیم:
اعتبار سنجی نمونه مبتنی بر طرحواره
اعتبارسنجی دادههای TensorFlow هرگونه ناهنجاری در دادههای ورودی را با مقایسه آمار دادهها با یک طرحواره شناسایی میکند. این طرح ویژگی هایی را که انتظار می رود داده های ورودی برآورده شوند، مانند انواع داده ها یا مقادیر طبقه بندی می کند، و می تواند توسط کاربر تغییر یا جایگزین شود.
اعتبارسنجی دادههای Tensorflow معمولاً چندین بار در زمینه خط لوله TFX فراخوانی میشود: (i) برای هر تقسیم بهدستآمده از ExampleGen، (ii) برای همه دادههای از پیش تبدیل شده استفاده شده توسط Transform و (iii) برای همه دادههای پس از تبدیل تولید شده توسط تبدیل. هنگامی که در زمینه Transform (ii-iii) فراخوانی می شود، گزینه های آمار و محدودیت های مبتنی بر طرحواره را می توان با تعریف stats_options_updater_fn
کرد. این به ویژه هنگام اعتبارسنجی داده های بدون ساختار (مانند ویژگی های متن) مفید است. برای مثال کد کاربری را ببینید.
ویژگی های طرحواره پیشرفته
این بخش پیکربندی طرحواره پیشرفته تری را پوشش می دهد که می تواند به تنظیمات ویژه کمک کند.
ویژگی های پراکنده
رمزگذاری ویژگیهای پراکنده در Examples معمولاً ویژگیهای متعددی را معرفی میکند که انتظار میرود برای همه نمونهها ظرفیت یکسانی داشته باشند. به عنوان مثال، ویژگی پراکنده:
WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
با استفاده از ویژگی های جداگانه برای شاخص و مقدار رمزگذاری می شود:
WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
با این محدودیت که ظرفیت شاخص و ویژگی مقدار باید برای همه مثال ها مطابقت داشته باشد. این محدودیت را می توان با تعریف یک ویژگی sparse در طرحواره آشکار کرد:
sparse_feature {
name: 'WeightedCategories'
index_feature { name: 'WeightedCategoriesIndex' }
value_feature { name: 'WeightedCategoriesValue' }
}
تعریف ویژگی پراکنده به یک یا چند ویژگی شاخص و یک مقدار نیاز دارد که به ویژگیهایی اشاره دارد که در طرحواره وجود دارد. تعریف صریح ویژگیهای پراکنده، TFDV را قادر میسازد تا بررسی کند که ظرفیتهای همه ویژگیهای ارجاعی مطابقت دارند.
برخی موارد استفاده محدودیتهای ظرفیت مشابهی را بین ویژگیها معرفی میکنند، اما لزوماً یک ویژگی پراکنده را رمزگذاری نمیکنند. استفاده از ویژگی پراکنده باید شما را رفع انسداد کند، اما ایده آل نیست.
محیط های طرحواره
بهطور پیشفرض اعتبارسنجیها فرض میکنند که همه مثالها در یک خط لوله به یک طرح واحد پایبند هستند. در برخی موارد، ارائه تغییرات جزئی طرحواره ضروری است، به عنوان مثال ویژگیهایی که به عنوان برچسب در طول آموزش مورد استفاده قرار میگیرند (و باید تأیید شوند)، اما در طول ارائه از بین میروند. از محیطها میتوان برای بیان چنین الزاماتی استفاده کرد، به ویژه default_environment()
, in_environment()
, not_in_environment()
.
به عنوان مثال، فرض کنید یک ویژگی به نام "LABEL" برای آموزش لازم است، اما انتظار می رود در ارائه وجود نداشته باشد. این را می توان به صورت زیر بیان کرد:
- دو محیط متمایز را در طرحواره تعریف کنید: ["SERVING"، "TRAINING"] و "LABEL" را فقط با محیط "TRAINING" مرتبط کنید.
- داده های آموزشی را با محیط "TRAINING" و داده های ارائه دهنده را با محیط "SERVING" مرتبط کنید.
تولید طرحواره
طرح داده های ورودی به عنوان نمونه ای از طرحواره TensorFlow مشخص می شود.
به جای ساختن یک طرح به صورت دستی از ابتدا، یک توسعهدهنده میتواند به ساخت خودکار طرحواره TensorFlow Data Validation تکیه کند. به طور خاص، اعتبارسنجی داده های TensorFlow به طور خودکار یک طرح اولیه را بر اساس آمار محاسبه شده بر روی داده های آموزشی موجود در خط لوله ایجاد می کند. کاربران می توانند به سادگی این طرح تولید شده را بررسی کنند، آن را در صورت نیاز اصلاح کنند، آن را در یک سیستم کنترل نسخه بررسی کنند، و آن را به صراحت در خط لوله برای اعتبار سنجی بیشتر فشار دهند.
TFDV شامل infer_schema()
برای تولید خودکار یک طرح است. مثلا:
schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)
این باعث ایجاد طرحواره خودکار بر اساس قوانین زیر می شود:
اگر طرحی قبلاً به صورت خودکار تولید شده باشد، همانطور که هست استفاده می شود.
در غیر این صورت، TensorFlow Data Validation آمار داده های موجود را بررسی می کند و طرحی مناسب برای داده ها محاسبه می کند.
توجه: طرح تولید خودکار بهترین تلاش است و فقط سعی می کند ویژگی های اساسی داده ها را استنتاج کند. انتظار می رود که کاربران در صورت نیاز آن را بررسی و اصلاح کنند.
Training-Serving Skew Detection
بررسی اجمالی
اعتبارسنجی دادههای TensorFlow میتواند انحراف توزیع بین آموزش و ارائه داده را تشخیص دهد. انحراف توزیع زمانی اتفاق می افتد که توزیع مقادیر ویژگی برای داده های آموزشی به طور قابل توجهی با داده های ارائه شده متفاوت باشد. یکی از دلایل اصلی انحراف توزیع، استفاده از یک مجموعه کاملاً متفاوت برای تولید داده های آموزشی برای غلبه بر کمبود داده های اولیه در پیکره مورد نظر است. دلیل دیگر مکانیسم نمونه گیری معیوب است که فقط یک نمونه فرعی از داده های ارائه شده را برای آموزش انتخاب می کند.
سناریوی نمونه
برای اطلاعات در مورد پیکربندی تشخیص چولگی در خدمت آموزش، به راهنمای شروع اعتبارسنجی دادههای TensorFlow مراجعه کنید.
تشخیص دریفت
تشخیص رانش بین بازههای متوالی دادهها (یعنی بین دهانه N و دهانه N+1)، مانند بین روزهای مختلف دادههای آموزشی، پشتیبانی میشود. ما رانش را بر حسب فاصله L-بی نهایت برای ویژگی های طبقه بندی و واگرایی جنسن-شانون تقریبی برای ویژگی های عددی بیان می کنیم. میتوانید فاصله آستانه را طوری تنظیم کنید که وقتی دریفت بالاتر از حد قابل قبول است، هشدار دریافت کنید. تنظیم فاصله صحیح معمولاً یک فرآیند تکراری است که به دانش و آزمایش دامنه نیاز دارد.
برای اطلاعات در مورد پیکربندی تشخیص دریفت، به راهنمای شروع اعتبارسنجی داده های TensorFlow مراجعه کنید.
استفاده از تجسم برای بررسی داده های خود
TensorFlow Data Validation ابزارهایی را برای تجسم توزیع مقادیر ویژگی فراهم می کند. با بررسی این توزیع ها در یک نوت بوک Jupyter با استفاده از Facets می توانید مشکلات رایج داده ها را پیدا کنید.
شناسایی توزیع های مشکوک
میتوانید با استفاده از نمایشگر نمای کلی برای یافتن توزیعهای مشکوک مقادیر ویژگی، اشکالات رایج در دادههای خود را شناسایی کنید.
داده های نامتعادل
ویژگی نامتعادل ویژگی است که یک مقدار برای آن غالب است. ویژگیهای نامتعادل میتوانند به طور طبیعی رخ دهند، اما اگر یک ویژگی همیشه مقدار یکسانی داشته باشد، ممکن است یک باگ داده داشته باشید. برای شناسایی ویژگیهای نامتعادل در نمای کلی جنبهها، «عدم یکنواختی» را از منوی کشویی «مرتبسازی بر اساس» انتخاب کنید.
نامتعادل ترین ویژگی ها در بالای هر لیست از نوع ویژگی فهرست می شوند. به عنوان مثال، اسکرین شات زیر یک ویژگی را نشان میدهد که همه صفر است، و ویژگی دومی که به شدت نامتعادل است، در بالای لیست «ویژگیهای عددی» است:
داده های توزیع شده یکنواخت
یک ویژگی توزیع یکنواخت، ویژگی ای است که تمام مقادیر ممکن برای آن با فرکانس تقریباً یکسان ظاهر می شوند. مانند داده های نامتعادل، این توزیع می تواند به طور طبیعی رخ دهد، اما همچنین می تواند توسط باگ های داده تولید شود.
برای شناسایی ویژگیهای توزیع شده یکنواخت در نمای کلی جنبهها، «عدم یکنواختی» را از منوی کشویی «مرتبسازی بر اساس» انتخاب کنید و کادر انتخاب «ترتیب معکوس» را علامت بزنید:
داده های رشته ای با استفاده از نمودارهای میله ای در صورت وجود 20 یا کمتر مقدار منحصر به فرد و به عنوان نمودار توزیع تجمعی در صورت وجود بیش از 20 مقدار منحصر به فرد نمایش داده می شود. بنابراین برای دادههای رشتهای، توزیعهای یکنواخت میتوانند به صورت نمودارهای نواری مسطح مانند تصویر بالا یا خطوط مستقیم مانند زیر ظاهر شوند:
اشکالاتی که می توانند داده های توزیع شده یکنواخت تولید کنند
در اینجا برخی از اشکالات رایج وجود دارد که می توانند داده های توزیع شده یکنواخت تولید کنند:
استفاده از رشته ها برای نمایش انواع داده های غیر رشته ای مانند تاریخ. برای مثال، مقادیر منحصر به فرد زیادی برای ویژگی تاریخ با نمایش هایی مانند "2017-03-01-11-45-03" خواهید داشت. مقادیر منحصر به فرد به طور یکنواخت توزیع می شوند.
از جمله شاخص هایی مانند "شماره ردیف" به عنوان ویژگی. در اینجا دوباره شما ارزش های منحصر به فرد زیادی دارید.
داده های از دست رفته
برای بررسی اینکه آیا یک ویژگی به طور کامل مقادیر را از دست داده است:
- از منوی کشویی «مرتب سازی بر اساس» گزینه «مقدار گمشده/صفر» را انتخاب کنید.
- چک باکس "ترتیب معکوس" را علامت بزنید.
- برای مشاهده درصد موارد با مقادیر از دست رفته برای یک ویژگی، به ستون "از دست رفته" نگاه کنید.
یک اشکال داده همچنین می تواند باعث ناقص بودن مقادیر ویژگی شود. برای مثال ممکن است انتظار داشته باشید که لیست ارزش یک ویژگی همیشه دارای سه عنصر باشد و متوجه شوید که گاهی اوقات فقط یک عنصر دارد. برای بررسی مقادیر ناقص یا موارد دیگر که در آن لیستهای ارزش ویژگی تعداد عناصر مورد انتظار را ندارند:
"طول لیست ارزش" را از منوی کشویی "نمودار برای نمایش" در سمت راست انتخاب کنید.
به نمودار سمت راست هر ردیف ویژگی نگاه کنید. نمودار محدوده طول لیست مقادیر برای ویژگی را نشان می دهد. به عنوان مثال، ردیف برجسته شده در تصویر زیر ویژگیای را نشان میدهد که دارای لیستهایی با طول صفر است:
تفاوت های بزرگ در مقیاس بین ویژگی ها
اگر ویژگیهای شما از نظر مقیاس بسیار متفاوت است، ممکن است مدل در یادگیری با مشکل مواجه شود. به عنوان مثال، اگر برخی از ویژگی ها از 0 تا 1 و برخی دیگر از 0 تا 1,000,000,000 متفاوت باشند، تفاوت زیادی در مقیاس دارید. ستونهای «حداکثر» و «min» را در میان ویژگیها مقایسه کنید تا مقیاسهای بسیار متفاوت را پیدا کنید.
برای کاهش این تغییرات گسترده، مقادیر ویژگی را عادی سازی کنید.
برچسبهایی با برچسبهای نامعتبر
برآوردگرهای TensorFlow محدودیتهایی در نوع دادههایی دارند که به عنوان برچسب میپذیرند. برای مثال، طبقهبندیکنندههای باینری معمولاً فقط با برچسبهای {0، 1} کار میکنند.
مقادیر برچسب را در نمای کلی Facets مرور کنید و مطمئن شوید که با الزامات برآوردگر مطابقت دارند.