【论文极速看】CLIP-Lite:一种不依赖于负样本数量的高效多模态学习方法

【论文极速看】CLIP-Lite:一种不依赖于负样本数量的高效多模态学习方法
FesianXu 20220201 at Baidu Search Team

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:

qrcode


传统的CLIP [1]对比学习模型依赖于海量的图文对训练数据,以及每个正样本对应的负样本的数量,为了弥补CLIP模型对于负样本数量的极度依赖,而单纯通过当前batch size提供足够的负样本又强烈依赖于显卡资源的现况,有些方案提出采用虚拟batch size(即是memory bank)进行弥补 [2]。MoCo [3]模型提出采用动量编码器和负样本队列的方式,可以利用训练历史上的负样本,从而扩大了参与训练的负样本数量。

在文章[4]中,作者提出了CLIP-Lite,该模型通过Jensen-Shannon散度对互信息进行下界估计,而不是像CLIP采用infoNCE对互信息进行估计。互信息(Mutual Information, MI)描述了『在知道某个随机变量 Y Y Y​​后,对于另一个随机变量 X X X​​​的不确定性的减少程度』,对于离散随机变量 X , Y X,Y X,Y​​而言,其联合概率分布为 P X , Y ( x , y ) P_{X,Y}(x,y) PX,Y(x,y)​​,其互信息可表示为 I ( X ; Y ) I(X;Y) I(X;Y)​​,那么:
I ( X ; Y ) = ∑ x , y P X Y ( x , y ) log ⁡ ( P X Y ( x , y ) P X ( x ) P Y ( y ) ) = E P X Y [ log ⁡ ( P X Y P X P Y ) ] (1-1) \begin{aligned} I(X;Y) &= \sum_{x,y}P_{XY}(x,y)\log(\dfrac{P_{XY}(x,y)}{P_{X}(x)P_{Y}(y)}) \\ &= \mathbb{E}_{P_{XY}}[\log(\dfrac{P_{XY}}{P_{X}P_{Y}})] \end{aligned} \tag{1-1} I(X;Y)=x,yPXY(x,y)log(PX(x)PY(y)PXY(x,y))=EPXY[log(PXPYPXY)](1-1)
定义随机变量的熵(entropy)和条件熵(conditional entropy)为:
H ( X ) = − ∑ x P X ( x ) log ⁡ ( P X ( x ) ) = − E P X [ log ⁡ ( P X ) ] H ( X ∣ Y ) = ∑ y P Y ( y ) [ − ∑ x P X ∣ Y ( x ∣ y ) log ⁡ ( P X ∣ Y ( x ∣ y ) ) ] = E P Y [ − E P X ∣ Y [ log ⁡ P X ∣ Y ] ] (1-2) \begin{aligned} H(X) &= -\sum_{x} P_{X}(x) \log(P_{X}(x)) = -\mathbb{E}_{P_X}[\log(P_X)] \\ H(X|Y) &= \sum_{y} P_{Y}(y) [-\sum_{x}P_{X|Y}(x|y)\log(P_{X|Y}(x|y))] = \mathbb{E}_{P_Y}[-\mathbb{E}_{P_{X|Y}}[\log{P_{X|Y}}]] \end{aligned} \tag{1-2} H(X)H(XY)=xPX(x)log(PX(x))=EPX[log(PX)]=yPY(y)[xPXY(xy)log(PXY(xy))]=EPY[EPXY[logPXY]](1-2)
其中有:
P X ∣ Y ( x ∣ y ) = P X Y ( x , y ) P Y ( y ) (1-3) P_{X|Y}(x|y) = \dfrac{P_{XY}(x,y)}{P_{Y}(y)} \tag{1-3} PXY(xy)=PY(y)PXY(x,y)(1-3)
联合(1-2)和(1-3),我们有:
I ( X ; Y ) = H ( X ) − H ( X ∣ Y ) = − ∑ x P X ( x ) log ⁡ ( P X ( x ) ) − ∑ y P Y ( y ) [ − ∑ x P X ∣ Y ( x ∣ y ) log ⁡ ( P X ∣ Y ( x ∣ y ) ) ] = − ∑ x P X ( x ) log ⁡ ( P X ( x ) ) + ∑ y ∑ x P X Y ( x , y ) log ⁡ ( P X ∣ Y ( x ∣ y ) ) = − ∑ y ∑ x P X Y ( x , y ) log ⁡ ( P X ( x ) ) + ∑ y ∑ x P X Y ( x , y ) log ⁡ ( P X ∣ Y ( x ∣ y ) ) = ∑ y ∑ x P X Y ( x , y ) [ log ⁡ ( P X ∣ Y ( x ∣ y ) ) − log ⁡ ( P X ( x ) ) ] = ∑ y ∑ x P X Y ( x , y ) log ⁡ ( P X Y ( x , y ) P X ( x ) P Y ( y ) ) (1-4) \begin{aligned} I(X;Y) &= H(X) - H(X|Y) \\ &= -\sum_{x} P_{X}(x) \log(P_{X}(x)) - \sum_{y} P_{Y}(y) [-\sum_{x}P_{X|Y}(x|y)\log(P_{X|Y}(x|y))] \\ &= -\sum_{x} P_{X}(x) \log(P_{X}(x)) + \sum_{y}\sum_{x}P_{XY}(x,y)\log(P_{X|Y}(x|y)) \\ &= -\sum_{y}\sum_{x}P_{XY}(x,y) \log(P_{X}(x)) + \sum_{y}\sum_{x}P_{XY}(x,y)\log(P_{X|Y}(x|y)) \\ &= \sum_{y}\sum_{x}P_{XY}(x,y) [\log(P_{X|Y}(x|y))-\log(P_{X}(x))] \\ &= \sum_{y}\sum_{x}P_{XY}(x,y) \log(\dfrac{P_{XY}(x, y)}{P_X(x)P_Y(y)}) \end{aligned} \tag{1-4} I(X;Y)=H(X)H(XY)=xPX(x)log(PX(x))yPY(y)[xPXY(xy)log(PXY(xy))]=xPX(x)log(PX(x))+yxPXY(x,y)log(PXY(xy))=yxPXY(x,y)log(PX(x))+yxPXY(x,y)log(PXY(xy))=yxPXY(x,y)[log(PXY(xy))log(PX(x))]=yxPXY(x,y)log(PX(x)PY(y)PXY(x,y))(1-4)
因此互信息可以理解为在知道了额外信息(随机变量 Y Y Y​)后,对于随机变量 X X X​的不确定性的减少程度。显然,当且仅当 P X Y ( x , y ) = P X ( x ) P Y ( y ) P_{XY}(x,y)=P_{X}(x)P_{Y}(y) PXY(x,y)=PX(x)PY(y)的时候,有 I ( X ; Y ) = 0 I(X;Y)=0 I(X;Y)=0​,此时可以理解为随机变量 X , Y X,Y X,Y​​​是完全独立的。

