มากกว่าการถ่ายเซลฟี: ระบบยืนยันอายุของ Roblox ช่วยรักษาความทันสมัยของการตรวจสอบอายุได้อย่างไร
ระบบ ML พฤติกรรมแบบโมดูลาร์และมัลติโมดัลที่ให้ความสำคัญกับความปลอดภัยเป็นอันดับแรก

ระบบการประมาณอายุจากใบหน้าของ Roblox ได้ประมวลผลข้อมูลการตรวจสอบอายุจำนวน 338 ล้านรายการ เพื่อช่วยผู้ใช้ Roblox ปลดล็อกการแชทที่เหมาะสมกับอายุ และเข้าถึงเกมที่เหมาะสมกับอายุบนแพลตฟอร์ม การตรวจสอบอายุเบื้องต้นเป็นสิ่งจำเป็น แต่การยืนยันอายุไม่ได้สิ้นสุดเพียงการถ่ายเซลฟี่เท่านั้น บัญชีอาจถูกแชร์หรือส่งต่อให้พี่น้องที่อายุน้อยกว่า ผู้ไม่หวังดีอาจพยายามทดสอบระบบป้องกันของเรา เพื่อยกระดับการยืนยันอายุให้เกินกว่าสัญญาณ ณ จุดเวลาเดียว เราได้สร้างชั้น ML ที่มีประสิทธิภาพสูง ซึ่งประเมินว่าพฤติกรรมต่อเนื่องของบัญชีนั้นยังคงสอดคล้องกับอายุที่ประมาณการไว้ตามเวลาหรือไม่ การออกแบบแบบโมดูลาร์ระดับคุณสมบัติของเราช่วยให้การอัปเดตโมเดลมีประสิทธิภาพและปรับตัวได้อย่างรวดเร็วต่อรูปแบบพฤติกรรมที่เปลี่ยนแปลง
การดำเนินการ workflow การยืนยันอายุแบบ end-to-end ของเราให้ทำงานได้อย่างน่าเชื่อถือ เป็นความท้าทายของระบบกระจายตัว (distributed systems) ไม่แพ้ความท้าทายของ ML การประมาณอายุเองเป็นปัญหา ML ที่ยากลำบาก เนื่องจากขอบเขตอายุไม่ใช่จุดเปลี่ยนพฤติกรรมที่ชัดเจน พ่อแม่อาจเพลิดเพลินกับประสบการณ์เดียวกันกับลูกๆ และภาษาอาจแตกต่างกันไปตามวัฒนธรรม บริบท และชุมชน รวมถึงอายุ ไม่มีสัญญาณพฤติกรรมใดที่สามารถจับภาพรูปแบบพฤติกรรมที่ละเอียดอ่อนและเปลี่ยนแปลงตามเวลา รวมถึงภายใต้แรงกดดันจากฝ่ายตรงข้ามได้อย่างน่าเชื่อถือ แม้แต่ข้อมูลอ้างอิงที่แม่นยำที่สุดของเราก็มาจากกลุ่มประชากรที่คัดเลือกมา และอาจมีความลำเอียง
การดำเนินงานในระดับของ Roblox ยิ่งเพิ่มความซับซ้อนเข้าไปอีก ในแต่ละรอบการอนุมานรายวัน เราเก็บรวบรวมสัญญาณพฤติกรรมจากทั่วทั้งแพลตฟอร์ม ดำเนินการโมเดลย่อยบนระบบประมวลผลที่เหมาะสมที่สุดกับแต่ละภาระงาน และรวมผลลัพธ์ของพวกมันเข้าด้วยกันเพื่อสร้างการประมาณอายุที่ได้รับการปรับเทียบแล้ว โมเดลของเราครอบคลุมตั้งแต่ตัวจำแนก ML แบบดั้งเดิม ไปจนถึงทรานส์ฟอร์เมอร์หลายภาษาที่มีพารามิเตอร์มากกว่า 300 ล้านตัว ระบบนี้ประมวลผลข้อมูลระดับบัญชีเกือบ 2 พันล้านรายการทุกวัน ในขณะที่การฝึกโมเดลใช้ข้อมูลป้ายกำกับอายุที่มีความน่าเชื่อถือสูงเกือบ 30 ล้านรายการ
การสร้างระบบทั้งหมดภายในองค์กรช่วยให้เรามีความโปร่งใสและการควบคุมที่จำเป็นในการตรวจสอบทุกคุณสมบัติและสัญญาณเพื่อความเป็นส่วนตัว ซึ่งเป็นข้อกำหนดการออกแบบหลัก เรายังสามารถใช้สัญญาณเฉพาะของ Roblox ที่บันทึกวิธีการใช้งานบัญชีตามเวลา—บริบทตามแนวเวลาที่เครื่องมือประมาณการภายนอกแบบสแตนด์อโลนไม่สามารถมีได้ด้วยตัวเอง นอกจากนี้ยังให้เราควบคุมวงจรชีวิต ML ทั้งหมดได้ เราสามารถรวมรูปแบบข้อมูลต่าง ๆ เมื่อมีพร้อมใช้งาน และปรับเทียบผลลัพธ์ให้สอดคล้องกับกระบวนการทำงานด้านความปลอดภัยของ Roblox พร้อมทั้งติดตาม ควบคุมการเข้าถึง และอัปเดตส่วนประกอบแต่ละส่วนตามการเปลี่ยนแปลงพฤติกรรม
การเลือกสัญญาณที่เหมาะสมเพื่อคาดการณ์อายุ
กลุ่มอายุต่างกันมีวิธีใช้งาน Roblox ที่แตกต่างกันในด้านการเล่นเกม การสื่อสาร และรูปแบบการโต้ตอบบนแพลตฟอร์ม เพื่อจับความหลากหลายของพฤติกรรม เราแบ่งข้อมูลนำเข้าออกเป็นกลุ่มสัญญาณที่ชัดเจน:
- บริบททางสังคม: รูปแบบรวมในวงสังคมของผู้ใช้ รวมถึงผู้ที่พวกเขาติดต่อและระดับความถี่ในการโต้ตอบ
- การมีส่วนร่วมในประสบการณ์: รูปแบบรวมที่ไปไกลกว่าสิ่งที่ผู้ใช้เล่น โดยจับภาพว่าพวกเขาเล่นเมื่อใด อยู่ได้นานเท่าใด และการมีส่วนร่วมของพวกเขาเปลี่ยนแปลงไปตามเวลาอย่างไร
- กิจกรรมบัญชีและแพลตฟอร์ม: สัญญาณการใช้งานแพลตฟอร์มและวงจรชีวิตที่รวมกัน เช่น ระยะเวลาการถือบัญชี ความถี่ในการใช้งาน และพฤติกรรมระดับเซสชัน
- รูปแบบการสื่อสาร: สรุปข้อมูลที่สร้างจากโมเดลเกี่ยวกับการใช้ภาษาที่เกี่ยวข้องกับอายุ รวมถึงความแตกต่างของรูปแบบการสื่อสารตามบริบทและช่วงเวลา
- ตัวแทนผู้ใช้ที่เรียนรู้ได้: ตัวแทนระดับสูงที่จับรูปแบบการใช้งานที่กว้างขึ้น เราทำงานร่วมกับทีม ML ด้าน Discovery และ Personalization อย่างใกล้ชิด; ตัวแทนที่สมบูรณ์แบบเดียวกันนี้ ซึ่งสามารถคาดการณ์ว่าผู้ใช้จะมีส่วนร่วมกับอะไรต่อไป สามารถได้รับการฝึกเพิ่มเติมเพื่อคาดการณ์กลุ่มอายุที่กว้างขึ้นได้
แต่ละกลุ่มสัญญาณจะมีโมเดลที่เหมาะกับรูป dạngของข้อมูลนั้น สัญญาณรวมที่มีมิติสูงและข้อมูลเบาบางจะได้รับการจัดการโดยต้นไม้ตัดสินใจแบบ gradient-boosted (เช่น XGBoost classifiers); ข้อความจะได้รับการจัดการโดยตัวเข้ารหัส transformer หลายภาษาที่ปรับแต่งอย่างละเอียด (mmBERT); และตัวแทนผู้ใช้จะป้อนข้อมูลเข้าสู่เครือข่ายประสาทเทียมแบบกะทัดรัด (Multilayer Perceptron)
แต่ละโมเดลย่อยจะคาดการณ์เป้าหมายเดียวกัน: การแจกแจงความน่าจะเป็นของชุดช่วงอายุ จากนั้น meta-learner ที่ใช้ gradient boost จะรวมเวกเตอร์ความน่าจะเป็นเหล่านั้นเข้าด้วยกันเพื่อสร้างค่าประมาณที่ปรับเทียบแล้วในขั้นสุดท้าย

