?
引言:?從 GPT 模型說起
23 年科技界最大的熱點,無疑是自然語言處理的 GPT 模型,起初有人還對 ChatGPT 不屑一顧,質疑其缺乏獨立思考,考試成績不好。結果新 GPT-4 模型,在律師資格考試成績排名前 10%,在 SAT 數學考試中排名前 11%。這些成績背后的分析綜合、邏輯推理、歸納總結,不正是父母們煞費苦心,給人類幼崽們培(灌)育(輸)的能力嗎?
一、大模型,還是小模型?
然而巨型自然語言模型成功背后,也是以驚人算力為代價的。據 Semafor 披露, GPT-4 語言模型有 1 萬億模型參數。巨型模型有其固有特點:
01
海量數據集
海量模型參數,就需要海量的訓練數據。海量數據的采集、標注成本高昂。這也是為什么之前的巨型模型,大都源于像谷歌、微軟等方便獲得海量數據的互聯網/科技巨頭。
然而“足夠”的數據,在很多醫療領域是不存在。如罕見先心病,Ebstein 異常三尖瓣畸形,6000 多萬人口的意大利,一年只有 30 例左右。且臨床致病因素復雜、隱私保護、壁壘等種種原因,醫療領域并沒有像互聯網一樣,唾手可得且標注完善的海量數據集。多數需要解決的問題,恰恰是如何在小型數據集上,高質量解決實際臨床應用。
02
落地部署
GPT-4 語言模型據說有萬億級模型參數,一旦大規模實際部署,將是驚人的算力成本。高昂的算力成本,也許對 NVIDIA 是好消息,對 AI 醫療設備落地推廣卻未必。因此真正有應用前景的醫療設備,不僅僅要做得出來(模型精度),更重要的是用得起(輕量級模型)。
而輕量級模型的低算力成本、低功耗、低延遲特性,則明顯便于小型便攜醫療設備的實現,無論是醫院臨床應用,還是對于術后家用監護,都是最佳選項。如心電監護、呼吸監護、哮喘監測、可穿戴設備、腦機接口等醫學信號處理應用,輕量級模型都更便于部署和使用。
綜上,AI 在醫學信號處理中的應用落地來說,有很不同的需求差異,即小型數據集以及輕量化模型的部署。也因此,吳恩達這位來自斯坦福的 AI 大咖,近年來致力于 AI 的落地,一改前十幾年中在谷歌、百度的思路,即以模型為中心,模型越來越大,越來越復雜的傾向;開始推廣輕量級落地 AI(Unbiggen AI)。去解決大多數實際工程化落地應用中,真正要面對的“小數據集”(small data)問題【1】。
二、輕量級模型的工程化實現
簡潔,并不簡單。比如,AI 業內,大家傳統認為模型精度會隨數據集增大,也一起提高。而當數據集有限時,如何持續優化模型,使其具備不亞于巨型模型的精度?再比如,小數據集通常的過擬合問題,如何解決?
實際上,如果僅僅是進行純學術研究,使用完善的開源數據集,那么僅需要關注模型本身。但如果要做的是 AI 模型的工程化實現,則與純學術研究不同,AI 工程化實現的性能,并不僅僅由模型本身決定(下圖中紫色框)。而是由從左到右的四個過程共同決定的,這也是為什么若只關注模型本身的優化,不斷用更大規模、更復雜到的模型,其結果往往是逼迫擁有海量參數的模型在舊數據集上,以死記硬背的方式記住“正確答案”;而在新數據集就差強人意。
? ?
對于數據集準備、模型開發和部署實現,MATLAB 中提供了系列的自動化 APP,可以幫助大家以高度自動化的方式,快速完成耗時費力的數據集標注、模型的快速搭建和訓練、模型的裁剪和量化、嵌入式代碼生成等,具體內容,大家可以參考這里的介紹:將深度學習用于信號處理【2】和創建標注數據來訓練和驗證模型【3】。
三、輕量化模型的點睛之筆——預處理及特征提取
本文將主要關注于預處理及特征提取。臨床實際應用情況千變萬化,難以想象一臺臨床醫療設備,監測分析的結果飄忽不定、忽好忽壞。而預處理及特征提取,這個部分恰恰為工程化實現,提供了重要的魯棒性;而信號特征的提取,將稀疏、復雜的原始數據進行提煉,尤其投影在變換域上,得到精干的描述,這才使輕量級 AI 模型的使用成為可能。
可能有小伙伴覺得,AI 時代了,應該是:
AI vs. Signal Processing
其實業內的成功案例,恰恰是各取所長,即:
AI + Signal Processing
讓我們看兩個成功實例,一個是 Respiri 開發用于喘息檢測和哮喘管理(如下圖)。他們將采集的喘鳴聲,進行預處理轉換為頻譜圖,然后分析頻譜圖,根據其能量模式和其他常見特征識別潛在的哮喘患者。
將復雜的哮喘預測和管理問題,轉化為頻譜圖,并選取恰當特征,取得了四兩拔千斤的效果。輕松在手持便攜設備上實現,使哮喘監測,從醫院臨床走進千家萬戶,提高哮喘患者生活質量,同時也獲得健康管理這個龐大的市場。
另一個例子(如下圖),德州大學奧斯汀分校的腦機語言轉化試驗。希望幫助肌萎縮癥晚期患者,通過腦機接口,仍保持與外界的溝通。借助? Wavelet Toolbox,使用小波多分辨率分析技術將腦磁圖 MEG 信號降噪,并分解為特定的神經振蕩帶(高伽馬、伽馬、阿爾法、貝塔、西塔和德爾塔腦波)。
然后從去噪和分解的信號中提取特征。包括均值、中位數、標準差、四分位數和均方根。當嘗試的 SVM 和 ANN 方法,得到大約 80% 的分類準確率,而當結合小波和深度學習時,這個準確率提高到了 96 %以上。AI + Signal Processing?的神奇合力。
? ? ?
四、AI + Signal Processing 實例——無接觸式病人監測
故事講完了,下面就為大家舉一個實例,讓大家眼見為實,體會到 AI + Signal Processing 的神奇合力,以達到小模型,大效果的目標。
【實例】
無接觸式病人監測。術后病人往往渾身插滿大大小小的管線,其中除了輸液和供氧,大都是心跳和呼吸監控的。翻身和活動都受限,尤其術后,會很難受。因此,臨床產生墻裂的無接觸式病人監控設備需求。如下圖所示,在病人上方設置一個功率很小的雷達,通過檢測心跳的胸腔起伏,對連續波雷達波的影響,從回波中還原出病人的心跳。
數據準備:1.從志愿者身上以傳統方式采集準確的心電圖,2.同時從雷達上采集回波數據。
目標:從下圖中,上面一行的雷達回波中,得到下面一行的ECG心電圖。
?
?
01
Test?1:
首先嘗試將 Raw Signal 雷達回波原始數據,直接提供給神經網絡。
構建 1D 卷積網絡 +BiLSTM 的神經網絡如下:
心中默念“芝麻開門”,等待不到一個世紀后,得到訓練后模型,對輸入雷達回波,還原出的心電圖如下圖所示,第一行是雷達回波,第二行是實測心電圖,第三行是還原出的心電圖。第二、三行信號天壤之別,是不是神經網絡的神力消失了?第一反應,是用更大的更高級的模型?
且慢。想到小模型,大效果的目標。讓我們試試 AI + Signal Processing 的神奇合力。
02
Test?2:
這次,我們希望嘗試添加一些預處理和特征提取功能,看看能否化腐朽為神奇。可能很多小伙伴缺乏信號處理背景,對信號處理望洋興嘆。確實,過去我們設計信號處理算法,還需要查手冊、記語法、寫代碼、調 Bug,想想處處是坎,步步有坑。T-T
而 MATLAB 提供了非常豐富、好用的信號處理算法設計功能。還有一系列圖形化界面的 APP,可以快速嘗試各種算法設計,設置調整各種參數和配置,并可視化效果,達到要求后,所有在圖形化 APP 中完成的操作,自動轉化為對應 MATLAB 函數/代碼。
下面,給大家展示,如何快速設計用“高深”的小波分解和信號重構,來設計這里的預處理和特征提取模塊。注意哦,我們不看手冊、不記語法、不寫代碼,更不調 bug。
基本思路:根據物理原理,我們知道心跳胸腔起伏,會在雷達回波中,引發微多普勒效應,因此回波中應該包含了心跳信號,我們先對回波進行小波分解,然后再基于有效成分,進行信號重構。
我們打開信號多分辨率分析器,這個圖形化 APP。在左上角可以設置小波基及分解層數等。中間窗口,可看到分解的各個成分。左下角可勾選用于最終重構的成分。最右邊窗口,用不同顏色顯示原始信號和重構信號。
將回波導入 APP 后,在中間窗口看到如下各分解成分。將其與目標 ECG 心電信號比對,發現 level1、level2、level6 及 scaling coefficients 與目標 ECG 相關度很小。于是僅將 level3-5,在左下角勾選,用于 ECG 信號重構。滿意后,做的所有操作,可以點擊 export,自動生成 MATLAB 函數,不必寫代碼,不必調 bug。
03
算法模型搭建:
基于上面的分析,設計的網絡如下。傳統預處理模塊,通常獨立于神經網絡之外,而 MATLAB 中專門提供了離散小波分解的層,并支持選擇小波基和信號重構的成分。這一層的可理解成固定系數的層,不需要參與學習。放在網絡模型中的預處理層,大大簡化模型搭建;在訓練時,也不必單獨先對數據成批預處理,將預處理后的特征向量,存在本地,再分批讀取訓練;MATLAB 支持合并在同一個模型中,就可以像普通網絡模型一樣,直接提供數據訓練即可(生活多美好)。類似的層,MATLAB 也提供cwtLayer、 stftLayer 層,分別可支持連續小波變換和短時傅里葉變換。
心中再次默念“芝麻開門”,得到訓練后模型,對輸入雷達回波,還原出的心電圖如下圖所示,第一行是雷達回波,第二行是實測心電圖,第三行是之前未使用小波變換,還原出的心電圖,第四行是使用小波分解和信號重構的預處理后,還原出的心電圖。第四行和第二行高度一致,驚不驚喜,意不意外?還是那個毫不起眼的輕量小模型,在與 AI + Signal Processing 的結合,產生出神奇的效果。
五、總結
請慢慢品味算法中的美感,我們簡單總結下所展示的。最初直接將原始信號輸入 1D 卷積 +BiLSTM 神經網絡,經過漫長訓練,還原出的信號,完全看不出目標心電信號的影子;而采用信號多分辨率分析器快速探索設計的,基于離散小波分解和信號重構的預處理算法,與最初這個輕量級模型結合,就馬上化腐朽為神奇。從一片嘈雜的回波中,準確還原出了目標心電信號。這個 Demo 已被發布在 MATLAB shipping demo 中。心動不如行動,感興趣的小伙伴?【4】。
細細品味后,好的預處理及特征提取,是高性能、輕量化模型成為可能的點睛之筆。臨床實際應用千變萬化,這個部分恰恰為醫療設備的工程化落地,提供了重要的魯棒性和可靠性;而信號特征的提取,將稀疏、復雜的原始數據進行提煉,尤其投影在變換域上,得到精干的描述,這才使輕量級 AI 模型的使用成為可能。
編輯:黃飛
?
評論
查看更多