เริ่มต้นใช้งาน

เอกสารนี้ถือว่าคุณคุ้นเคยกับ 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 ใหม่ทั้งสามตัวมีผลและข้อดีดังต่อไปนี้:

  1. จำนวนไมโครแบทช์ \(B\): โดยทั่วไป การเพิ่มสิ่งนี้จะช่วยปรับปรุงอรรถประโยชน์ เนื่องจากจะช่วยลดค่าเบี่ยงเบนมาตรฐานของเสียงรบกวน อย่างไรก็ตาม มันจะทำให้การฝึกช้าลงในแง่ของเวลา
  2. บรรทัดฐานของการตัด \(C\): เนื่องจากค่าเบี่ยงเบนมาตรฐานของเสียงจะปรับขนาดด้วย\(C\)อาจเป็นการดีที่สุดที่จะตั้งค่า \(C\) เป็นควอนไทล์บางส่วน (เช่น ค่ามัธยฐาน เปอร์เซ็นไทล์ที่ 75 เปอร์เซ็นไทล์ที่ 90) ของบรรทัดฐานการไล่ระดับสี มีค่ามากเกินไป \(C\) เพิ่มเสียงรบกวนจำนวนมากโดยไม่จำเป็น
  3. ตัวคูณเสียงรบกวน \(σ\): จากไฮเปอร์พารามิเตอร์ทั้งสามนั้น ปริมาณความเป็นส่วนตัวจะขึ้นอยู่กับตัวคูณสัญญาณรบกวนเท่านั้น ยิ่งตัวคูณสัญญาณรบกวนมากขึ้นเท่าใด ก็จะยิ่งได้รับความเป็นส่วนตัวมากขึ้นเท่านั้น อย่างไรก็ตาม สิ่งนี้ยังมาพร้อมกับการสูญเสียประโยชน์ใช้สอยอีกด้วย

ข้อดีข้อเสียระหว่างอรรถประโยชน์ ความเป็นส่วนตัว และความเร็วในแง่ของจำนวนก้าว/วินาที สรุปได้ที่นี่:

การแลกเปลี่ยน

ทำตามคำแนะนำเหล่านี้เพื่อค้นหาไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุด:

  • ชุด \(C\) เป็นปริมาณตามที่แนะนำข้างต้น ค่า 1.00 มักจะทำงานได้ดี
  • ชุด \(B\) = 1 สำหรับความเร็วการฝึกสูงสุด
  • การทดลองเพื่อหาค่าสูงสุดของ σ ที่ยังคงให้ประโยชน์ที่ยอมรับได้ โดยทั่วไปแล้ว ค่า 0.01 หรือต่ำกว่าจะถือว่าทำงานได้ดี
  • เมื่อได้ค่าที่เหมาะสมแล้ว \(σ\) พบแล้ว ปรับขนาดทั้งสองอย่าง \(B\) และ \(σ\) อย่างต่อเนื่องเพื่อให้ได้ความเป็นส่วนตัวในระดับที่เหมาะสม