引言: 从 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 模型的使用成为可能。
编辑:黄飞