Дифференциальная приватность в машинном обучение

a42f15a320e5afac30b8c77f022c5177.png

Привет!

Концепция дифференциальной приватности впервые появилась в начале 2000-х. Она позволяет проводить анализ данных, сохраняя информацию о личности индивидов неприкосновенной. В машинном обучение это означает возможность обучать модели, делающие общие выводы, не раскрывая информацию о конкретных индивидах в наборе данных.

Дифференциальная приватность

Итак, дифференциальная приватность — это концепция и методология, предназначенная для защиты конфиденциальности индивидуальных записей в наборе данных при сохранении полезности общей информации.

Дифференциальная приватность определяется через механизм, который обеспечивает, что вероятность получения определенного результата анализа данных практически не изменяется, независимо от того, присутствует ли информация об одном конкретном индивиде в наборе данных или нет. Это достигается путем добавления контролируемого количества случайности к результатам запросов, что обеспечивает «приватность через неопределенность».

Шумоподобные функции — это математические функции или алгоритмы, которые генерируют случайный шум, который добавляется к данным или результатам запросов. Этот шум делает данные менее чувствительными к деталям искомой информации. Шум добавляется таким образом, чтобы его влияние на общую статистику данных было контролируемым и предсказуемым.

Бюджет приватности

Бюджет приватности представляет собой ограниченный ресурс, который определяет, сколько приватности может быть потеряно или компрометировано при выполнении операций над данными. Этот ресурс измеряется в некоторых единицах приватности, таких как ε. Чем меньше значение ε, тем выше уровень приватности и, следовательно, более сильная защита личных данных.

Бюджет приватности используется для определения, сколько шума можно добавить к данным, чтобы обеспечить приватность. Чем меньше бюджет приватности, тем меньше шума можно добавить, что делает результаты более точными, но менее приватными.

Бюджет приватности также определяет, какие операции могут быть выполнены над данными.

Математические принципы

ε-дифференциальная приватность

Это основной подход в дифференциальной приватности.

Механизм M обеспечивает ε-дифференциальную приватность, если для любых двух соседних наборов данных D и D′ (различающихся на одну запись), и для всех S в области значений M, выполняется условие:

\Pr[M(D) \in S] \leq \exp(\epsilon) \times \Pr[M(D') \in S

ϵ — это неотрицательный параметр, известный как параметр приватности, который определяет степень приватности. Чем меньше ϵ, тем выше уровень приватности.

(ε, δ)-дифференциальная приватность

Это расширение ε-дифференциальной приватности, позволяющее небольшую вероятность нарушения ε-дифференциальной приватности. Определение таково:

Определение: Механизм M обеспечивает (ε, δ)-дифференциальную приватность, если для всех соседних наборов данных D и D' и для всех S в области значений M, выполняется условие:

\Pr[M(D) \in S] \leq \exp(\epsilon) \times \Pr[M(D') \in S] + \delta

δ представляет собой небольшую вероятность, при которой ε-дифференциальная приватность может быть нарушена. Таким образом, (ε, δ)-дифференциальная приватность предоставляет дополнительную гибкость, разрешая небольшую вероятность утечки информации.

Механизмы дифференциальной приватности

Механизм Лапласа

Механизм Лапласа является одним из наиболее распространенных методов для достижения ε-дифференциальной приватности. Он работает путем добавления шума, который следует распределению Лапласа, к результатам запросов данных.

Чтобы применить механизм Лапласа к функции f, к выходным данным добавляется шум, генерируемый согласно распределению Лапласа

\text{Laplace}(\lambda)

где

\lambda = \Delta f / \epsilon

Здесь Δf обозначает чувствительность функции f, а ϵ — параметр приватности.

В питоне к примеру можно реализовать так:

import numpy as np

def laplace_mechanism(query_result, sensitivity, epsilon):
    # Генерируем шум согласно распределению Лапласа
    scale = sensitivity / epsilon
    laplace_noise = np.random.laplace(0, scale, len(query_result))
    
    # Добавляем шум к результатам запроса данных
    noisy_result = query_result + laplace_noise
    
    return noisy_result

# Пример использования
query_result = [100, 150, 200]  # Результаты запроса данных
sensitivity = 1.0  # Чувствительность функции f
epsilon = 0.5  # Параметр приватности

noisy_result = laplace_mechanism(query_result, sensitivity, epsilon)
print("Исходные результаты:", query_result)
print("Зашумленные результаты:", noisy_result)
Исходные результаты: [100, 150, 200]
Зашумленные результаты: [103.61309249 152.76949464 200.85835645]

2. Гауссов механизм

Гауссов механизм применяется для достижения (ε, δ)-дифференциальной приватности, используя шум, следующий нормальному распределению.

В этом механизме к результатам функции f добавляется шум, соответствующий нормальному распределению

( \mathcal{N}(0, \sigma^2))

где σ определяется на основе чувствительности функции f, параметров ε и δ. Выбор параметров ε и δ в этом случае более сложен и зависит от требуемого уровня приватности и допустимой вероятности нарушения.

import numpy as np

def gaussian_mechanism(query_result, sensitivity, epsilon, delta):
    # Вычисляем стандартное отклонение σ на основе чувствительности, ε и δ
    sigma = sensitivity * np.sqrt(2 * np.log(1.25 / delta)) / epsilon
    
    # Генерируем шум с нормальным распределением
    gaussian_noise = np.random.normal(0, sigma, len(query_result))
    
    # Добавляем шум к результатам запроса данных
    noisy_result = query_result + gaussian_noise
    
    return noisy_result

# Пример использования
query_result = [100, 150, 200]  # Результаты запроса данных
sensitivity = 1.0  # Чувствительность функции f
epsilon = 0.5  # Параметр ε
delta = 1e-5  # Параметр δ

noisy_result = gaussian_mechanism(query_result, sensitivity, epsilon, delta)
print("Исходные результаты:", query_result)
print("Зашумленные результаты:", noisy_result)
Исходные результаты: [100, 150, 200]
Зашумленные результаты: [ 97.55383932 156.88441597 205.18746787]

Сегодня также существуют компании, которые предлагают метод обработки данных с использованием синтетических или сгенерированных данных вместо анонимизации.

Синтетические данными создаются не путем удаления или замены личных данных в оригинальных наборах данных, а путем генерации новых данных, которые статистически и математически неотличимы от исходных. Новые данные сохраняют те же закономерности, распределения и характеристики, что и оригинальные данные.

Точность в генерации данных достигается с помощью генеративных нейронных сетей. Они способны анализировать и извлекать закономерности из больших объемов данных, а затем использовать эту информацию для создания новых данных, которые соответствуют оригинальным данным.

Про работу с данными, нейронные сети и машинное обучение, эксперты из OTUS рассказывают в рамках онлайн-курсов. Ознакомиться со списком курсов можно тут, а в календаре мероприятий вы можете зарегистрироваться на ряд бесплатных вебинаров.

© Habrahabr.ru