เราเลือกวิธีการรวมข้อมูลระดับการตัดสินใจนี้แทนการใช้โมเดลระดับคุณสมบัติแบบโมโนลิธิก เพื่อความยืดหยุ่นในการปรับแต่ง ความเร็วในการประมวลผล และความสามารถในการอธิบายได้ การทำให้ระบบเป็นแบบโมดูลาร์ช่วยให้เราสามารถเพิ่ม ฝึกใหม่ หรือเลิกใช้โมเดลย่อยได้โดยไม่ต้องสร้างระบบใหม่ทั้งหมด นอกจากนี้ยังช่วยให้เราตอบสนองได้เร็วขึ้นเมื่อรูปแบบพฤติกรรมเปลี่ยนแปลงไปเนื่องจากการพัฒนาตามธรรมชาติหรือแรงกดดันจากฝ่ายตรงข้าม ชั้นการรวมข้อมูลจะอ่านผลลัพธ์ล่าสุดที่ได้รับการส่งเสริมจากแต่ละโมเดลย่อย เพื่อใช้สัญญาณที่ดีที่สุดที่มีอยู่ และปรับลดประสิทธิภาพอย่างราบรื่นเมื่อสัญญาณใดขาดหายไปหรือล่าช้า เนื่องจากแต่ละรูปแบบข้อมูล (modality) เข้ามาเป็นข้อมูลนำเข้าที่แยกต่างหาก เราจึงสามารถติดตามได้ว่ากลุ่มสัญญาณใดกำลังขับเคลื่อนการเปลี่ยนแปลงในการตัดสินใจ และดำเนินการปรับเทียบ (calibration) รวมถึงการตรวจสอบคุณภาพ (quality gates) ก่อนที่ผลลัพธ์จะถูกนำไปใช้ในขั้นตอนถัดไป
เราบังคับใช้การปรับเทียบที่ชั้นการรวมสัญญาณ เพราะในระบบความปลอดภัย ความสามารถในการคาดการณ์มีความสำคัญกว่าความแม่นยำล้วนๆ เราปรับเทียบโมเดลเพื่อให้ได้คะแนนความมั่นใจที่เราเชื่อถือได้ ด้วยวิธีนี้ หากการดำเนินการในขั้นตอนต่อไปจะส่งผลกระทบอย่างรุนแรงต่อผู้ใช้ เราสามารถกำหนดให้ต้องมีหลักฐานที่แข็งแกร่งขึ้นและระดับความมั่นใจที่สูงขึ้นก่อนที่จะดำเนินการตามผลลัพธ์
ความลำเอียงในการเลือกป้ายกำกับ
ป้ายกำกับที่มีความมั่นใจสูงที่สุดของเรามาจากผู้ใช้ที่ผ่านการตรวจสอบอายุอย่างเข้มงวด ป้ายกำกับเหล่านี้มีประโยชน์ แต่ไม่ใช่ตัวอย่างแบบสุ่มของผู้ใช้ Roblox สำหรับระบบที่อาจส่งผลต่อการเข้าถึงของผู้ใช้ ความเป็นตัวแทนเป็นส่วนสำคัญของวัตถุประสงค์การฝึกอบรม
กลุ่มผู้ใช้ที่มีป้ายกำกับไม่ใช่กลุ่มเป้าหมาย ผู้ใช้ที่ผ่านกระบวนการตรวจสอบอายุอย่างเข้มงวดมีความแตกต่างอย่างเป็นระบบจากกลุ่มผู้ใช้โดยรวม โมเดลที่ฝึกบนกลุ่มนั้นโดยไม่มีการปรับแต่งอาจเรียนรู้ว่าใครเลือกที่จะผ่านกระบวนการตรวจสอบอายุได้มากพอๆ กับที่เรียนรู้อายุจริง เพื่อลดอคติในการเลือกนี้ เราจึงปรับน้ำหนักข้อมูลการฝึกและข้อมูลการประเมินใหม่ เพื่อให้ตัวอย่างที่มีป้ายกำกับสะท้อนกลุ่มผู้ใช้ที่เราต้องการให้คะแนนได้ดีขึ้น
เราทำงานข้ามฝ่ายร่วมกับทีมวิจัยผู้ใช้ โดยใช้ผลการสำรวจที่รวมมาเพื่อกำหนดเป้าหมายประชากรที่ใช้ในการปรับน้ำหนัก จากนั้น เราใช้เทคนิคต่าง ๆ เช่น การปรับน้ำหนักตามความโน้มเอียงผกผัน (inverse propensity weighting) และการปรับสัดส่วนแบบวนซ้ำ (iterative proportional fitting) — หรือที่เรียกว่า raking — เพื่อปรับตัวอย่างที่ปรับน้ำหนักให้สอดคล้องกันในหลายมิติพร้อมกัน แทนที่จะแก้ไขปัจจัยเดียวอย่างแยกส่วน
ไม่ใช่ทุกแหล่งข้อมูลที่มีความมั่นใจสูงจะสร้างตัวอย่างการฝึกอบรมที่ใช้งานได้ ป้ายกำกับจะเชื่อถือได้เพียงเท่ากับความน่าเชื่อถือของเหตุการณ์การตรวจสอบที่อยู่เบื้องหลัง บางเหตุการณ์อาจมีสัญญาณที่ทำให้ไม่เหมาะสมสำหรับการฝึกอบรมโมเดล เช่น รูปแบบการตรวจสอบที่ผิดปกติ หรือปัญหาเกี่ยวกับความสมบูรณ์ของบัญชี
เราพยายามทำความสะอาดป้ายกำกับด้วยวิธีการกรองป้ายกำกับที่คำนึงถึงความสมบูรณ์ หรือวิธีการระบุข้อผิดพลาดของป้ายกำกับ เช่น Confident Learning ก่อนการฝึก เพื่อกำจัดตัวอย่างที่ดูอยู่นอกการแจกแจงสำหรับการสร้างแบบจำลองพฤติกรรม การทดลองเบื้องต้นแสดงให้เห็นว่า การทำความสะอาดประเภทนี้ช่วยป้องกันไม่ให้แบบจำลองเกิดการปรับตัวมากเกินไป (overfitting) และให้ผลการปรับปรุงประสิทธิภาพที่สม่ำเสมอ

