当前位置: 首页 > news >正文

【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例

Tips:在两方场景下,设计的安全算法,如果存在信息不对等性,那么信息获得更多的一方可以有概率对另一方实施安全性攻击。

1. 拆分学习原理   

        本文介绍了一种适用于隐私计算场景的深度学习实现方案——拆分学习,又称分割学习(Split Learning)【1, 2, 3】。该方法能够让服务器在无需访问客户端原始数据的前提下完成深度学习模型的训练或推理。通过拆分学习,合作的各方无需共享任何原始数据或模型详细信息,即可协同完成机器学习模型的训练或推断。

        在拆分学习的基础配置中,每个客户端仅负责将深度网络的前几层训练至一个预定义的切割层。切割层的输出结果被传送到另一个实体(如服务器或其他客户端),由其完成剩余网络的训练,而无需访问任何客户端的原始数据。这样便完成了一次前向传播,而无需共享原始数据。随后,在反向传播阶段,梯度从网络的最后一层逐层传回至切割层,切割层的梯度(仅此部分梯度)再返回给客户端。客户端利用这些梯度完成剩余的反向传播操作。通过这样的循环过程,整个分布式分割学习网络得以完成训练,全程无需各方共享原始数据。

        客户端只需传输切割层之前的初始层输出,显著降低了通信开销。同时,由于客户端仅需计算部分网络权重,其计算负担也大幅减少。在模型性能上,拆分学习的精度与联邦学习及大批量同步SGD等分布式深度学习方法相当,但在客户端数量较多的情况下,其计算代价可以更低。      

        示例:一种基于centralized server模式的架构【4】:

2. 拆分学习 案例 

        以【5, 6】中例子说明执行方式。

        以split DNN模型的拆分为例:

Alice :拥有 data_alice , model_base_alice

Bob :拥有 data_bob , model_base_bob , model_fuse

  1. Alice 用本方的数据通过 model_base_alice 得到 hidden0 ,发送给Bob
  2. Bob 用本方的数据通过 model_base_bob 得到 hidden1
  3. hidden_0 和 hidden_1 输入到 AggLayer 进行聚合,聚合后的 `hidden_merge`为输出
  4. Bob 方输入 hidden_merge 到 model_fuse,结合`label` 得到梯度,并进行回传
  5. 通过 AggLayer 将梯度拆分为 g0 , g1 两部分,将 g0 和 g1 分别发送给 Alice 和 Bob
  6. Alice 和 Bob 的 basenet 分别根据 g0 和 g1 对本方的基础模型进行更新

        以split GNN为例:        

        参与者在服务器(可信第三方)的协助下协作训练一个全局模型。服务器存储模型的一部分,但由于原始数据和其真实标签具有高度的隐私敏感性,参与者不愿直接共享这些数据和标签。在实际操作中,标签服务器与某一参与者相同,这名参与者希望通过其他参与者的数据增强分类模型的能力。

        在神经网络模型中,每个原始样本被输入到输入层,而真实标签则与模型预测结果在输出层进行比较以计算损失。因此,为了保护每对样本与标签的隐私,输入层和输出层都应由每个参与者分别存储,而其余的网络层可以卸载到服务器上,从而形成三方分离的SplitGNN架构。三方分离SplitGNN中,每一层的前向计算可以分为三个步骤:首先,参与者使用私有数据单独计算本地嵌入;然后,服务器(可信第三方)收集非隐私的本地嵌入以计算全局嵌入;最后,服务器返回最终的计算结果。

3. 拆分学习的安全性问题及应对方案

        从拆分学习的框架来看,存在两种主要的模式,第一种是一方的中间数据(cut layer输出)需要传给另一方(标签方)做后续计算。第二种是客户端的中间数据加密后发送给可信第三方进行后续计算。

3.1 风险案例1

       【6】提出了一种针对拆分学习的全面攻击方法EXACT。假设客户端拥有仅限于自身的私有特征,这些特征不希望与任何第三方共享。同时,假设标注数据(ground-truth labels)也是私密的,仅为客户端所知,在该假设下研究标签泄露的情况。服务器试图基于切割层的梯度恢复客户端的私有数据和真实标注。考虑一个有 C 个分类类别的问题,其特征空间分为服务器端特征空间 X_{\text{server}}和客户端特征空间 X_{\text{client}},标签空间为 Y = [C] = \{1, ..., C\}。服务器端的功能定义为 F_{\text{server}}: X_{\text{server}} \to \mathbb{R}^d,输出服务器端的激活值 a_c。客户端的功能定义为 F_{\text{client}}: X_{\text{client}} \times \mathbb{R}^d \to S,将客户端特征和服务器输出映射到概率单纯形 S = \{z \mid \sum_{i=1}^C z_i = 1, z_i \geq 0, \forall i \in [C]\}。两者的模型由神经网络权重 w = (w_{\text{server}}, w_{\text{client}})参数化,损失函数 L(w) 为常见的交叉熵损失。在拆分学习中,切割层的激活输出 a_c从服务器传输到客户端,客户端将梯度 \partial L / \partial a_c​ 返回给服务器以完成反向传播。然而,切割层权重的梯度 \partial L / \partial w_c​ 保留在客户端完成更新。这种设置允许服务器在不直接访问客户端原始数据的情况下进行训练。

        假设攻击者能够在训练期间访问客户端模型参数。虽然某些情况下可以通过安全聚合方案减少攻击者的访问权限,但假设默认攻击者掌握服务器端特征、服务器端模型及客户端模型的知识。这一假设符合分布式学习的实际情况。

        EXACT 是一种基于梯度匹配的攻击方法,通过对切割层梯度 \partial L / \partial a_c 的分析重建客户端的私有特征和真实标注。其基本思路如下:

  1. 生成可能的特征组合列表:客户端的私有特征被认为是离散的,或可以离散化为有限类别。列出所有可能的特征组合L = f_1 \times f_2 \times ... \times f_N \times L,其中 f_1, ..., f_N是私有特征,L 是标注类别。
  2. 梯度匹配:对于每一种可能的特征配置 L[i],计算服务器激活值 a_c 和梯度 \partial L_i / \partial a_c。然后,与客户端提供的真实梯度 \partial L / \partial a_c​ 比较,通过最小化两者间的距离(例如 L_2 距离),找出最接近的配置
  3. 重构特征与标注:选择距离最小的特征组合作为重构结果。

        EXACT 方法通过遍历所有可能的组合,确保能够重构最相关的私有特征,且不依赖传统优化步骤(如二阶导数计算或正则化调优)。虽然这种方法的搜索空间会随着私有特征数量或类别的增加而指数增长,但可以采用启发式或智能搜索方法加速收敛。

        在实验中,【7】算法在平均 16.8 秒内成功重构了给定样本的特征。

3.2  风险案例2 

        拆分学习的主要漏洞在于服务器对客户端网络学习过程的控制权。 即使攻击者不了解 f 的架构及其权重,也可以伪造适当的梯度并强制 f 收敛到攻击者选择的任意目标函数。通过这种方式,攻击者可以在客户端生成的数据中引入某些属性,从而针对底层的隐私数据实施推理或重建攻击。

        【8】提出了一个通用框架来实现这一攻击过程。在该框架中,恶意服务器将客户端选择的原始学习任务替换为一个新目标,刻意塑造 f 的余域/特征空间。在攻击中,服务器利用其对训练过程的控制,劫持 f,将其引导到一个特定的、精心设计的目标特征空间 \tilde{Z}。一旦 f 映射到 \tilde{Z},攻击者即可通过局部逆转已知的特征空间,恢复隐私训练实例。   

        这种攻击包括两个阶段,图来自【9】:

  1. 设置阶段(Setup phase):服务器劫持 f 的学习过程;
  2. 推理阶段(Inference phase):服务器自由恢复从客户端发送的 smashed 数据。
    将这一过程称为特征空间劫持攻击(Feature-space Hijacking Attack,简称 FSHA)。

设置阶段

        设置阶段在拆分学习的多个训练迭代中进行,逻辑上分为两个并行步骤,如图 2a 和图 2b 所示。在这一阶段,服务器训练三个不同的网络:\tilde{f}\tilde{f}^{-1} 和 D,它们各自承担不同的角色:

  • \tilde{f}:一个试验性网络,动态定义客户端网络 f 的目标特征空间 \tilde{Z}。类似于 f,\tilde{f} 是数据空间与目标特征空间\tilde{Z}之间的映射,且|\tilde{f}(x)| = |f(x)| = k
  • \tilde{f}^{-1}\tilde{f}​ 的逆函数近似。在训练中用来确保 \tilde{f} 的可逆性,并在推理阶段从 smashed 数据恢复私有数据。
  • D:一种判别器,间接引导 f 学习将私有数据映射到由 \tilde{f} 定义的特征空间。最终,D 替代协议中的 s,并在分布式训练过程中向客户端发送梯度。

        设置阶段还需要一个未标记数据集 X_{pub},用于训练上述三个网络。这是攻击者对客户端设置的唯一要求。

        在每次分裂学习训练迭代中(即客户端向服务器发送 smashed 数据时),恶意服务器通过两个并行步骤训练上述三个网络(a 和b):

  1. 服务器从 X_{pub} 中采样一批数据,用于联合训练 \tilde{f} 和 \tilde{f}^{-1}。目标是优化 \tilde{f}\tilde{f}^{-1} 的权重,使其收敛为自编码功能,即\tilde{f}^{-1}(\tilde{f}(x)) = x。通过以下损失函数实现:

    L_{\tilde{f}, \tilde{f}^{-1}} = d(\tilde{f}^{-1}(\tilde{f}(X_{pub})), X_{pub})

    其中 d 是合适的距离函数,例如均方误差(MSE)。

  2. 同时训练判别器 D。它的作用是区分\tilde{f}(X_{pub})f(X_{priv})(即 smashed 数据)之间的特征空间。D 的输入为 \tilde{f}(X_{pub}) 或 f(X_{priv}),训练目标是对前者赋予高概率,对后者赋予低概率。损失函数为:

    L_D = \log(1 - D(\tilde{f}(X_{pub}))) + \log(D(f(X_{priv})))

        完成 D 的局部训练后,恶意服务器使用 D 生成一个适合的梯度信号发送到远程客户端,以训练 f。此梯度通过以下对抗性损失函数生成:

L_f = \log(1 - D(f(X_{priv})))

        f 被训练以最大化判别器 D 的错误分类概率。客户端的网络需要学习将数据映射到一个与 \tilde{f} 特征空间无法区分的空间。

攻击推理阶段

        经过足够多的设置迭代后,f 达到一个状态,攻击者可以从 smashed 数据中恢复私有训练实例。此时,由于对抗训练,f 的余域与\tilde{f}​ 的特征空间 \tilde{Z} 重叠。攻击者通过应用逆网络 \tilde{f}^{-1} 即可恢复 X_{priv}

\tilde{X}_{priv} = \tilde{f}^{-1}(f(X_{priv}))

        其中 \tilde{X}_{priv}​ 是私有训练实例 X_{priv}的适当近似。

4. 风险应对措施案例

        正如上述原理分析,拆分学习是一种协作学习技术,允许参与者(例如客户端和服务器)在不共享原始数据的情况下训练机器学习模型。在这种设置中,客户端最初对原始数据应用其部分机器学习模型生成激活图,然后将其发送给服务器以继续训练过程。从我们列举的风险案例来看,重建激活图可能会导致客户端数据的隐私泄露。

        【10】通过构建一个基于U形拆分学习的协议,可以在同态加密数据上运行。更具体地说,在该方法中,客户端在将激活图发送给服务器之前对其进行同态加密,从而保护用户隐私。相比于其他基于SL的工作,减少了隐私泄露。在最优参数设置下,使用同态加密数据训练的U形拆分学习仅比在明文数据上训练的准确性降低2.65%。原始训练数据的隐私得到了保护。

        根据这个思路,还可以进一步将MPC、TEE等多种隐私计算引入来提升拆分学习的安全性。比如【11】提出将mpc引入到拆分学习加强安全性,建议融合MPC和拆分学习技术,敏感数据相关计算采用MPC技术来执行;而其余的大量的复杂非线性计算由服务器来执行,并运用对抗学习、差分隐私、贝叶斯学习、随机置换等技术加固算法的安全性,以取得安全性、效率、精确性的平衡。

5. 基于拆分学习的大模型训练机制

        因为拆分学习的高效性能,目前在大模型的训练中,已经出现了一些方案。

        比如【12】提出一种split-llm模型框架。

        在拆分学习中,大模型被分为三部分:

  • 底层(Bottom Layers)
  • 主干层(Trunk Layers,也称为适配器层)
  • 顶层(Top Layers)

        其中,底层和顶层分别是模型的输入端和输出端,而主干层则是模型的中间部分。        

  • 在每轮联邦学习开始时,选择客户端0、1和2。
  • 从磁盘加载客户端0的模型参数(包括底层和顶层以及其对应的服务器端的主干部分)到GPU模型中。
  • 客户端0进行本地训练,更新所有模型参数,遵循与集中式学习一致的流程。
  • 客户端0完成训练后,将模型参数保存到磁盘。
  • 从磁盘加载客户端1的模型参数到GPU模型中。
  • ...
  • 在联邦学习轮次结束时,将所有客户端对应的主干参数在磁盘上进行聚合,得到平均主干。然后,将所有客户端的主干参数更新为平均主干。
  • 重复步骤1-7。

        【13】提出大模型微调对资源有限的计算实体造成了计算负担。采用拆分学习在解决这一问题上具有潜力。后续可以继续关注一下。

6. 参考材料

【1】SplitNN-driven Vertical Partitioning

【2】SplitFed: When Federated Learning Meets Split Learning

【3】Split learning for health: Distributed deep learning without sharing raw patient data

【4】A Study of Split Learning Model

【5】拆分学习:银行营销

【6】SplitGNN: Splitting GNN for Node Classification with Heterogeneous Attention

【7】Evaluating Privacy Leakage in Split Learning

【8】Unleashing the Tiger: Inference Attacks on Split Learning

【9】Combined Federated and Split Learning in Edge Computing for Ubiquitous Intelligencein Internet of Things: State-of-the-Art and Future Directions

【10】A More Secure Split: Enhancing the Security of Privacy-Preserving Split Learning

【11】隐私保护机器学习,助力安全高效数字化转型

【12】SplitLLM:Split Learning Simulation Framework for LLMs

【13】SplitLoRA: A Split Parameter-Efficient Fine-Tuning Framework for Large Language Models

相关文章:

【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例

Tips:在两方场景下,设计的安全算法,如果存在信息不对等性,那么信息获得更多的一方可以有概率对另一方实施安全性攻击。 1. 拆分学习原理 本文介绍了一种适用于隐私计算场景的深度学习实现方案——拆分学习,又称分割…...

DataWhale—PumpkinBook(TASK05决策树)

课程开源地址及相关视频链接:(当然这里也希望大家支持一下正版西瓜书和南瓜书图书,支持文睿、秦州等等致力于开源生态建设的大佬✿✿ヽ(▽)ノ✿) Datawhale-学用 AI,从此开始 【吃瓜教程】《机器学习公式详解》(南瓜…...

elasticsearch7.10.2集群部署带认证

安装elasticsearch rpm包安装 下载地址 https://mirrors.aliyun.com/elasticstack/7.x/yum/7.10.2/ 生成证书 #1.生成CA证书 # 生成CA证书,执行命令后,系统还会提示你输入密码,可以直接留空 cd /usr/share/elasticsearch/bin ./elasticsearch-certutil ca#会在/usr/share/el…...

Java基础-I/O流

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…...

全面解析多种mfc140u.dll丢失的解决方法,五种方法详细解决

当你满心期待地打开某个常用软件,却突然弹出一个错误框,提示“mfc140u.dll丢失”,那一刻,你的好心情可能瞬间消失。这种情况在很多电脑用户的使用过程中都可能出现。无论是游戏玩家还是办公族,面对这个问题都可能不知所…...

详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案

本文旨在深入探讨xinput1_3.dll这一动态链接库文件。首先介绍其在计算机系统中的功能和作用,特别是在游戏和输入设备交互方面的重要性。然后分析在使用过程中可能出现的诸如文件丢失、版本不兼容等问题,并提出相应的解决方案,包括重新安装相关…...

InfluxDB时序数据库笔记(一)

InfluxDB笔记一汇总 1、时间序列数据库概述2、时间序列数据库特点3、时间序列数据库应用场景4、InfluxDB数据生命周期5、InfluxDB历史数据需要另外归档吗?6、InfluxDB历史数据如何归档?7、太麻烦了,允许的话选择设施完备的InfluxDB云产品吧8、…...

Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器

Spring Boot 3.x OAuth 2.0:构建认证授权服务与资源服务器 前言 随着Spring Boot 3的发布,我们迎来了许多新特性和改进,其中包括对Spring Security和OAuth 2.0的更好支持。本文将详细介绍如何在Spring Boot 3.x版本中集成OAuth 2.0&#xf…...

2024年09月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 3 分,共 30 分) 第 1 题 据有关资料,山东大学于 1972 年研制成功 DJL-1 计算机,并于 1973 年投入运行,其综合性能居当时全国第…...

Linux 正则表达式(basic and extened)

正则表达式(Regular Expressions),整理自: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html gred sed 定义 Regular Expressions (REs) provide a mechanism to select specific strings from a set of character strings.…...

GB 35114-2017 学习笔记(规避版权阉割版)

GB 35114-2017 学习笔记(规避版权阉割版) openstd.samr.gov.cn 国家标准全文公开系统 这个政府网站提供GB 35114-2017标准的的预览和下载,有需要的自行下载 GB 35114-2017作为一个国家强制标准,在国家标准全文公开系统 自己做个…...

YOLO-FaceV2: A Scale and Occlusion Aware Face Detector

《YOLO-FaceV2:一种尺度与遮挡感知的人脸检测器》 1.引言2.相关工作3.YOLO-FaceV23.1网络结构3.2尺度感知RFE模型3.3遮挡感知排斥损失3.4遮挡感知注意力网络3.5样本加权函数3.6Anchor设计策略3.7 归一化高斯Wasserstein距离 4.实验4.1 数据集4.2 训练4.3 消融实验4.3.1 SEAM块4…...

进程间通信--详解

目录 前言一、进程间通信介绍1、进程间通信目的2、进程间通信发展3、进程间通信的分类4、进程间通信的必要性5、进程间通信的技术背景6、进程间通信的本质理解 二、管道1、什么是管道2、匿名管道pipe(1)匿名管道的原理(2)pipe函数…...

零基础上手WebGIS+智慧校园实例(1)【html by js】

请点个赞收藏关注支持一下博主喵!!! 等下再更新一下1. WebGIS矢量图形的绘制(超级详细!!),2. WebGIS计算距离, 以及智慧校园实例 with 3个例子!!…...

【Github】如何使用Git将本地项目上传到Github

【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置(可选) 3. 创建Github仓库4. 获取仓库地址5. 本地操作(1)进入项目文件夹(2)克隆…...

集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解

1、 Queue与Deque的区别 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue的作用,于是就直接官方…...

谈一下开源生态对 AI人工智能大模型的促进作用

谈一下开源生态对 AI人工智能大模型的促进作用 作者:开源呼叫中心系统 FreeIPCC,Github地址:https://github.com/lihaiya/freeipcc 开源生态对大模型的促进作用是一个多维度且深远的话题,它不仅加速了技术创新的速度,…...

基于python的机器学习(四)—— 聚类(一)

目录 一、聚类的原理与实现 1.1 聚类的概念和类型 1.2 如何度量距离 1.2.1 数据的类型 1.2.2 连续型数据的距离度量方法 1.2.3 离散型数据的距离度量方法 1.3 聚类的基本步骤 二、层次聚类算法 2.1 算法原理和实例 2.2 算法的Sklearn实现 2.2.1 层次聚类法的可视化实…...

实时数据开发 | 怎么通俗理解Flink容错机制,提到的checkpoint、barrier、Savepoint、sink都是什么

今天学Flink的关键技术–容错机制,用一些通俗的比喻来讲这个复杂的过程。参考自《离线和实时大数据开发实战》 需要先回顾昨天发的Flink关键概念 检查点(checkpoint) Flink容错机制的核心是分布式数据流和状态的快照,从而当分布…...

C++设计模式-策略模式-StrategyMethod

动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运…...

小程序免备案:快速部署与优化的全攻略

小程序免备案为开发者提供了便捷高效的解决方案,省去繁琐的备案流程,同时通过优化网络性能和数据传输,保障用户体验。本文从部署策略、应用场景到技术实现,全面解析小程序免备案的核心优势。 小程序免备案:快速部署与优…...

Jmeter中的定时器

4)定时器 1--固定定时器 功能特点 固定延迟:在每个请求之间添加固定的延迟时间。精确控制:可以精确控制请求的发送频率。简单易用:配置简单,易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求…...

C++自动化测试:GTest 与 GitLab CI/CD 的完美融合

在现代软件开发中,自动化测试是保证代码质量和稳定性的关键手段。对于C项目而言,自动化测试尤为重要,它能有效捕捉代码中的潜在缺陷,提高代码的可维护性和可靠性。本文将重点介绍如何在C项目中结合使用Google Test(GTe…...

vscode连接远程开发机报错

远程开发机更新,vscode连接失败 报错信息 "install" terminal command done Install terminal quit with output: Host key verification failed. Received install output: Host key verification failed. Failed to parse remote port from server ou…...

神经网络12-Time-Series Transformer (TST)模型

Time-Series Transformer (TST) 是一种基于 Transformer 架构的深度学习模型,专门用于时序数据的建模和预测。TST 是 Transformer 模型的一个变种,针对传统时序模型(如 RNN、LSTM)在处理长时间依赖、复杂数据关系时的限制而提出的…...

IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)

汉化 setting 中选择插件 完成 安装出现问题 1.可能是因为之前下载过的idea,找到连接中 文件,卸载即可。...

Fakelocation Server服务器/专业版 Centos7

前言:需要Centos7系统 Fakelocation开源文件系统需求 Centos7 | Fakelocation | 任务一 更新Centos7 (安装下载不再赘述) sudo yum makecache fastsudo yum update -ysudo yum install -y kernelsudo reboot//如果遇到错误提示为 Another app is curre…...

oracle的静态注册和动态注册

oracle的静态注册和动态注册 静态注册: 静态注册 : 指将实例的相关信息手动告知 listener 侦 听 器 , 可以使用netmgr,netca,oem 以及直接 vi listener.ora 文件来实现静态注册,在动态注册不稳定时使用,特点是:稳定&…...

机器翻译基础与模型 之四:模型训练

1、开放词表 1.1 大词表和未登陆词问题 理想情况下,机器翻译应该是一个开放词表(Open Vocabulary)的翻译任务。也就是,无论测试数据中包含什么样的词,机器翻译系统都应该能够正常翻译。 现实的情况是即使不断扩充词…...

Vue——响应式数据,v-on,v-bind,v-if,v-for(内含项目实战)

目录 响应式数据 ref reactive 事件绑定指令 v-on v-on 鼠标监听事件 v-on 键盘监听事件 v-on 简写形式 属性动态化指令 v-bind iuput标签动态属性绑定 img标签动态属性绑定 b标签动态属性绑定 v-bind 简写形式 条件渲染指令 v-if 遍历指令 v-for 遍历对象的值 遍历…...