CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง
ประยุกต์ใช้ CKKS กับการอนุมานแมชชีนเลิร์นนิงที่รักษาความเป็นส่วนตัว
CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงใช้ CKKS
BGV/BFV ทำงานกับจำนวนเต็ม (เลขคณิตแบบแม่นยำ) แต่การเรียนรู้ของเครื่องใช้ตัวเลขจุดลอยตัว (เลขคณิตโดยประมาณ) CKKS (Cheon-Kim-Kim-Song, 2017) เข้ารหัสจำนวนจริงและจำนวนเชิงซ้อน พร้อมยอมให้สูญเสียความแม่นยำได้อย่างควบคุม จึงเหมาะอย่างยิ่งสำหรับการอนุมานด้วยการเรียนรู้ของเครื่องและการวิเคราะห์ข้อมูล
เลขคณิตโดยประมาณ
CKKS ถือว่าสัญญาณรบกวนเป็นส่วนหนึ่งของความแม่นยำในการเข้ารหัส แทนที่จะกำจัดสัญญาณรบกวนด้วยการแก้ไขข้อผิดพลาด CKKS มองผลลัพธ์เป็นค่าประมาณที่มีขอบเขตความแม่นยำรับประกันได้ ข้อแลกเปลี่ยนนี้ทำให้ HE มีประสิทธิภาพสูงขึ้นมากสำหรับการคำนวณค่าต่อเนื่อง
การเข้ารหัสจำนวนจริง
CKKS เข้ารหัสเวกเตอร์ของจำนวนเชิงซ้อนเป็นพหุนาม: เวกเตอร์ (z_0, ..., z_{n/2-1}) ถูกแปลงผ่าน FFT ผกผันเป็นพหุนามใน R ตัวคูณมาตราส่วน Δ (เช่น 2^40) ใช้แปลงค่าจุดลอยตัวเป็นจำนวนเต็ม มีช่องจำนวนจริง n/2 ช่องต่อข้อความเข้ารหัสหนึ่งชุด
การปรับมาตราส่วนใหม่
หลังการคูณ ตัวคูณมาตราส่วนจะเพิ่มเป็นสองเท่า: Δ^2 CKKS จึงมีการดำเนินการปรับมาตราส่วนใหม่ โดยหารด้วย Δ เพื่อคืนค่ามาตราส่วนเดียว การดำเนินการนี้ยังลดระดับมอดูลัสของข้อความเข้ารหัสด้วย (คล้ายการเปลี่ยนมอดูลัสของ BGV) ทำให้ข้อความเข้ารหัสยังจัดการได้
การวิเคราะห์ความแม่นยำ
การคูณแต่ละครั้งใช้ระดับมอดูลัสหนึ่งระดับและลดความแม่นยำลงประมาณ log2(Δ) บิต สำหรับวงจรที่มีความลึก L และตัวคูณมาตราส่วน Δ = 2^40 ความแม่นยำที่สูญเสียทั้งหมดประมาณ L*40 บิต ควรเลือกมอดูลัสเริ่มต้น Q ให้มีขนาดใหญ่พอรองรับงบประมาณความแม่นยำนี้
การอนุมานด้วยการเรียนรู้ของเครื่องบน CKKS
ชั้นเชิงเส้น (การคูณเมทริกซ์กับเวกเตอร์): มีประสิทธิภาพ โดยใช้การหมุนและการสะสม ฟังก์ชันกระตุ้น (ReLU, sigmoid): จำเป็นต้องใช้การประมาณด้วยพหุนาม ReLU: ประมาณด้วยพหุนามเชบีเชฟดีกรี 7 การสูญเสียความแม่นยำ: ประมาณ 0.1-1% เมื่อเทียบกับการอนุมานบนข้อความธรรมดา
ตัวอย่างการอนุมานแบบส่วนตัว
โรงพยาบาลเข้ารหัสข้อมูลผู้ป่วยด้วยกุญแจสาธารณะ CKKS ของโรงพยาบาล คลาวด์เรียกใช้โครงข่ายประสาทสำหรับการวินิจฉัยกับข้อมูลที่เข้ารหัสโดยใช้การดำเนินการของ CKKS จากนั้นส่งผลการทำนายที่เข้ารหัสกลับมา โรงพยาบาลถอดรหัสด้วยกุญแจส่วนตัว คลาวด์จะไม่เห็นข้อมูลผู้ป่วยหรือผลการวินิจฉัยในรูปข้อความธรรมดา
พารามิเตอร์ของ CKKS
คำแนะนำของ HEAAN/OpenFHE: n=2^15 (32768) สำหรับวงจรการเรียนรู้ของเครื่องเชิงลึก สายโซ่มอดูลัส: Q เริ่มต้นประมาณ 2^1500 สำหรับการคูณ 30 ระดับที่ Δ=2^50 ความปลอดภัย: 128 บิต โดยสมมติว่า CKKS ที่ใช้พารามิเตอร์เหล่านี้ยากเทียบเท่ากับ RLWE หน่วยความจำ: ข้อความเข้ารหัสประมาณ 1 MB
การบูตสแตรปใน CKKS
การบูตสแตรปของ CKKS (Cheon และคณะ, 2018) ประเมินการลดแบบมอดูลาร์ด้วยการคำนวณแบบโฮโมมอร์ฟิกเพื่อรีเฟรชข้อความเข้ารหัส ความซับซ้อนอยู่ที่การประเมินฟังก์ชันไซน์ (ผ่านการประมาณด้วยพหุนาม) บนจำนวนเชิงซ้อน ช่วยให้วงจรมีความลึกไม่จำกัด โดยใช้เวลาประมาณ 30 วินาทีต่อการบูตสแตรปหนึ่งครั้ง
การเปรียบเทียบ: CKKS กับ BFV
BFV: จำนวนเต็มแบบแม่นยำ ข้อความธรรมดาจำนวนเต็ม ไม่มีการสูญเสียความแม่นยำ CKKS: จำนวนจริง/จำนวนเชิงซ้อนแบบประมาณ ข้อความธรรมดาจุดลอยตัว ความแม่นยำลดลงตามความลึก ใช้ BFV สำหรับ: ฐานข้อมูล การสืบค้น และการคำนวณที่ต้องการความแม่นยำ ใช้ CKKS สำหรับ: การเรียนรู้ของเครื่อง สถิติ และการคำนวณทางวิทยาศาสตร์
ไลบรารี
HEAAN (CKKS ดั้งเดิม, มหาวิทยาลัยแห่งชาติโซล) Microsoft SEAL (CKKS + BFV) OpenFHE (CKKS + BGV + BFV) Concrete-ML (Zama.ai ห่อหุ้ม OpenFHE สำหรับแบบจำลอง scikit-learn และ PyTorch) TF-HE (การทดลองผสานรวม TensorFlow กับ HE)
ตรวจสอบความเข้าใจ
เหตุใดจึงนิยมใช้ CKKS มากกว่า BFV สำหรับการอนุมานด้วยการเรียนรู้ของเครื่อง
สรุปทบทวน
CKKS รองรับเลขคณิตของจำนวนจริงแบบประมาณ จึงเหมาะสำหรับการอนุมานด้วยการเรียนรู้ของเครื่องและการคำนวณสถิติบนข้อมูลที่เข้ารหัส การปรับมาตราส่วนใหม่ช่วยจัดการตัวคูณมาตราส่วน ส่วนการประมาณด้วยพหุนามจะใช้แทนฟังก์ชันกระตุ้น ถัดไป: วิทยาการเข้ารหัสหลังยุคควอนตัม — อัลกอริทึมของ Shor และ Grover
คำถามที่พบบ่อย
บทเรียน “CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง”
ประยุกต์ใช้ CKKS กับการอนุมานแมชชีนเลิร์นนิงที่รักษาความเป็นส่วนตัว คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเข้ารหัสแบบโฮโมมอร์ฟิกคืออะไร
- รากฐาน Learning With Errors (LWE)
- รูปแบบ BGV และ BFV สำหรับการดำเนินการกับจำนวนเต็ม
- CKKS สำหรับเลขคณิตโดยประมาณและแมชชีนเลิร์นนิง