SecMLは、機械学習(ML)アルゴリズムのセキュリティ評価のためのオープンソースPythonライブラリです。
強力な機能を備えています:
scikit-learnでサポートされているすべての教師あり学習アルゴリズムと、PyTorch深層学習プラットフォームによるニューラルネットワーク(NN)が利用可能です。numpyライブラリ経由)と疎データ(scipyライブラリ経由)の両方を完全かつ透過的にサポートします。scikit-learnおよびpytorchのすべてのマルチプロセッシング機能との完全な互換性と、joblibライブラリの組み込みサポートを提供します。SecMLは現在開発中です。 バグを発見した場合は、GitLab issue trackerを使用して報告してください。 また、今後の開発の方向性の概要については、ROADMAPをご覧ください。
SecMLは、依存関係とともに特定の環境にインストールすることをお勧めします。
環境を作成・管理する一般的なフレームワークとしては、virtualenvやcondaがあります。どちらの代替手段も環境を正しくセットアップするための便利なユーザーガイドを提供しているため、このガイドでは設定手順については説明しません。
SecMLはPython >= 3.6で追加の設定手順なしで実行できます。主要なmacOSバージョン、Linuxディストリビューション、Windows用のホイールパッケージとしてすべての依存関係が利用可能だからです。
ただし、追加の高度な機能をサポートするには、使用するオペレーティングシステムに応じてさらにパッケージが必要になる場合があります:
Linux(Ubuntu 16.04以降または同等のディストリビューション)
python3-tk;macOS(10.12 Sierra以降)
Windows(7以降)
インストール手順を開始する前に、次のコマンドを実行してpipマネージャーの最新バージョンを入手してください: pip install -U pip
Pythonパッケージsetuptoolsがセットアッププロセスを管理します。次のコマンドで最新バージョンを入手してください: pip install -U setuptools
環境がセットアップされたら、SecMLは複数の方法でインストールおよび実行できます:
公式PyPIリポジトリからインストール:
pip install secmlホイール/zipパッケージからインストール (https://pypi.python.org/pypi/secml#files):
pip install <package-file>いずれの場合も、セットアッププロセスは正しい依存関係をインストールしようとします。インストール中に問題が発生した場合は、まずpip install -r requirements.txtを実行して依存関係をインストールしてみてください。
これでSecMLはPythonでimport secmlでインポートできるようになります。
上記のいずれかの方法で現在のインストールを更新するには、pip installディレクティブの後に-Uパラメータを追加してください。ソースバージョンとターゲットバージョンに応じた具体的なアップグレード手順については、Update Guidesを参照してください。
SecMLには、必要に応じてインストールできる一連の追加コンポーネントが用意されています。
インストールする追加コンポーネントを指定するには、pip installを呼び出す際に[extras]セクションを追加します。extrasはインストールしたいコンポーネントのカンマ区切りリストです。例:
pip install secml[extra1,extra2]上記のpipによるインストール手順はすべて、[extras]セクションの定義を許可しています。
pytorch : PyTorch深層学習プラットフォームによるニューラルネットワーク(NN)。torch >= 1.4, torchvision >= 0.5pip install secml[pytorch] -f https://download.pytorch.org/whl/torch_stable.html。foolbox : Foolboxのラッパー。ニューラルネットワークを欺く敵対的サンプルを作成するPythonツールボックス。foolbox >= 3.3.0, eagerpy >= 0.29.0, torch >= 1.4, torchvision >= 0.5cleverhans : CleverHansのラッパー。機械学習システムの敵対的サンプルに対する脆弱性をベンチマークするPythonライブラリ。tensorflow >= 1.14.*, < 2, cleverhans < 3.1
: では利用不可SecMLは、Pythonによる科学計算および機械学習で広く使用されているパッケージ、numpy、scipy、scikit-learn、pytorchに基づいています。
その結果、ライブラリのインターフェースのほとんどは、これらのパッケージの頻繁なユーザーにはかなり馴染み深いはずです。
主要なデータクラスはsecml.array.CArrayで、密データと疎データの両方を埋め込んだ多次元(現在は2次元に制限)の配列構造であり、入力としてnumpy.ndarrayおよびscipy.sparse.csr_matrixを受け入れます(より多くの疎フォーマットがまもなくサポートされる予定です)。この構造は、ライブラリ内の他のすべてのクラスの標準的な入出力です。
secml.mlパッケージには、分類器、損失関数と正則化関数、カーネル、パフォーマンス評価関数など、すべての機械学習アルゴリズムとサポートクラスが含まれています。また、secml.model_zooパッケージによって事前学習済みモデルのZooも提供されています。
secml.advパッケージには、カスタム開発されたソルバーに基づく回避攻撃およびポイズニング攻撃と、機械学習アルゴリズムのセキュリティ評価を簡単に実行するためのクラスが含まれています。
secml.explanationパッケージには、特徴やトレーニングプロトタイプなどの関連コンポーネントを分析することで分類器の決定を解釈できる、さまざまな説明可能な機械学習メソッドが含まれています。
secml.figureパッケージには、matplotlibに基づく可視化およびプロットフレームワークが含まれています。
コントリビューションと開発者向けガイドは以下で入手可能です: https://secml.gitlab.io/developers/
学術出版でSecMLを使用する場合は、以下の論文を引用してください:
secml: A Python Library for Secure and Explainable Machine Learning, Melis et al., arXiv preprint arXiv:1912.10013 (2019).
BibTeXエントリ:
@article{melis2019secml,
title={secml: A Python Library for Secure and Explainable Machine Learning},
author={Melis, Marco and Demontis, Ambra and Pintor, Maura and Sotgiu, Angelo and Biggio, Battista},
journal={arXiv preprint arXiv:1912.10013},
year={2019}
}
このライブラリはPRALab - Pattern Recognition and Applications Labによってメンテナンスされています。
コントリビューター一覧:
[1] イタリア、カリャリ大学、電気電子工学科
[2] イタリア、Pluribus One
numpy Travis E, Oliphant. "A guide to NumPy", USA: Trelgol Publishing, 2006.scipy Travis E. Oliphant. "Python for Scientific Computing", Computing in
Science & Engineering, 9, 10-20, 2007.scikit-learn Pedregosa et al., "Scikit-learn: Machine Learning in Python",
JMLR 12, pp. 2825-2830, 2011.matplotlib J. D. Hunter, "Matplotlib: A 2D Graphics Environment",
Computing in Science & Engineering, vol. 9, no. 3, pp. 90-95, 2007.pytorch Paszke, Adam, et al. "Automatic differentiation in pytorch.", NIPS-W, 2017.cleverhans Papernot, Nicolas, et al. "Technical Report on the CleverHans v2.1.0
Adversarial Examples Library." arXiv preprint arXiv:1610.00768 (2018).foolbox Rauber, Jonas, et. al. "Foolbox: A Python toolbox to benchmark the
robustness of machine learning models", arXiv preprint arXiv:1707.04131
(2017).SecMLは、欧州連合のALOHAプロジェクト Horizon 2020研究・イノベーションプログラム(助成契約番号780788)の支援を受けて部分的に開発されました。
SecMLは、PRALab - Pattern Recognition and Applications labおよびPluribus One s.r.l.によって、Apache License 2.0のもとで開発されました。無断複写・転載を禁じます。
python >= 3.8tf-gpu : GPUサポート付きのTensorFlowパッケージをインストールするためのショートカット(LinuxおよびWindowsのみ)。tensorflow-gpu >= 1.14.*, < 2python >= 3.8では利用不可