評估指標是評估 AI 系統效能的關鍵工具,用於比較系統輸出與預期結果,並以分數呈現。指標型別包含二元(0 或 1)和標準化(0 到 1 之間),後者提供更細緻的效能視角,但可解釋性較差,可藉由設定最低閾值分數來提升清晰度。評估指標主要分為斷言基礎、統計、LLM 作為評判以及 RAG 指標等類別。斷言基礎指標類別似單元測試,驗證輸出是否符合預期,例如相等性、比較運算子、子字串匹配等。統計指標則運用統計演算法評估輸出,常見於 NLP 領域,例如 BLEU 和 ROUGE 指標,分別用於評估機器翻譯和摘要生成的品質。
評估指標
評估指標是用於評估AI系統效能的重要工具。它們透過比較AI系統的輸出和預期結果來計算一個分數,從而評估AI系統的效能。評估指標通常傳回0到1之間的分數,其中0表示失敗,1表示成功。二元指標只傳回0或1,而標準化指標傳回0到1之間的分數。
二元指標和標準化指標
二元指標清楚地確定了案例是否透過或失敗,而標準化指標則提供了AI系統效能的更細緻的視角。然而,標準化指標的細緻度可能缺乏可解釋性。為了增加標準化指標的清晰度,可以設定一個最低閾值分數,當指標傳回的分數超過此閾值時,才被視為透過。
評估指標類別
評估指標可以分為以下幾類別:
- 斷言基礎指標:評估AI系統輸出是否與程式碼中斷言的值相符。
- 統計指標:使用統計演算法評估AI系統輸出的指標。
- LLM作為評判指標:使用LLM評估AI系統輸出是否符合質性標準。
- RAG指標:評估RAG系統的指標,通常使用LLM作為評判。
斷言基礎指標
斷言基礎指標是用於評估AI系統輸出是否符合某些標準的量化指標。它們類別似於傳統軟體工程中的單元測試,透過比較模組輸出與預期結果來評估AI系統的效能。
以下是一些斷言基礎指標的例子:
- 相等性:評估實際輸出是否與預期值相等。
- 比較運算子:評估實際輸出是否符合比較運算子(如大於、小於等)的標準。
- 子字串匹配:評估字串輸出是否包含預期的子字串。
- 正規表示式匹配:評估字串輸出是否符合正規表示式。
實作斷言基礎評估
以下是一個使用Python實作斷言基礎評估的例子:
from prettytable import PrettyTable
# 定義評估資料
input_relevance_guardrail_data = [
{
"input": "What should I do in New York City in July?",
"output": True,
"expected": True
},
{
"input": "Can you help me with my math homework?",
"output": False,
"expected": False
},
{
"input": "What's the capital of France?",
"output": False,
"expected": True
},
]
# 定義評估函式
def evaluate_correctness(output, expected):
return 1 if output == expected else 0
def calculate_average(scores):
return sum(scores) / len(scores)
def create_table(data):
table = PrettyTable()
table.field_names = ["Input", "Output", "Expected", "Score"]
scores = [evaluate_correctness(case["output"], case["expected"]) for case in data]
for case, score in zip(data, scores):
table.add_row([case["input"], case["output"], case["expected"], score])
# Add a blank row for visual separation
table.add_row(["", "", "", ""])
# Add average score to bottom of the table
average_score = calculate_average(scores)
table.add_row(["Average", "", "", f"{average_score:.4f}"])
return table
# 建立和列印預表格
result_table = create_table(input_relevance_guardrail_data)
print(result_table)
此程式碼輸出以下評估結果:
+--------------------------------------------+--------+----------+--------+
| Input | Output | Expected | Score |
+--------------------------------------------+--------+----------+--------+
| What should I do in New York City in July? | True | True | 1 |
| Can you help me with my math homework? | False | False | 1 |
| What's the capital of France? | False | True | 0 |
+--------------------------------------------+--------+----------+--------+
| Average | | | 0.6667 |
+--------------------------------------------+--------+----------+--------+
圖表翻譯:
此圖表顯示了評估結果,其中每一行代表一個評估案例。Input欄位顯示了輸入,Output欄位顯示了AI系統的輸出,Expected欄位顯示了預期結果,Score欄位顯示了評估結果。Average欄位顯示了所有案例的平均分數。
使用統計指標評估LLM系統輸出
在評估LLM(大語言模型)系統輸出的時候,統計指標是一種重要的工具。這些指標使用演算法來計算一個分數,從而評估LLM系統輸出的品質。對於具有傳統自然語言處理(NLP)背景的人員,統計指標可能已經很熟悉,因為它們被廣泛用於評估LLM系統在分類別、摘要和翻譯等任務中的輸出。
熱門的NLP評估指標
- Bilingual Evaluation Understudy (BLEU):BLEU衡量模型輸出的準確性與一個或多個參考文字相比。您可以使用BLEU分數來計算模型輸出與參考答案的相似度。BLEU最初被開發用於衡量機器翻譯文字的品質與參考翻譯相比。
- Recall-Oriented Understudy for Gisting Evaluation (ROUGE):ROUGE衡量機器生成文字的品質與一個或多個參考文字相比。在LLM系統中,ROUGE通常被用於評估LLM如何有效地總結參考文字。ROUGE特別適合於RAG(擷取增強生成)系統,其中LLM總結了檢索檔案中的內容。
實際應用:旅行助手聊天機器人
以下是一個實際的例子,展示瞭如何使用BLEU和ROUGE評估指標來評估旅行助手聊天機器人的輸出。這個評估關注於回應生成LLM,計算了實際輸出與參考輸出的BLEU分數,以及總結檢索的上下文資訊的ROUGE分數。
安裝必要的Python包
首先,您需要安裝幾個Python包:prettytable
用於輸出結果,sacrebleu
用於計算BLEU分數,rouge-score
用於計算ROUGE分數。
pip3 install prettytable==3.10.2 sacrebleu==2.4.2 rouge-score==0.1.2
執行Python程式碼
然後,執行以下Python程式碼:
from prettytable import PrettyTable
import sacrebleu
from rouge_score import rouge_scorer
# 評估資料
evaluation_data = [
{
"input": "What should I do in New York City in July?",
"output": "Check out Times Square, go to an outdoor concert, and visit the Statue of Liberty.",
"golden_answer": "Explore Central Park, attend outdoor concerts, and visit rooftop bars.",
"contexts": [
"Times Square is known for its Broadway theaters, bright lights, and bustling atmosphere.",
"Outdoor concerts in Central Park are popular summer events attracting many visitors.",
"The Statue of Liberty is a symbol of freedom and a must-see landmark in NYC."
]
},
{
"input": "Can you help me with my math homework?",
"output": "I'm designed to assist with travel queries. For math help, try using online resources like Khan Academy or Mathway.",
"golden_answer": "I am a travel assistant chatbot, so I cannot help you with your math homework.",
"contexts": []
},
{
"input": "What's the capital of France?",
"output": "The capital of France is Paris.",
"golden_answer": "Paris is the capital of France.",
"contexts": [
"Paris, known as the City of Light, is the most populous city of France.",
"European capitals: Paris, France; Berlin, Germany; Madrid, Spain"
]
}
]
# 定義評估函式
def evaluate_bleu(output, golden_answer):
return sacrebleu.corpus_bleu([output], [[golden_answer]])[0] / 100 # Normalize BLEU score to be between 0 and 1
def evaluate_rouge(output, contexts):
context_text = "\n".join(contexts)
scorer = rouge_scorer.RougeScorer(['rouge1', 'rouge2', 'rougeL'], use_stemmer=True)
scores = scorer.score(context_text, output)
return scores['rougeL'].fmeasure
def calculate_average(scores):
return sum(scores) / len(scores)
# 執行評估
bleu_scores = []
rouge_scores = []
for data in evaluation_data:
bleu_score = evaluate_bleu(data["output"], data["golden_answer"])
rouge_score = evaluate_rouge(data["output"], data["contexts"])
bleu_scores.append(bleu_score)
rouge_scores.append(rouge_score)
average_bleu = calculate_average(bleu_scores)
average_rouge = calculate_average(rouge_scores)
print(f"Average BLEU Score: {average_bleu}")
print(f"Average ROUGE Score: {average_rouge}")
圖表翻譯:
此圖示展示了BLEU和ROUGE評估指標的結果,顯示了旅行助手聊天機器人的輸出品質。BLEU分數衡量了輸出的準確性,而ROUGE分數衡量了總結的品質。
flowchart TD A[評估資料] --> B[計算BLEU分數] B --> C[計算ROUGE分數] C --> D[計算平均分數] D --> E[輸出結果]
內容解密:
此程式碼定義了三個評估函式:evaluate_bleu
計算BLEU分數,evaluate_rouge
計算ROUGE分數,calculate_average
計算平均分數。然後,它執行評估並輸出結果。BLEU和ROUGE分數可以幫助我們瞭解旅行助手聊天機器人的輸出品質和總結品質。
使用BLEU和ROUGE評估指標評估旅行助手聊天機器人輸出
在評估旅行助手聊天機器人的輸出時,BLEU和ROUGE評估指標可以提供有價值的見解。以下是如何使用這些指標的示例:
從技術架構視角來看,評估指標在AI系統開發中扮演著至關重要的角色,如同軟體開發中的單元測試般,確保系統輸出符合預期。本文深入探討了二元指標、標準化指標、斷言基礎指標、統計指標以及LLM/RAG指標等不同型別的評估方法,並以旅行助手聊天機器人為例,展示瞭如何運用BLEU和ROUGE等統計指標評估LLM系統的輸出品質和摘要能力。利用程式碼範例,清晰地闡述了斷言基礎評估的實作方式,並詳細解釋瞭如何計算BLEU和ROUGE分數。
然而,目前的評估指標仍存在一些侷限性。例如,標準化指標的可解釋性較差,需要設定閾值才能有效判別;統計指標如BLEU和ROUGE,雖然能量化文字相似度,但未必能完全捕捉到人類語言的細膩之處,例如語義的理解和邏輯的連貫性。此外,針對不同應用場景,需要選擇合適的評估指標,單一指標難以全面評估系統效能。
展望未來,評估指標將朝向更精細化、更全面化的方向發展。結合人類評估和自動化指標的混合評估方法將成為趨勢,以彌補單一指標的不足。此外,隨著LLM技術的進步,預期將出現更強大的LLM作為評判指標,能更準確地評估AI系統的輸出品質,甚至能針對特定領域或任務進行客製化評估。 對於開發者而言,除了關注傳統的效能指標外,更需重視使用者經驗和商業價值等導向的評估,才能打造真正符合市場需求的AI應用。
玄貓認為,評估指標的發展仍處於早期階段,持續探索和創新新的評估方法,將是推動AI技術進步的關鍵。開發者應積極探索和應用更有效的評估指標,並將其整合到AI系統的開發流程中,才能確保AI系統的可靠性和高效能。