gaoshengkeji@163.com
隨著計算機技術在醫療領域的廣泛應用,軟件在醫療服務中的地位和作用越來越突出,對公眾生命、健康、財產、信息安全的影響也越來越大。同時,人工智能技術與醫療器械軟件的結合,使針對產品的有效性與安全性的評估日趨復雜,其中可靠性是衡量人工智能醫療器械軟件質量的一個重要維度。
一方面,目前的軟件規模與內部架構日趨復雜,計算框架、組件、數據充滿變化,產品的可靠性越來越難保證。根據國外公布的數據,每年由于軟件原因導致的醫療器械召回事件有上百次,影響臨床對產品的接受度,也為監管和質量評價敲響警鐘;另一方面,臨床應用場景對軟件運行的可靠性要求越來越高,隨著軟件智能化、自主化程度的提升,軟件可靠性對患者和操作者的安全及權益的影響程度也越來越大。醫療器械軟件可靠性的評測已經成為人工智能醫療器械軟件質量評價的重要環節之一。本文旨在概述人工智能醫療器械軟件可靠性的評測現狀,為業內提供參考。
人工智能醫療器械軟件可靠性概念
根據2020年起草的行業標準《人工智能醫療器械質量要求和評價第1部分:術語》中的定義,可靠性是指在規定時間間隔內和規定條件下,系統或部件執行所要求功能的能力。人工智能醫療器械軟件的可靠性關注產品在規定的條件下和規定的時間區間完成指定臨床功能的能力。規定的條件是指直接與軟件運行相關的使用該軟件的計算機系統的狀態和軟件的輸入條件,或統稱為軟件運行時的外部輸入條件;規定的時間區間是指軟件的實際運行時間區間;指定臨床功能是指為用戶提供給定的醫療服務。
人工智能醫療器械軟件功能的可靠性包含成熟性、可用性、容錯性、易恢復性等方面。成熟性是指軟件產品在滿足要求的軟/硬件環境或其他特殊條件下(如一定負載壓力下)使用時,為用戶提供相應服務的能力,如軟件的故障密度、缺陷嚴重程度、完整性級別等??捎眯允侵杠浖谑褂脮r能夠進行操作和訪問的程度,它是成熟性、容錯性和易恢復性的組合。容錯性是指軟件在由于非法數據、非法操作、誤操作等原因導致無法正常運行和參數傳遞錯誤的情況下,軟件能否為用戶提供相應臨床功能服務的能力。易恢復性是指軟件發生失效的情況下,采取何種措施重建為用戶提供相應臨床服務和恢復直接受影響醫療器械數據的能力。
人工智能醫療器械算法的可靠性強調算法在規定條件下的可重復性,即對同一輸入的響應和輸出保持不變。根據相關文獻,聚類分析、深度學習等算法分支都報道過可重復性方面的問題,因此在測試階段需要引起重視,不能掉以輕心。
人工智能醫療器械軟件可靠性的技術實現
人工智能醫療器械軟件可靠性,建立在以下四方面的活動和有關技術基礎上:
(1)軟件可靠性分析:進行軟件可靠性的需求分析、指標分配、故障樹分析、故障模式和影響分析、軟件開發過程中有關軟件可靠性的特性分析等;
(2)軟件可靠性設計和實現:進行防錯設計、容錯設計、檢錯設計、糾錯設計、故障恢復設計、軟件可靠性增長等;
(3)軟件可靠性測量、測試和評估:在軟件生存周期各階段進行有關軟件可靠性的設計、制造和管理方面的屬性測量,進行軟件可靠性測試、軟件可靠性預計、軟件可靠性估計、軟件可靠性驗證等;
(4)軟件可靠性管理:確定影響軟件可靠性的因素,制定必要的設計和實現準則以及對軟件開發各階段軟件可靠性相關的過程和產品的要求,對有關測試數據和分析結果控制和改進開發過程,進行風險管理要考慮安全性等技術風險,對采購或重用的第三方軟件進行可靠性管理等。
上述活動也包含著對人工智能算法模型本身的可靠性評價。制造商需要根據臨床應用場景,在研發和產品驗證階段評估人工智能算法正確執行臨床功能的運行時間和運行條件,積累先驗的數據。
人工智能醫療器械軟件可靠性的測試路徑
人工智能醫療器械軟件的可靠性驗證方法是為了驗證在給定的統計置信度下,軟件當前的可靠性水平是否滿足臨床用戶的要求而進行的測試,即臨床用戶在接收軟件時,確定它是否滿足軟件規格說明書中規定的可靠性指標。該種方法一般是在軟件驗收階段進行的,在軟件需求方參與的情況下實施。其主要過程是根據實際臨床使用場景測試的故障情況,利用某種或某些軟件供需雙方都認可的可靠性驗收模型進行可靠性的定量評價,以判斷該軟件是否達到了其需求說明書中約定的可靠度。
人工智能軟件可靠性測試活動包括:構造運行剖面、選取測試用例、測試環境準備、可靠性測試運行、數據收集、數據分析和失效糾正等步驟。
(1)構造運行剖面:軟件的運行剖面一般是指對軟件使用條件的定義,把軟件的輸入按時間的分布或按它們在可能輸入范圍內的出現概率的分布來定義。由于人工智能算法的特殊性,軟件的輸入樣本需要考慮數據格式、內容、對算力的消耗和臨床的典型性,兼顧陰性樣本、陽性樣本和流行病學統計。
粗略地說,運行剖面是用來描述軟件的實際使用情況的。運行剖面是否能代表、刻畫軟件的實際使用取決于可靠性工程人員對軟件的系統模式、功能、任務需求及相應的輸入激勵的分析,取決于他們對用戶使用這些系統模式、功能、任務的概率的了解。運行剖面構造的質量將對測試、分析的結果是否可信產生最直接的影響。
(2)選取測試用例:軟件可靠性測試采用的是按照運行剖面對軟件進行可靠性測試的方法。因此,可靠性測試所用的測試用例是根據運行剖面隨機選取得到的,宜依托標準化的測試集進行抽樣。
(3)測試環境的準備:為了得到盡可能真實的可靠性測試結果,可靠性測試應盡量在真實的臨床環境下進行,但是在許多情況下,在真實的環境下進行軟件的可靠性測試很不實際,因此需要開發軟件可靠性仿真測試環境。比如,對于智能硬件產品包含的嵌入式軟件,由于與之交聯的環境的開發常常與軟件的開發是同步甚至是滯后的,因此無法及時進行軟件可靠性測試。有些軟件中,由于交聯的環境非常昂貴而無法用于需要進行大量運行的可靠性測試。
(4)可靠性測試運行:即在真實的測試環境中或可靠性仿真測試環境中,用按照運行剖面生成的測試用例對軟件進行測試。
(5)數據收集:收集的數據包括軟件的輸入數據、輸出結果,以便進行失效分析和進行回歸測試;軟件運行時間數據,可以是CPU執行時間、日歷時間、時鐘時間等;可靠性失效數據包括每次失效發生的時間或一段時間內發生的失效數,失效數據可以實時分析得到,也可以事后分析得到。數據收集的質量對于最終的可靠性分析結果有著很大的影響,應盡可能采用自動化手段進行數據的收集,以提高效率、準確性和完整性。
(6)數據分析:主要包括失效分析和可靠性分析。失效分析是根據運行結果判斷軟件是否失效,以及失效的后果、原因等:而可靠性分析主要是指根據失效數據,估計軟件的可靠性水平,預計可能達到的水平,評價產品是否已經達到要求的可靠性水平。
(7)失效糾正:如果軟件的運行結果與需求不一致,則稱軟件發生失效。通過失效分析,找到并糾正引起失效的程序中的缺陷,從而實現軟件可靠性的增長。軟件可靠性增長測試是為了滿足用戶對軟件的可靠性要求、提高軟件可靠性水平而對軟件進行的測試。是為了滿足軟件的可靠性指標要求,對軟件進行測試——可靠性分析——修改——再測試——再分析——再修改的循環過程。
人工智能醫療器械軟件可靠性測試面臨的挑戰
開展人工智能醫療器械軟件可靠性測試的關鍵是要建立測試模型,但目前尚未形成統一規范。到目前為止,軟件可靠性模型的研究已有幾十年的歷史,國內外已發表軟件可靠性模型有近百種,但由于對軟件可靠性模型的研究還處在初步階段,軟件可靠性模型的分類方法很多,筆者采用綜合模型的假設、測試環境以及數理統計的分類方法,將模型大致分為:隨機過程類模型和非隨機過程類模型。隨機過程模型包括馬爾可夫過程二項模型、非齊次泊松過程模型等分支。非隨機過程模型包括運用貝葉斯估計的模型、基于輸入域的模型和其他方法模型。對于具體的人工智能產品,軟件的固有錯誤數、錯誤之間的關聯性、錯誤發生的間隔時間、軟件失效率等關鍵參數還在積累過程中,可靠性測試的理論模型目前不唯一,屬于質量評價的薄弱環節。軟件可靠性模型的不足也使得軟件可靠性模型并不能完全描述軟件的故障行為。
由于人工智能算法的復雜性和隨機性,軟件的故障具有離散性和偶發性,部分軟件產品的測試缺乏直觀的測試準則。此時對可靠性的評價可借助蛻變測試等手段,把輸入、輸出之間的關系作為依據,用于驗證和捕捉算法的缺陷,作為對前述方法的補充。
人工智能醫療器械軟件的可靠性是產品安全有效的關鍵要素之一,影響著產品未來的使用質量。本文對人工智能醫療器械軟件可靠性的實現與測試現狀進行了概述,為測評活動提供參考。鑒于行業目前的技術現狀,測評規范的建立與實施還存在一些問題,將在產品的質量研究過程中進一步完善。