چگونه Tokopedia با بهبود برنامه وب فروشنده خود بااستفاده از «یادگیری ماشین» هزینه‌های عملیاتی را کاهش داد

Dendi Sunardi
Dendi Sunardi
Geoffrey Prasetyo
Geoffrey Prasetyo
Swetha Gopalakrishnan
Swetha Gopalakrishnan

Tokopedia یک شرکت فناوری اندونزیایی است که یکی از بزرگ‌ترین بازارهای تجارت الکترونیک را دارد و میزبان بیش‌از ۴۰ محصول دیجیتال و بیش‌از ۱۴ میلیون فروشنده ثبت‌شده در پلاتفرم خود است.

Mitra Tokopedia، بخشی از کسب‌وکار Tokopedia، یک برنامه وب است که به مالکان کسب‌وکارهای کوچک کمک می‌کند محصولات دیجیتال مانند اعتبار و کوپن بازی، بسته‌های داده، توکن‌های برق، صورت‌حساب‌های مراقبت‌های بهداشتی ملی و غیره را بفروشند. این وب‌سایت یکی از کانال‌های اصلی برای فروشندگان Mitra Tokopedia در بیش‌از ۷۰۰ شهر است، بنابراین اطمینان از تجربه کاربری روان بسیار مهم است.

یکی از مراحل کلیدی در فرایند آماده‌سازی این است که این فروشندگان هویتشان را به‌تأیید برسانند. فروشنده باید مدرک شناسایی ملی خود و همچنین سلفی‌ای با مدرک شناسایی‌اش را بارگذاری کند تا درستی‌سنجی فروشنده تکمیل شود. به این فرایند، فرایند «مشتری‌ات را بشناس» (KYC) گفته می‌شود.

با افزودن قابلیت‌های «یادگیری ماشین» به این فرایند مهم «مشتریان خود را بشناسید» در برنامه وب، Mitra Tokopedia توانست تجربه کاربری بهتری با بیش‌از ۲۰٪ کاهش در خطاهای درستی‌سنجی به‌دست آورد. آن‌ها همچنین با کاهش تأییدیه‌های دستی به میزان تقریباً ۷۰٪، در هزینه‌های عملیاتی صرفه‌جویی کردند.

مبارزه‌طلبی

بیشتر داده‌های «مشتریان خود را بشناسید» رد می‌شد و این امر باعث ایجاد هزاران تیکت در هفته برای تیم عملیات جهت درستی‌سنجی دستی می‌شد. این امر نه‌تنها باعث هزینه عملیاتی بالا می‌شود، بلکه منجر به تجربه کاربری بد برای فروشندگانی می‌شود که فرایند درستی‌سنجی آن‌ها به‌تأخیر می‌افتد. مهم‌ترین دلیل رد شدن این بود که فروشندگان سلفی با کارت شناسایی را به‌درستی بارگذاری نکرده بودند. Mitra Tokopedia مشتاق بود این مشکل را به‌طور مقیاس‌پذیر بااستفاده از قابلیت‌های وب مدرن حل کند.

راه‌حل

تیم Tokopedia تصمیم گرفت از یادگیری ماشین با TensorFlow.js برای حل این مشکل در همان اولین مرحله از فرایند «مشتری خود را بشناسید» (زمانی که کاربر تصاویر را بارگذاری می‌کند) استفاده کند. آن‌ها از MediaPipe و کتابخانه تشخیص چهره TensorFlow استفاده کردند تا وقتی فروشنده کارت شناسایی و تصاویر سلفی را بارگذاری می‌کند، چهره فروشنده را با شش نقطه کلیدی تشخیص دهند. سپس از خروجی مدل برای بررسی دربرابر معیارهای پذیرش آن‌ها استفاده می‌شود. پس‌از درستی‌سنجی موفق، اطلاعات به بخش پشتی ارسال می‌شود. اگر درستی‌سنجی ناموفق باشد، پیام خطا و گزینه‌ای برای امتحان مجدد به فروشنده ارائه می‌شود. از رویکردی ترکیبی استفاده شد که در آن مدل استنتاج را بسته به مشخصات تلفن در دستگاه یا در سمت سرور انجام می‌دهد. دستگاه‌های رده‌پایین‌تر استنتاج را در سرور انجام می‌دهند.

استفاده از مدل یادگیری ماشین در اوایل فرایند «شناخت مشتری» به آن‌ها امکان می‌دهد:

  • نرخ رد شدن در فرایند «مشتری‌ات را بشناس» را بهبود دهید.
  • به کاربران درباره رد شدن احتمالی تصاویرشان براساس کیفیت ارزیابی‌شده توسط مدل هشدار دهید.