การฝึกอบรม การอนุมาน และการหลีกเลี่ยงความเบี่ยงเบนในระดับ Roblox
การอนุมานจำเป็นต้องทำงานบ่อยพอที่จะรักษาสัญญาณให้สดใหม่ แต่ความถี่ในการฝึกอบรมอาจแตกต่างกันไปตามกลุ่มสัญญาณ เราเลือกกำหนดการฝึกอบรมใหม่โดยพิจารณาจากความเปลี่ยนแปลงของคุณลักษณะ (feature drift) ความเสถียรของโมเดล และค่าใช้จ่ายของโมเดล สัญญาณที่เปลี่ยนแปลงหรือเสื่อมสภาพอย่างรวดเร็วสามารถฝึกอบรมใหม่ได้บ่อยขึ้น ส่วนโมเดลที่มีขนาดใหญ่และประสิทธิภาพเปลี่ยนแปลงช้าสามารถฝึกอบรมใหม่ได้น้อยลงหรือตามความต้องการ
ระบบประมวลผลจะปรับตามลักษณะของงาน เราใช้ Apache Spark สำหรับการแปลงข้อมูลที่มีโครงสร้างในขนาดใหญ่ ใช้เฟรมเวิร์ก Ray สำหรับงานที่ใช้ GPU และใช้ production workers สำหรับการประมวลผลสัญญาณแบบเรียลไทม์
ด้วยขนาดของ Roblox การสร้างประวัติครบถ้วนของทุกบัญชีใหม่ทุกวันก็ไม่ใช่เรื่องที่เป็นไปได้ในทางปฏิบัติ เฟรมเวิร์กการประมวลผลข้อมูลภายในองค์กรของเราเก็บรักษาประวัติแบบจำกัดและหมุนเวียนสำหรับสัญญาณปริมาณสูง และดำเนินการแปลงข้อมูลที่ใช้ทรัพยากรมากเป็นขั้นตอน ซึ่งช่วยให้เราประมวลผลและรวมข้อมูลระดับบัญชีนับล้านรายการทุกวัน พร้อมทั้งปรับขนาดการขยายข้อมูล การรวมข้อมูล และการรวมคุณลักษณะได้อย่างอิสระ การออกแบบระบบผลิตแบบไฮบริดนี้ช่วยให้เราบูรณาการโดยตรงกับคลังข้อมูลของเรา ดำเนินการซ้ำได้ระหว่างส่วนประกอบของโมเดล และเข้าถึงการประมวลผลที่เร่งความเร็วในจุดสำคัญ
เพื่อช่วยรักษาความเสถียรภาพในระดับการขยายตัวของเรา เราได้บังคับใช้การตัดสินใจด้านการออกแบบสองข้ออย่างเคร่งครัดในทุกขั้นตอนของกระบวนการสร้างคุณลักษณะ:
- เก็บคุณสมบัติที่ได้มา: เก็บคุณสมบัติที่ได้มาแทนที่จะเก็บสตรีมกิจกรรมดิบทุกครั้งที่เป็นไปได้ เก็บสัญญาณที่จำเป็นสำหรับการสร้างแบบจำลองเท่านั้น ไม่ใช่ประวัติทั้งหมดที่อยู่เบื้องหลัง
- สัญญาข้อมูลแบบรวม: สัญญาข้อมูลเดียวกันถูกใช้ทั้งในการฝึกอบรมและในการอนุมาน ซึ่งช่วยลดหนึ่งในรูปแบบความล้มเหลวที่พบบ่อยที่สุดในระบบ ML: ความคลาดเคลื่อนระหว่างข้อมูลที่ใช้ฝึกอบรมกับข้อมูลที่ให้บริการ
เราใช้กลไกการควบคุม (gating) ที่สองจุดในวงจรชีวิตการผลิต ก่อนอื่น การเลื่อนระดับโมเดล (model promotion) แยกต่างหากจากการฝึกโมเดล โมเดลผู้สมัครต้องผ่านการตรวจสอบความปลอดภัย (guardrail checks) ก่อนที่จะมีสิทธิ์สำหรับการอนุมานในสภาพแวดล้อมการผลิต หากโมเดลผู้สมัครไม่ผ่านการตรวจสอบความปลอดภัยนี้ กระบวนการจะบล็อกการเลื่อนระดับ และเราจะยังคงให้บริการเวอร์ชันล่าสุดที่ผ่านการเลื่อนระดับและผ่านการตรวจสอบแล้ว
ประการที่สอง ผลลัพธ์การอนุมานจะถูกควบคุมก่อนที่จะเผยแพร่ไปยังขั้นตอนถัดไป การตรวจสอบอัตโนมัติจะค้นหาการถดถอยด้านคุณภาพและการเปลี่ยนแปลงการแจกแจงการคาดการณ์ที่รุนแรง หากการตรวจสอบล้มเหลว ขั้นตอนการเผยแพร่จะถูกบล็อก ในระบบ ML ที่เชื่อมโยงกับกระบวนการทำงานด้านความปลอดภัยที่ผู้ใช้ต้องเผชิญ “ไม่ดำเนินการอะไรในวันนี้” มักเป็นรูปแบบความล้มเหลวที่ปลอดภัยกว่าการส่งการเปลี่ยนแปลงการแจกแจงที่ไม่สามารถอธิบายได้
การวัดผลระบบ
สำหรับระบบแบบนี้ ตัวเลขความแม่นยำเพียงตัวเดียวไม่มีความหมายมากนัก เราประเมินคุณภาพโมเดลผ่านคุณภาพการจัดอันดับ การปรับเทียบ ความเสถียรตามเวลา และพฤติกรรมใกล้ขอบเขตช่วงอายุที่สำคัญ นอกจากนี้ เรายังพิจารณาความแทนที่ของข้อมูลการประเมินเป็นส่วนหนึ่งของปัญหาการวัดผล เพราะการปรับปรุงโดยรวมจะมีประโยชน์ก็ต่อเมื่อมันสะท้อนถึงประชากรที่ระบบถูกออกแบบมาเพื่อให้บริการ
โมเดลที่รวมข้อมูลนี้ đạtความแม่นยำเฉลี่ย (average precision) มากกว่า 0.9 บนข้อมูลการประเมินที่ให้น้ำหนักและแยกไว้เพื่อทดสอบนี้ การประมาณค่าที่มีความมั่นใจสูงของโมเดลนี้ยังมีความสม่ำเสมอจากวันหนึ่งสู่วันถัดไป โดยมากกว่า 99% ยังคงอยู่ในช่วงอายุกว้างเดียวกันในหลายวันติดต่อกัน
เรายังเปรียบเทียบโมเดลนี้กับข้อมูลความจริงอิสระ (ground truth) ที่ผลิตโดยผู้ตรวจสอบมนุษย์ที่ได้รับการฝึกอบรมผ่านกระบวนการทำงานด้านความเชื่อถือและความปลอดภัย (Trust and Safety) ของเรา เมื่ออยู่ในระดับความมั่นใจสูง การประมาณช่วงอายุของโมเดลสอดคล้องกับป้ายกำกับที่ผู้ตรวจสอบมนุษย์เห็นพ้องกันสำหรับผู้ใหญ่มากกว่า 80% ของเวลา
การประเมินแบบออฟไลน์เป็นเพียงชั้นหนึ่งเท่านั้น ในระบบผลิตจริง พฤติกรรมของผู้ใช้เปลี่ยนแปลงไปตามฤดูกาล การเปิดตัวผลิตภัณฑ์ และแรงกดดันจากฝ่ายตรงข้าม นั่นคือเหตุผลที่เราจับคู่ตัวชี้วัดการประเมินโมเดลกับการติดตามอย่างต่อเนื่องของการแจกแจงการคาดการณ์ การเบี่ยงเบน และความเสถียร ก่อนที่ผลลัพธ์จะถูกนำไปใช้ในขั้นตอนต่อไป เรายังติดตามผลลัพธ์จากการตรวจสอบอายุในขั้นตอนต่อไป เพื่อให้ข้อมูลย้อนกลับจากระบบผลิตจริงสามารถชี้วัดความน่าเชื่อถือของโมเดล และระบุจุดที่ควรปรับค่าเกณฑ์หรือเส้นทางการตรวจสอบ
ขั้นตอนต่อไป
การพัฒนาระบบนี้ภายในองค์กรช่วยให้เราสามารถใช้สัญญาณเฉพาะของ Roblox ได้อย่างปลอดภัย ดำเนินการด้วยความเคร่งครัดสูงสุด และปรับปรุงอย่างต่อเนื่อง
ในอนาคต เราจะมุ่งเน้นการปรับปรุงโมเดลย่อย การอนุมาน และการวัดผล เราจะพัฒนาแต่ละชั้นให้ก้าวหน้ายิ่งขึ้น พร้อมทั้งยึดมั่นในหลักการดำเนินงานของเรา ได้แก่ ความเป็นโมดูลาร์ การปรับเทียบ ความเป็นส่วนตัว และมาตรการป้องกันในระบบผลิต


