Bắt đầu

Tài liệu này giả định rằng bạn đã quen với quyền riêng tư khác biệt và đã xác định rằng bạn muốn sử dụng TF Privacy để triển khai các đảm bảo quyền riêng tư khác biệt trong (các) mô hình của mình. Nếu bạn không quen với quyền riêng tư khác biệt, vui lòng xem lại trang tổng quan . Sau khi cài đặt TF Privacy, hãy bắt đầu bằng cách làm theo các bước sau:

1. Chọn phiên bản riêng tư khác của Trình tối ưu hóa hiện có

Nếu bạn hiện đang sử dụng trình tối ưu hóa TensorFlow, rất có thể bạn sẽ muốn chọn Trình tối ưu hóa có tên DPKeras*Optimizer , chẳng hạn như [ DPKerasAdamOptimizer ] trong [ TF Privacy ].

Theo tùy chọn, bạn có thể thử các trình tối ưu hóa được vector hóa như [ tf_privacy.VectorizedDPKerasAdamOptimizer ]. để có thể cải thiện tốc độ (về số bước toàn cầu mỗi giây). Việc sử dụng các trình tối ưu hóa vector hóa đã được phát hiện là mang lại tốc độ tăng tốc không nhất quán trong các thử nghiệm, nhưng vẫn chưa được hiểu rõ. Như trước đây, rất có thể bạn sẽ muốn sử dụng trình tối ưu hóa tương tự như trình tối ưu hóa bạn đang sử dụng. Các trình tối ưu hóa được vector hóa này sử dụng toán tử vectorized_map của Tensorflow, toán tử này có thể không hoạt động với một số toán tử Tensorflow khác. Nếu trường hợp này xảy ra với bạn, vui lòng mở một vấn đề trên kho lưu trữ TF Privacy GitHub .

2. Tính toán tổn thất cho lô nhỏ đầu vào của bạn

Khi tính toán tổn thất cho minibatch đầu vào của bạn, hãy đảm bảo rằng đó là một vectơ có một mục nhập cho mỗi ví dụ, thay vì tổng hợp nó thành một đại lượng vô hướng. Điều này là cần thiết vì DP-SGD phải có khả năng tính toán tổn thất cho từng vi lô riêng lẻ.

3. Huấn luyện mô hình của bạn

Huấn luyện mô hình của bạn bằng cách sử dụng Trình tối ưu hóa DP (bước 1) và mất dữ liệu được vector hóa (bước 2). Có hai lựa chọn để thực hiện việc này:

  • Chuyển trình tối ưu hóa và mất dữ liệu làm đối số cho Model.compile trước khi gọi Model.fit .
  • Khi viết vòng lặp đào tạo tùy chỉnh, hãy sử dụng Optimizer.minimize() trên phần mất mát được vector hóa.

Khi việc này hoàn tất, bạn nên điều chỉnh siêu tham số của mình. Để có hướng dẫn đầy đủ, hãy xem hướng dẫn về quyền riêng tư khi phân loại

4. Điều chỉnh siêu tham số DP-SGD

Tất cả các trình tối ưu hóa tf_privacy đều có ba siêu tham số bổ sung:

  • l2_norm_clip hoặc \(C\) - Định mức cắt (định mức Euclide (L2) tối đa của từng gradient riêng lẻ được tính toán trên mỗi minibatch).
  • noise_multiplier hoặc \(σ\) - Tỷ lệ độ lệch chuẩn so với định mức cắt.
  • num_microbatches hoặc \(B\) - Số lượng vi lô mà mỗi lô nhỏ được chia vào.

Nói chung, độ lệch chuẩn hiệu quả \(σC / B\)càng thấp thì hiệu suất của mô hình được đào tạo trên các số liệu đánh giá của nó càng tốt.

Ba siêu tham số DP-SGD mới có những tác dụng và sự cân bằng sau:

  1. Số lượng microbatch \(B\): Nói chung, việc tăng số lượng này sẽ cải thiện tiện ích vì nó làm giảm độ lệch chuẩn của nhiễu. Tuy nhiên, nó sẽ làm chậm quá trình đào tạo về mặt thời gian.
  2. Định mức cắt \(C\): Vì độ lệch chuẩn của nhiễu tỷ lệ với\(C\), nên tốt nhất nên đặt \(C\) thành một lượng tử nào đó (ví dụ: trung vị, phân vị thứ 75, phân vị thứ 90) của định mức độ dốc. Việc có giá trị \(C\) quá lớn sẽ tạo ra lượng nhiễu lớn không cần thiết.
  3. Hệ số nhiễu \(σ\): Trong ba siêu tham số, mức độ riêng tư chỉ phụ thuộc vào hệ số nhiễu. Hệ số nhiễu càng lớn thì càng thu được nhiều quyền riêng tư; tuy nhiên, điều này cũng đi kèm với việc mất đi tiện ích.

Những sự cân bằng giữa tiện ích, quyền riêng tư và tốc độ tính theo số bước/giây được tóm tắt ở đây:

sự đánh đổi

Hãy làm theo những gợi ý sau để tìm ra các siêu tham số tối ưu:

  • Đặt \(C\) thành lượng tử như khuyến nghị ở trên. Giá trị 1,00 thường hoạt động tốt.
  • Đặt \(B\) = 1, để có tốc độ huấn luyện tối đa.
  • Thử nghiệm để tìm giá trị lớn nhất của σ mà vẫn mang lại mức hữu dụng chấp nhận được. Nói chung, các giá trị 0,01 hoặc thấp hơn được quan sát là hoạt động tốt.
  • Sau khi tìm thấy giá trị phù hợp của \(σ\) , hãy chia tỷ lệ cả \(B\) và \(σ\) theo một hằng số để đạt được mức độ riêng tư hợp lý.