چرا یادگیری ماشین را به‌جای راه‌حل‌های دیگر انتخاب کنیم؟

یادگیری ماشین می‌تواند کارهای تکراری را که درغیراین‌صورت وقت‌گیر هستند یا انجام دستی آن‌ها غیرعملی است خودکار کند. در مورد Tokopedia، بهینه‌سازی راهکار غیر یادگیری ماشینی فعلی نمی‌توانست نتایج قابل‌توجهی به‌همراه داشته باشد، درحالی‌که راهکار یادگیری ماشینی می‌توانست بار کاری تیم عملیات را که مجبور بودند هزاران تأییدیه را به‌صورت هفتگی و دستی پردازش کنند، به‌طور قابل‌توجهی کاهش دهد. با راهکار یادگیری ماشین، بررسی تصویر می‌تواند تقریباً به‌طور آنی انجام شود و تجربه کاربری بهتری ارائه دهد و کارایی عملیاتی را بهبود بخشد. برای تعیین اینکه آیا یادگیری ماشین راه‌حل مناسبی برای مشکل شما است یا نه، درباره چارچوب‌بندی مسئله بیشتر بخوانید.

ملاحظات هنگام انتخاب مدل

هنگام انتخاب مدل یادگیری ماشین، عوامل زیر درنظر گرفته شد.

هزینه

آن‌ها هزینه کلی استفاده از مدل را ارزیابی کردند. ازآنجایی‌که TensorFlow.js یک بسته متن‌باز است که به‌خوبی توسط Google نگهداری می‌شود، ما در هزینه‌های صدور پروانه و نگهداری صرفه‌جویی می‌کنیم. ملاحظه دیگر هزینه استنتاج است. امکان اجرای استنتاج در سمت کارخواه درمقایسه با پردازش آن در سمت سرور با GPUهای گران‌قیمت، صرفه‌جویی زیادی در هزینه به‌همراه دارد، به‌ویژه اگر مشخص شود که داده‌ها نامعتبر و غیرقابل‌استفاده هستند.

میزان‌پذیری

آن‌ها مقیاس‌پذیری مدل و فناوری را درنظر گرفتند. آیا می‌تواند با تکامل پروژه ما، رشد داده‌ها و پیچیدگی مدل را مدیریت کند؟ آیا می‌توان آن را برای پوشش دادن پروژه‌ها یا موارد استفاده دیگر گسترش داد؟ پردازش درون‌دستگاهی کمک می‌کند زیرا مدل می‌تواند در CDN میزبانی شود و به سمت کارخواه ارسال شود، که بسیار مقیاس‌پذیر است.

عملکرد

آن‌ها اندازه کتابخانه (به کیلوبایت) و تأخیر فرایند زمان اجرا را درنظر گرفتند. اکثر پایگاه کاربر Mitra Tokopedia دستگاه‌های متوسط تا ضعیف با سرعت و اتصال اینترنت متوسط دارند. بنابراین، عملکرد ازنظر بارگیری و زمان اجرا (یعنی سرعت مدل در تولید خروجی) اولویت اصلی برای برآورده کردن نیازهای خاص آن‌ها و تضمین تجربه کاربری عالی است.

سایر ملاحظات

رعایت استانداردهای نظارتی: آن‌ها باید مطمئن می‌شدند که کتابخانه انتخاب‌شده با مقررات مربوط به حفاظت از داده و حریم خصوصی مطابقت دارد.

Skillset: They evaluated the expertise and skill set of their team. برخی چارچوب‌ها و کتابخانه‌های یادگیری ماشین ممکن است به زبان‌های برنامه‌نویسی خاص یا تخصص در حوزه‌ای خاص نیاز داشته باشند. با درنظر گرفتن این عوامل، آن‌ها هنگام انتخاب مدل مناسب برای پروژه یادگیری ماشین خود، تصمیمی آگاهانه گرفتند.

فناوری انتخاب‌شده

‫TensorFlow.js پس‌از درنظر گرفتن این عوامل، نیازهای آن‌ها را برآورده کرد. این مدل می‌تواند به‌طور کامل در دستگاه اجرا شود و از پس‌زمینه WebGL خود برای استفاده از GPU دستگاه بهره ببرد. اجرای مدل در دستگاه به‌دلیل کاهش تأخیر سرور، بازخورد سریع‌تری به کاربر ارائه می‌دهد و هزینه محاسبات سرور را کاهش می‌دهد. در مقاله مزایا و محدودیت‌های یادگیری ماشین درون‌دستگاهی درباره یادگیری ماشین درون‌دستگاهی بیشتر بخوانید.

