最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在PyTorch中實(shí)現(xiàn)可解釋的神經(jīng)網(wǎng)絡(luò)模型的方法詳解

 更新時(shí)間:2023年06月21日 08:42:23   作者:冷凍工廠  
這篇文章主要為大家介紹在PyTorch如何中實(shí)現(xiàn)可解釋的神經(jīng)網(wǎng)絡(luò)模型,并為您提供使用簡(jiǎn)單的 PyTorch 接口實(shí)現(xiàn)最先進(jìn)的基于概念的模型的工具,需要的朋友可以參考下

目的

深度學(xué)習(xí)系統(tǒng)缺乏可解釋性對(duì)建立人類信任構(gòu)成了重大挑戰(zhàn)。這些模型的復(fù)雜性使人類幾乎不可能理解其決策背后的根本原因。

深度學(xué)習(xí)系統(tǒng)缺乏可解釋性阻礙了人類的信任。

為了解決這個(gè)問題,研究人員一直在積極研究新的解決方案,從而產(chǎn)生了重大創(chuàng)新,例如基于概念的模型。這些模型不僅提高了模型的透明度,而且通過在訓(xùn)練過程中結(jié)合高級(jí)人類可解釋的概念(如“顏色”或“形狀”),培養(yǎng)了對(duì)系統(tǒng)決策的新信任感。因此,這些模型可以根據(jù)學(xué)習(xí)到的概念為其預(yù)測(cè)提供簡(jiǎn)單直觀的解釋,從而使人們能夠檢查其決策背后的原因。這還不是全部!它們甚至允許人類與學(xué)習(xí)到的概念進(jìn)行交互,讓我們能夠控制最終的決定。

基于概念的模型允許人類檢查深度學(xué)習(xí)預(yù)測(cè)背后的推理,并讓我們重新控制最終決策。

在本文中,我們將深入研究這些技術(shù),并為您提供使用簡(jiǎn)單的 PyTorch 接口實(shí)現(xiàn)最先進(jìn)的基于概念的模型的工具。通過實(shí)踐經(jīng)驗(yàn),您將學(xué)習(xí)如何利用這些強(qiáng)大的模型來(lái)增強(qiáng)可解釋性并最終校準(zhǔn)人類對(duì)您的深度學(xué)習(xí)系統(tǒng)的信任。

概念瓶頸模型

在這個(gè)介紹中,我們將深入探討概念瓶頸模型。這模型在 2020 年國(guó)際機(jī)器學(xué)習(xí)會(huì)議上發(fā)表的一篇論文中介紹,旨在首先學(xué)習(xí)和預(yù)測(cè)一組概念,例如“顏色”或“形狀”,然后利用這些概念來(lái)解決下游分類任務(wù):

通過遵循這種方法,我們可以將預(yù)測(cè)追溯到提供解釋的概念,例如“輸入對(duì)象是一個(gè){apple},因?yàn)樗莧spherical}和{red}。”

概念瓶頸模型首先學(xué)習(xí)一組概念,例如“顏色”或“形狀”,然后利用這些概念來(lái)解決下游分類任務(wù)。

實(shí)現(xiàn)

為了說明概念瓶頸模型,我們將重新審視著名的 XOR 問題,但有所不同。我們的輸入將包含兩個(gè)連續(xù)的特征。為了捕捉這些特征的本質(zhì),我們將使用概念編碼器將它們映射為兩個(gè)有意義的概念,表示為“A”和“B”。我們?nèi)蝿?wù)的目標(biāo)是預(yù)測(cè)“A”和“B”的異或 (XOR)。通過這個(gè)例子,您將更好地理解概念瓶頸如何在實(shí)踐中應(yīng)用,并見證它們?cè)诮鉀Q具體問題方面的有效性。

我們可以從導(dǎo)入必要的庫(kù)并加載這個(gè)簡(jiǎn)單的數(shù)據(jù)集開始:

import torch
import torch_explain as te
from torch_explain import datasets
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
x, c, y = datasets.xor(500)
x_train, x_test, c_train, c_test, y_train, y_test = train_test_split(x, c, y, test_size=0.33, random_state=42)

接下來(lái),我們實(shí)例化一個(gè)概念編碼器以將輸入特征映射到概念空間,并實(shí)例化一個(gè)任務(wù)預(yù)測(cè)器以將概念映射到任務(wù)預(yù)測(cè):

concept_encoder = torch.nn.Sequential(
    torch.nn.Linear(x.shape[1], 10),
    torch.nn.LeakyReLU(),
    torch.nn.Linear(10, 8),
    torch.nn.LeakyReLU(),
    torch.nn.Linear(8, c.shape[1]),
    torch.nn.Sigmoid(),
)
task_predictor = torch.nn.Sequential(
    torch.nn.Linear(c.shape[1], 8),
    torch.nn.LeakyReLU(),
    torch.nn.Linear(8, 1),
)
model = torch.nn.Sequential(concept_encoder, task_predictor)

