【一种基于伪标签半监督学习的小样本调制识别算法】书史足自悦,安用勤与劬。这篇文章主要讲述一种基于伪标签半监督学习的小样本调制识别算法相关的知识,希望能为你提供帮助。
一种基于伪标签半监督学习的小样本调制识别算法???人工智能技术与咨询???
来源:《西北工业大学学报》,作者史蕴豪等
摘 要:针对有标签样本较少条件下的通信信号调制识别问题,提出了一种基于伪标签半监督学习技术的小样本调制方式分类算法,通过优选人工特征集、设计高性能分类器以及基于输出概率的伪标签数据选择方法,构建高效的伪标签标注系统,然后通过该伪标签标注系统与基于深度学习的信号分类方法配合,实现在少量有标签样本和大量无标签样本条件下的调制方式分类。仿真结果表明,对6种数字信号进行调制识别,在信噪比大于5 dB时,伪标签算法可将模型识别性能提高5%~10%,该算法设计简单,具有较大应用价值。
关 键 词:调制识别;
伪标签;
半监督学习
通信信号调制方式识别是通信侦察、认知电子战领域的关键技术之一,在实际战场环境中,由于敌我双方的非协作特性,使得在还原敌方通信信号、获取敌方情报信息之前必须进行调制方式识别,此外,通信信号调制方式识别也为后续的信号解调、比特流分析、协议识别、信号解密、灵巧干扰等提供了重要支撑。
调制识别技术发展至今,已逐渐形成两大类基于似然比的调制识别方法和基于特征的调制识别方法。基于似然比的调制识别方法主要是通过计算似然概率模型估计不同调制方式的概率,然后将各个信号代入检验,最后判定似然概率最大的为识别结果。基于似然比的调制识别算法主要分为3类[1-3],但该类方法普适性差的缺点较为明显,由于概率密度函数都是针对特殊环境提出来的,因此参数微小的偏差和模型失配都会导致识别率大幅降低。基于特征的调制识别方法通过提取信号不同特征搭配分类算法从而做到对信号的识别,如文献[4]使用高阶累积量对8种数字信号进行识别,文献[5]混合高阶累积量与循环谱特征对信号进行分类,文献[6-7]使用信号熵特征对不同调制信号进行分类。但是基于人工提取特征的调制识别算法中,对特征区分度要求较高,一旦特征对于不同信号辨别性能差,识别模型效果就会显著下降,因此有必要对自动提取特征的方法进行研究。
近年来,深度学习在模式识别、计算机视觉等领域取得了显著突破,利用深度学习的方法自动提取信号特征并对信号调制方式进行识别也已经取得了不错的效果,O′Shea等[8-9]最早于2016年利用有监督深度学习技术实现调制方式识别,该论文直接使用卷积祌经网络(convolutional neural network,CNN)构建端到端的学习模型,成功对包括WBFM、DSB、BPSK、16QAM在内的11种数字或模拟调制方式进行了识别。Jeong等[10]学者在论文中提出了一种算法,利用短时傅里叶变换(short-time Fourier transform,STFT)将信号从时域转换为时频域,并通过深度卷积神经网络提取时频域特征,最终完成了对2-FSK、4-FSK、8-FSK等7种调制识别方式的识别,其在-4 dB的信噪比下仍有90%以上的识别正确率。Meng等[11]学者提出了一种联合噪声估计的调制识别算法,该研究提出了一种巧妙的网络结构,同时将原始信号数据和信噪比作为神经网络的输入,仿真结果显示这种算法在不同信噪比下、不同频偏下的识别成功率已经非常接近理论识别率的上限。文献[12]提出利用时频图的纹理信息进行调制识别,在大样本条件下,可取得良好的分类效果。Zhang等[13]利用卷积神经网络提取信号SPWVD时频图特征和BJD时频图特征并与大量手工特征融合对BPSK、QPSK,OFDM等8种调制方式进行识别,在-4 dB时仍有92.5%的识别准确率。
虽然基于深度学习的调制识别方法已经取得了非常显著的成果,但是国内外专家的研究重点都偏向于有监督深度学习方法,而有监督深度学习方法需要大量有标签信号样本作为支撑。但在实际应用中,一些敏感的军用通信信号由于受敌方保密要求的限制以及地理环境条件的制约,在平时只能获取十分有限的信号样本,而这些信号真正到了战场又会大量出现。因此,如何利用少量有标签信号结合大量无标签信号的小样本调制方式识别逐渐成了大家关注的重点方向之一。现阶段,国内外针对小样本调制识别的研究尚处于起步阶段,但在其他领域已有一些半监督学习算法出现。半监督学习解决的就是有标签样本数量较少情况下如何提升模型性能的问题,其核心思想为结合无标签数据进行优化。尽管无标签数据没有标签信息但是它们和有标签数据一样都是从相同的数据源独立同分布采样得到的,因此它们包含的关于数据分布的信息对优化模型大有裨益[14]。半监督学习方法主要包括自训练学习方法[15]、生成式学习方法[16]以及半监督支持向量机等[17]。
为了充分利用无标签信号解决小样本调制识别问题,本文提出了一种基于伪标签半监督学习的小样本调制识别模型。该模型通过优选人工特征集结合高性能分类器为无标签信号进行预测打上伪标签,然后利用深度学习类方法联合训练带标签样本与伪标签样本从而实现小样本调制识别。
1 小样本识别模型本文采用基于伪标签的半监督学习方法,在仅有少量有标签信号样本的条件下进行调制方式识别。基于伪标签的半监督学习是一种增量算法,算法流程图如图1所示,在分类器训练部分,首先通过少量有标签样本提取优选人工特征送入高性能分类器中进行训练,将信号识别准确率提升到一个较高水准,此时若环境中存在大量无标签样本,则进入伪标签生成部分,利用训练好的高性能分类器对无标签样本进行预测,通过预测的概率对无标签样本进行排序,给可靠的无标签样本打上伪标签并加入到训练集中,但该过程并非选择所有的无标签样本均加入训练集,因为全部无标签样本内包含的错误标签样本会严重干扰模型收敛。当环境中无标签样本不足时,也可利用分类器训练部分模块直接进行信号分类。
图1 算法流程图
伪标签算法不断迭代增加有标签样本数量,当有标签样本数量满足迭代要求时,进入深度学习训练部分,将所有带标签的样本数据组合新的训练集,使用分类能力更强的深度学习类方法对所有标签样本进行联合训练,最后利用训练好的模型对测试信号进行预测。本文选取BP神经网络作为生成伪标签的高性能分类器,选取CNN卷积神经网络作为深度学习方法训练真实标签样本与伪标签样本的合集。
2 信号人工特征本文选取多类具有良好区分性能的人工特征作为BP神经网络输入,这些特征均已被证明具有良好的区分能力,其中包括高阶累积量特征、熵特征以及时频特征。
2.1 信号高阶累积量特征
在调制识别技术领域,高阶累积量是应用非常广泛的特征之一,其具有较强的周期分量,可用于准确识别不同的数字调制信号。为了提取高阶累积量,首先要计算信号的高阶矩,信号高阶矩由(1)式计算:
Mpq=E[x(n)p-q(x*(n))q]
(1)
通过信号各高阶矩便可计算得到许多高阶累积量,本文选择下列高阶累积量,这些累积量均已被证明在调制样式分类中有较好鉴别性能[18-19]
2.2 信息熵特征
熵是用于评价信号或系统状态平均不确定性的指标。在信息论领域,熵用于衡量信息的信息量大小,信息的不确定程度越大,则其熵值越大,因此信息熵理论为我们提供了一个很好的信号特征描述方法。本文提取信号的功率谱熵、奇异谱熵和能量谱熵,以此作为信号的特征[20-21]。
2.2.1 功率谱熵
假设时间序列X长为L,对其进行离散傅里叶变换,变换结果为
(9)
式中:表示傅里叶变换后的第k个频谱;N表示变换点数,一般要求N为2的整数幂且接近序列X的长度。计算频谱序列Y在y(k)处的功率谱
(10)
记
(11)
将(11)式代入香农熵计算公式,可得到功率谱香农熵。香农熵计算公式为:式中,H表示熵值;
pi表示信号概率分布。
2.2.2 奇异谱熵
奇异谱分析是近年来非常流行的一种研究非线性时间序列数据的强大方法,它结合相空间重构和奇异值分解对时间序列维数进行估计。若一段离散时间序列为
X=[x1,x2,x3…xN]
首先将信号分段,假设分段长度为m,在奇异谱分析过程中,m最好为信号周期的整数倍且不宜超过信号序列长度的1/3,重构后的序列轨迹矩阵为
(12)
对(12)式矩阵进行奇异值分解,可得
(13)
式中:U和V均为正交矩阵;U为左奇异矩阵;V为右奇异矩阵;
Σ矩阵可化为对角阵
式中,σk表示矩阵M的奇异值且除对角线上元素以外其余值均为零,对角线上的非零元素便构成了序列的奇异值谱,即
σ=σ1,σ2,…σi,…σj|j<
K
记pi表示非零奇异值σi占所有非零奇异值之和的比值
(14)
将(14)式代入香农熵计算公式,即可得到奇异值香农熵。
将(14)式带入指数熵计算公式,即可得到奇异谱指数熵。指数熵的计算公式为:H=E[e1-pi]=∑pie1-pi。式中,H表示熵值;
pi表示信号概率分布。
2.2.3 能量谱熵
对于序列信号X=x1,x2…xN,其能量谱定义为
(15)
式中,X(ω)表示序列X的离散傅里叶变换。记pi为
(16)
将(16)式代入指数熵计算公式,即可得到信号能量谱指数熵。
2.3 时频特征
2.3.1 归一化中心瞬时振幅功率密度最大值
归一化中心瞬时振幅的功率密度最大值可在一定程度上反应不同信号的谱特征,其定义如下[22]:
式中:Ns表示信号序列长度;ma表示信号瞬时幅度的均值。
2.3.2 归一化中心瞬时振幅绝对值的标准差
序列信号归一化中心瞬时振幅绝对值的标准差可由(18)式求得,其定义如下
(21)
3 网络结构本节将对选择的BP网络与CNN卷积神经网络作详细介绍。选用BP网络主要原因是BP网络具有学习能力,可以自动学习各个特征对分类结果影响的权重,即送入网络的特征中若有部分在分类方面作用不明显那么其所属权重就会减小。因此对于BP网络而言,其对输入的特征会自动进行“特征筛选”,这在一定程度上可以减轻对先验信息的依赖,此外,由于深度神经网络等模型参数庞大、权重太多,在小样本条件时模型过拟合现象非常严重,因此浅层BP网络用作小样本阶段训练具有明显优势。
BP网络的训练过程如图2所示,在开始训练时,由于仅有少量的有标签信号样本,训练出的模型泛化能力弱,而人工特征不依赖于训练数据,可以弥补训练数据量较少时特征表达能力不足的问题,因此本文设计的BP网络模型输入为已具备分类能力的优选特征集。首先对信号进行归一化处理,然后计算信号熵特征、高阶累积量特征和时频特征,将所有特征组合后一起送入BP网络训练,最后利用softmax分类器输出信号预测概率。
图2 网络训练过程
BP网络结构如图3所示,本文设计的BP网络由1层输入层,4层全连接层以及softmax分类器构成,输入层大小为1*13,分别代表13种人工提取的特征,各全连接层神经元个数分别为16,32,64,32,各神经元均采用ReLU激活函数。为提升网络的泛化能力,在第三、四层全连接层后使用dropout技术干扰训练以防止网络过拟合,以提高网络在测试样本上的泛化能力,但干扰只发生在网络训练阶段,在网络模型生成伪标签时则停止干扰,Dropout比率设置为0.5。BP网络训练产生的损失函数如下所示:
图3 BP神经网络结构
(22)
式中:表示有标签信号产生的分类损失;表示伪标签信号产生的分类损失;N表示有标签信号数量;N′伪标签信号数量,μ用于控制2类损失的比重。
在利用伪标签算法迭代训练BP网络过程中,有时难免给无标签信号样本打上错误的伪标签,因此伪标签的准确性对网络最终的识别率有决定性影响。由于softmax分类器输出的是各个类别的预测概率,因此本文提出可靠条件为
p2+p3≤p1
(23)
式中:p1表示softmax分类器输出的最大概率;p2,p3依次表示softmax分类器输出的第二大、第三大概率。即只有softmax输出的最大概率大于第二大概率与第三大概率之和时,才会给该无标签信号打上伪标签,通过此基于输出概率的样本选择算法便可在一定程度上保证伪标签的可靠性。
无标签样本标注伪标签结束后,将真实标签样本与伪标签样本联合起来送入CNN卷积神经网络训练,CNN结构如图4所示。为充分发挥卷积神经网络的特征提取能力,本文直接将IQ信号输入卷积神经网络,信号输入网络前,将其转换为二维数据,即若信号长为L,则转换后的数据格式为[2,L],两路分别代表I路数据与Q路数据。网络共包含3层卷积层和3层全连接层,其中第一个卷积层卷积核个数为64,核尺寸为2*4,第二个卷积层卷积核个数为32,核尺寸为1*4,第三个卷积层卷积核个数为16,核尺寸为1*4。卷积层完成对序列数据的特征提取,将提取后的特征转换为一维序列送入全连接层,3层全连接层的维度分别为64,32,16,将第三个全连接层输出的特征送入softmax分类器进行分类,输出预测结果,并通过反向传播不断优化网络参数。
图4 卷积神经网络结构图
4 仿真结果及分析本文选用的调制信号集为BPSK,4PAM,4PSK,8PSK,16QAM,64QAM,共计6种数字调制信号,信号序列长度L=100,信噪比从-10至20 dB,间隔为2 dB。训练集每类信号生成4 000个信号样本,信噪比随机,共计24 000个样本。测试集每类信号每个信噪比点生成500个信号,共计48 000个信号,所有信号均由MATLABR2016a仿真生成。
网络训练均基于python下的Keras深度学习框架实现,硬件平台为Intel(R)Core(TM)i7-8700CPU,GPU为NVIDIA GeForce 1060Ti。
4.1 信号特征提取分析
本节对6类数字信号在-10至20 dB间每个信噪比点生成500个样本,提取信号13种特征并取平均值,取其中具有代表性的特征并绘图,得到图5所示的特征曲线图。在进行信号奇异谱分析时,由于信号序列长度L=100,且基带序列为随机生成无周期特性,因此设置分段长度m=33;
在计算序列离散傅里叶变换时,由于要求傅里叶变换点数靠近序列长度且为2的整数幂,因此设置傅里叶变换点数
图5 信号特征曲线图
N=128。
图5a)至5e)分别代表信号功率谱香农熵、高阶累积量C40、高阶累积量C61、奇异谱指数熵、功率谱峰值和瞬时幅度标准差随信噪比变化的曲线。可以看出,随着信噪比的不断上升,各类信号特征间的差异越来越大,代表着特征的区分能力越来越强,但每个特征均有无法区分的调制信号,因此本文选择综合13类特征一起作为分类特征。
4.2 伪标签算法可行性分析
本节对比3类识别算法在不同训练样本总量下的识别性能,分别为人工提取特征结合BP神经网络、时序IQ序列结合CNN卷积神经网络、时序IQ序列结合LSTM循环神经网络,LSTM网络为KERAS框架下的CuDNNLSTM。3类算法均迭代200次,使用Adam函数优化。当不同样本量条件下进行调制方式识别时,各算法在测试集上的性能如图6所示,从仿真结果可以看出,当训练样本数量有限时,例如图6a)所示总样本量为600个,通过人工提取特征结合BP神经网络的识别率要远高于CNN卷积神经网络的识别率以及LSTM循环神经网络的识别率。但随着样本数量的不断增加,人工提取特征结合BP神经网络的识别率变化不大,而CNN卷积神经网络的识别率和LSTM网络的识别率则上升的非常快,当总样本量达到6 000时,CNN的最高识别性能已经优于人工提取特征结合BP网络的性能,其最高识别率可以达到85%以上,当总样本量达到24 000时,网络的最高识别率可以达到95%以上。因此,利用人工特征结合BP神经网络在样本量较少的情况下采用伪标签增量算法增加训练数据总样本量,而后采用CNN卷积神经网络进行训练是可行的。
图6 不同样本总量下各算法识别率曲线
4.3 伪标签算法识别率分析
通过4.2节中的仿真结果可分析出,在样本量充足的条件下本文提出的CNN深度卷积神经网络模型性能优于CuDNNLSTM网络,因此本文选用CNN作为训练模型对打伪标签后的样本集进行训练。
假设初始条件为有每类调制信号有100,500,1 000个带标签样本,共600,3 000,6 000个带标签样本以及48 000个无标签样本,首先通过人工提取特征结合BP神经网络对600,3 000,6 000个带标签样本进行训练,而后通过伪标签增量算法对无标签样本打伪标签,最后利用CNN对有标签样本、伪标签样本的IQ序列进行联合训练。在CNN网络训练过程中,由于真实标签样本与测试集样本分布相同且标签准确,因此本文选用真实标签样本作为验证集,以此提升网络在测试集上的识别性能。
当使用600个真实标签样本对大量无标签样本预测伪标签时,样本数随迭代次数的变化如表1所示。
表1 600个真实样本
从表1的结果可以看出,随着迭代次数的不断增加,伪标签数量不断提升,但由于设置了可靠条件,所以伪标签样本总量并未达到48 000。将所有真实标签样本和伪标签样本一并送入CNN卷积神经网络进行训练,共计29 520个样本,测试集的识别率如图7所示。
图7 伪标签算法识别率对比
当训练样本总量为29 520时,算法各部分运行时间如表2所示,当使用3 000个真实标签样本对大量无标签样本预测伪标签时,样本数随迭代次数的变化如表3所示,从表3的结果可以看出,随着迭代次数的不断增加,伪标签数量不断提升,经过5次迭代后训练样本数总数可达36 566个,测试集的识别率如图8所示,当训练样本总量为36 566个时,算法各部分运行时间如表4所示。
表2 算法运行时间 单位:s
表3 3 000个真实样本
表4 算法运行时间 单位:s
图8 伪标签算法识别率对比
当使用6 000个真实标签样本对大量无标签样本预测伪标签时,样本数随迭代次数的变化如表5所示。从表5的结果可以看出,随着迭代次数的不断增加,伪标签样本数量不断提升,经过5次迭代后训练样本数总数可达41 063个,测试集的识别率如图9所示。
表5 6 000个真实样本
图9 伪标签算法识别率对比
当训练样本总量为41 063时,算法各部分运行时间如表6所示。
表6 算法运行时间 单位:s
通过仿真结果可以看出,在小样本条件下,利用伪标签增量算法对传统特征结合BP神经网络的识别性能有一定的提升,当信噪比大于5 dB时,本文提出的伪标签CNN的网络识别率相较于BP神经网络结合人工特征的识别率可提高约5%~10%。
实际上本文提出的伪标签半监督模型,其性能与生成伪标签所用的人工特征集以及分类器密切相关,通过大量实验发现,如果伪标签标注分类器不能很好区分信号类型,那么能够获得的有效伪标签样本就会较少,总体识别准确率就会偏低,但如果能进一步提升伪标签分类器的识别率,将其控制到90%以上,那么整体算法的识别率甚至可以接近100%。在实际应用过程中,一方面可以实时监控伪标签样本数量分布,从而掌握深度学习类方法是否有足够的样本量支撑,另一方面还可以不断改进特征集和分类器,继续研究更具区分能力的特征并选择更复杂的模型作为伪标签生成器,这样深度学习类方法的性能也会不断提升。
5 结 论本文针对战场信号调制识别领域可能出现的小样本情况进行研究,设计了基于人工优选特征集与BP神经网络的信号伪标签标注方法,并结合基于CNN的通信信号分类模型,形成了小样本条件下通信信号分类新的解决方案,通过大量的实验验证了方案的可行性,在单个信号类型的带标签样本量为100以上时,本文模型就可有效工作,且在不同标签样本量条件下,其总体性能均比常规方法有明显提升。
我们的服务类型公开课程
人工智能、大数据、嵌入式
内训课程
普通内训、定制内训
项目咨询
技术路线设计、算法设计与实现(图像处理、自然语言处理、语音识别)
关注微信公众号:人工智能技术与咨询。了解更多咨询!
推荐阅读
- docker容器基本操作
- 教你python tkinter实现简单计算器功能
- HTML和ASP之间有哪些区别()
- fork()和exec()之间有什么区别()
- C/C++中float和double有什么区别()
- C语言中的%d和%i格式说明符之间的区别
- C结构和C++结构之间有什么区别()
- const char *p,char *const p和const char * const p之间的区别
- CALL和JUMP指令之间有什么区别()