这次想写一个一直深藏心中的研究方向,那就是多模态方向。其实当初在实验室那会儿,最先接触的就是多模态的工作,因此这是我科研之路的起点。只不过,后来经历了一些波折,导致个人没有往这个方向深挖,这篇博客主要是想记录一些多模态相关的知识基础,还会涉及一些脉冲神经网络(SNN)的知识,同时记录个人参与过的工作,留下一些回忆。
多模态学习,或者称为多模态机器学习(MMML),是近年来学术界非常热门的话题和方向。就如2023年讨论度最高的大模型方向,目前也在往多模态方向进军,各大企业都追求开发多模态的大模型。多模态听起来可能有点抽象,但不难理解。
所谓模态(Modality),通常指的是某种感觉、知觉或信息传递的方式或通道,具体可以涵盖不同的感觉或信息传递方式,如视觉、听觉、触觉、嗅觉和味觉等,每种感觉或信息传递方式都可以被称为一种模态。多模态(Multimodal)则是指涉及多种不同感觉或信息传递方式的情况。在多模态信息处理中,不同的感觉通道可以相互交互,以综合或增强对信息的理解和感知。
多模态可能有以下三种形式:
我们再细说多模态数据。对于同一个对象,描述的方式可以是不同的(视角或领域不同),把描述这些数据的每一个领域或者视角叫做一个模态。通俗地理解,就是输入数据的类型不同,比如文本、图片、音频、视频等等。在视频分析中,视频可以分解为音频、图像、字幕等多模态信息;每个图片又可以表示成强度或者灰度、纹理等不同模态特征。
模态间的关联性:每个模态能为其余模态提供一定的信息,即模态之间存在一定的关联性。对不同模态数据进行同等处理或对所有模态特征进行简单的连接整合不能保证挖掘任务的有效性。
多模态机器学习是指基于不同模态的数据进行学习的算法,通常研究文本、语音和视觉。
多模态情感分析(MSA)是一种用于分析人类情感的方法,它通过同时分析文本、图像、语音等多种信息模态来识别情感。这种方法能够更全面地了解人类情感,因为它能捕捉到文本中难以表现的信息,例如面部表情和语音语气。
现阶段的多模态情感分析任务,大多站在如何有效地将多模态的特征信息进行融合这一角度考虑问题,目的是排除与情感分析任务无关的噪声数据,最大化利用与情感分析任务相关的多模态数据,包括单模态内的数据交互与模态间的数据交互,最终达到分析情感极性的目标。
1、特征级融合(早期融合)
特征级融合(有时称为早期融合)将每种形态(文本、音频或视觉)的所有特征组合成单个特征向量,在开始提取特征后就进行融合,然后将其输入到分类算法中。特征级融合的好处是,它允许不同的多模态特征之间的早期关联,从而可以更好地完成任务。
这种融合方法的缺点是时间同步,因为收集到的特征属于几种模态,在许多领域可能差异很大。因此,在融合过程发生之前,需要将特征转换为所需的格式。这种融合方法不能有效地表示模态内的动态,它无法过滤掉从多个模态收集的冲突或冗余数据。模型基本结构如下:
2、后期融合(晚期融合)
由于模态之间的数据的相关性较高,以及多模态数据源无法同步的问题,针对该场景,有了后期融合模型。在后期融合中,先对各模态的特征进行独立处理和分类,然后将分类结果融合形成最终的决策向量,即前期各模态数据单独训练得到预测结果,后期采用决策或者集成的方式将多模型的输出结果进行规则融合。因为融合发生在分类之后,这个过程被称为晚期融合。
由于早期融合的挑战,大多数学者选择在决策级融合中分别对每个模态的输入建模,最后整合单模态识别的结果。由于不同分类器产生的错误不相关,分类器融合优于单独的分类器。由于由许多模态产生的决策通常具有相同形式的数据,从不同模态接收的决策的融合比特征级的融合更容易。这种融合过程的另一个好处是,每个模态可以使用可用的最佳分类器或模型学习其特征。当分析任务需要使用不同的分类器时,决策级融合步骤中所有这些分类器的学习过程变得困难和耗时。模型基本结构如下:
3、混合融合
既然有了早期融合和晚期融合,为了平衡上述两种方法的优劣,于是有了混合融合模型,即针对数据同步、相关性不强的的模态进行早期融合,对相关性强、数据和更新不同的模态进行晚期融合。在一些数据集上,效果可能要好于早期融合和晚期融合。其模型结构如下:
4、张量融合
张量融合使用一个张量融合层(显式模拟单模态、双模态和三模态相互作用)构建了一个使用模态嵌入的3倍笛卡尔积,它将所需的训练样本数量降至最低。其中一种张量融合技术 MTFN 的体系结构如下图所示:
5、双模态融合
基于两两的模态表示,新的端到端网络实现了融合(相关增量)和分离(差异增量),这两个组件同时接受训练。由于模态之间已知的信息不平衡,该模型以两个双模态对作为输入。其中一个双模态融合架构 BBFN 结构模型如下图所示:
6、基于注意力机制的融合
背景信息提取和多模态融合是多模态情感分析和情感识别中最重要的两个难点。基于双向递归神经网络模型的多层次背景特征提取称为基于注意机制的融合。在话语层面,每种情态对情感和情感分类的贡献不同。因此,该模型建议多模态融合采用基于注意的互态融合,以适应每个互态话语的重要性。将上下文注意的单模态特征两个两个地连接起来形成双模态特征,然后将所有双模态特征合并在一起形成三模态特征向量,每一步融合后提取上下文特征。其中一种基于融合机制的模型MMHA 体系结构如下图所示:
以上是对多模态学习的简单介绍,我提及的都是比较基础的概念,大家可以参考其他大佬or奆佬的博客学习学习!
接下来我简单介绍个人之前在实验室参与的科研项目(多模态情感分析),我参与的部分其实不多,但是整个流程基本了解,主要目的是助于大家更深入地了解多模态学习(同时让我巩固一下知识😂)。
在该工作中,我们自己构建了一个用于情感分析的印尼多模态视频数据集(命名为IMVD)。我所在实验室的成员从YouTube上收集了187个印尼语视频(人工找时间成本确实高)。该数据集涉及不同领域:餐厅/烹饪、名人、美容评论、品牌/产品、网络名人博主、在线教程、政治、健康、情感、个人经历、书籍推荐、社会事件和观点。
1、获取方法
这些视频是通过在YouTube人工检索找到的(搜索相关的印尼语单词),然后根据是否符合以下标准进行筛选: ①说话者的脸部应清晰地面对摄像头约1分钟;②视频中只有说话者的声音,背景噪声应尽可能小;③说话者表达了他/她的观点(明显或含蓄)。
所有选中的视频片段也都经过预处理。每段视频都要经过人工编辑,选择包含观点的片段,以确保生成的视频包含单一的主题。视频中经常会出现文字标题字幕或解释,有时还伴有动画。为了解决这一问题,我们对部分视频片段进行手动分割。
有些视频中的人物讲话时,镜头会被打断,或转向其他地方,从而影响视频质量。我们会在不影响讲话内容的前提下尽量减少这种情况的出现。不过操作起来有点难,我们的处理方式会对这些视频的情感分析造成影响。
此外,在该数据集中,我们还保留了一些印尼当地的特征,如戴头巾的女性,以及带有一点点BGM的视频(越来越多的YouTube博主喜欢给视频加BGM,增加了音频情感分析的难度)。
2、转录
对视频进行预处理后,我们再进行人工转录,以提取每段视频中的每一句话。许多印尼视频不包含字幕,因此我们请印尼语专业的同学帮忙口述每个视频,同时用ELAN工具获取文本内容。此外,我们还为每个句子进行情感标注,并根据说话者表达的意思和停顿来判断每个句子的开始和结束,然后手动划分每个句子在音频中的位置。之后,我们从获得的eaf文件中提取每句话的开始时间、结束时间、文本内容和情感标注。
每个视频包含4-16个语句,每个句子的长度从3s-20s不等。虽然人工转录耗费了大量人力和时间,但结果比较可靠,而且有助于同时收集其他数据。
3、情感标注
我们使用ELAN工具进行情感标注。标注是根据语句对应的视频、对应的音频和语句内容进行的。我们将每个语句标记为七种情感类别:恐惧、厌恶、愤怒、悲伤、中性、高兴和惊喜。在标注中,我们用数字来表示相应的情绪(-4 表示恐惧,-3 表示厌恶,-2 表示愤怒,-1 表示悲伤,0 表示中立,1 表示高兴,2 表示惊讶)。
4、音频特征提取
我们从每个视频片段的音轨中提取每个视频的音频,并根据文本句子的时间段进行切割,这样每个视频至少有3个子音频片段。同时,我们使用OpenSmile工具提取每段音频的音高和音强。
5、视频特征提取
根据文本句子的时间段,从每个完整视频中分割并提取子视频,因此许多子视频属于同一视频。每个视频片段中只有一个人,大部分时间他们都面对镜头。同时,我们使用dlib库提取了人脸的坐标特征,得到了68个关键点的定位,并使用几何方法计算相关特征点,得到了13个人脸情感特征。
写到这突然发现,后续的工作我不太了解,当时主要是师兄师姐在负责。我们用了一个多模态情感分析任务的框架,尝试将该框架的数据集换成我们自己的数据集,这就涉及到数据对齐、模态融合等工作,可惜的是,当时我还年轻,没有参与后面的代码工作中。
不过通过这段经历,我对多模态这三个字有了浅薄的认识,意味着我开始入门多模态这一领域了。当时的我始终认为这个方向是相当有前景的,事实证明确实如此,有机会的话,我还会继续钻研多模态的相关研究。
脉冲神经网络(SNN)属于第三代神经网络模型,建立在脉冲神经元的基础上,模拟了神经元和突触状态,更接近于生物神经元,因此具有很大的潜力。SNN 使用脉冲——这是一种发生在时间点上的离散事件,而非常见的连续值。每个峰值由代表生物过程的微分方程表示出来,其中最重要的是神经元的膜电位。本质上,一旦神经元达到了某一电位,脉冲就会出现,随后达到电位的神经元会被重置。对此,最常见的模型是 Integrate-And-Fire(LIF)模型。此外,SNN 通常是稀疏连接的,并会利用特殊的网络拓扑。
SNN体系结构由脉冲神经元和互连的突触组成,这些突触由可调节的标量权重建模。实现SNN的第一步是使用基于速率的方法、某种形式的时间编码或群体编码将模拟输入数据编码为脉冲序列。如前所述,大脑中的生物神经元(和仿真的脉冲神经元类似)从神经网络中的其他神经元接收突触输入。生物神经网络既具有动作电位生成动力学,又具有网络动力学。与真正的生物网络相比,人工SNN的网络动力学得到了极大的简化。
那么,在这种情况下,假设建模的脉冲神经元具有纯阈值动力学是有用的。突触前神经元的活动调节突触后神经元的膜电位,当膜电位超过阈值时产生动作电位或脉冲。在具有大量的生物学细节和高计算成本的HH模型之后,人们提出了多种神经元模型,例如脉冲响应模型(SRM)、Izhikevich神经元模型以及泄漏整合放电(LIF)神经元。 LIF模型非常受欢迎,因为它可以捕获外部输入的直观特性,从而以明确的阈值在整个泄漏的细胞膜上累积电荷。(这两段比较学术化。。可以选择性跳读,大概了解即可)
脉冲神经网络中的脉冲序列通过突触连接传播。突触既可以是兴奋性的,可以在接受输入时增加神经元的膜电位,也可以是抑制性的,可以降低神经元的膜电位。学习的结果可以改变自适应突触的强度(权重)。 SNN的学习规则是开发多层(深度SNN的最具挑战性的组成部分,因为脉冲序列的不可微性限制了流行的反向传播算法。
脉冲神经网络分为三种拓扑结构,分别是前馈型脉冲神经网络、递归型脉冲神经网络和混合型脉冲神经网络。
1、前馈型
在多层前馈脉冲神经网络结构中,网络中的神经元是分层排列的,输入层各神经元的脉冲序列表示对具体问题输入数据的编码,并将其输入脉冲神经网络的下一层。最后一层为输出层,该层各神经元输出的脉冲序列构成网络的输出。输入层和输出层之间可以有一个或者多个隐藏层。
此外,在传统的前馈人工神经网络中,两个神经元之间仅有一个突触连接,而脉冲神经网络可采用多突触连接的网络结构,两个神经元之间可以有多个突触连接,每个突触具有不同的延时和可修改的连接权值。多突触的不同延时使得突触前神经元输入的脉冲能够在更长的时间范围对突触后神经元的脉冲发放产生影响。突触前神经元传递的多个脉冲再根据突触权值的大小产生不同的突触后电位。
2、递归型
递归型神经网络不同于多层前馈神经网络和单层神经网络,网络结构中具有反馈回路,即网络中神经元的输出是以前时间步长上神经元输出的递归函数。递归神经网络可以模拟时间序列,用来完成控制、预测等任务,其反馈机制一方面使得它们能够表现更为复杂的时变系统;另一方面也使得有效学习算法的设计及其收敛性分析更为困难。
传统递归人工神经网络的两种经典学习算法分别为实时递归学习算法和随时间演化的反向传播算法,这两种算法都是递归地计算梯度的学习算法。递归脉冲神经网络是指网络中具有反馈回路的脉冲神经网络,由于其信息编码及反馈机制不同于传统递归人工神经网络,由此网络的学习算法构建及动力学分析较为困难。递归脉冲神经网络可应用于诸多复杂问题的求解中,如语言建模、手写数字识别以及语音识别等。递归脉冲神经网络可分为两大类:全局递归脉冲神经网络和局部脉冲神经网络。
3、混合型
混合型脉冲神经网络包括前馈型结构又包含递归型结构。
1、优势
2、劣势
一般认为ANN是纯数字编码的,神经元输入输出都是数值(浮点数、定点数或者模拟值)。而SNN则是脉冲时间编码的,神经元的输入输出都是脉冲序列(0-1 向量)。这是两者的本质区别。除此以外,SNN在训练方法上也很不一样,常采用传说中的STDP学习规则,这种学习规则需要同时看前级和后级神经元的发放情况,共同决定权重的改变量。相反ANN一般都是BP学习规则,权重更新仅仅与后级神经元反馈回来的误差有关,而跟前级神经元无关。但是,学习规则并不是两者的本质区别,一方面两种网络都各自有多种训练方法,另一方面由于STDP一直不理想,现在很多SNN喜欢用BP来训练,然后再做一次ANN到SNN的映射。
1、图像特征→脉冲序列
图像特征指图像中所包含的有用信息,这些信息可以用来描述图像的形状、大小、颜色、纹理等。将图像特征转换为脉冲序列是一种数字图像处理技术,它通过将图像中的有用信息编码为一系列的比特位来实现。将图像特征转换为脉冲序列一般的几个步骤:
2、音频特征→脉冲序列
音频特征指音频信号中所包含的有用信息,这些信息可以用来描述音频的频率、音色、时间和空间信息等。将音频特征转换为脉冲序列是一种数字信号处理技术,它通过将音频信号中的有用信息编码为一系列的比特位来实现。将音频特征转换为脉冲序列一般的几个步骤:
3、文本特征→脉冲序列
文本特征指文本信息中所包含的有用信息,这些信息可以用来描述文本的语言、语法、语义等内容。将文本特征转换为脉冲序列是一种数据编码技术,它通过将文本信息编码为一系列的比特位来实现。将文本特征转换为脉冲序列一般的几个步骤:
上述转换方法是个人基于其他研究和当前的方法总结的,仅供参考。SNN我也接触过蛮长一段时间的,所以自己就摸索出了一些方法。目前SNN还处于萌芽阶段,网上相关的介绍也不多,希望我的经验对同样打算入门SNN的小伙伴有帮助。
好了,写完这篇继续肝毕设了,到时有机会再和各位聊聊我毕设的工作哈哈哈哈哈,如果感觉这篇文章有用,点赞关注就不会迷路了💙