เอกสารนี้ถือว่าคุณคุ้นเคยกับ Differential Privacy อยู่แล้ว และได้พิจารณาแล้วว่าคุณต้องการใช้ TF Privacy เพื่อใช้การรับประกันความเป็นส่วนตัวที่แตกต่างในโมเดลของคุณ หากคุณไม่คุ้นเคยกับ Differential Privacy โปรดตรวจสอบ หน้าภาพรวม หลังจากติดตั้ง TF Privacy แล้ว ให้เริ่มต้นด้วยการทำตามขั้นตอนเหล่านี้:
1. เลือกเวอร์ชันส่วนตัวที่แตกต่างกันของเครื่องมือเพิ่มประสิทธิภาพที่มีอยู่
หากปัจจุบันคุณใช้ เครื่องมือเพิ่มประสิทธิภาพ TensorFlow คุณอาจต้องการเลือกเครื่องมือเพิ่มประสิทธิภาพที่มีชื่อ DPKeras*Optimizer
เช่น [ DPKerasAdamOptimizer
] ใน [ TF Privacy
]
หรือคุณอาจลองใช้เครื่องมือเพิ่มประสิทธิภาพแบบเวกเตอร์ เช่น [ tf_privacy.VectorizedDPKerasAdamOptimizer
] เพื่อการปรับปรุงความเร็วที่เป็นไปได้ (ในแง่ของจำนวนก้าวทั่วโลกต่อวินาที) พบว่าการใช้เครื่องมือเพิ่มประสิทธิภาพแบบเวกเตอร์ให้การเร่งความเร็วที่ไม่สอดคล้องกันในการทดลอง แต่ยังไม่เป็นที่เข้าใจกันดีนัก เหมือนเมื่อก่อน คุณน่าจะต้องการใช้เครื่องมือเพิ่มประสิทธิภาพที่คล้ายกับที่คุณใช้อยู่ตอนนี้ เครื่องมือเพิ่มประสิทธิภาพ vectorized เหล่านี้ใช้ตัวดำเนิน vectorized_map
ของ Tensorflow ซึ่งอาจใช้กับตัวดำเนินการ Tensorflow อื่นๆ ไม่ได้ หากเป็นกรณีนี้สำหรับคุณ โปรด เปิดปัญหาบนพื้นที่เก็บข้อมูล TF Privacy GitHub
2. คำนวณการสูญเสียสำหรับมินิแบทช์อินพุตของคุณ
เมื่อคำนวณการสูญเสียสำหรับมินิแบทช์อินพุตของคุณ ตรวจสอบให้แน่ใจว่าเป็นเวกเตอร์ที่มีหนึ่งรายการต่อตัวอย่าง แทนที่จะรวมเป็นสเกลาร์ นี่เป็นสิ่งจำเป็นเนื่องจาก DP-SGD จะต้องสามารถคำนวณการสูญเสียสำหรับไมโครแบทช์แต่ละรายการได้
3. ฝึกโมเดลของคุณ
ฝึกฝนโมเดลของคุณโดยใช้ DP Optimizer (ขั้นตอนที่ 1) และการสูญเสียแบบเวกเตอร์ (ขั้นตอนที่ 2) มีสองตัวเลือกในการทำเช่นนี้:
- ส่งผ่านเครื่องมือเพิ่มประสิทธิภาพและการสูญเสียเป็นอาร์กิวเมนต์ไปที่
Model.compile
ก่อนที่จะเรียกModel.fit
- เมื่อเขียนลูปการฝึกอบรมแบบกำหนดเอง ให้ใช้
Optimizer.minimize()
กับการสูญเสียแบบเวกเตอร์
เมื่อดำเนินการเสร็จแล้ว ขอแนะนำให้คุณปรับแต่งไฮเปอร์พารามิเตอร์ สำหรับคำแนะนำแบบสมบูรณ์ โปรดดู บทช่วยสอนความเป็นส่วนตัวของการจัดประเภท
4. ปรับไฮเปอร์พารามิเตอร์ DP-SGD
เครื่องมือเพิ่มประสิทธิภาพ tf_privacy
ทั้งหมดใช้ไฮเปอร์พารามิเตอร์เพิ่มเติมสามตัว:
-
l2_norm_clip
หรือ \(C\) - บรรทัดฐานการตัด (บรรทัดฐานแบบยุคลิดสูงสุด (L2) ของการไล่ระดับสีแต่ละรายการที่คำนวณต่อมินิแบทช์) -
noise_multiplier
หรือ \(σ\) - อัตราส่วนของค่าเบี่ยงเบนมาตรฐานต่อค่าตัดมาตรฐาน -
num_microbatches
หรือ \(B\) - จำนวนไมโครแบทช์ที่จะแยกมินิแบทช์แต่ละชุด
โดยทั่วไปค่าเบี่ยงเบนมาตรฐานที่มีประสิทธิผลก็จะยิ่งต่ำลง \(σC / B\)ยิ่งประสิทธิภาพของโมเดลที่ผ่านการฝึกอบรมในเมตริกการประเมินผลดีขึ้นเท่านั้น
ไฮเปอร์พารามิเตอร์ DP-SGD ใหม่ทั้งสามตัวมีผลและข้อดีดังต่อไปนี้:
- จำนวนไมโครแบทช์ \(B\): โดยทั่วไป การเพิ่มสิ่งนี้จะช่วยปรับปรุงอรรถประโยชน์ เนื่องจากจะช่วยลดค่าเบี่ยงเบนมาตรฐานของเสียงรบกวน อย่างไรก็ตาม มันจะทำให้การฝึกช้าลงในแง่ของเวลา
- บรรทัดฐานของการตัด \(C\): เนื่องจากค่าเบี่ยงเบนมาตรฐานของเสียงจะปรับขนาดด้วย\(C\)อาจเป็นการดีที่สุดที่จะตั้งค่า \(C\) เป็นควอนไทล์บางส่วน (เช่น ค่ามัธยฐาน เปอร์เซ็นไทล์ที่ 75 เปอร์เซ็นไทล์ที่ 90) ของบรรทัดฐานการไล่ระดับสี มีค่ามากเกินไป \(C\) เพิ่มเสียงรบกวนจำนวนมากโดยไม่จำเป็น
- ตัวคูณเสียงรบกวน \(σ\): จากไฮเปอร์พารามิเตอร์ทั้งสามนั้น ปริมาณความเป็นส่วนตัวจะขึ้นอยู่กับตัวคูณสัญญาณรบกวนเท่านั้น ยิ่งตัวคูณสัญญาณรบกวนมากขึ้นเท่าใด ก็จะยิ่งได้รับความเป็นส่วนตัวมากขึ้นเท่านั้น อย่างไรก็ตาม สิ่งนี้ยังมาพร้อมกับการสูญเสียประโยชน์ใช้สอยอีกด้วย
ข้อดีข้อเสียระหว่างอรรถประโยชน์ ความเป็นส่วนตัว และความเร็วในแง่ของจำนวนก้าว/วินาที สรุปได้ที่นี่:
ทำตามคำแนะนำเหล่านี้เพื่อค้นหาไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุด:
- ชุด \(C\) เป็นปริมาณตามที่แนะนำข้างต้น ค่า 1.00 มักจะทำงานได้ดี
- ชุด \(B\) = 1 สำหรับความเร็วการฝึกสูงสุด
- การทดลองเพื่อหาค่าสูงสุดของ σ ที่ยังคงให้ประโยชน์ที่ยอมรับได้ โดยทั่วไปแล้ว ค่า 0.01 หรือต่ำกว่าจะถือว่าทำงานได้ดี
- เมื่อได้ค่าที่เหมาะสมแล้ว \(σ\) พบแล้ว ปรับขนาดทั้งสองอย่าง \(B\) และ \(σ\) อย่างต่อเนื่องเพื่อให้ได้ความเป็นส่วนตัวในระดับที่เหมาะสม