对互信息进行优化在表征学习中有着广泛地应用,通过最大化互信息可以学习到更好的表征。不难看出,互信息可以用Kullback-Leibler(KL) 散度表示,为:
I ( X ; Y ) = D K L ( P X Y ( x , y ) ∣ ∣ P Y ( y ) P X ( x ) ) (1-5) I(X;Y) = D_{KL}(P_{XY}(x,y)||P_{Y}(y)P_{X}(x)) \tag{1-5} I(X;Y)=DKL(PXY(x,y)PY(y)PX(x))(1-5)
然而,对高维的连续随机变量进行互信息估计是一件很困难的事情,特别是当联合概率分布和边缘概率分布都是未知分布的情况下。因此存在有一些方法尝试对互信息进行下界估计,通过对下界进行求最优化从而间接达到对互信息进行优化的目的。目前最常用的有几种下界估计,Donsker-Varadhan(DV)下界,infoNCE下界和Jensen-Shannon(JS)散度下界。DV下界 [5,6] 如(1-6)所示,其中的 T ω ( x , y ) T_{\omega}(x,y) Tω(x,y)​​是一个参数为 ω \omega ω​的神经网络判别器, T ω : X × Y → R T_{\omega}:\mathcal{X} \times \mathcal{Y} \rightarrow \mathbb{R} Tω:X×YR​​​,其对 x x x​和 y y y​​​的相关程度进行判断。
I ( X ; Y ) : = D K L ( P X Y ( x , y ) ∣ ∣ P Y ( y ) P X ( x ) ) ≥ I ^ ω ( D V ) ( X ; Y ) = E P X Y [ T ω ( x , y ) ] − log ⁡ ( E P X P Y [ exp ⁡ ( T ω ( x , y ) ) ] ) (1-6) \begin{aligned} I(X;Y) &:= D_{KL}(P_{XY}(x,y)||P_{Y}(y)P_{X}(x)) \geq \hat{I}^{(DV)}_{\omega}(X;Y) \\ &= \mathbb{E}_{P_{XY}}[T_{\omega}(x,y)]-\log(\mathbb{E}_{P_XP_Y}[\exp(T_{\omega}(x,y))]) \end{aligned} \tag{1-6} I(X;Y):=DKL(PXY(x,y)PY(y)PX(x))I^ω(DV)(X;Y)=EPXY[Tω(x,y)]log(EPXPY[exp(Tω(x,y))])(1-6)
假设 Y = E ψ ( X ) Y=E_{\psi}(X) Y=Eψ(X)是对输入 X X X进行求表征的函数, ψ \psi ψ是表征神经网络的参数。那么对 I ^ ω ( D V ) ( X ; E ψ ( X ) ) \hat{I}^{(DV)}_{\omega}(X;E_{\psi}(X)) I^ω(DV)(X;Eψ(X))进行最优化,需要同时优化 ω , ψ \omega,\psi ω,ψ。表示为:
( ω ^ , ψ ^ ) = arg ⁡ max ⁡ ω , ψ I ^ ω ( X ; E ψ ( X ) ) (1-7) (\hat{\omega}, \hat{\psi}) = \arg \max_{\omega, \psi} \hat{I}_{\omega}(X;E_{\psi}(X)) \tag{1-7} (ω^,ψ^)=argω,ψmaxI^ω(X;Eψ(X))(1-7)
infoNCE下界如式子(1-8)所示:
I ^ ω , ψ i n f o N C E ( X ; E ψ ( X ) ) = E P [ T ω , ψ ( x , E ψ ( x ) ) − E P ~ [ log ⁡ ∑ x ′ exp ⁡ ( T ω , ψ ( x ′ , E ψ ( x ) ) ) ] ] (1-8) \hat{I}_{\omega, \psi}^{infoNCE} (X;E_{\psi}(X)) = \mathbb{E}_{\mathbb{P}}[T_{\omega, \psi}(x, E_{\psi}(x))-\mathbb{E}_{\tilde{\mathbb{P}}}[\log{\sum_{x^{\prime}}\exp{(T_{\omega,\psi}(x^{\prime}, E_{\psi}(x)))}}]] \tag{1-8} I^ω,ψinfoNCE(X;Eψ(X))=EP[Tω,ψ(x,Eψ(x))EP~[logxexp(Tω,ψ(x,Eψ(x)))]](1-8)
从式子(1-6)和(1-8)中,我们发现DV下界和infoNCE下界都依赖于负样本数量,越多负样本才能有越好的效果(笔者暂时还不太理解DV下界为啥依赖于负样本数量)。而在CLIP-Lite中作者提出用JS下界去替代CLIP中的infoNCE下界,而JS下界不依赖于负样本数量,因此每个正样本至多只需要一个负样本就可以进行下界优化,如Fig 1.1所示。JS下界见式子(1-9):
I ( X ; E ψ ( X ) ) ≥ I ^ ω J S ( X ; E ψ ( X ) ) = E P ( X , E ψ ( X ) ) [ − log ⁡ ( 1 + exp ⁡ ( − T ω ) ) ] − E P ( X ) P ( E ψ ( X ) ) [ log ⁡ ( 1 + exp ⁡ ( T ω ) ) ] (1-9) I(X;E_{\psi}(X)) \geq \hat{I}_{\omega}^{JS}(X; E_{\psi}(X)) \\ = \mathbb{E}_{P(X,E_{\psi}(X))}[-\log{(1+\exp(-T_{\omega}))}] - \mathbb{E}_{P(X)P(E_{\psi}(X))}[\log{(1+\exp(T_{\omega}))}] \tag{1-9} I(X;Eψ(X))I^ωJS(X;Eψ(X))=EP(X,Eψ(X))[log(1+exp(Tω))]EP(X)P(Eψ(X))[log(1+exp(Tω))](1-9)
clip_and_clip_lite

