บทนำสู่ differential privacy

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Rebeca Gonzalez

Instructor

Differential privacy (DP) คืออะไร?

คุณย้อมผมอยู่ไหม?

$$ $$ ภาพมือที่กำลังชี้ไปยังปุ่มหนึ่งในสองปุ่ม โดยเลือกปุ่มที่มีเครื่องหมายถูก

ภาพวาดผู้หญิงผมบลอนด์

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ภาพเหรียญ

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ไดอะแกรมเหรียญที่มีลูกศรชี้ไปยังคำว่า heads ที่กิ่งซ้าย

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ไดอะแกรมเหรียญที่มีลูกศรชี้ไปยัง heads ที่กิ่งซ้าย ตามด้วยวลี "คำตอบจริง"

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ไดอะแกรมเหรียญที่มีลูกศรชี้ไปยัง tails ที่กิ่งขวา

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ไดอะแกรมเหรียญที่มีลูกศรชี้ไปยัง tails ที่กิ่งขวา ตามด้วยตัวเลือก head และ tails

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

ไดอะแกรมเหรียญที่มีลูกศรชี้ไปยัง tails ที่กิ่งขวา ตามด้วยตัวเลือก head และ tails โดย heads มีคำว่า "no" และ tails มีคำว่า "yes"

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Differential privacy (DP) คืออะไร?

Differential privacy คือนิยามเชิงคณิตศาสตร์ของความเป็นส่วนตัว

ภาพวาดใบหน้าที่แบ่งครึ่ง ด้านขวามีเครื่องหมายคำถาม

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

ใครใช้ differential privacy (DP) บ้าง?

โลโก้ Apple

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

ใครใช้ differential privacy (DP) บ้าง?

คีย์เวิร์ด emoji ของ Apple

โลโก้ Apple

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Global differential privacy

  • ผู้ดูแลที่เชื่อถือได้คอยปกป้องข้อมูล
  • เพิ่ม noise ลงในผลลัพธ์

ไดอะแกรม global differential privacy

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Local differential privacy

  • ไม่มีผู้ดูแลที่เชื่อถือได้
  • เพิ่ม noise ก่อนแชร์ข้อมูล

ไดอะแกรม local differential privacy

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Epsilon-differential privacy

อักษรกรีก epsilon $\epsilon$: วัดระดับความเป็นส่วนตัวและปริมาณ noise ในข้อมูลที่เผยแพร่

  • ค่า $\epsilon$ ที่สูงขึ้น หมายถึงข้อมูลที่แม่นยำกว่าแต่มีความเป็นส่วนตัวน้อยกว่า
  • ระบบที่มี $\epsilon$ ต่ำ จะให้ข้อมูลที่สุ่มสูง
ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Epsilon เป็นเลขชี้กำลัง

ตัวอย่างเช่น $\epsilon$ = 1

$\epsilon^1=2.72$

  • มีความเป็นส่วนตัวมากกว่า $\epsilon$ = 2 เกือบสามเท่า
    • $\epsilon^2=7.39$
  • และมีความเป็นส่วนตัวมากกว่า $\epsilon$ = 10 กว่า 8,000 เท่า
    • $\epsilon^10=22000$
ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

K-anonymity และ differential privacy

k-anonymity ให้การรับประกันแบบ "syntactic"

  • ยังคงถูกใช้งานอย่างแพร่หลาย
  • ไม่เพียงพอในหลายกรณี

Differential privacy คือโมเดลความเป็นส่วนตัวที่ได้รับการยอมรับในปัจจุบัน

  • บริษัทชั้นนำเลือกใช้: Apple, Uber, Google
  • สามารถวัดปริมาณการสูญเสียความเป็นส่วนตัวได้อย่างแม่นยำ
ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

แนะนำ diffprivlib

diffprivlib v0.3 จาก IBM

โลโก้ IBM

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Histogram

# Get counts and bars for non-private histogram of salaries
counts, bins = np.histogram(salaries)


# Normalize counts to get proportions of the height proportions = counts / counts.sum()
# Draw the histogram of proportions plt.bar(bins[:-1], height=proportions, width=(bins[1] - bins[0])) plt.show()
ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Histogram

ผลลัพธ์ histogram แบบไม่เป็นส่วนตัว

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Private histogram

import diffprivlib.tools

# Get counts and bars for private histogram of salaries with epsilon of 0.1 dp_counts, dp_bins = tools.histogram(salaries, epsilon=0.1)
# Normalize counts to get proportions dp_proportions = dp_counts / dp_counts.sum()
# Draw the histogram of proportions and see differences plt.bar(dp_bins[:-1], dp_proportions, width=(dp_bins[1] - dp_bins[0])) plt.show()
ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Private histogram

Histogram แบบไม่เป็นส่วนตัว ผลลัพธ์ histogram แบบไม่เป็นส่วนตัว

ผลลัพธ์ private histogram ผลลัพธ์ private histogram

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

มาฝึกกันเถอะ!

ความเป็นส่วนตัวของข้อมูลและการทำให้ข้อมูลไม่ระบุตัวตนด้วย Python

Preparing Video For Download...