白话机器学习-Attention

一 背景

大抵是去年底吧,收到了几个公众号读者的信息,希望能写几篇介绍下Attention以及Transformer相关的算法的文章,当时的我也是满口答应了,但是确实最后耽误到了现在也没有写。

前一阵打算写这方面的文章,不过发现一个问题,就是如果要介绍Transformer,则必须先介绍Self Attention,亦必须介绍下Attention,以及Encoder-Decoder框架,以及GRU、LSTM、RNN和CNN,所以开始漫长的写作之旅。

截止目前,已经完成几篇文章的输出

  • 《白话机器学习-卷积神经网络CNN》
  • 《白话机器学习-循环神经网络RNN》
  • 《白话机器学习-长短期记忆网络LSTM》
  • 《白话机器学习-循环神经网络概述从RNN到LSTM再到GRU》
  • 《白话机器学习-Encoder-Decoder框架》

那么接下来,需要把Attention机制、Self Attention以及Transformer一一介绍了。

本文主要介绍Attention机制。

那么为何要引入Attention呢,个人认为主要有几点:

  • 更长时间的依赖,尽管LSTM与GRU也可以解决这个问题,但是有一定的缺陷
  • LSTM与GRU是顺序串行计算的模式,计算的性能有所限制
  • Attention可以实现不同时序数据间的关联,同时由于网络结构可以实现并行矩阵计算。

所以从计算性能和模型性能的综合考量,在工业界,Attention被大量使用,“Attention is all your need!”。

二 Attention简介

Attention机制最早是在NLP领域发展起来的,伴随着Encoder-Decoder框架,大放异彩,极大的提升了翻译模型等的性能,逐步的替代了基于传统算法的翻译模型。

Attention机制通过预测词与每个单词打分,会对不同的单词给予不同的关注权重。然后使用softmax分数进行归一化权重,我们使用编码器隐藏状态的加权和来聚合编码器隐藏状态,以得到上下文向量。

结合Encoder-Decoder框架,我们逐步的讲解Attention机制,实现可以分为4个步骤。虽然本文是结合Encoder-Decoder框架进行讲解,但是并非Attention机制只能用在这里,其实在搜广推领域都已经在大规模的使用,比如搜索场景,通过搜索词与用户历史浏览、点击、购买进行注意力机制建模,都可以取得不错的效果,这里多说两句,搜广推模型的要点我个人觉得有几点:

  1. 模型够大,记忆与衍生能力更强,通过框架支持稀疏大规模EMB减少碰撞,使得模型学的更加充分;
  2. 序列用起来,最开始的时候使用LSTM、GRU等,但是搜广推模型比较大,性能问题逐步都切换到Attention;
  3. 实时反馈,Online Learning跑起来,但是这个需要强大的基建,超大模型训练与在线一体,便捷的回退、上线操作;

额,跑题了,我还是继续介绍Attention吧,喜欢的同学给点掌声!

1 准备工作

让我们首先准备所有可用的编码器隐藏状态(绿色)和第一个解码器隐藏状态(红色)。在我们的示例中,我们有4个编码器隐藏状态和当前解码器隐藏状态。(注意:最后一个合并编码器隐藏状态作为输入输入到解码器的第一个时间步。解码器第一个时间步的输出称为第一个解码器隐藏状态,如下图所示。)

2 计算初始分数

本步骤的功能主要是计算初始分数(标量)由Score函数(也称为比对分数函数或比对模型)获得。在本例中,Score函数是解码器和编码器隐藏状态之间的点积。 评分函数还是比较多的,后面参考里面会罗列一些。

decoder_hidden = [10, 5, 10]
encoder_hidden  score
---------------------
     [0, 1, 1]     15 (= 10×0 + 5×1 + 10×1, the dot product)
     [5, 0, 1]     60
     [1, 1, 0]     15
     [0, 5, 1]     35

在上面的例子中,对于编码器隐藏状态[5,0,1],我们获得了60分的高关注度(相对其他的点)。这意味着下一个单词(解码器的下一个输出)将受到这个编码器隐藏状态的非常大影响。