Fig 1.1 CLIP-Lite对比CLIP,每个正样本只需要一个负样本即可完成有效的表征对比学习。

其中的 T ω : X × E ψ ( X ) → R T_{\omega}: \mathcal{X} \times E_{\psi}(X) \rightarrow \mathbb{R} Tω:X×Eψ(X)R同样是个以 ω \omega ω​为参数的神经网络判别器,用于判断当前输入的图文对是正样本还是负样本,最后的优化目标同样是同时对 ω \omega ω ψ \psi ψ进行优化:
( ω ^ , θ ^ i , θ ^ t ) = arg ⁡ max ⁡ ω , θ ^ i , θ ^ t I ^ ω J S D ( f i ( x i ; θ i ) , f t ( x t ; θ t ) ) (1-10) (\hat{\omega}, \hat{\theta}_i, \hat{\theta}_t) = \arg\max_{\omega, \hat{\theta}_i, \hat{\theta}_t} \hat{I}_{\omega}^{JSD} (f_i(x_i;\theta_{i}), f_t(x_t;\theta_{t})) \tag{1-10} (ω^,θ^i,θ^t)=argω,θ^i,θ^tmaxI^ωJSD(fi(xi;θi),ft(xt;θt))(1-10)
其中的 f i ( x i ) f_i(x_i) fi(xi) f t ( x t ) f_t(x_t) ft(xt)​是图片和文本的编码器,如Fig 1.2所示。

