Google在2020年提出了AlBert模型。模型是对Bert的改进,效果肯定要好,不然怎么是改进呢,貌似说的是废话。闲言碎语不要讲,直接上结论:
各项都很牛
到底做什么,让他变得如此强大?
- Factorized embedding parameterization
词的embeding长度E,没必要跟特征提取器transformer的隐层向量H长度相等。
考虑到词的编码是静态,就本身代表的词义,和上下文无关。
transformer隐层是上下文信息的编码。
二者确实也不用等价。
于是作者,就尝试不用E,让其小一点。 将输入V * E 的向量接一个 E* H的矩阵,直接转到 V* H,然后在和隐层搞后面的东西。
个人理解,word Embedding长度短了, 此举目的也是减少参数量。进而可以减少整个训练时间。 - Cross-layer parameter sharing
就是用一个transformer。 原始的Bert用12个Transformer,不同的transformer不同的参数。 我这里就用一个,同样的参数,每一轮都迭代这个参数。通过这改进,作者发现,每层输出距离和相似度都很稳定,不像Bert变化浮动大,不稳定。 - Inter-sentence coherence loss
其实就是改进Bert的NSP任务为SOP,为什么改进的呢, Bert原始NSP so easy了。 完全两个不同话题的两句话,放到一起判断是不是下一句,没意义,仅通过话题就能区分开。
而SOP则难了? 来自同一个话题,而且调换顺序,判断是不是调换。实验表明这个任务有1个点的提升。
以上就是本人对ALBert分析:
- 通过共享参数 和 Factorized embedding 缩小规模, 提高训练速度。当然效果也有提升。
- 通过SOP,提升训练效果。
- 但是实际应用,预测时间不变,因为同样一直用了12层的Transformer,虽然是同一个。