3 通过Softmax计算归一分数

本步骤的功能主要是,通过Softmax函数将上面计算的Score进行归一化操作计算归一化的分数。

encoder_hidden  score  score^
-----------------------------
     [0, 1, 1]     15       0
     [5, 0, 1]     60       1
     [1, 1, 0]     15       0
     [0, 5, 1]     35       0

注意,基于Softmax计算我们发现注意的分布只在[5,0,1]上。实际上,这些数字不是二进制的,而是0到1之间的浮点数。

4 计算对齐向量组

本步骤的功能主要是,通过自身Softmax归一化分数score^与自身向量数乘,得到对齐向量组。

encoder  score  score^  alignment
---------------------------------
[0, 1, 1]   15      0   [0, 0, 0]
[5, 0, 1]   60      1   [5, 0, 1]
[1, 1, 0]   15      0   [0, 0, 0]
[0, 5, 1]   35      0   [0, 0, 0]

在这里我们可以看到,除了[5,0,1]之外,所有编码器隐藏状态的对齐都由于注意力得分较低而降低到0。这意味着我们可以期望第一个翻译的单词应该与[5,0,1]嵌入较为匹配输入单词。

5 融合对齐向量组,生成对齐向量

本步骤的功能主要是完成对齐向量组的融合与聚合,一般的方式将全部的对齐向量组进行按位累加。

encoder  score  score^  alignment
---------------------------------
[0, 1, 1]   15     0  [0, 0, 0]
[5, 0, 1]   60     1  [5, 0, 1]
[1, 1, 0]   15     0  [0, 0, 0]
[0, 5, 1]   35     0  [0, 0, 0]
context = [0+5+0+0, 0+0+0+0, 0+1+0+0] = [5, 0, 1]

6 融合自身与对齐向量

本步骤的功能主要是对齐向量与自身如何融合的问题,融合的方式上面提到过,有很多种,比如在concact模式下,具体的计算如粉色远点与相邻的绿色原点连接。

三 Multi Head Attention

这块会后续和Self Attention以及Transformer一起介绍,请大家静候。

所谓多头就是多个几套参数,基于理念就是不同的主体之间的关系是有很多种的,一个Attention不足以进行刻画,需要多个Attention进行刻画,所以就需要多个参数了。整体感觉吧,干咱们这行的得是社会学与心理学的达人,或者有这种资质,要不呢,很多事情吧,可能像不明白。至于说数学,是非常重要的,但是吧,有时候不能太严谨,毕竟机器学习是玄学。

四 参考资料

[1] Neural Machine Translation by Jointly Learning to Align and Translate (Bahdanau et. al, 2015)

[2] Effective Approaches to Attention-based Neural Machine Translation (Luong et. al, 2015)

[3] Attention Is All You Need (Vaswani et. al, 2017)

[4] Self-Attention GAN (Zhang et. al, 2018)

[5] Sequence to Sequence Learning with Neural Networks (Sutskever et. al, 2014)

[6] TensorFlow’s seq2seq Tutorial with Attention (Tutorial on seq2seq+attention)

[7] Lilian Weng’s Blog on Attention (Great start to attention)

[8] Jay Alammar’s Blog on Seq2Seq with Attention (Great illustrations and worked example on seq2seq+attention)

[9] Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation (Wu et. al, 2016)

五 番外篇

介绍:杜宝坤,互联网行业从业者,十五年老兵。精通搜广推架构与算法,并且从0到1带领团队构建了京东的联邦学习解决方案9N-FL,同时主导了联邦学习框架与联邦开门红业务。
个人比较喜欢学习新东西,乐于钻研技术。基于从全链路思考与决策技术规划的考量,研究的领域比较多,从工程架构、大数据到机器学习算法与算法框架、隐私计算均有涉及。欢迎喜欢技术的同学和我交流,邮箱:baokun06@163.com

六 公众号导读

