学生出国留学申请-留学申请关键词
我的本科毕业论文核心工作就是构建一个基于深度学习的多模态视觉-语言稠密检索模型。现有的主流方案大多依赖传统的 RAG 架构,要么采用 Attention 机制做稀疏检索。我们认定,既然图像和文本都是稠密的表示,为啥不能直接把它们的特征向量用向量数据库(Vector DB)对半?要是文本局部偏,图像检索效果肯定差,要是图像局部偏,文本检索也无从谈起。便我们损失函数里加了个交叉熵项,试图平衡这两块。 刚启动训练时,梯度更新特别难收敛。早期的数据里,大量文本描述挺空洞,比如“这是一张风景图”,而对应的图像和向量却跑偏了。
这害得模型在文本方向上学习得挺死板,但在图像特征上又少了理解力。为了打破这个僵局,我们在训练阶段引入了一个自监督的对比损失。好办来说,就是强迫模型去学:语义相似的文本,生成的图像向量务必靠得更近;语义不相关的,距离又要远。
这种成对的训练方式,让模型在没收到明确标签的时候,自己就能把“对”和“错”的关系学出来。我们注意到,在对比损失下来的一年三个月里,Top-K 的召回率提升了 15% 左右。
这不是好办的调参,而是模型内部建立了一种新的连接方式,它启动能够根据图像的细微纹理来推断文本的情绪,而不是死记硬背字面意思。 接下来是部署阶段,也就是把模型变成系统。我们选择了 NVIDIA 的 CUDA 框架,出于我们的算子主要是点运算,TensorFlow 的老版本忒慢了。在 GPU 调度上,我们用到了 Prefork 模式,把模型切割成几个小片段跑在不同的线程里,这样我能更灵活地管住每个块的并发数。测试环境跑了一个 1000 张高分辨率图像,耗时从原来的 45 秒压到了 28 秒,效率提升显著。
不过,这里有个坑。出于模型忒大,加载到显存的时候炸过一次,我们被迫用了量化技术,把 FP32 的精度降了 32 倍,丢了一些低频特征,但总算力提升明显。目前模型能在边缘设备上跑起来了,这点对赶明儿做移动端应用挺关键。 模型上线后,真反馈挺惊喜。我们接了个客户订单,是要一个雨天的城市街道,模型能精准找到对应的图,但有个难题。
有时候输入是“雨天,湿漉漉的路”,模型别看能定位,但生成的描述词还是那种生硬的“路面潮湿”,少了那种拟人的温度。
这说明我们的稠密检索别看准,但缺了点“蒸馏”的功夫。我们在训练后期加了一个小模块,让模型自己去模仿更高级的 Dataset,比如 SQuAD 要么 Scovy 的文本分类任务。
这样做的代价是略微牺牲了一点图像检索的精度,但换取了输出的自然度。目前这个版本的模型,既能在千级图片里找到那张图,又能生成一段让人读得下去的描述,算是我们的阶段性成果。 自然,路径也不是笔直的。在数据采集阶段,我们发现早期那些中文长尾数据特别难处理。大量词汇只有几十个字,并且分布特别稀疏。
要是只用 CNN 要么 RNN 去处理,那种细粒度的上下文关系就丢失了。我们拍板换用 Transformer 架构,出于它的自注意力机制天生精通捕捉这类长距离依赖。
不过,Transformer 的计算量忒大了,直接塞进 GPU 会烧钱。
故此我们做了一个折中方案:用轻量级的编码器去取基础特征,再用头模块去处理上下文信息。别看这样在超长文本检索上效果一般,但在日常的新闻摘要和段落检索上已经能勉强够用。
这是典型的工程妥协,也是项目进度的一个缩影。 最终,我着重想一下这个模型的鲁棒性。在实际应用中,数据压根儿不是完美的。
有时候图片里会有对比度特别低的局部,要么有些字是手写体,这时候模型挺好办hallucinate,瞎编造个图回来。我们在训练阶段加了一个注入噪声的环节,故意往输入里加一些假信号,看模型能不能稳住。结局发现,模型在噪声下的表现比干净利落数据时要差上不来。
这说明模型不仅依赖数据本身,还依赖我们给它设定的边界。接下来我会针对这些边界情况,设计一套新的纠错策略,把“幻觉”的概率再压低 20%。 总的来说,这个项目搞定得还算顺利,但离真正的造级应用还差得远。最大的挑战在于如何让模型从“猜”变成“懂”。目前的模型还是带着点机械感,它知道在哪儿有雨,但不知道雨如何影响城市的氛围。
要是能通过预训练数据更好地学习人类对天气的主观感受,让模型不仅能找到图,还能写出有温度的文字,那才是我们真正的胜利。
这条路看似绕,实际上每一步都踩在真的数据反馈上,没有那些报错和延迟,根本指望不上。
声明:演示网站所有内容,若无特殊说明或标注,均来源于网络转载,仅供学习交流使用,禁止商用。若本站侵犯了你的权益,可联系本站删除。