然后我們通過優(yōu)化概念和任務(wù)的交叉熵?fù)p失來(lái)訓(xùn)練網(wǎng)絡(luò):

optimizer = torch.optim.AdamW(model.parameters(), lr=0.01)
loss_form_c = torch.nn.BCELoss()
loss_form_y = torch.nn.BCEWithLogitsLoss()
model.train()
for epoch in range(2001):
    optimizer.zero_grad()
    # generate concept and task predictions
    c_pred = concept_encoder(x_train)
    y_pred = task_predictor(c_pred)
    # update loss
    concept_loss = loss_form_c(c_pred, c_train)
    task_loss = loss_form_y(y_pred, y_train)
    loss = concept_loss + 0.2*task_loss
    loss.backward()
    optimizer.step()

訓(xùn)練模型后,我們?cè)u(píng)估其在測(cè)試集上的性能:

c_pred = concept_encoder(x_test)
y_pred = task_predictor(c_pred)
concept_accuracy = accuracy_score(c_test, c_pred > 0.5)
task_accuracy = accuracy_score(y_test, y_pred > 0)

現(xiàn)在,在幾個(gè) epoch 之后,我們可以觀察到概念和任務(wù)在測(cè)試集上的準(zhǔn)確性都非常好(~98% 的準(zhǔn)確性)!

由于這種架構(gòu),我們可以通過根據(jù)輸入概念查看任務(wù)預(yù)測(cè)器的響應(yīng)來(lái)為模型預(yù)測(cè)提供解釋,如下所示:

c_different = torch.FloatTensor([0, 1])
print(f"f({c_different}) = {int(task_predictor(c_different).item() > 0)}")
c_equal = torch.FloatTensor([1, 1])
print(f"f({c_different}) = {int(task_predictor(c_different).item() > 0)}")

這會(huì)產(chǎn)生例如 f([0,1])=1 和 f([1,1])=0 ,如預(yù)期的那樣。這使我們能夠更多地了解模型的行為,并檢查它對(duì)于任何相關(guān)概念集的行為是否符合預(yù)期,例如,對(duì)于互斥的輸入概念 [0,1] 或 [1,0],它返回的預(yù)測(cè)y=1。

概念瓶頸模型通過將預(yù)測(cè)追溯到概念來(lái)提供直觀的解釋。

淹沒在準(zhǔn)確性與可解釋性的權(quán)衡中

概念瓶頸模型的主要優(yōu)勢(shì)之一是它們能夠通過揭示概念預(yù)測(cè)模式來(lái)為預(yù)測(cè)提供解釋,從而使人們能夠評(píng)估模型的推理是否符合他們的期望。

然而,標(biāo)準(zhǔn)概念瓶頸模型的主要問題是它們難以解決復(fù)雜問題!更一般地說,他們遇到了可解釋人工智能中眾所周知的一個(gè)眾所周知的問題,稱為準(zhǔn)確性-可解釋性權(quán)衡。實(shí)際上,我們希望模型不僅能實(shí)現(xiàn)高任務(wù)性能,還能提供高質(zhì)量的解釋。不幸的是,在許多情況下,當(dāng)我們追求更高的準(zhǔn)確性時(shí),模型提供的解釋往往會(huì)在質(zhì)量和忠實(shí)度上下降,反之亦然。

在視覺上,這種權(quán)衡可以表示如下:

可解釋模型擅長(zhǎng)提供高質(zhì)量的解釋,但難以解決具有挑戰(zhàn)性的任務(wù),而黑盒模型以提供脆弱和糟糕的解釋為代價(jià)來(lái)實(shí)現(xiàn)高任務(wù)準(zhǔn)確性。

為了在具體設(shè)置中說明這種權(quán)衡,讓我們考慮一個(gè)概念瓶頸模型,該模型應(yīng)用于要求稍高的基準(zhǔn),即“三角學(xué)”數(shù)據(jù)集:

x, c, y = datasets.trigonometry(500)
x_train, x_test, c_train, c_test, y_train, y_test = train_test_split(x, c, y, test_size=0.33, random_state=42)

在該數(shù)據(jù)集上訓(xùn)練相同的網(wǎng)絡(luò)架構(gòu)后,我們觀察到任務(wù)準(zhǔn)確性顯著降低,僅達(dá)到 80% 左右。

概念瓶頸模型未能在任務(wù)準(zhǔn)確性和解釋質(zhì)量之間取得平衡。

