機器學習( ML )越來越多地用于醫療、教育和金融服務等多個領域的決策。由于 ML 模型被用于對人們有實際影響的情況,因此了解在消除或最小化偏見影響的決策中考慮了哪些特征是至關重要的。
模型解釋性 幫助開發人員和其他利益相關者理解模型特征和決策的根本原因,從而使流程更加透明。能夠解釋模型可以幫助數據科學家解釋他們的模型做出決策的原因,為模型增加價值和信任。在本文中,我們將討論:
對模型可解釋性的需求
使用 SHAP 的可解釋性
使用 演示筆記本 在 Azure 機器學習上使用 SHAP 進行模型解釋。
為什么我們需要解釋性?
有六個主要原因證明機器學習中需要模型互操作性:
理解模型中的公平性問題
對目標的準確理解
創建健壯的模型
調試模型
解釋結果
啟用審核
了解模型中的公平性問題: 可解釋模型可以解釋選擇結果的原因。在社會背景下,這些解釋將不可避免地揭示對代表性不足群體的固有偏見。克服這些偏見的第一步是看看它們是如何表現出來的。
更準確地理解目標: 對解釋的需要也源于我們在充分理解問題方面的差距。解釋是確保我們能夠看到差距影響的方法之一。它有助于理解模型的預測是否符合利益相關者或專家的目標。
創建穩健的模型: 可解釋模型可以幫助我們理解預測中為什么會存在一些差異,這有助于使預測更加穩健,并消除預測中極端和意外的變化;以及為什么會出現錯誤。增強穩健性也有助于在模型中建立信任,因為它不會產生顯著不同的結果。
模型可解釋性還可以幫助調試模型,解釋 向利益相關者提供成果,并使 auditing 以滿足法規遵從性。
需要注意的是,在某些情況下,可解釋性 MIG 不太重要。例如,在某些情況下,添加可解釋模型可以幫助對手欺騙系統。
現在我們了解了什么是可解釋性以及為什么我們需要它,讓我們看看最近非常流行的一種實現方法。
使用 SHAP 和 cuML 的 SHAP 的可解釋性
有不同的方法旨在提高模型的可解釋性;一種模型不可知的方法是 夏普利值 。這是一種從聯盟博弈論中衍生出來的方法,它提供了一種公平地將“支出”分配給各個功能的方法。在機器學習模型的情況下,支出是模型的預測/結果。它的工作原理是計算整個數據集的 Shapley 值并將其組合。
cuML 是 RAPIDS 中的機器學習庫,支持單 GPU 和多 GPU 機器學習算法,通過 內核解釋程序 和 置換解釋者 提供 GPU 加速模型解釋能力。 核形狀 是 SHAP 最通用和最常用的黑盒解釋程序。它使用加權線性回歸來估計形狀值,使其成為一種計算效率高的近似值方法。
內核 SHAP 的 cuML 實現為快速 GPU 模型提供了加速,就像 cuML 中的那些模型一樣。它們也可用于基于 CPU 的模型,在這些模型中仍然可以實現加速,但由于數據傳輸和模型本身的速度,它們 MIG 可能會受到限制。
在下一節中,我們將討論如何在 Azure 上使用 RAPIDS 內核 SHAP 。
使用解釋社區和 RAPIDS 實現可解釋性
InterpretML 是一個開源軟件包,將最先進的機器學習可解釋性技術集成在一起。雖然本產品的解釋包中涵蓋了主要的解釋技術和玻璃盒解釋模型, Interpret-Community 擴展了解釋存儲庫,并進一步整合了社區開發的和實驗性的解釋性技術和功能,這些技術和功能旨在實現現實場景的解釋性。
我們可以將其擴展到 解釋 Microsoft Azure 上的模型 ,稍后將對其進行更詳細的討論。解釋社區提供各種解釋模型的技術,包括:
Tree 、 Deep 、 Linear 和 Kernel Explainers 基于形狀,
模擬解釋者 基于訓練 全局代理模型 (訓練模型以近似黑盒模型的預測),以及
排列特征重要性( PFI )解釋者 基于 布雷曼關于蘭德森林的論文 ,其工作原理是對整個數據集一次一個特征的數據進行洗牌,并估計其對性能指標的影響;變化越大,功能越重要。它可以解釋整體行為,而不是個人預測。
在社區中集成 GPU 加速 SHAP
為了使 GPU – 加速 SHAP 易于最終用戶訪問,我們將 integrated 從 cuML 的 GPU 內核解釋者 添加到 interpret-community 包中。有權訪問 Azure 上具有 GPU s 的虛擬機 ( NVIDIA Pascal 或更高版本)的用戶可以安裝 RAPIDS (》= 0.20 )并通過將 use _ ZFK5]標志設置為 True 來啟用 GPU 解釋程序。
from interpret.ext.blackbox import TabularExplainer # "features" and "classes" fields are optional explainer = TabularExplainer(model, x_train, features=breast_cancer_data.feature_names, classes=classes, use_gpu=True)
新添加的 GPUKernelExplainer 還使用 cuML K- 均值 來復制 shap.kmeans 的行為。 KMeans 減少了解釋者要處理的背景數據的大小。它總結了通過 K 個平均樣本傳遞的數據集,這些樣本由數據點的數量加權。將 sklearn K-Means 替換為 cuML 使我們能夠利用 GPU 的速度提升,即使在 SHAP 之前的數據預處理過程中也是如此。
基于我們的實驗,我們發現,當與 cuML KerneleExplainer 一起使用時, cuML 模型在某些情況下會產生最高可達 270 倍的速度提升的最佳結果。我們還看到了具有優化和快速預測調用的模型的最佳加速,如優化的 sklearn 。 svm 。 LinearSVR 和 cuml 。 svm 。 SVR ( kernel =’ linear ‘) 所示。
Azure 中的模型解釋
Azure 機器學習提供了一種通過 azureml-interpret SDK 包獲取常規和自動化 ML 培訓說明的方法。它使用戶能夠在訓練和推理期間,在真實世界數據集上實現大規模的模型可解釋性[2]。我們還可以使用交互式可視化來進一步探索整體和單個模型預測,并進一步了解我們的模型和數據集。 Azure 解釋使用解釋社區包中的技術,這意味著它現在支持 RAPIDS 形狀。我們將瀏覽一個演示 Azure 上使用 cuML 形狀的模型可解釋性 的示例筆記本。
在 GPU 虛擬機上使用自定義 Docker 映像設置 RAPIDS 環境(本例中為標準的_ NC6s _ v3 )。
from azureml.core import Environment | |
environment_name = "rapids" | |
env = Environment(environment_name) | |
env.docker.enabled = True | |
env.docker.base_image = None | |
env.docker.base_dockerfile = """ | |
FROM rapidsai/rapidsai:0.19-cuda11.0-runtime-ubuntu18.04-py3.8 | |
RUN apt-get update && \ | |
apt-get install -y fuse && \ | |
apt-get install -y build-essential && \ | |
apt-get install -y python3-dev && \ | |
source activate rapids && \ | |
pip install azureml-defaults && \ | |
pip install azureml-interpret && \ | |
pip install interpret-community==0.18 && \ | |
pip install azureml-telemetry | |
""" | |
env.python.user_managed_dependencies = True |
我們提供了一個腳本( train_explain.py ),它使用 cuML SVM 模型訓練和解釋了一個二進制分類問題。在這個例子中,我們使用 希格斯數據集 來預測一個過程是否產生希格斯玻色子。它有 21 個由加速器中的粒子探測器測量的運動學特性。
然后,該腳本使用 GPU SHAP KerneleExplainer 生成模型解釋。
生成的解釋使用我們的 ExplanationClient 上傳到 Azure 機器學習,這是上傳和下載解釋的客戶端。這可以在您的計算機上本地運行,也可以在 Azure 機器學習計算機上遠程運行。
生成的解釋上傳到 Azure 機器學習運行歷史記錄后,您可以在 Azure 機器學習工作室 中的解釋儀表板上查看可視化。
圖 1 :顯示模型性能和特性重要性的解釋儀表板。
我們在 Azure 中的單個 explain _全局調用上對 CPU 和 GPU 實現進行了基準測試。 explain _ global 函數在使用 explain _ local 時返回聚合特征重要性值,而不是實例級特征重要性值。我們比較了 cuml 。 svm 。 SVR ( kernel =’ rbf ‘)與 sklearn 。 svm 。 SVR ( kernel =’ rbf ‘)對形狀為( 10000 , 40 )的合成數據的影響。
從表 1 中我們可以觀察到,當我們使用 GPU 虛擬機( Standard _ NC6S _ v3 )時,與具有 16 個內核的 CPU 虛擬機( Standard _ DS5 _ v2 )相比, 2000 行解釋的速度提高了 420 倍。我們注意到,在 16 核 CPU 虛擬機上使用 64 核 CPU 虛擬機(標準_ D64S _ v3 )可以產生更快的 CPU 運行時間(大約 1 。 3 倍)。這種更快的 CPU 運行仍然比 GPU 運行慢得多,而且更昂貴。 GPU 運行速度快了 380 倍,成本為 0 。 52 美元,而 64 核 CPU 虛擬機的成本為 23 美元。我們在 Azure 的美國東部地區進行了實驗。
圖 2 : Azure 上 CPU 和 GPU 虛擬機的比較。
表 1 :標準 DS5 和標準 NC6s _ v3 的比較。
從我們的實驗來看,在 Azure 上使用 cuML 的 KernelExplainer 被證明更具成本和時間效率。隨著行數的增加,速度會更好。 GPU SHAP 不僅解釋了更多的數據,而且還節省了更多的資金和時間。這會對時間敏感的企業產生巨大影響。
這是一個簡單的例子,說明如何在 Azure 上使用 cuML 的 SHAP 進行解釋。這可以擴展到具有更有趣的模型和數據集的更大示例。
關于作者
Nanthini 是 NVIDIA 的數據科學家和軟件開發人員。她在 RAPIDS 團隊工作,該團隊專注于使用 GPU 加速數據科學管道。她的工作包括進行概念驗證、開發和維護功能、將 RAPIDS 與外部框架集成,以及通過示例用例演示這些工具的使用。最近,她一直致力于 RAPIDS 框架和微軟解釋之間的集成。 2019 ,她獲得了賓夕法尼亞大學計算機科學碩士學位。
審核編輯:郭婷
-
gpu
+關注
關注
28文章
4744瀏覽量
129018 -
機器學習
+關注
關注
66文章
8423瀏覽量
132751
發布評論請先 登錄
相關推薦
評論