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ọiModel.fit
. - Khi viết mộ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 Euclidean (L2) tối đa của từng gradient riêng lẻ được tính cho 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àng thấp \(σC / B\), hiệu suất của mô hình được đào tạo về 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:
- Số lượng microbatch \(B\): Nói chung, việc tăng giá trị 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.
- Định mức cắt \(C\): Vì độ lệch chuẩn của nhiễu tỷ lệ với\(C\), có lẽ tốt nhất là đặt \(C\) là một số lượng tử (ví dụ: trung vị, phân vị thứ 75, phân vị thứ 90) của chỉ tiêu độ dốc. Có giá trị quá lớn của \(C\) thêm một lượng lớn tiếng ồn không cần thiết.
- Hệ số tiếng ồn \(σ\): Trong số 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:
Hãy làm theo những gợi ý sau để tìm ra các siêu tham số tối ưu:
- Bộ \(C\) đến một lượng tử như khuyến nghị ở trên. Giá trị 1,00 thường hoạt động tốt.
- Bộ \(B\) = 1, để có tốc độ luyện tập 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.
- Khi một giá trị phù hợp của \(σ\) được tìm thấy, chia tỷ lệ cả hai \(B\) Và \(σ\) bởi một hằng số để đạt được mức độ riêng tư hợp lý.