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

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