مریم محمدی
مریم محمدی
خواندن ۳ دقیقه·۵ ماه پیش

تکنیک لیبل زدن به داده ها- بخش اول: روش Semi supervised

سلام، حدود یک سال میشه که شرکت ما به سمت پروژه های هوش مصنوعی رفته و من جز تیمشونم. طی یه سری پست های کوچیک میخوام مطالبی که خودم یاد گرفتم و برام جالبه به عنوان فردی که فقط مفاهیم پایه رو میدونسته و هوش مصنوعی رو صرفا تئوری بلد بوده با شما به اشتراک بذارم. به این سری پست ها، هوش مصنوعی در عمل میگم. مطالب رو از سایت coursera و سری درسهای Machine Learning In Production که توسط DeepLearning.AI ارائه شد، یاد گرفتم که به همه پیشنهاد میکنم درسهاشو بگذرونن(درس 3 و 4 کاملا مرد افکنه! )

روش های یادگیری خودتون بهتر میدونین که میتونه به صورت supervised هم باشه که در این صورت لازم داریم داده هامون لیبل خورده باشن. خب داده ی لیبل خورده خیلی راحت پیدا نمیشه، لیبل زدن پر هزینه است ولی داده ی بدون لیبل فت و فراوونه(بعضی وقتا اونم نیست!)

در ادامه روش هایی که میتونیم با هزینه ی کم و به روش های کاربردی به داده ها لیبل بزنیم رو بیان کنم. به صورت کلی سه روش زیر برای لیبل زدن وجود داره:

Semi-supervised learning

Active learning

Weak supervision with snorkel

در ادامه ی این روش ها در سه پست کوتاه اومده.

Semi-supervised learning

در روش semi-supervised با استفاده از تعداد کمی داده های لیبل دار در ترکیب با تعداد زیادی از داده های بدون لیبل، به نحوی لیبل ها را استنتاج میکنیم. برای مثال میتوانیم این داده ها در فضای فیچرها کلاستر کنیم و تو هر دسته لیبل موجود رو به بقیه هم نسبت میدیم. روش های دیگه ای هم هست مثل label-propagation یا graph-based ها که تکنیک های دیگه ی این روش لیبل گذاری هستن. همه ی این روش ها در حقیقت transudative learning هستن که یجوری میخوان این لیبل ها رو منتقل کنن! شاید باورتون نشه ولی این ترکیب کردن داده های لیبل گذاری شده و بدون لیبل accuracy سیستم رو زیاد میکنه!(خودم تست گرفتم واقعا زیاد شد!!!)

  • Label Propagation

لیبل propagation یکی از الگوریتم های این دسته است. براساس community structure لیبل میزنه. بیشتر در داده های گراف بیس کاربردیه مثل detect کردن community در داده ها یا آنالیز network ها. با استفاده از پترن لینک های موجود لیبل را به باقی هم propagate میکند. این روش همچنین در تشخیص آنومالی، segmentation تصاویر، کاهش بعد که داده هاشون گراف بیس نیست هم کاربرد داره. نمونه پیاده سازی این روش با استفاده از scikit-learn به صورت زیر هستش:

from sklearn import datasets from sklearn.semi_supervised import LabelPropagation from sklearn.metrics import accuracy_score iris = datasets.load_iris() # Load a sample dataset (e.g., the Iris dataset) X = iris.data y = iris.target # Create a mask for the labeled data points (only the first 10 data points are labeled) labeled_mask = [True] * 10 + [False] * (len(X) - 10) label_prop_model = LabelPropagation() # Initialize the Label Propagation model label_prop_model.fit(X, y, labeled_mask) # Fit the model using the labeled and unlabeled data predicted_labels = label_prop_model.transduction_ # Predict the labels for all data points

لیبل propagation تکنیک های مختلفی داره و حتی میشه براساس کلاسترینگ هم اینکار رو انجام داد که ازش میگذریم.

در این مطلب روش semi-supervised برای لیبل زنی به داده های بدون لیبل رو دیدم. در بخش دوم و سوم نحوه لیبل زنی روش های Active learning و Weak supervision رو هم با هم میبینیم. از اینکه وقت خود را در اختیار من قرار دادین بسیار سپاس گزارم. امیدوارم این مطلب برای شما موثر و مفید باشد.

هوش مصنوعیsemi supervisedsemisupervied labelinglabeling
شاید از این پست‌ها خوشتان بیاید