自己撰写博客已经很长一段时间了,由于个人涉猎的技术领域比较多,所以对高并发与高性能、分布式、传统机器学习算法与框架、深度学习算法与框架、密码安全、隐私计算、联邦学习、大数据等都有涉及。主导过多个大项目包括零售的联邦学习,社区做过多次分享,另外自己坚持写原创博客,多篇文章有过万的阅读。公众号秃顶的码农大家可以按照话题进行连续阅读,里面的章节我都做过按照学习路线的排序,话题就是公众号里面下面的标红的这个,大家点击去就可以看本话题下的多篇文章了,比如下图(话题分为:一、隐私计算 二、联邦学习 三、机器学习框架 四、机器学习算法 五、高性能计算 六、广告算法 七、程序人生),知乎号同理关注专利即可。

一切有为法,如梦幻泡影,如露亦如电,应作如是观。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 白话机器学习的数学pdf是一本以易懂的语言讲解机器学习中涉及的数学概念和算法的PDF教材。 在机器学习中,数学是一门非常重要的学科。它涵盖了许多基本的数学概念,如线性代数、微积分和概率论。这些数学概念在理解和应用各种机器学习算法时至关重要。 这本PDF教材以白话的方式解释了这些数学概念,使读者能够轻松理解和学习。它通过易懂的例子和图示来说明每个概念的含义和应用,帮助读者建立直观的认识。 PDF教材的内容包括线性代数的基本概念,如向量、矩阵和线性方程组,并解释了这些概念在机器学习中的应用,如特征向量和数据降维。 此外,PDF教材还讲解了微积分的概念和应用,如最优化问题和梯度下降算法。这些是机器学习中常用的算法,通过学习微积分,读者可以深入理解这些算法的原理和实现方式。 概率论也是机器学习中不可或缺的一部分,PDF教材简明扼要地介绍了概率的基本概念和常见的概率分布。它还解释了贝叶斯推断和朴素贝叶斯分类器在机器学习中的应用。 总的来说,这本白话机器学习的数学pdf以简单易懂的方式解释了机器学习中数学的基本概念和算法。它适合初学者学习和入门,也可以作为复习和回顾的参考资料。 ### 回答2: 白话机器学习的数学PDF是一本以简明易懂的语言阐述机器学习中涉及的数学原理和概念的电子书。它旨在帮助读者更好地理解机器学习算法背后的数学基础,为他们提供一个轻松的学习资源。 这本书首先介绍了机器学习的基本概念和应用领域,然后逐步深入到数学原理。它包括了涵盖机器学习所需的一系列数学概念,如线性代数、概率论、统计学和优化理论。 在书中,数学原理的阐述遵循了白话风格,尽可能用通俗的语言解释复杂的数学概念。它避免使用过多的数学符号和公式,而是通过图表和实际案例来讲解,以增加读者的理解和兴趣。 除了数学原理的介绍,这本PDF还提供了一些机器学习算法的实际应用示例和编程实践。这有助于读者将所学的数学知识应用到实际问题中,并加深对机器学习的理解。 总而言之,白话机器学习的数学PDF是一本适合初学者和希望巩固数学基础的机器学习爱好者阅读的书籍。它通过简单易懂的语言讲解了机器学习所需的数学知识,帮助读者更好地掌握机器学习算法的原理和应用。 ### 回答3: 白话机器学习的数学PDF是一份以简单易懂的语言解释机器学习中所涉及的数学概念和方法的文档。机器学习是一门将数学、统计学和计算机科学相结合的学科,因此理解其中的数学原理是非常重要的。 这份PDF将数学概念和方法以白话的方式呈现,使得读者可以更轻松地理解和学习。它包含了机器学习中常用的数学概念,如线性代数、统计学和概率论等。读者可以在其中找到关于向量、矩阵、矩阵运算、概率分布、条件概率以及最小二乘法等内容的解释和示例。 这份PDF的目的是帮助读者建立对机器学习数学理论的基本认识,使其能够更好地应用这些知识于实际问题中。通过简单易懂的解释和示例,读者可以更好地理解和运用机器学习中的数学原理。 总而言之,白话机器学习的数学PDF是一份让读者更轻松地理解和学习机器学习中所涉及的数学概念和方法的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值