clip_lite_image_text_encoder

Fig 1.2 图片编码器和文本编码器,通过优化JS下界间接进行互信息优化。

Reference

[1]. Radford, A., Kim, J. W., Hallacy, C., Ramesh, A., Goh, G., Agarwal, S., … & Sutskever, I. (2021). Learning transferable visual models from natural language supervision. arXiv preprint arXiv:2103.00020.

[2]. https://fesian.blog.csdn.net/article/details/119515146

[3]. He, K., Fan, H., Wu, Y., Xie, S., & Girshick, R. (2020). Momentum contrast for unsupervised visual representation learning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 9729-9738).

[4]. Shrivastava, Aman, Ramprasaath R. Selvaraju, Nikhil Naik, and Vicente Ordonez. “CLIP-Lite: Information Efficient Visual Representation Learning from Textual Annotations.” arXiv preprint arXiv:2112.07133 (2021).

[5]. M.D Donsker and S.R.S Varadhan. Asymptotic evaluation of certain markov process expectations for large time, iv. Communications on Pure and Applied Mathematics, 36(2):183–212, 1983.

[6]. Hjelm, R. Devon, Alex Fedorov, Samuel Lavoie-Marchildon, Karan Grewal, Phil Bachman, Adam Trischler, and Yoshua Bengio. “Learning deep representations by mutual information estimation and maximization.” arXiv preprint arXiv:1808.06670 (2018).

