首页 > 编程知识 正文

机器学习与深度学习,深度学习的学习体会

时间:2023-05-03 20:51:38 阅读:181903 作者:2619

文章目录1 .局部敏感ttdc2 .可逆层3. Chunk

Transformer不能处理比较长的序列数据(通常为500左右的长度),不能充分消耗GPU资源。

Reformer可处理的序列长度可达64k,也大大减少了GPU资源消耗量。

Reformer的重要部分如下。

局部敏感ttdc注意力空间变换时间可逆层)时间变换空间Chunking FFN layer 1.局部敏感ttdc

在通常的ttdc映射中,由于不直接进行映射,所以不考虑要素间的联系,不能事先知道类似要素的位置信息,但是在局部敏感的ttdc中,考虑要素的类似性,在进行映射时类似要素的位置会变近,或者相同的bubuc

Reformer局部敏感ttdc采用随机旋转球投影点的方法,将3种不同的旋转投影作为3种ttdc映射,各点映射后得到3种不同的ttdc映射值,当3种映射结果一致时(下点x和y )

在Transformer中,Attention:atentIon(q,k,v )=softmax,k,v ) qktdk ) vattention ) q,k,v )=softmax(Frac{QK^^

Q Q Q: L Queries of size d,to attend for

K K K: K Keys of size d,to attend to

V V V: L Values of size d

L L L: length of sequence

d d d: depth of att

ention
Q K T QK^T QKT的复杂度为 O ( L 2 ) O(L^2) O(L2),当序列长度过长时就会难以处理。
在Reformer中,进行运算时不是对所有的 Q 、 K Q、K Q、K进行直接运算,而是考虑同 Q Q Q比较接近的 K K K来进行运算。
LSH在运算过程中,选择Q=K,有如下设置: k j = m e a n ( q j ) ∣ ∣ q j ∣ ∣ k_j=frac {mean(q_j)}{||q_j||} kj​=∣∣qj​∣∣mean(qj​)​做一个映射,这个映射被称为 Q K − a t t e n t i o n QK-attention QK−attention,即在一个小范围内进行权重注意力计算。
采用旋转投影映射划分成多个bucket,但是每个bucket中的元素可能会不均衡,因此选择连续并行查询运算的方式,运算chunk的长度为每个bucket平均长度的两倍,并且在运算时考虑当前chunk和前一个chunk所包含的内容,如下图左所示。
LSHttdc映射是通过多轮ttdc映射取并集结果:
o i = ∑ j ∈ P i ′ e x p ( q i ⋅ k j − m ( j , P i ) − z ( i , P i ) ) v j o_i=sum_{j in P'_i} exp(q_i·k_j-m(j,P_i)-z(i,P_i))v_j oi​=j∈Pi′​∑​exp(qi​⋅kj​−m(j,Pi​)−z(i,Pi​))vj​
w h e r e where where m ( j , P i ) = { ∞ , i f j ∉ P i 0 , j ∈ P i m(j,P_i)=begin{cases} infty, & if jnotin P_i \ 0, & j in P_i end{cases} m(j,Pi​)={∞,0,​ifj∈/​Pi​j∈Pi​​
其中 P i P_i Pi​是和i接近的元素的集合。

局部敏感ttdc

2. 可逆层


在正常的编解码过程中,由于要进行反向传播,因此每一层中间结果需要进行保留存储,如(a),因此就有了如图(b)、(c)所示的思想,利用这种流程,中间结果都可以计算出来,不需要进行存储,用运算来代替空间存储。

3. Chunk

比较厚的层仍会占用大量内存,前馈层的计算在序列中是完全独立的,所以可以分块处理,分chunk分开进行运算。

参考视频:
reformer 一个改进的transformer模型
参考博客:
解读Reformer

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。