• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 生成式人工智能/大語言模型

    通過自校正 AI 工作流簡化交易捕獲和評估

    LLM 在聊天和數字助理應用中的成功讓人們對其在業務流程自動化方面的潛力寄予厚望。雖然在此類工作流程中實現人類水準的可靠性一直具有挑戰性,但它突出了需要改進的關鍵領域,并推動了持續創新。

    盡管存在可靠性挑戰,但自動化工作流程仍具有巨大的業務潛力,其中涉及自由形式的自然語言內容,而 AI 是人工處理的唯一替代方案。

    本文將探討基于 AI 的自由文本工作流經常失敗的原因,并說明如何將 AI 與基于規則的糾錯相結合,在金融“假設”分析的交易條目中實現近乎完美的準確性。

    我們的實驗由 NVIDIA NIM 提供支持,與云 API 相比,NVIDIA NIM 是一種自行托管的推理容器,可解決數據控制問題、降低延遲并降低成本。NIM 用于在本地運行 Qwen-3 和 DeepSeek-v3 等模型,以進行基準測試和性能評估。

    貿易條目

    “假設”分析涉及在交易執行前評估潛在新交易對金融機構風險、交易限制和資本要求的影響。“假設”分析的第一步是交易進入,即將預期交易添加到交易系統中,以評估其風險和資本要求。

    交易輸入是自由文本,可能來自電子郵件鏈、交易員聊天甚至語音。輸出是交易系統可以接受的格式的數據。雖然每種交易類型的數據模式是固定的,但描述交易的方式各不相同,從以下示例中的簡單行到冗長的描述,其中包含大量細節和大量難以進行清晰分類的內容。

    We pay 5y fixed 3% vs. SOFR on 100m, effective Jan 10

    此示例描述了利率掉期,這是交易最廣泛的金融工具之一。它涉及兩個交易對手根據固定或浮動利率定期相互支付息票。

    兩個方向相反的支付流被稱為掉期的“支線”。在這種情況下,單筆付款涉及 3% 的固定付款。由聯邦儲備銀行發布的美元浮動利率指數 (SOFR) 的另一端,5 年期名義金額為 1 億美元 (也稱為掉期期限) 。

    由于缺乏任何預定義的貿易說明格式,貿易條目難以實現自動化。這可以通過多種方式指定,從而避免任何規則或基于模板的解析方法。例如,同樣的交換也可描述如下:

    We are long 3% swap on $100m, maturity 10-Jan-2030

    后一種描述包括貨幣 (USD) ,表示指數 (SOFR) ,而前者包括指數,表示貨幣。后一種描述還表示長邊,根據眾所周知的慣例,長邊表示“固定支付”,而前一種描述則明確表示這一指定。

    上述兩個簡明示例中嵌入的大多數數據字段未分配交易確認中較為冗長描述的典型顯式名稱 (例如,“名義:$ 100m”) 。將這些行業描述轉換為數據需要從各領域相對于其他領域的位置來解釋每個領域的含義,并理解領域價值與金融行業慣例之間的復雜關系。

    使用自定義判別模型,可以向 JSON 提供這種結構化輸出。但是,它需要仔細的訓練和數據標記。現代 LLM 可以根據訓練數據,在沒有任何專門提示的情況下,輕松理解自由形式的貿易描述。

    通過為 Llama 3.1 70B 模型提供第一個示例以及簡單的提示“將此數據轉換為字典”,生成的示例輸出如下:

    {
    "notional": 100000000,
    "tenor": "5Y",
    "effective_date": "2024-01-10",
    "leg_1": {
        "side": "pay",
        "fixed_rate": "3%",
    },
    "leg_2": {
         "side": "receive",
         "index": "SOFR",
    }
    }

    然而,盡管它在識別交易員術語方面表現出色,但上述 LLM 生成的數據仍存在錯誤。下一節中,我們將探討此錯誤的性質,以及克服類似錯誤的方法。

    控制基于 LLM 的交易捕獲工作流中的幻覺

    在 CompatibL 2024 年的 TradeEntry.ai 黑客松活動中,參與者展示了對具有詳細且精心設計的提示的 LLM 的單次調用在簡單交易文本方面的峰值準確率約為 90-95%。但是,對于更復雜的輸入,準確率下降到 80% 左右,這對于生產應用來說是不夠的。

    重要的是,黑客松期間觀察到的許多錯誤并不是因為 AI 做得太少,而是因為 AI 做得太多,即執行從訓練數據中學到的額外轉換,而這些轉換不適用于當前的特定交易。

    例如,在所示的 LLM 輸出示例中,開始日期 ( 2024-01-10) 包括年份,即使輸入沒有 (“Jan 10”) 。由于該模型可以訪問當前日期 2024 年 12 月 10 日,因此它從訓練數據中了解到,生效日期必須包括年份,并使用當前年份。

    這種邏輯是錯誤的,因為對于“假設”分析,開始日期總是在未來。專家可能知道,對于自“1 月 10 日”開始的交易,交易員在 2024 年 12 月請求“假設”分析的意思是 2025 年 1 月 10 日,而不是一年前。

    基于 AI 的編碼助手通過讓人類參與循環來處理錯誤的模型假設。在多次迭代中,用戶會查看臨時輸出并提示更正,直到結果可以接受。但是,在我們的用例中,讓人類參與每個步驟將無法實現自動化的目的。相反,我們將使用自校正方法,防止 LLM 在將自由格式文本輸入轉換為數據字典時執行任何轉換。然后,將根據確定性規則在后處理中執行任何邏輯 (例如插入年份) 。

    我們通過提示 LLM 提供字符串模板 (我們使用框模板) 以及數據字典來實施我們的方法,并要求將字典替換為模板將忠實再現原始輸入。第一個示例的字符串模板的結構如下:

    {fixed_side} {tenor} fixed {fixed_rate} vs. {floating_index} on {notional}, effective {effective_date}

    與要求所有輸出數據值都是輸入文本的子串的更簡單的方法相比,基于模板的方法可確保提取的數據完全捕捉交易描述的原始含義和結構。如果仍然存在一些錯誤或引入了新的錯誤,該過程將繼續進行新的更正。通常,迭代次數少于三次后,所有錯誤都會消除。

    使用此方法生成的數據字典不同于我們在上一節中討論的示例字典。它不包括隱含的字段,例如浮動支線的側面 (“接收”) ,該側面由模型從固定支線的側面 (“支付”) 推理得出。

    最重要的是,包含添加年份的誤差已消除,因為“effective_date”字段的逐字值為“Jan 10” ( 1 月 10 日) ,而不包括年份。將數據輸入字典后,基于規則的傳統處理可以確定年份并執行所有其他必要的轉換。對于以文本形式表示的日期和金額,dateparser 和 text2num 等庫可在不使用 AI 的情況下提供基于規則的可靠轉換。大多數交易分析庫已經包含可以使用參考數據庫解決默認問題的代碼。

    本節中描述的自校正過程如下 Python 偽代碼所示:

    class SelfCorrectingTradeParser:
     
        def __init__(self, llm, max_iter: int = 3):
            # LLM object such as LangChain's ChatNVIDIA
            self.llm = llm
            # Maximum number of self-correction iterations to try
            self.max_iter = max_iter
     
        def parse_with_self_correction(self, trade_text: str) -> dict:
            # Create prompt describing the trade parsing process
            prompt = self._initial_prompt(trade_text)
            for _ in range(self.max_iter):
                # Get the LLM response
                reply = self.llm(prompt)
                # Extract trade dictionary and string template
                trade_dict, tmpl = self._extract(reply)
                # See if we can reconstruct the original trade text
                diffs = self._validate(trade_text, tmpl, trade_dict):
                # If there are no differences/errors, we are done
                if not diffs:
                    return trade_dict
                # Otherwise we create a prompt with the corrections and retry
                prompt = self._correction_prompt(trade_text, trade_dict, tmpl, diffs)
     
            return trade_dict

    部署開源模型

    NVIDIA NIM 提供具有標準 API 的自托管 GPU 加速推理 Docker 容器,并使用 NVIDIA TensorRT 和 NVIDIA TensorRT-LLM 等推理引擎針對低延遲和高吞吐量進行了優化。

    ?

    具體來說,我們測試了兩個版本的提示:一個版本包含一個示例,另一個版本包含 10 個示例。模型提示中的每個示例都包括交易基礎交換 (輸入) 的文本,以及所需的輸出字典隨附的格式化字符串模板 (輸出) 。

    為評估模型性能,我們測量每個基礎交換的以下結果:

    1. 真陽性 (TP) :有一個值需要提取,例如“概念”,且真值與預測匹配。
    2. 假陽性 (FP) :模型預測會對不存在或有錯誤值的事物產生幻覺。
    3. 假陰性 (FN) :要提取真值,但模型預測無法捕獲該值。

    通過測量這些結果,我們計算出以下三個指標:

    1. Recall = TP/ (TP+ FN) 。召回率越高,這意味著我們的模型返回的相關結果就越多。
    2. Precision = TP/ (TP+ FP) 。更高的精度意味著我們的模型返回的相關結果與不相關結果的比率更高。
    3. F1-score = (2+ 精度+ 召回率) / (精度+ 召回率) 。F1-score 是精度和召回率的協調平均值。

    使用自校正時,我們最多使用 5 次迭代。由于 LLM 每次運行時都會產生不同的結果,因此我們將溫度設置為 0.6 (以平衡隨機性和一致性) ,并在測試集上對每個模型運行 5 次。然后,我們對這些運行的結果求取平均值,以報告測試集的以下結果:

    Bar chart comparing performance of various LLMs across 1-shot and 10-shot settings. All models show improved F1-scores with self-correction, with DeepSeek-R1 (10-shot) achieving the highest at 0.988.
    We pay 5y fixed 3% vs. SOFR on 100m, effective Jan 100

    兩個圖形都強調,使用自校正方法可以將錯誤減少 20% 到 25%,并將 F1 分數提高 3% 到 5%。此外,為推理而明確訓練的模型 (例如 DeepSeek-R1) 的性能優于通用模型 (例如 DeepSeek-v3) 。它們在 10 個鏡頭的場景中實現了近乎完美的準確性,凸顯了我們的自校正循環所需的卓越的糾錯和結構化任務分解能力。最后,增加少量樣本的數量持續提升性能,其中 DeepSeek-v3 將 F1 分數提高了約 4.8% (從 91.5%提高到 96.3%) ,Qwen3-235B 提高了近 6% (從 90.7%提高到 96.9%) ,顯示了更豐富的提示上下文的具體優勢。

    總結

    與人類非常相似,AI 通常會做出隱含的假設。許多錯誤 (包括我們在這篇博文中分析的示例) 都是由隱式推理引起的,即模型嘗試執行超過任務要求的操作,但漏掉了關鍵數據。通過將 AI 與基于規則的驗證相結合的自校正工作流,可以消除此類錯誤。

    人類從實際示例和專家指導中學習得最好,而不是在他們獨自查看可能發生的所有可能錯誤的很長列表時學習。自校正工作流程使用對人類非常適用的“通過示例學習”方法,首先提供少量樣本 (實踐訓練) ,然后糾正任何殘差 (監督) 。如果您要為金融工作流構建基于 LLM 的自動化,建議您采用自校正方法,首先利用我們在 build.nvidia.com 上提供的免費云模型 API 根據您自己的交易數據進行評估,或者使用 NIM 在本地部署這些 API。

    與我們一起參加 6 月 10 日至 12 日在巴黎舉行的 NVIDIA GTC,聆聽行業領導者關于金融服務業 AI 的演講。我們將舉辦一場關于金融服務業中的生成式 AI 應用的專家對接會議,您可以從在生產環境中部署此類系統中汲取經驗教訓。

    ?

    0

    標簽

    人人超碰97caoporen国产