通过在线编程彻底搞懂transformer模型之二:attention注意力机制

本文通过视频和代码详细介绍了Transformer模型中的注意力机制,包括Query、Key、Value的概念,Softmax的作用,以及在Tensorflow.js中的实现。作者强调了注意力机制如何利用语义信息和GPU的并行处理能力。读者可通过提供的在线编程地址进行实践。

这篇文章是接上一篇通过在线编程彻底搞懂transformer模型之一:embedding嵌入,我在这篇文章着重介绍attention注意力机制
我想好一会儿发现attention用文字并不太好说清楚,而且可能写了一大堆,大家看完的几率也不太大。索性就把视频链接放在下面,自认为用视频能说的比较清楚。

在视频中提到的部分包括:

  • 词的相关性矩阵
  • 解释Attention中的Query,Key和Value
  • Softmax在注意力机制的作用
  • 注意力机制中Scale factor的讲解
  • Attention中重矩阵的作用
  • 详细分析输入输出和计算中的各种维度
  • Tensorflow.js实现代码的讲解
  • 多头注意力机制
  • 总结

写代码彻底搞懂attention注意力机制 -- LLM transformer系列,附:在线编程地址

在我看来。Attention充分利用了embedding中的语义信息,创造一种找到在上下文中词组关联程度的机制,这种机制又能很好的利用GPU的并行能力,在众多模型机制中脱颖而出,在近年很多领域都有斩获。

下面附上代码

const d = 768
const tokens = {'每天': 0, '吃': 1, '苹果': 2, '可以': 3, '补充': 4, '维生素': 5, '和': 6, '纤维': 7, '对': 8, '身体': 9, '有': 10, '好处': 11}	

const a = tf.tensor1d(Object.keys(tokens).map(k => tokens[k]))
    

const embedding = tf.layers.embedding({inputDim: 200, outputDim: d})
const x = embedding.apply(a)
console.log('x', x.shape)

const [dQ, dK, dV] = [24, 24, 30]

const wQuery = tf.randomUniform([dQ, d])
const wKey = tf.randomUniform([dK, d])
const wValue = tf.randomUniform([dV, d])


const querys = wQuery.matMul(x, false, true).transpose()
const keys = wKey.matMul(x, false, true).transpose()
const values = wValue.matMul(x, false, true).transpose()

console.log('querys', querys.shape)
console.log('keys', keys.shape)
console.log('values', values.shape)

const os = querys.matMul(keys, false, true)
const weights = os.div(tf.sqrt(dK)).softmax()
console.log('weights', weights.shape)

const atts = weights.matMul(values)
console.log(atts.shape)

大家也可以在我给大家提供的在线编码的网页上去试验。地址是:https://chn.ai/tf.html

有什么问题大家可以在下面留言。我看到后会尽量给大家解决。也希望大家多多分享点赞。给原创鼓励。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值