這就引出了一個(gè)問題:我們是永遠(yuǎn)被迫在準(zhǔn)確性和解釋質(zhì)量之間做出選擇,還是有辦法取得更好的平衡?

以上就是在PyTorch中實(shí)現(xiàn)可解釋的神經(jīng)網(wǎng)絡(luò)模型的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于PyTorch 神經(jīng)網(wǎng)絡(luò)模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Keras中 ImageDataGenerator函數(shù)的參數(shù)用法

    Keras中 ImageDataGenerator函數(shù)的參數(shù)用法

    這篇文章主要介紹了Keras中 ImageDataGenerator函數(shù)的參數(shù)用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-07-07
  • Python?Fire實(shí)現(xiàn)自動(dòng)生成命令行接口

    Python?Fire實(shí)現(xiàn)自動(dòng)生成命令行接口

    命令行程序是平時(shí)寫一些小工具時(shí)最常用的方式,隨著命令行程序功能的豐富,也就是參數(shù)多了以后,解析和管理參數(shù)之間的關(guān)系會(huì)變得越來(lái)越繁重,而本次介紹的?Fire?庫(kù)正好可以解決這個(gè)問題,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2023-09-09
  • Python利用for循環(huán)修改列表的常見錯(cuò)誤解析

    Python利用for循環(huán)修改列表的常見錯(cuò)誤解析

    在Python編程中,for循環(huán)是最常用的控制結(jié)構(gòu)之一,而列表(list)是最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)之一,但在使用for循環(huán)遍歷列表并對(duì)列表進(jìn)行增刪改操作時(shí),往往會(huì)遇到意想不到的錯(cuò)誤,下面我們就來(lái)深入研究一下吧
    2025-06-06
  • Python 實(shí)現(xiàn)判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中

    Python 實(shí)現(xiàn)判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中

    今天小編就為大家分享一篇Python判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-01-01
  • 基于python的七種經(jīng)典排序算法(推薦)

    基于python的七種經(jīng)典排序算法(推薦)

    本篇文章主要介紹基于python的七種經(jīng)典排序算法(推薦),具有一定的參考價(jià)值,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2016-12-12
  • Python執(zhí)行JS的四種方法

    Python執(zhí)行JS的四種方法

    本文將詳細(xì)介紹Python中執(zhí)行和調(diào)用JavaScript的多種方法,包括內(nèi)置的execjs庫(kù)、外部庫(kù)如PyExecJS、使用瀏覽器引擎和與Node.js的交互,感興趣的可以了解一下
    2023-11-11
  • Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解

    Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能詳解

    這篇文章主要介紹了Django框架使用內(nèi)置方法實(shí)現(xiàn)登錄功能,結(jié)合實(shí)例形式詳細(xì)分析了Django框架內(nèi)置方法實(shí)現(xiàn)登錄功能的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • Python程序打包成EXE的四種方法詳解與實(shí)戰(zhàn)

    Python程序打包成EXE的四種方法詳解與實(shí)戰(zhàn)

    將Python代碼打包成可執(zhí)行文件是一種使你的應(yīng)用程序更易于分享和分發(fā)的方法,本文一步一步地教你如何用 Pyinstaller 模塊將Python程序打包成exe文件,這篇教程絕對(duì)是全網(wǎng)最全面、最詳細(xì)的教程,包含四種打包的方法,需要的朋友可以參考下
    2025-07-07
  • Python運(yùn)算符的使用保姆級(jí)教學(xué)

    Python運(yùn)算符的使用保姆級(jí)教學(xué)

    這篇文章主要給大家介紹了關(guān)于Python運(yùn)算符使用的相關(guān)資料,文中總結(jié)了Python中的算術(shù)運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符和成員運(yùn)算符的用法和特性,需要的朋友可以參考下
    2024-11-11
  • pytorch masked_fill報(bào)錯(cuò)的解決

    pytorch masked_fill報(bào)錯(cuò)的解決

    今天小編就為大家分享一篇pytorch masked_fill報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-02-02

最新評(píng)論

榆林市| 庆城县| 台东市| 神木县| 吴旗县| 商河县| 荥阳市| 新野县| 隆昌县| 扎赉特旗| 东宁县| 华坪县| 芦山县| 潢川县| 泰宁县| 尤溪县| 浠水县| 宁城县| 稻城县| 青冈县| 勃利县| 清镇市| 延吉市| 武平县| 宁阳县| 潮州市| 四川省| 瑞安市| 中宁县| 公安县| 应城市| 南宁市| 成都市| 都兰县| 宜都市| 麻栗坡县| 宁河县| 韩城市| 周口市| 盐边县| 定结县|