
注:このプロジェクトは休止中です。
PrivacyRaven は、深層学習システムのためのプライバシーテストライブラリです。 これを使用して、モデルがさまざまなプライバシー攻撃に対してどの程度脆弱かを判断したり、プライバシー保護機械学習技術を評価したり、新しいプライバシーメトリクスや攻撃を開発したり、データの来歴証明やその他のユースケースのために攻撃を転用したりすることができます。
PrivacyRaven は、ラベルのみのブラックボックスモデル抽出、メンバーシップ推定、および(近日対応予定の)モデル反転攻撃をサポートしています。 また、差分プライバシー検証、自動化されたハイパーパラメータ最適化、さらなる攻撃クラス、その他の機能も計画しています。詳細については GitHub issues を参照してください。 PrivacyRaven は、OpenMined Privacy Conference、Empire Hacking、および Trail of Bits blog で紹介されました。
深層学習システム、特にニューラルネットワークは、顔認識や医療診断などのプライバシーに敏感なユースケースを含む、幅広いアプリケーションに普及しています。 しかし、これらのモデルは、モデルの知的財産とトレーニングデータの機密性の両方を標的とするプライバシー攻撃に対して脆弱です。 近年の文献では、さまざまなシステムにおけるプライバシー攻撃と防御の間の軍拡競争が見られます。 そして今まで、エンジニアや研究者は、この傾向に対抗するために必要なプライバシー分析ツールを持っていませんでした。 そこで、私たちは PrivacyRaven を開発しました。これは、以下を目指す機械学習保証ツールです:
PrivacyRaven は、各攻撃を複数のカスタマイズ可能かつ最適化可能なフェーズに分割します。 また、攻撃ごとに異なるインターフェースも提供されます。 以下に示すインターフェースは、コアインターフェースとして知られています。 PrivacyRaven はまた、文献に見られる特定の攻撃設定のラッパーと、すべての攻撃を実行する機能(run-all-attacks)も提供します。
PrivacyRaven でモデル抽出攻撃を起動する方法は次のとおりです:
#examples/extract_mnist_gpu.py
import privacyraven as pr
from privacyraven.utils.data import get_emnist_data
from privacyraven.extraction.core import ModelExtractionAttack
from privacyraven.utils.query import get_target
from privacyraven.models.victim import train_four_layer_mnist_victim
from privacyraven.models.four_layer import FourLayerClassifier
# Create a query function for a target PyTorch Lightning model
model = train_four_layer_mnist_victim()
def query_mnist(input_data):
# PrivacyRaven provides built-in query functions
return get_target(model, input_data, (1, 28, 28, 1))
# Obtain seed (or public) data to be used in extraction
emnist_train, emnist_test = get_emnist_data()
# Run a model extraction attack
attack = ModelExtractionAttack(
query_mnist, # query function
200, # query limit
(1, 28, 28, 1), # victim input shape
10, # number of targets
(3, 1, 28, 28), # substitute input shape
"copycat", # synthesizer name
FourLayerClassifier, # substitute model architecture
784, # substitute input size
emnist_train, # seed train data
emnist_test, # seed test data
)
被害者モデルに対する主な要件がクエリ関数のみであるため、PrivacyRaven はフレームワークや配布方法に関係なく、幅広いモデルを攻撃するために使用できます。
他の攻撃クラスも同様の方法で起動できます。詳細については examples フォルダを参照してください。
poetry update を実行します。poetry install を実行します。Jupyter Notebook 環境を使用したい場合は、poetry shell を実行してから jupyter notebook を実行してください。
さらに、Docker コンテナで PrivacyRaven を実行したい場合は、chmod +x build.sh を実行してから ./build.sh を実行してください。Docker に割り当てるリソース量によっては、PrivacyRaven のパフォーマンスが大幅に影響を受ける可能性があることに注意してください。
PrivacyRaven の使用または拡張について支援が必要な場合は、Empire Hacking の #privacyraven チャンネルにぜひ参加してください。 公式の pip リリースはまもなく公開されます。
PrivacyRaven はまだ開発初期段階にあり、急速な変更が行われていることに注意してください。ユーザーは頻繁に更新し、重要なユースケースへの PrivacyRaven の適用は避けることをお勧めします。
PrivacyRaven はまだ開発途中です。 新しい合成技術を組み込みたい場合でも、攻撃関数をより読みやすくしたい場合でも、できる範囲で貢献することを歓迎します。 開始するには CONTRIBUTING.md を参照してください。
カラス(raven)は、時代を通じてさまざまな文化でさまざまな概念と関連付けられてきました。 その中でも、カラスは一般的に予言と洞察と関連付けられています。 当然のことながら、このツールは深層学習のプライバシーに関する洞察を提供するように設計されているため、PrivacyRaven と名付けました。
コアメンテナは以下のとおりです:
このライブラリは Apache License 2.0 の下で利用できます。 規約の例外については、こちらからお問い合わせください。
PrivacyRaven は、機械学習プライバシーへの攻撃に関する数多くの研究に基づいて構築されていますが、PrivacyRaven の開発に最も重要な研究は以下のとおりです:
これは、PrivacyRaven について議論している出版物、プレゼンテーション、ブログ記事、その他の公開メディアのリストです。