«TensorFlow.js یک کتابخانه یادگیری ماشین متن‌باز از Google است که برای توسعه‌دهندگان جاوا اسکریپت طراحی شده است و می‌تواند در سمت کارخواه در مرورگر اجرا شود. این گزینه کامل‌ترین گزینه برای هوش مصنوعی وب با پشتیبانی جامع از اپراتورهای پس‌زمینه WebGL،‏ WebAssembly، و WebGPU است که می‌تواند با عملکرد سریع در مرورگر استفاده شود.»—نحوه استفاده Adobe از یادگیری ماشین وب با TensorFlow.js برای بهبود Photoshop برای وب

پیاده‌سازی فنی

Mitra Tokopedia از MediaPipe و کتابخانه تشخیص چهره TensorFlow استفاده کرد، بسته‌ای که مدل‌هایی برای اجرای تشخیص چهره هم‌زمان ارائه می‌دهد. به‌طور دقیق، مدل MediaPipeFaceDetector-TFJS ارائه‌شده در این کتابخانه که زمان اجرای tfjs را پیاده‌سازی می‌کند برای این راه‌حل استفاده شد.

قبل‌از اینکه به پیاده‌سازی بپردازیم، خلاصه کوتاهی از MediaPipe ارائه می‌دهیم. MediaPipe به شما امکان می‌دهد راه‌حل‌های یادگیری ماشین درون‌دستگاهی را در تلفن همراه (Android،‏ iOS)، وب، رایانه، دستگاه‌های لبه، و اینترنت اشیا بسازید و مستقر کنید.

در زمان نوشتن این پست، ۱۴ راهکار مختلف توسط MediaPipe ارائه شده است. می‌توانید از زمان اجرای mediapipe یا tfjs استفاده کنید. زمان اجرای tfjs با جاوا اسکریپت ساخته شده است و بسته جاوا اسکریپتی ارائه می‌دهد که برنامه وب می‌تواند آن را به‌صورت خارجی بارگیری کند. این با زمان اجرای mediapipe متفاوت است که با C++‎ ساخته شده و در ماژول WebAssembly کامپایل شده است. تفاوت‌های کلیدی عبارت‌اند از عملکرد، قابلیت اشکال‌زدایی، و بسته‌بندی. بسته جاوا اسکریپت را می‌توان با بسته‌بندهای کلاسیک مانند webpack بسته‌بندی کرد. درمقابل، واحد Wasm منبع دودویی بزرگ‌تر و جداگانه‌ای است (که با وابستگی زمان بارگیری نبودن کاهش می‌یابد) و به گردش کار اشکال‌زدایی Wasm متفاوتی نیاز دارد. بااین‌حال، برای کمک به برآورده کردن الزامات فنی و عملکردی، سریع‌تر اجرا می‌شود.

نمودار نحوه عملکرد مدل‌های MediaPipe و TensorFlow برای زمان‌های اجرای مختلف، بااستفاده از FaceDetection به‌عنوان نمونه.
تصویری کلی از نحوه عملکرد مدل‌های MediaPipe و TensorFlow برای زمان‌های اجرای مختلف، بااستفاده از FaceDetection به‌عنوان نمونه

برای بازگشت به پیاده‌سازی Tokopedia، اولین گام مقداردهی اولیه مدل به‌صورت زیر است. وقتی کاربر عکسی را بارگذاری می‌کند، HTMLImageElement به‌عنوان ورودی به آشکارساز ارسال می‌شود.

// Create the detector.
const model = faceDetection.SupportedModels.MediaPipeFaceDetector;
const detectorConfig = {
  runtime: 'tfjs'
};

const detector = await faceDetection.createDetector(model, detectorConfig);

// Run inference to start detecting faces.
const estimationConfig = {flipHorizontal: false};
const faces = await detector.estimateFaces(image, estimationConfig);

نتیجه فهرست چهره‌ها حاوی چهره‌های شناسایی‌شده برای هر چهره در تصویر است. اگر مدل نتواند چهره‌ای را شناسایی کند، فهرست خالی خواهد بود. برای هر چهره، حاوی یک کادر محدودکننده از چهره شناسایی‌شده و همچنین آرایه‌ای از شش نقطه کلیدی برای چهره شناسایی‌شده است. این شامل ویژگی‌هایی مثل چشم، بینی، و دهان می‌شود. هر نقطه کلیدی حاوی x و y و همچنین یک نام است.

