- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
前面我们所讲的模型,输入都是一个向量,但有没有可能 在某些场景中输入是多个向量,即一个向量集合,并且这些向量的数目并不是固定的呢 ?
这一类的场景包括 文字识别、语音识别、图网络 等等.
那么先来考虑输出的类型,如果对于输入是多个数目不定的向量,可以有以下这几种输出方式:
最简单的思路当然是 将每一个向量单独作为一个输入,然后将其丢入到一个全连接之中,每个单独产生结果 。但是这种方法的问题在于 没办法考虑前后向量之间的联系 。那么转换另一个思路就是 开一个window,每次将window中的向量一起输入到全连接网络中 ,如下图:
这种方式的问题在于 如果遇到某些场景需要全部向量都考虑,但是我们无法事先知道这个场景中向量的数目,我们也就很难调整我们的window去适应 。在这种情况下就需要用到自注意力机制了.
可以将自注意力机制看成一层,其接受所有向量的输入,然后输出的数目跟输入的数目的是一样的,可以认为它的每个输出都是考虑了整个向量集之后的结果,之后再将这些输出每个单独放入一个全连接网络中来得到输出,这样可以显著的降低全连接网络的参数量 。并且这个也可以多次使用,自注意力后FC再自注意力再FC等等.
那么接下来的问题就是这个机制如何接受输入并作出相应的输出。这边以第一个向量对应的第一个输出为例:
最常见的是这种 Dot-product ,就是 将两个向量分别乘以一个矩阵,得到新的向量,然后再进行点乘得到一个数值 ,也就是 \(\alpha\) 。
计算出两两向量之间的相关性后进行Sortmax :如下图:
对每个向量再乘以一个另外的矩阵得到一个新的向量,再进行加权和得到结果 :
哪一个向量对应的 \(\alpha\) (attention score)越大,那么得到的b就越接近于它所计算出来的 \(v\) ,这就是最终结果了 .
而经过上述的分析,可以看到 需要学习的参数只有 \(W^q,W^k,W^v\) 而已 .
这是认为 不同的输入向量之间可能不止有一种相关性 ,因此:
各种参数都有多重,只不过各自算各自的 .
在前面的自注意力过程中,我们 并没有关注到各个输入向量之间的位置信息 !这在一些场景里面是很关键的一部分信息,但是我们只是计算了各自的相关性没有考虑到位置信息,因此需要加上Position embedding:
只需要在每个输入向量上加上一个 \(e^i\) 即可,这个里面就包含了具体的位置信息,而如何产生 \(e^i\) 仍然是一个在研究的问题 .
事实上, CNN是受限制的Self-attention,也就是Self-attention的特例,Self-attention可以通过某些设计和限制就可以变成CNN,完成和CNN同样的任务 .
RNN也是处理输入是向量序列问题的算法,其具体过程就是 一开始有一个memory,它和第一个输入向量一起输入到RNN中将会输出一个向量,该向量一方面放入全连接网络中得到一个输出,另一方面和下一个输入向量一起作为下一个RNN的输入,以此类推 .
而它们的区别在于:
最后此篇关于【机器学习】李宏毅——自注意力机制(Self-attention)的文章就讲到这里了,如果你想了解更多关于【机器学习】李宏毅——自注意力机制(Self-attention)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如何在 Excel 中编写可以在我将打开的任何 Excel 文档上工作(使用快捷方式运行)的宏? 这可能吗? 最佳答案 您需要将宏添加到 Personal.xlsb 以使它们可用于所有 excel 文
我正在研究 problem #74在4clojure.com,我的解决方案如下: (defn FPS [s] (->> (map read-string (re-seq #"[0-9]+"
我还没有完全理解Clojure 箭头宏thread-first -> 和thread-last 宏->> 之间的区别。在阅读 https://clojure.org/guides/threading_
我想将一些调试输出语句插入到大型 C 代码库中。这些调试输出语句将由编译器选项开关控制。 调试输出语句如下所示: #ifdef DEBUG_FLAG Print(someSymbol) #endif
我正在通过宏将代码注入(inject)到 C++ 类中。有没有办法根据访问修饰符的上下文来做到这一点?有点像 #if (we_are_in_public_context) INJECT_PUBLIC_
这应该与 memoize 类似,但有很大不同。虽然 memoize 应该与纯函数一起使用,但它通常对加速 IO 相关函数很有用。 我正在寻找的函数/宏应该表现得像高阶函数。它产生的功能应该: 第一次调
对于下面的代码: let services: [MyServices] = [ MyService(), #if DEBUG DebugService(), #endi
假设我有以下文本文件 name: John Doe description: My name is John Doe and I'm really good at vim! name: John Do
在创建 Excel 宏方面需要帮助。我有一个 Excel 工作表。Excel 工作表不一致。我打算使它统一和结构化。 例如。 A B C
我正在 excel 中设置一个宏,以便在更新单元格时自动发送电子邮件。是否可以在电子邮件正文中包含单元格的内容?例如,如果单元格 G7 已更新,请在电子邮件中包含单元格 B7 的内容?单元格行将是相同
我创建了一个简单的 Excel 工作表。 这是我的宏代码: Sub MyMacro() Sheets("Sheet1").Select A$ = Cells(1, 1) Msg
在 Excel 的 VB 宏中,如何删除所有出现的以某个字符串开头的单词? 例如: 字符串内容为:xxxx $AUD543.43 yyyy 我想搜索以 $AUD 开头的字符串中的任何内容并删除下一个空
我是 Excel 宏的新手.. 谁能告诉我这个宏是做什么的? Sub People_Add_Document() prow = ActiveCell.row num = Cells(p
我对 Excel 中的 VBA 和宏非常陌生。我有一个非常大的 Excel 电子表格,其中 A 列保存日期。我正在尝试删除值小于某个日期的行,这就是我到现在为止的想法。 Sub DELETEDATE(
我在 Excel 2003 中有一个 VBA 对象,当通过流数据获得某些值时,它会触发三个简单的宏。它运行良好。我想打开一个重复的工作表,但具有不同的流数据,并在各自的工作表上触发宏。它现在可以使用,
下面的宏有什么问题?我只想评估一个选项卡中的一个单元格是否大于另一个选项卡中的另一个单元格。然后消息框: Sub Comhouse() If Worksheets("(2.2) TRA works
需要一个简单的 excel 宏的帮助。我在第 1 列 X1 到 X20 中有数据。我想自动将此信息粘贴到 A 列,然后当我更新 X 列中的数字时,我想将此信息粘贴到 B 列,然后再粘贴到 C 列...
我找到了以下代码,效果很好;但是,我必须手动更改月份,以便它转到第二个工作簿的右侧工作表。由于工作表以月为单位,我怎样才能使其自动更改为当月? Sub AlarmSheet() Dim wkb As
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
我的公司只使用 MS Office 2003 产品,所以我必须坚持下去。由于我的工作性质,我需要使用很多“复制和粘贴”功能。源数据主要来自网站,我将数据粘贴到 Excel 中的单元格中。问题是剪贴板保
我是一名优秀的程序员,十分优秀!