Accelerating Techniques for self-Attention
Accelerating Techniques for self-Attention
detect0530@gamil.com
计算量和耗时
当输入序列很长时,在key和query计算dot-product时候计算量非常的大。(瓶颈)
当input的sequence数量很大时,transformer模型中self-attention组件是最耗时的,也就是运算量的瓶颈,那么如果我们加快self-attention的运算速度,就可以加快整个模型的训练速度。
加快 Self-Attention运算的方法
Skip some calculation with human knowledge
也许不需要把attention matrix所有值都算出来。
Local Attention
举个例子,如果只有sequence相邻的部分才有作用:
相当于每次做attention只看一个小范围的区域。但是这样做的话,和CNN就没什么区别了,也就是说虽然这样可以提速,但是效果不一定会很出色。
Stride Attention
同时也可以隔固定x位置看一下。
Global Attention
...
Transformer
Transformer
detect0530@gmail.com
Sequence to Sequence (seq2seq)
输出的长度是可变的,让机器自己判断该输出多少内容。
这种类型的模型能做非常多的事情。能在自然语言、音频、图像等领域广泛的应用。具体的例子暂且不展开。
Transformer也是一种Seq2Seq模型,但是它的结构和传统的RNN模型不同。它是基于Attention机制的,而不是RNN。
网络结构
Encoder
原始的transformer里面encoder更复杂
右边就是一个block里面的内容,实际上在encoder中种这样的block会做n次。
Decoder
一开始会用BOS作为输入,然后会产生一个输出,然后把这个输出作为下一次的输入,然后再产生一个输出,然后再把这个输出作为下一次的输入,一直这样做下去,直到产生EOS为止。
解释一下图中的Masked,实际上Masked就是在self-attention的时候,不让它看到后面的内容。因为在预测的时候,decoder产生的东西是一个一个产生的,后面的内容是不知道的,所以在训练 ...
Batch Normalization
Batch Normalization
为什么会难训练
一种可能是,不同参数的斜率差别很大,导致learning rate设小设大都不好。
比如:当x1x_1x1和x2x_2x2数值范围差异很大时,就会导致w1w_1w1,w2w_2w2出现上述情况。
Feature Normalization
对数据集的每一个维度(特征)进行Normalization。保证不同维度的原始数据不会差异数量级。
同时我们也希望对中间输出的结果进行normalization,因为输出的结果也会被当做input去处理训练新的参数。
实际上,一旦我们最数据进行了Normalization,那么这些数据接不能独立计算了,他们被耦合成了一个整体。但是如果把所有数据一下拿去训练,显存会爆。
于是我们采用batch的形式,比如一次训练64组数据,对这64组数据形象normalization处理区更新参数。
使用batch normalization适用于batch size比较大的时候,因为要算均值和标准差。
在实际中,我们还会加上一个参数γ\gammaγ和β\betaβ,来控制normalizat ...
Word Embedding
Word Embedding
detect0530@gmail.com
对word的编码是困难的,用one-hot维数太高,分类的话类别也太多,一个单词会出现的很多类中,
于是,我们希望把word project到一个空间中,类似语义的词汇在space里是接近的。且每一个特定的维度有一定的意义。
但是,我们只知道输入,不知道输出。所以我们需要一个神经网络来学习这个project的过程。
可以用auto-encoder吗? 弄一个encoder和decoder然后输入等于输出去训练。最后把encode拿出来就可以了?
是不行的。
比如你用one-of-N encoding来说,每一个单词都是独立的,把这样的vector做auto-encoder,没法train出一些有用的特征分布来编码。(根源在与基础的编码方式是独立无关的,同时如果用n-gram来表述一个单词,也许可以抓到一些前缀后缀字母组的含义,但是效果肯定不好,不会这么干)
我们更希望从训练文本里,结合上下文找出相似关系的word。
一些基于上述思想的方法
Count based
Predict based
我们要 ...
Recurrent Neural Network(RNN)
对单词的编码
one hot (拉胯)
Beyond for 1-of-N encoding
于是我们可以暴力使用feedforward network来做这件事情。用输出的分类概率来表示每个词语的slot。
但是有个问题,一个单词在不同的语境有不同的slot。
于是,我们希望模型是有记忆的,也就是可以根据上下文产生不同的output。(对同一input)
于是,这种有记忆的model被称作Recurrent Neural Network(RNN)。
当然也可以是双向的。
这样一来,产出时模型关注的范围就比较广了(单向->双向了) 。
常见的形式
输入的参数还包括三个gate,分别是input gate, forget gate, output gate。
只要forget gate的值不为0,就会不更新memory cell的值,可以记得更久。
具体的一种实现:
(蓝红数字即weight和bios都是training得到的)
举例,当输入向量为[4,1,0][4,1,0][4,1,0]
将LSTM运用刚在RNN里面。
RNN遇到的一些问题
有时候 ...
Crypto Note
Crypto note
detect0530@gmail.com
DH key-excahnge protocol
一些公钥系统的安全性定义
这里A甚至可以选择把m0,m1都用pk加密一遍,因为它是CPA,所以这样做是可行。(侧面说明确定性的加密方法在这里不适用)
CCA security
EI Gamal Encryption
注意我们在Gen过程中,随机选择了x,这样就可以保证每次加密的结果都不一样,这样就可以避免确定性加密的问题。
但是很遗憾,其不是CCA安全的(个人感觉Dec函数过于简单不是件好事)
RSA
Plain RSA
plain RSA是有问题的
是确定性算法
规约假设中密文是均匀取样才能保证安全性,但是在palin rsa中m不是
Padding RSA
一种实现方法:
打乱了m的分布,同时引入随机性!
例题
数字签名,只要能伪造即可。
一般就是先问几个,然后拼接/运算。
solution
发现这个题希望我们规约到DDH问题。
于是我们分析原问题哪里喝DDH问题相似。
原问题引入b=0/1,分别代表了(gx,gy, ...
IntroAI_HW4 Freeway_Game Lab_Report
报告题目:Freeway Game
detect0530@gmail.com
2023年12月
1 引言
强化作为机器学习比较新的一个分支,广泛用于游戏ai中,本次实验,将以Freeway Game作为例子,运用强化学习的方法,训练一个能够自动玩游戏的ai。
2 实验内容
2.1 Task1
2.1.1.0 阐述强化学习的方法与过程
实验Sample code采用的是传统的Q-learning方法,Q-learning是一种基于Q值的强化学习方法,其核心思想是通过不断的迭代,更新Q-table,最终得到一个最优的Q-table,从而得到最优的策略。
具体来说,需要维护Q-tabke来辅助决策,Q-table记录了每个statement对应每个action的打分。这一步我们引入了三个东西:
状态 : 指游戏或模型中不同的状态定位,当然在特征工程的帮助下,也可以看作特征,
action : 指游戏/模型规定的运作方式。
打分 :又涉及heuristic函数,来对当前状态以及action评分。
Q-learning 强化学习算法流程:
第一步设计对状态的评估函数Q ...
演化算法HW3-复杂度&期望运行时间理论分析
Homework 3
detect0530@gmail.com
1. 证明No Free Lunch(NFL)定理
整体思路采用归纳法,首先,让我们证明:
∑fP(d1y∣f,m=1,a)=∑fμ(d1y,f(d1x))\sum_fP(d_1^y|f,m=1,a) = \sum_f\mu(d_1^y,f(d_1^x))
f∑P(d1y∣f,m=1,a)=f∑μ(d1y,f(d1x))
μ\muμ函数代表指示函数,成立时为1,反之为0。
注意这里的dxxd_x^xdxx是由aaa(算法)决定的。
因为f函数有个sum up,故上述式子的可以化简为∣Y∣∣X∣−1|Y|^{|X|-1}∣Y∣∣X∣−1,与aaa无关!
接下来,按照归纳法,我们假设∑fP(dmy∣f,m,a)\sum_fP(d_m^y|f,m,a)∑fP(dmy∣f,m,a)和a无关,然后去证明∑fP(dm+1y∣f,m+1,a)\sum_fP(d_{m+1}^y|f,m+1,a)∑fP(dm+1y∣f,m+1,a)也和a无关。
首先变化一下式子:
P(dm+1y∣f,m+1,a)=P(dm+1y( ...
Self-Attention机制
Self-Attention 机制
场景
输入不只是一个向量,有可能是一个向量组,且向量长度和向量组集合大小都不确定。
比如文本输入,一段文本可以看作是一个向量组,每个向量是一个词向量,向量组的大小是文本的长度。
但是这些文本如果按照简单的编码是不定长,且文本的order对其解读有很大影响。传统的输入方式以上特征都无法满足。
(to learn more: word embedding in weblink)
又比如声音信号:(也是一堆向量组成的向量组)
图也可以作为,比如人际关系图中,每个人的attributes可以看作是一个向量。同时向量之间是有联系的。
一些输入输出的例子:
每个向量都有输出
e.g. 词性判断、语音识别、购物推荐
只输出一个lable就好
e.g. sentiment analyisis、speaker recognition
机器自己决定输出(sequence to sequence)
e.g. 翻译、语音辨识
初步考虑
Windows
如果我们需要关联上下文,是不是开一个足够大的windows就好了呢?
如图我们开了一个全连接的wi ...
贝叶斯网络与MCMC近似
贝叶斯网络的结构
计算联合分布:
有利于减少参数量。(因为计算中每个节点只与父节点相关)
贝叶斯网络的建立
按照上述方式至少可以建DAG,但是想让图最自然同时边最少,需要按照逻辑拓扑序建图。
反过来也说明贝叶斯网络对图如何建立的不敏感。
贝叶斯网络的性质
流动性特点:
X,Y为节点,Z为观测变量的集合
有效迹
更具流动性的特点,可以引入d-分离的概念。
定理1:父节点已知时,该节点与其非后代节点条件独立。(根据有效迹可以判断)
定理2:Markov blanket:Each node is conditionally independent of all others given its Markov blanket: parents + children + children’s parents
计算条件独立时可化简
计算条件概率时,可以通过条件独立大大化简原式子。(每个部分的概率只依赖于不多的与之相关的节 点)。
特别需要注意下:
在给定G时,D与I是有流动性的,此时D与I是不独立的。
反之,若不给定G,D与I之间没有有效迹,是独立的。
虽 ...