[
  {
    box: {
      xMin: 304.6476503248806,
      xMax: 502.5079975897382,
      yMin: 102.16298762367356,
      yMax: 349.035215984403,
      width: 197.86034726485758,
      height: 246.87222836072945
    },
    keypoints: [
      {x: 446.544237446397, y: 256.8054528661723, name: "rightEye"},
      {x: 406.53152857172876, y: 255.8, "leftEye },
      ...
    ],
  }
]

box نشان‌دهنده چارگوش محدودکننده چهره در فضای پیکسل تصویر است، که xMin، xMax نشان‌دهنده مرزهای x،‏ yMin، yMax نشان‌دهنده مرزهای y، و width، height ابعاد چارگوش محدودکننده هستند. برای keypoints، x و y نشان‌دهنده موقعیت نقطه کلیدی واقعی در فضای پیکسل تصویر است. name برچسبی برای نکته کلیدی ارائه می‌دهد که به‌ترتیب عبارت‌اند از 'rightEye'، 'leftEye'، 'noseTip'، 'mouthCenter'، 'rightEarTragion'، و 'leftEarTragion'. As mentioned at the beginning of this post, the seller has to upload their National ID and a selfie with the ID in order to complete the seller verification. سپس از خروجی مدل برای بررسی معیارهای پذیرش استفاده می‌شود—یعنی برای اینکه تصویر کارت شناسایی و سلفی معتبر تلقی شود، باید با شش نکته کلیدی ذکرشده در بالا مطابقت داشته باشد.

پس‌از درستی‌سنجی موفق، اطلاعات فروشنده مربوطه به بخش پشتیبان ارسال می‌شود. اگر درستی‌سنجی ناموفق باشد، پیام ناموفق بودن و گزینه‌ای برای امتحان مجدد به فروشنده داده می‌شود. هیچ اطلاعاتی به پس‌زمینه ارسال نخواهد شد.

نمودار صفحه Mitra KYC، مدل TensorFlow.js، و سرور درحال تعامل با یکدیگر.
نحوه تعامل صفحه Mitra KYC، مدل TensorFlow.js، و سرور با یکدیگر

ملاحظات عملکرد برای دستگاه‌های ضعیف

این بسته فقط ۲۴٫۸ کیلوبایت است (کوچک‌شده و فشرده‌شده با gzip)، که تأثیر قابل‌توجهی بر زمان بارگیری ندارد. اما برای دستگاه‌های بسیار ضعیف، پردازش زمان اجرا زمان زیادی می‌برد. منطق دیگری اضافه شد تا قبل‌از ارسال دو تصویر به مدل تشخیص چهره یادگیری ماشین، RAM و CPU دستگاه بررسی شود.

اگر دستگاه بیشتر از ۴ گیگابایت حافظه دسترسی تصادفی (RAM)، اتصال شبکه بالاتر از 4G، و پردازنده مرکزی با بیش‌از ۶ هسته داشته باشد، تصاویر برای درستی‌سنجی چهره به مدل درون‌دستگاهی ارسال می‌شود. اگر این الزامات برآورده نشوند، مدل درون‌دستگاهی نادیده گرفته می‌شود و تصاویر مستقیماً به سرور ارسال می‌شوند تا بااستفاده از رویکردی ترکیبی برای این دستگاه‌های قدیمی‌تر درستی‌سنجی شوند. با گذشت زمان و با ادامه تکامل سخت‌افزار، دستگاه‌های بیشتری می‌توانند محاسبات را از سرور تخلیه کنند.

تأثیر

به‌دلیل ادغام یادگیری ماشین، Tokopedia توانست با موفقیت نرخ بالای رد شدن را حل کند و نتایج زیر را مشاهده کرد:

  • نرخ رد شدن بیش‌از ٪۲۰ کاهش یافت.
  • تعداد تأییدیه‌های دستی تقریباً ٪۷۰ کاهش یافت.

این کار نه‌تنها تجربه کاربری روان‌تری برای فروشندگان ایجاد کرد، بلکه هزینه عملیاتی تیم Tokopedia را نیز کاهش داد.

نتیجه‌گیری

به‌طورکلی، نتایج این مطالعه موردی نشان داد که برای موارد استفاده مناسب، راهکارهای یادگیری ماشین درون‌دستگاهی در وب می‌تواند در بهبود تجربه کاربر و اثربخشی ویژگی‌ها و همچنین صرفه‌جویی در هزینه‌ها و سایر مزایای کسب‌وکار ارزشمند باشد.

بااستفاده از MediaPipe Studio و نمونه کد برای MediaPipe Face Detector برای وب، ویژگی MediaPipe Face Detection را خودتان امتحان کنید.

اگر به گسترش قابلیت‌های برنامه وب خود با یادگیری ماشین درون‌دستگاهی علاقه‌مند هستید، منابع زیر را بررسی کنید: