过去十年,深度学习取得了惊人的胜利,用大量参数和数据做随机梯度下降的方法已经被证明是有效的。而梯度下降使用的通常是反向传播算法,所以一直以来,大脑是否遵循反向传播、是否有其它方式获得调整连接权重所需的梯度等问题都备受关注。
图灵奖得主、深度学习先驱 Geoffrey Hinton 作为反向传播的提出者之一,在近年来已经多次提出,反向传播并不能解释大脑的运作方式。相反,他正在提出一种新的神经网络学习方法——前向-前向算法(Forward‑Forward Algorithm,FF)。
在最近的 NeurIPS 2022 大会上,Hinton 发表了题目为《The Forward-Forward Algorithm for Training Deep Neural Networks》的特邀演讲,论述了前向算法相比于反向算法的优越性。论文的初稿《The Forward-Forward Algorithm: Some Preliminary Investigations》已经放在了其多伦多大学的主页上:
论文地址:https://www.cs.toronto.edu/~hinton/FFA13.pdf
与反向传播算法使用一个前向传递+一个反向传递不同,FF 算法包含两个前向传递,其中一个使用正(即真实)数据,另一个使用网络本身生成的负数据。
Hinton 认为,FF 算法的优点在于:它能更好地解释大脑的皮层学习,并且能以极低的功耗模拟硬件。
Hinton 提倡应放弃软硬件分离的计算机形态,未来的计算机应被设计为“非永生的”(mortal),从而大大节省计算资源,而 FF 算法正是能在这种硬件中高效运行的最佳学习方法。
这或许正是未来解决万亿参数级别的大模型算力掣肘的一个理想途径。
在 FF 算法中,每一层都有自己的目标函数,即对正数据具有高优度,对负数据具有低优度。层中活动平方和可用作优度,此外还包括了诸多其他的可能性,例如减去活动平方和等。
如果可以及时分离正负传递,则负传递可以离线完成,正传递的学习也会更加简单,并且允许视频通过网络进行传输,而无需存储活动或终止传播导数。
Hinton 认为,FF 算法在两个方面优于反向传播:
一,FF 是解释大脑皮层学习的更优模型;
二,FF 更加低耗能,它使用极低功耗模拟硬件而不必求助于强化学习。
没有切实证据可以证明,皮层传播错误导数或存储神经活动是用于后续的反向传播。从一个皮层区域到视觉通路中较早的区域自上而下的连接,并不能反映出在视觉系统中使用反向传播时所预期的自下而上连接。相反,它们形成了循环,其中神经活动经过两个区域、大约六个皮层,然后回到它开始的地方。
作为学习序列的方式之一,通过时间的反向传播可信度并不高。为了在不频繁暂停的情况下处理感觉输入流,大脑需要通过感觉来处理的不同阶段传输数据,并且还需要一个可以即时学习的过程。管道后期表征可能会在后续时间里提供影响管道早期阶段表征的自上而下的信息,但感知系统需要实时进行推理和学习,而非停止进行反向传播。
这当中,反向传播的另一个严重限制在于,它需要完全了解前向传播执行的计算才能推出正确的导数。如果我们在前向传播中插入一个黑盒,除非学习黑盒的可微分模型,否则反向传播无法执行。
而黑盒不会对 FF 算法的学习过程造成影响,因为不需要通过它进行反向传播。
当没有完美的正向传播模型时,我们可以从多种强化学习方式中入手。其中的一个想法是,对权重或神经活动进行随机扰动,并将这些扰动与由此产生的收益函数变化相关联。但由于强化学习中存在高方差问题:当其他变量同时受到扰动时,很难看到扰动单个变量的效果。为此,要平均掉由所有其他扰动引起的噪声,学习率需要与被扰动的变量数量成反比,这就意味着强化学习的扩展性很差,无法与包含数百万或数十亿大型网络的反向传播竞争参数。
而 Hinton 的观点是,包含未知非线性的神经网络不需要求助于强化学习。
FF 算法在速度上可与反向传播相媲美,其优点是可以在前向计算精确细节未知的情况下进行使用,还可以在神经网络对顺序数据进行管道处理时进行学习,无需存储神经活动或终止传播误差导数。
不过,在功率受限的应用中,FF 算法还未能取代反向传播,比如对于在超大数据集上训练的超大模型,也还是以反向传播为主。
前向-前向算法是一种贪婪的多层学习程序,其灵感来自玻尔兹曼机和噪声对比估计。
用两个前向传播代替反向传播的前向+后向传播,两个前向传播在不同数据和相反目标上,以完全相同的方式彼此操作。其中,正向通道对真实数据进行操作,并调整权重以增加每个隐藏层的好感度,反向通道调整 "负数据 "权重以减少每个隐藏层的好感度。
本文探讨了两种不同的度量标准——神经活动的平方之和,以及负活动的平方之和。
假设某层的优度函数是该层中经过整流的线性神经元活动的平方和,学习目的是使其优度远高于真实数据的某个阈值、并远低于负数据的阈值。也即是说,在输入向量正确分类为正数据或负数据时,输入向量为正(即真实)的概率,可通过将逻辑函数 σ 应用于优度减去某个阈值 θ:
其中,是层归一化前隐藏单元 j 的活动。负数据可由神经网络自上而下连接进行预测,也可由外部提供。
很容易看出,可以通过使隐藏单元的活动平方和,对正数据高而对负数据低来学习单个隐藏层。但当第一个隐藏层活动被用作第二个隐藏层的输入时,仅需适用第一个隐藏层的活动矢量长度,即可区分正负数据,无需学习新的特征。
为防止这种情况,FF 在将隐藏向量长度作为下一层的输入前,会对其进行归一化,删除所有用于确定第一个隐藏层中的信息,从而迫使下个隐藏层使用第一个隐藏层中神经元的相对活动信息,该相对活动不受层规范化的影响。
也即是说,第一个隐藏层的活动向量具备一个长度和一个方向,长度用于定义该层的良性,只有方向被传递到下一层。
文中大部分实验使用了手写数字的 MNIST 数据集:50000 个用于训练,10000 个用于搜索良好超参数期间的验证,10000 张用于计算测试错误率。经设计后具有几个隐藏层的卷积神经网络可得约 0.6% 的测试误差。
在任务 "排列不变 "版本中,神经网络没有得到有关像素空间布局的信息,若训练开始前,所有训练和测试图像都受相同像素随机变异影响,那么神经网络的表现也会同样良好。
对于这个任务“排列不变”版本,带有几个全连接隐层的整流线性单元(ReLU)的前馈神经网络测试误差大约在 1.4%,其中大约需要20个 epochs 来训练。使用各种正则器如 dropout(降低训练速度)或标签平滑(加快训练速度),可将测试误差降至 1.1% 左右。此外,还可通过将标签的监督学习与无监督学习相结合来进一步降低测试误差。
在不使用复杂的正则化器的情况下,任务“排列不变”版本的测试误差为 1.4%,这表明了其学习过程与反向传播一样有效。
图1:用作负数据的混合图像
FF 有两个主要问题需要回答:如果有良好的负数据来源,它是否会学习有效的多层表示来捕获数据结构?负数据从何而来?
先使用手工负数据来回答第一个问题。将对比学习用于监督学习任务的常见方法是,在不使用任何有关标签信息的情况下,将输入向量转化为表示向量,学习将这些表示向量简单线性变换为使用的 logits 向量,在 softmax 中用来确定标签的概率分布。尽管具有明显的非线性,但这仍被称为线性分类器,当中 logits 向量的线性变换学习是有监督的,因不涉及学习任何隐藏层,无需导数的反向传播。FF 可通过使用真实数据向量作为正例、并使用损坏的数据向量作为负例来执行该表征学习。
为使 FF 专注表征形状图像的长期相关性,我们需要创建具有不同长期相关性、但非常相似的短期相关性的负数据,这可以通过创建一个包含相当大的 1 和 0 区域的掩码来完成。之后通过将一个数字图像与掩码相加,为负数据创建混合图像和一个不同的数字图像来乘以掩码的反面(图 1)。
通过随机位图开始创建蒙版,在水平和垂直方向上使用[1/4, 1/2, 1/4]形式的过滤器重复模糊图像,经反复模糊的图像阈值设为 0.5。在使用四个隐藏层(每个隐藏层包含 2000 个 ReLU)训练 100 个 epochs 后,若使用最后三个隐藏层的归一化活动向量作为 softmax 输入,可得到测试误差为1.37%。
此外,不使用完全连接层、而使用局部接受域(没有权重共享)可以提高性能,训练 60 个 epochs 的测试误差为 1.16%,该架构使用的 "对等归一化"可防止任何隐藏单元极度活跃或永久关闭。
在不使用任何标签信息的情况下学习隐藏表征,对最终可能够执行各种任务的大模型来说非常明智:无监督学习提取了一大堆特征供各任务使用。但如果只对单任务感兴趣,并想使用一个小模型,那么监督学习会更适合。
监督学习中使用 FF 的一种方法是在输入中包含标签,正数据由具有正确标签的图像组成,而负数据由具有错误标签的图像组成,标签是二者间的唯一区别,FF 会忽略图像中与标签不相关的所有特征。
MNIST 图像中包含有黑色边框,可减轻卷积神经网络的工作压力。当使用标签的 N 个表征中的一个来替换前 10 个像素时,第一个隐藏层学习内容也会轻易显现。一个有 4 隐藏层的网络中,每个隐藏层包含 2000 个 ReLU,层与层之间的完全连接在 60 个 epochs 后,经 MNIST 其测试误差为 1.36%,反向传播要达到该测试性能需要大约 20 个 epochs。将 FF 学习率加倍并训练 40 个 epochs,可得到稍差的测试误差,为 1.46% 。
使用 FF 训练后,通过从包含测试数字和由 10 个 0.1 条目组成的中性标签的输入开始,由网络进行一次前向传递来对测试数字进行分类,之后,除第一个隐藏层外,其他所有隐藏活动用作在训练期间学习的 softmax 输入,这是一种快速次优的图像分类方法。最好的方式是使用特定标签作为输入的一部分来运行网络,并积累除第一个隐藏层以外的所有层的优点,在分别对每个标签执行此操作后,选择具有最高累积优度的标签。在训练过程中,来自中性标签的前向传递被用于挑选硬负标签,这使得训练需要约⅓ 的 epochs 。
通过每个方向将图像抖动最多的两个像素用于增加训练数据,从而为每个图像获得 25 种不同的偏移,当中使用了像素空间布局的知识,使其不再是排列不变的。这种用增强数据训练同个网络 500 个 epochs,测试误差可达到 0.64%,类似于用反向传播训练的卷积神经网络。如图 2,我们也在第一个隐藏层中得到了有趣的局部域。
图 2:在抖动 MNIST 上训练的网络第一个隐藏层中 100 个神经元的局部域,类标签显示在每张图像前 10 个像素中
目前,所有图像分类案例都使用了一次学习一层的前馈神经网络,这意味着在后面层中学到的东西不会影响前面层的学习。这与反向传播相比似乎是个主要弱点,克服这种明显限制的关键是,将静态图像视为相当无聊的视频,由多层递归神经网络处理。
FF 对正数据和负数据都在时间上向前运行,但每层活动向量由上一层和下一层在前一个 time-steps 的归一化活动向量确定(图 3)。对这种方法是否有效进行初步检查,可以使用由静态 MNIST 图像组成的“视频”输入,该图像在每个时间帧中简单重复,底层是像素图像,顶层是数字类的 N 个表征之一,有两个或三个中间层,每层有 2000 个神经元。
在初步实验中,循环网络运行了 10 个 time-steps,每个 time-steps 的偶数层根据奇数层的标准化活动进行更新,奇数层根据新的标准化活动更新,其交替更新旨在避免双相振荡,但目前似乎并不需要:在有一点阻尼的情况下,基于前一个 time-steps 归一化状态,所有隐藏层的同步更新学习效果略好,这对不规则架构而言是有益的。因此,该处实验使用了同步更新,新的预归一化状态被设置为上个预归一化状态的 0.3 ,加上了计算新状态的 0.7。
图 3:用于处理视频的循环网络
如图 3,网络在 MNIST 上训练 60 个 epochs,对每个图像的隐藏层通过一次自下而上传递进行初始化。
此后,网络运行 8 次带有阻尼的同步迭代,通过对 10 个标签中的每个标签运行 8 次迭代,并选择在第 3 到 5 次迭代中平均优度最高的标签来评估网络的测试数据性能,测试误差为 1.31%。负数据通过网络一次前向传递以获得所有类别的概率,根据概率按比例在不正确的类别间进行选择生成,从而提高训练效率。
循环网络中,其目标是令正数据的上层输入和下层的输入间保持良好的一致性,而负数据的一致性不好。具有空间局部连通性的网络中具备一个理想的属性:自上而下的输入将由图像更大的区域决定,并且有更多处理阶段的结果,因此它可以被视为对图像的上下文预测,也即是基于图像局部域自下而上的输入所应产出的结果。
如果输入随时间变化,自上而下的输入会基于较旧的输入数据,因此必须学习预测自下而上输入的表征。当我们反转目标函数的符号,并针对正数据进行低平方活动,自上而下的输入应学会抵消正数据的自下而上输入,这样看来与预测编码十分相似。层规范化意味着即使取消工作得很好,大量信息也会被发送到下一层,如果所有预测误差都很小,则会被归一化放大。
使用上下文预测作为局部特征并提取教学信号学习的想法长期存在,但难点在于,如何在使用空间上下文、而非单侧时间上下文的神经网络中工作。使用自上而下和自下而上输入的共识作为自上而下和自下而上权重的教学信号,这种方法明显会导致崩溃,而使用其他图像的上下文预测来创建负数对的问题也没有完全解决。其中,使用负数据而不是任何负内部表征似乎是关键。
Hinton 接着在 CIFAR‑10 数据集上测试了 FF 算法的性能,证明了 FF 训练出的网络在性能上能够媲美反向传播。
该数据集有 50,000 张 32x32 的训练图像,每个像素具有三个颜色通道,因此,每个图像都有 3072 个维度。由于这些图像的背景复杂且高度可变,并且在训练数据很有限的情况下无法很好地建模,除非隐藏层非常小,否则包含两到三个隐藏层的全连接网络在使用反向传播进行训练时会严重过拟合,因此,目前几乎所有研究的结果都是针对卷积网络的。
反向传播和 FF 都是用权重衰减来减少过拟合,Hinton 对两种方法训练的网络性能进行了比较。对于 FF 训练的网络,测试方法是使用单个前向传播,或者让网络对图像和 10 个标签中的每一个运行 10 次迭代,并在第 4 到 6 次迭代中累积标签的能量(即当基于优度的错误最低时)。
结果,虽然 FF 的测试性能比反向传播差,但只稍微差了一点。同时,二者间的差距不会随着隐藏层的增加而增加。不过,反向传播可以更快地减少训练误差。
另外,在序列学习上,Hinton 也通过预测序列中下一个字符的任务证明了用 FF 训练的网络比反向传播更好。用 FF 训练的网络可以生成自己的负数据,更符合生物学。
Hinton 进一步将 FF 算法与其他已有的对比学习方法做了对比。他的结论是:
FF 是对玻尔兹曼机和简单的局部优度函数的结合;
FF 不需要反向传播来学习判别模型和生成模型,因此是 GAN 的一个特例;
在真实的神经网络中,与 SimCLR 这类自监督对比方法相比,FF 能够更好地衡量两种不同表示之间的一致性。
在 20 世纪 80 年代初期,深度神经网络有两种最被看好的学习方法,一个是反向传播,另一个便是做无监督对比学习的玻尔兹曼机(Boltzmann Machines)。
玻尔兹曼机是一个随机二元神经元网络,具有成对连接,在两个方向上具有相同的权重。当它在没有外部输入的情况下自由运行时,玻尔兹曼机通过将其设置为开启状态来重复更新每个二元神经元,其概率等于它从其他活动神经元接收到的总输入的逻辑。这个简单的更新过程最终从平衡分布中采样,其中每个全局配置(将二进制状态分配给所有神经元)具有与其负能量成比例的对数概率。负能量只是该配置中所有神经元对之间权重的总和。
玻尔兹曼机中的神经元子集是“可见的”,二进制数据向量通过将它们夹在可见神经元上呈现给网络,然后让它重复更新其余隐藏神经元的状态。玻尔兹曼机器学习的目的是使网络运行时可见神经元上二元向量的分布与数据分布自由匹配。
最令人惊讶的是,自由运行的玻尔兹曼机在热平衡时,可见神经元上显示的数据分布和模型分布之间的 Kullback-Liebler 散度具有一个非常简单的导数(对于任何权重):
其中尖括号表示对热平衡时随机波动的期望以及第一项的数据。
这个结果令人兴奋的地方在于,它给出了网络深处权重的导数,而无需显式传播误差导数。它在清醒和睡眠两个不同阶段传播神经活动。
但是,要在数学上使得学习规则最够简洁,代价会非常高。它需要一个深度玻尔兹曼机来接近其平衡分布,那么它就无法作为一种切合实际的机器学习技术,作为一种皮层学习模型也不可信:因为大型网络在感知过程中没有时间接近其平衡分布。而且,没有证据表明皮层连接的详细对称性,也没有明显的方法来学习序列。此外,如果权重的许多正更新后跟随着大量负更新,且负阶段对应于快速眼动睡眠,那玻尔兹曼机器学习程序就会失败。
但尽管存在以上缺点,玻尔兹曼机仍是一种很聪明的学习方法,因为它用两个工作原理相同但在可见神经元上具有不同边界条件的迭代设置(即限制在数据上 vs. 不予限制),取代了反向传播的前向和后向传递。
玻尔兹曼机可以看作是两种思想的结合:
第一种关于对比学习的思路可以与许多其他能量函数一起使用。例如,使用前馈神经网络的输出来定义能量,然后通过该网络使用反向传播来计算能量对权重和可见状态的导数。然后通过跟踪能量对可见状态的导数来生成负数据。另外,负数据不必通过从能量函数定义的玻尔兹曼分布中采样数据向量来产生,不从均衡分布中采样,也能提高具有单个隐藏层的玻尔兹曼机的学习效率。
在 Hinton 看来,等式 2 的数学简洁性以及随机更新过程对所有可能的隐藏配置做贝叶斯积分,这个过程实在非常优雅,所以,用只需要传播神经活动的两个解决方案来代替反向传播的前向+反向传播这种想法,仍然与马尔可夫链蒙特卡罗(Markov Chain Monte Carlo)的复杂性纠缠在一起。
简单的局部优度函数比二元随机神经元网络的自由能更易于处理, FF 则对玻尔兹曼机的对比学习与这种函数做了结合。
GAN(生成对抗网络)使用多层神经网络生成数据,并使用多层判别网络来训练其生成模型,使其相对于生成模型输出给出导数,且该导数是真实数据而非生成数据的概率
GAN 很难训练,因为判别模型和生成模型相互对抗。GAN 能生成非常漂亮的图像,但会遭受模式崩溃的困扰:可能会存在大片从不生成示例的图像空间区域。而且它使用反向传播来适应每个网络,因此我们很难看出如何在皮质中实现它们。
FF 可以看作是 GAN 的一个特例,其中判别网络的每个隐藏层对输入的正负都会自己做贪心决策,因此不需要反向传播来学习判别模型和生成模型,因为它不是学习自己的隐藏表示,而是重用判别模型学习的表示。
生成模型唯一需要学习的是如何将这些隐藏的表示转换为生成的数据,如果使用线性变换来计算 softmax 的对数,则不需要反向传播。对两个模型使用相同的隐藏表示的一个优点,是它消除了当一个模型相对于另一个模型学习太快时出现的问题,还避免了模式崩溃。
像 SimCLR 这类自监督对比方法,是通过优化一个目标函数来学习,该函数能够支持对同一图像的两种不同剪裁的表示之间的一致性,以及来自两幅不同图像的剪裁的表示之间的不一致性。
这类方法通常使用许多层来提取剪裁的表示,并通过反向传播目标函数的导数来训练这些层。如果两种剪裁总是以完全相同的方式重叠,它们就不起作用,因为这样它们就可以简单地报告共享像素的强度并获得完美的一致性。
但在真实的神经网络中,测量两个不同表示之间的一致性并非易事,且没办法使用相同的权重同时提取两种剪裁的表示。
而 FF 使用不同的方式来衡量一致性,这对于真实的神经网络来说似乎更容易。
许多不同的信息来源为同一组神经元提供输入。如果来源就激活哪些神经元达成一致,将产生正干扰,从而导致高平方活动,如果它们有分歧,则平方活动将降低。通过使用正干扰来测量一致性比比较两个不同的表示向量要灵活得多,因为不需要将输入任意分成两个单独的源。
SimCLR 这类方法的一个主要弱点是大量计算用于推导两个图像裁剪的表示,但目标函数仅对表示提供适度的约束,这限制了有关域的信息的速率可以注入权重。为了使剪裁的表示更接近其正确的配对而非替代品,只需要 20 比特信息。FF 的问题更严重,因为它只需要 1 比特来区分正例和负例。
解决这种约束贫乏的方法是将每一层分成许多小块,并强制每个块分别使用其预归一化活动向量的长度来决定正例和负例。然后,满足约束所需的信息随块数线性缩放,这比在类似 SimCLR 的方法中使用更大的对比度集实现的对数缩放要好得多。
学习多层表示的一种无监督方法,是首先学习一个隐藏层,该隐藏层捕获数据中的某些结构,然后将该层中的活动向量视为数据、并再次应用相同的无监督学习算法。这就是使用受限玻尔兹曼机 (RBM)或堆栈自编码器(stacked autoencoder)学习多层表示的方式。
但它有一个致命的缺陷。假设我们通过随机权重矩阵映射一些随机噪声图像。生成的活动向量将具有由权重矩阵创建的相关结构,与数据无关。当将无监督学习应用于这些活动向量时,它会发现其中的一些结构,但这不会告诉系统任何关于外部世界的信息。
最初的玻尔兹曼机器学习算法旨在通过对比由两种不同外部边界条件引起的统计数据来避免此缺陷。这抵消了所有只是网络其他部分的结果的结构。在对比正负数据时,无需限制布线,也不要求剪裁之间具有随机空间关系以防止网络作弊。这样便很容易获得大量相互连接的神经元组,每个神经元组都有自己的目标即区分正数据和负数据。
Mortal Computation 是 Hinton 近期的重要观点之一(注:该术语尚未有公认的中文翻译,暂译为“非永生计算”)。
他指出,目前的通用数字计算机被设计为忠实地遵循指令,人们认为让通用计算机执行特定任务的唯一方法,就是编写一个程序,以极其详细的方式准确指定要做的事。
主流的想法仍然是坚持软件应该与硬件分离,以便相同的程序或相同的权重集可以在硬件的不同物理副本上运行。这就会使得程序或权重中包含的知识变得“不朽”:即硬件死亡时,知识不会随之消亡。
但这已经不再成立,研究界还未充分理解深度学习对计算机构建方式的长期影响。
软件与硬件的分离是计算机科学的基础之一,它的确带来了很多好处,如可以研究程序的特性而不必关心电气工程,而且它使得编写一次程序、并将其复制到数百万台计算机成为可能。但 Hinton 指出:
如果我们愿意放弃这种“不朽”,就可以大大节省执行计算所需的能量以及制造执行计算的硬件的成本。
这样一来,执行相同任务的不同硬件实例在连接性和非线性上就有可能发生较大的变化,并从学习过程中发现有效利用每个特定实例的未知属性的参数值硬件。这些参数值仅对特定的硬件实例有用,因此它们执行的计算是并非不朽,而是会随硬件一起消亡。
将参数值复制到工作方式不同的不同硬件本身的确没有任何意义,但我们可以用一种更生物学的方法可以将一个硬件学到的东西转移到另一个硬件。对于图像中对象分类这样的任务,我们真正感兴趣的是将像素强度与类标签相关联的函数,而不是在特定硬件中实现该函数的参数值。
函数本身可以通过使用蒸馏转移到不同的硬件:训练新硬件不仅给出与旧硬件相同的答案,而且输出相同的概率对于不正确的答案。这些概率更丰富地表明了旧模型如何概括,而不仅仅是它认为最有可能的标签。因此,通过训练新模型来匹配错误答案的概率,我们正在训练它以与旧模型相同的方式进行概括。这样的神经网络训练实际上优化了泛化性,这个例子十分罕见。
如果想让一个万亿参数神经网络只消耗几瓦特,非永生计算可能是唯一的选择。它的可行性取决于,我们能否找到一种可以在精确细节未知的硬件中高效运行的学习过程,在 Hinton 看来,FF 算法就是一个很有前途的方案,只是它在扩展到大型神经网络时的表现还有待观察。
论文最后,Hinton 指出了以下悬而未决的问题:
以上就是Hinton 最新研究:神经网络的未来是前向-前向算法的详细内容,更多请关注php中文网其它相关文章!
已抢65687个
抢已抢31057个
抢已抢17103个
抢已抢8672个
抢已抢11226个
抢已抢23296个
抢