<think>嗯,用户想知道如何用AI开发一款APP。首先,我需要理清楚整个流程,分步骤解释,确保用户能理解。可能用户是创业者或者开发者,想了解AI如何整合到APP中。他们可能对AI技术太熟悉,所以需要避免使用太多专业术语,用简单明了的语言。 首先,得明确AI在APP中的应用场景。用户可能没有明确的方向,需要举一些例子,比如语音助手、图像识别、推荐系统等等。然后,确定目标后,需要选择合适的技术栈,比如机器学习框架,TensorFlow、PyTorch之类的。但用户可能知道这些框架的区别,可能需要简单说明。 接下来是数据准备,这是关键步骤。AI模型需要数据训练,但用户可能没有现成的数据,得提到数据收集和清洗的重要性。然后是模型开发,这里可能需要解释训练模型的过程,或者使用预训练模型,比如Hugging Face的模型库,这样用户知道可以节省时间。 然后是集成到APP中,这部分可能需要分平台,比如iOS用Core ML,Android用TensorFlow Lite。用户可能知道这些工具,需要简要介绍。测试和优化环节也很重要,模型在本地设备上的性能如何,是否需要优化,比如量化或剪枝。 最后是部署和维护,持续改进模型,处理用户反馈。还要注意伦理和法律问题,比如数据隐私,用户可能没考虑到这些,需要提醒。 可能用户还想知道具体的例子,比如开发一个智能相册APP,用图像分类。这样举例会更直观。还要提到开发工具和平台,比如Firebase、AWS,帮助用户快速搭建后端。 需要确保回答结构清晰,分步骤,每步都有子点,用中文,避免使用Markdown,行内公式用$...$,独立公式用$$...$$,但这个问题可能太涉及数学公式,过如果有提到损失函数或算法,可能需要用LaTeX。但根据用户的问题,可能公式多,但还是要检查是否有需要的地方。 总结一下,回答的结构应该是:明确应用场景、选择技术栈、数据准备、模型开发、集成到APP、测试优化、部署维护、伦理法律考虑、案例和工具推荐。这样用户能一步步跟着做。同时要确保语言口语化,避免生硬,让用户容易理解。</think>如何用AI开发一款APP?分步骤详解如下: 一、明确AI应用场景(核心起点) 1. 典型方向举例: - 语音交互:$语音识别+语义理解$(如智能客服) - 图像处理:$CNN卷积神经网络$(如美颜滤镜) - 推荐系统:$协同过滤算法$(如电商推荐) - 预测分析:$LSTM时间序列模型$(如股票预测) 二、技术选型阶段 1. 开发框架选择: $$ \text{框架} = \begin{cases} TensorFlow & \text{适合生产部署} \\ PyTorch & \text{适合研究开发} \\ Keras & \text{快速原型设计} \end{cases} $$ 2. 部署方案: - 端侧推理:TensorFlow Lite(移动端)、Core ML(iOS) - 云端服务:AWS SageMaker、Google AI Platform 三、数据准备流程 1. 数据采集: - 开源数据集(ImageNet、COCO) - 用户行为日志(需符合GDPR规范) 2. 预处理公式示例: $$ x' = \frac{x - \mu}{\sigma} \quad \text{(数据标准化)} $$ 四、模型开发实践 1. 开发路径选择: - 预训练模型:Hugging Face模型库(NLP) - 自定义训练:需定义损失函数$L(\theta)=\frac{1}{N}\sum_{i=1}^N(y_i - f_\theta(x_i))^2$ 2. 性能优化技巧: - 量化压缩:FP32→INT8(降低75%模型体积) - 知识蒸馏:大模型→小模型迁移 五、APP集成关键步骤 1. 端云协同架构: ```plaintext 用户端 → API网关 → 云端推理服务 ← 模型版本管理 ↑ ↓ 本地轻量模型模型更新通道 ``` 2. 性能测试指标: - 延迟:<100ms(实时交互场景) - 准确率:$Accuracy = \frac{TP+TN}{TP+TN+FP+FN}$ 六、持续迭代机制 1. 数据闭环系统: 用户反馈 → 数据标注 → 模型再训练 → A/B测试 → 全量更新 2. 监控指标: - 模型漂移检测(数据分布变化监测) - 异常输入识别(对抗样本防御) 案例说明:开发智能相册APP 1. 使用YOLOv8实现物体检测: $$ Bbox = f_{YOLO}(I),\ I\in\mathbb{R}^{H×W×3} $$ 2. 部署优化: - 使用ONNX格式实现跨平台部署 - 使用OpenCV实现端侧图像预处理 开发工具推荐: - 快速原型:Google Colab + Flask API - 移动端集成:Android Studio ML Binding - 自动化测试:Appium + TensorFlow Model Analysis 注意事项: 1. 伦理规范:建立AI伦理审查机制 2. 法律合规:通过《生成式AI服务管理暂行办法》备案 3. 能耗控制:使用WakeLock优化唤醒机制 最新趋势: -模型小型化:Llama 2-7B在移动端的应用 - 联邦学习:保护用户隐私的分布式训练 - 多模态交互:CLIP模型在跨模态搜索中的应用 通过这六个阶段的系统化实施,配合敏捷开发方法论(2周迭代周期),可以在3-6个月内完成从概念到上线的完整AI应用开发流程。建议初期采用MVP(最小可行产品)模式,优先验证核心AI功能的市场需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FesianXu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值