Heterogeneous Visual Features Fusion via Sparse Multimodal Machine 阅读笔记与代码实现

文章主要通过稀疏多模机对特征进行融合。此处主要记录2.1节联合结构稀疏正则化,并作python实现。

符号说明:

********************************分割线****************************************************

题外话:铰链损失函数(hinge loss)

详情转https://blog.csdn.net/hustqb/article/details/78347713

********************************分割线****************************************************

文中的学习目标得到权重矩阵(即W),这个矩阵算出x中每个属性对于当前类别的重要性。优化目标为铰链损失函数的多分类推广并加入一个正则项(R)进行约束。

其中\gamma > 0为一个不可训练的参数。

紧接着,论文加入了两个正则项

在解释这两个正则项前,必须弄懂L1,L2。

L1、L2参考这篇https://blog.csdn.net/aaalswaaa1/article/details/117448283

下面分别解释两个正则项,省略惩罚系数,常数2是后续方便计算用的,无其他意义。

||W||_{G_1}=\sum_{i=1}^{c} \sum_{j=1}^{k}\left\|\mathbf{w}_{i}^{j}\right\|_{2},可见,在模态之间使用 L1范数,它加强了不同模态之间的相似性,捕捉了模式之间的全局关系。(论文原文翻译)。使模态间的权重稀疏,选出对当前任务有用的模态的特征.

||W||_{2,1}没有声明公式,但结合文中描述与其他同作者论文,得如下公式:||W||_{2,1}=\sum_{i=1}^d||w^i||_2。即使一个模态中的大多数特征对某些视觉类别没有区别,来自同一模态的少量特征仍然具有高度的区别性。这组正则项捕捉了对多个类别都有区别度的特征。因此在对每个特征间用了L1范数,使特征间权重稀疏。

小结

通过两个损失函数,一个负责捕捉模式间的全局关系,找出对当前任务有用的模态的特征;另一个负责在所有特征中找出对当前任务有用的特征。从而自动进行特征选择。

 

python 实现

首先实现了一个简单版的,损失函数中加入一个L1范数,对所有特征进行选择。以下为核心代码,使用了tensorflow。

直接在输入层后面接了一个稀疏矩阵进行特征选择在进行后续操作,稀疏由损失函数中的正则项得到。

...

# 特征选择层,其中x为输入
w1 = tf.Variable(tf.random_normal(
    [106], mean=0.5, stddev=0.1), dtype=tf.float32)
b1 = tf.Variable(tf.zeros([106]) + 0.1)

out1 = w1*x+b1

...
# l1RegLambda 为惩罚系数
loss = tf.reduce_mean( losses) + l1RegLambda * tensorflow.contrib.layers.l1_regularizer(config.model.l1RegLambda)(w1)

 

同理,后面尝试加入群1范数以及L21 范数。设前53与后53位为两种模态的特征。

loss = tf.reduce_mean(
    losses) + config.model.l1RegLambda * l1_regularizer(config.model.l1RegLambda)(w1)+config.model.l21RegLambda *(tf.sqrt(l2_regularizer(2.0)(w1[:53]))+tf.sqrt(l2_regularizer(2.0)(w1[53:])))

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值