论文阅读【2】PreQR: Pre-training Representation for SQL Understanding

本文介绍了一种新颖的SQL编码方法PreQR,结合自动机和BERT技术,捕捉查询结构和数据库模式,从而在基数估计等任务中显著提升性能。实验对比证明了结构编码和schema信息的重要性。

请添加图片描述

对query的编码方式会影响下游基数估计的准确性,以往的one-hot编码方式无法捕捉复杂语义环境,例如查询的结构,数据库模式的定义和列的分布差异。为了解决这个问题,作者提出了一个新的预训练SQL表示模型。它将语言表示方法扩展到SQL查询。我们提出了一个自动机来编码查询结构,并应用一个图神经网络来编码以查询为条件的数据库模式信息。然后,通过采用注意力机制,建立了一个新的SQL编码器,以支持即时的查询感知模式链接。在真实数据集上的实验结果表明,用我们的查询表示法取代单次编码可以显著提高现有基于学习的模型在几个数据库任务上的性能。

问题描述

数据库随着业务的复杂变得功能更加多样,其中基数估计,连接顺序选择,开销预估和参数调整成为数据库中最为重要的功能。在这些任务中不可避免的需要对SQL查询指令进行编码。

现有方法与不足

现有的编码方式多基于one-hot encoding,例如MSCN使用one-hot编码方式对query进行编码,并训练回归模型预测基数。但这种基于one-hot的编码方式有其内在的劣势。

  1. one-hot编码简单地将查询中子句编码连接在一起,忽略了结构信息。
  2. 表和列的编码使用无上下文模式的独立编码,忽略数据库模式的定义
  3. 查询中所有数值都被规约到一个统一的范围,忽略了列与列之间的分布差异

本篇论文核心观点

针对上述问题,论文指出在对SQL进行编码时要引入数据的schema信息和查询的结构信息。本文提出PreQR (pre-training Query Representation)是一种不基于one-hot,而主要利用基于自动机的SQL编码方式,在表示了SQL内在信息的同时,利用BERT进一步向SQL编码中引入数据库schema的信息。该预训练模型只需对一个数据库训练一次,并且可以利用在多个下游任务中。

本篇论文提出方法操作

图3展示了PreQR的结构,其中包含了3个模块:Input Embedding, Query-aware SchemaSQLBERT
请添加图片描述

Input Embedding

Input Em

### Task-agnostic 视频语言模型 (VLM) 的预训练及其在视频理解中的应用 #### 定义与背景 Task-agnostic 视频语言模型(VLM)是一种能够处理多任务场景的通用型模型,旨在通过联合建模视频和文本数据来捕捉跨模态的信息交互。这种类型的模型通常通过对大规模未标注或多标签的数据集进行自监督学习完成预训练阶段[^2]。相比传统的任务特定模型,Task-agnostic VLM 更加灵活,在多个下游任务中表现出色。 #### 预训练方法概述 预训练的核心目标是从大量无标记或弱标记的多媒体数据中提取有用的特征表示。对于视频语言模型而言,常见的做法是将视频序列分解为离散的时间步,并将其映射到高维向量空间中。具体来说,给定一段视频片段 \( v \),以及对应的自然语言描述 \( t \),可以通过以下方式实现: 1. **Token化**: 将视频帧转换为一系列 token 嵌入,这一步骤可能涉及使用冻结的视觉编码器(如 ResNet 或 Swin Transformer)提取每帧的空间特征。 2. **时间建模**: 利用可训练的 MLP 层或其他结构进一步捕获帧间关系,从而得到最终的视频 token 表示。 3. **对比学习框架**: 在许多情况下,采用基于对比损失的目标函数优化模型参数,使得正样本对之间的相似度最大化而负样本最小化[^3]。 #### 应用于视频理解的具体案例分析 以 Meta AI 和 CMU 提出的任务无关视频语言模型为例,该架构展示了如何有效地结合来自不同源域的知识来进行广泛的视频理解和生成任务。此外,还有其他研究尝试比较不同类型 VLM 架构的效果差异,例如 BLIPBASE 和 XVLMCLIP 这两类分别代表了编解码器网络混合模式和平行流模式的设计理念。 当涉及到实际应用场景时,像 SeeDo 系统那样利用预先训练好的大型多模态语言模型去解析真实世界的演示录像成为一种新兴趋势[^1]。它不仅继承了传统模仿学习技术的优点——即把复杂的操作拆分成更易于管理的小单元;同时还引入了先进的 NLP 技术支持更加多样化的动作执行形式。 ```python import torch from transformers import VideoMAEModel, AutoTokenizer def extract_video_features(video_frames): video_encoder = VideoMAEModel.from_pretrained('videomae-base') tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') with torch.no_grad(): frame_embeddings = video_encoder(video_frames).last_hidden_state text_input_ids = tokenizer("A man is playing basketball", return_tensors="pt")['input_ids'] # Hypothetical fusion mechanism between visual and textual embeddings. fused_representation = combine_visual_textual(frame_embeddings, text_input_ids) return fused_representation def combine_visual_textual(vis_emb, txt_id): pass # Placeholder for actual implementation details. video_data = ... # Preprocessed input data structure containing frames. result = extract_video_features(video_data) print(result.shape) ``` 上述代码片段展示了一个简单的例子说明怎样加载现成工具包里的组件并组合起来形成初步解决方案雏形。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值