動(dòng)機(jī)和背景
為什么構(gòu)建可解釋的人工智能模型很重要?
人工智能的未來(lái)在于使人類(lèi)和機(jī)器能夠共同解決復(fù)雜的問(wèn)題。各組織正試圖通過(guò)將AI/ML技術(shù)與人力審查相結(jié)合來(lái)提高流程效率和透明度。
近年來(lái),隨著人工智能的發(fā)展,出現(xiàn)了專(zhuān)門(mén)針對(duì)人工智能的法規(guī),例如,在制藥業(yè)和金融業(yè)的模型風(fēng)險(xiǎn)管理中出現(xiàn)了良好的機(jī)器學(xué)習(xí)做法,其他涉及數(shù)據(jù)隱私的廣譜法規(guī),歐盟的《電子商務(wù)規(guī)則》和加利福尼亞的《計(jì)算機(jī)風(fēng)險(xiǎn)管理法》。同樣,內(nèi)部合規(guī)團(tuán)隊(duì)在根據(jù)模型預(yù)測(cè)驗(yàn)證決策時(shí)也可能希望解釋模型的行為。例如,承銷(xiāo)商想知道為什么一個(gè)特定的貸款申請(qǐng)被一個(gè)ML模型標(biāo)記為可疑。
概述
什么是可解釋性?
在ML上下文中,可解釋性是指試圖追溯哪些因素有助于使用ML模型進(jìn)行某種預(yù)測(cè)。作為?展示 在下圖中,較簡(jiǎn)單的模型較容易解釋,但與能夠理解數(shù)據(jù)中的非線(xiàn)性關(guān)系并往往具有高精度的深入學(xué)習(xí)和轉(zhuǎn)換器模型等復(fù)雜模型相比,其準(zhǔn)確性往往較低。
定義松散,有兩種解釋:
· 全球解釋: 是在整體模型層面上解釋哪些功能對(duì)產(chǎn)出貢獻(xiàn)最大?例如,在一個(gè)財(cái)務(wù)環(huán)境中,用例是建立一個(gè)ML模型來(lái)識(shí)別最有可能違約的客戶(hù),做出這一決定的一些最有影響力的功能是客戶(hù)的信用評(píng)分,總數(shù)為否。信用卡、循環(huán)余額等。
· 本地解釋: 這可以使您放大特定的數(shù)據(jù)點(diǎn),并觀(guān)察模型在該附近的行為。例如,對(duì)于電影評(píng)論用例的情感分類(lèi),評(píng)論中的某些詞對(duì)結(jié)果的影響可能高于其他詞。""我已經(jīng) 決不 看了一些東西 很糟糕。 ”
什么是變壓器模型?
變壓器模型是一個(gè)神經(jīng)網(wǎng)絡(luò),它追蹤連續(xù)輸入的關(guān)系,如句子中的單詞,以學(xué)習(xí)上下文和隨后的意義。變壓器模型使用一套不斷演變的數(shù)學(xué)方法,即被稱(chēng)為注意力或自我注意的方法,在一個(gè)系列中找到即使是距離數(shù)據(jù)元素之間的微小關(guān)系。指?谷歌的出版物 獲取更多信息。
綜合梯度
集成梯度是一種?可解釋的人工智能 本文介紹的技術(shù)?深層網(wǎng)絡(luò)的公理歸屬 .本文試圖為每個(gè)輸入特性分配一個(gè)屬性值。這說(shuō)明了輸入對(duì)最終預(yù)測(cè)的貢獻(xiàn)。
因其廣泛適用于任何可微模型(例如:可微模型),因而是一種流行的可解釋性方法。,文本,圖像,結(jié)構(gòu)化數(shù)據(jù)),容易實(shí)現(xiàn),相對(duì)于其他方法的計(jì)算效率,理論上的合理性。集成梯度代表從給定基線(xiàn)到輸入的路徑上輸入的梯度的積分。積分可以用黎曼和或高斯理論正交規(guī)則近似.其形式如下:
沿輸入X的I-TH維度的綜合梯度。阿爾法是比例系數(shù)。這些方程是從 ?原件 .
這種方法的基石是兩個(gè)基本公理,即敏感性和實(shí)現(xiàn)不變性。更多信息可在原始文件中找到。
用例
現(xiàn)在讓我們來(lái)看看如何使用綜合梯度法?頂蓋 包裹。我們將對(duì)答案進(jìn)行微調(diào)?伯特 (由變壓器發(fā)出的雙向編碼器表示法)?小隊(duì) 使用變壓器庫(kù)的數(shù)據(jù)集?擁抱臉 ,回顧?筆記簿 為了詳細(xì)的演練。
臺(tái)階
· 在這種情況下,裝上標(biāo)志和經(jīng)過(guò)訓(xùn)練的伯特模型,bert-base-uncased
· 接下來(lái)是計(jì)算屬性BertEmbeddings 一層。為此,定義基線(xiàn)/引用并對(duì)基線(xiàn)和輸入進(jìn)行數(shù)字化。
Python
1
def construct_whole_bert_embeddings(input_ids, ref_input_ids, \
2
token_type_ids=None, ref_token_type_ids=None, \
3
position_ids=None, ref_position_ids=None):
Python
1
input_embeddings = model.bert.embeddings(input_ids, token_type_ids=token_type_ids, position_ids=position_ids)
Python
1
ref_input_embeddings = model.bert.embeddings(ref_input_ids, token_type_ids=ref_token_type_ids, position_ids=ref_position_ids)
Python
1
return input_embeddings, ref_input_embeddings
· 現(xiàn)在,讓我們把問(wèn)答對(duì)定義為對(duì)伯特模型的輸入
問(wèn)題="什么對(duì)我們很重要?"
對(duì)我們來(lái)說(shuō),重要的是接納、授權(quán)和支持各種人類(lèi)。"
· 生成相應(yīng)的答案對(duì)基線(xiàn)/引用
· 下一步是做預(yù)測(cè),一個(gè)選擇是使用LayerIntegratedGradients 以及計(jì)算屬性BertEmbedding .LayerIntegratedGradients 表示沿直線(xiàn)路徑的層輸入/輸出的梯度積分,從給定基線(xiàn)的層激活到輸入的層激活。
Python
1
start_scores, end_scores = predict(input_ids, \
2
token_type_ids=token_type_ids, \
3
position_ids=position_ids, \
4
attention_mask=attention_mask)
Python
1
print(‘Question: ‘, question)
2
print(‘Predicted Answer: ‘, ‘ ‘.join(all_tokens[torch.argmax(start_scores) : torch.argmax(end_scores)+1]))
Python
1
lig = LayerIntegratedGradients(squad_pos_forward_func, model.bert.embeddings)
· 產(chǎn)出:
問(wèn)題:什么對(duì)我們很重要?
預(yù)測(cè)答案:包括,em##力量和支持各種人類(lèi)
· 使用幫助函數(shù)在輸入序列中對(duì)每個(gè)單詞標(biāo)記的屬性進(jìn)行可視化
Python
1
# storing couple samples in an array for visualization purposes
Python
1
start_position_vis =
2
viz.VisualizationDataRecord(
3
attributions_start_sum,
4
torch.max(torch.softmax(start_scores[0], dim=0)),
5
torch.argmax(start_scores),
6
torch.argmax(start_scores),
7
str(ground_truth_start_ind),
8
attributions_start_sum.sum(),
9
all_tokens,
10
delta_start)
Python
1
print(‘\033[1m’, ‘Visualizations For Start Position’, ‘\033[0m’)
2
viz.visualize_text([start_position_vis])
Python
1
print(‘\033[1m’, ‘Visualizations For End Position’, ‘\033[0m’)
2
viz.visualize_text([end_position_vis])
從上面的結(jié)果可以看出,對(duì)于預(yù)測(cè)起點(diǎn)位置,我們的模型更多地側(cè)重于問(wèn)題方面。更具體地說(shuō),在"什么"和"重要"上。它還稍微側(cè)重于文本方面"給我們"的標(biāo)記序列。
與此相反,為了預(yù)測(cè)端點(diǎn)位置,我們的模型更側(cè)重于文本方面,并且在最后端點(diǎn)標(biāo)記"種類(lèi)"上有相對(duì)較高的歸屬。
結(jié)論
這個(gè)文章描述了如何使用集成梯度等可解釋的人工智能技術(shù),通過(guò)突出正面和負(fù)面的詞匯對(duì)模型結(jié)果的影響,使深入學(xué)習(xí)的NLP模型可以被解釋。