在最近很火的大语言模型和其它好多模型中,背后都是Transformer模型以及它的变种;Transformer模型的核心原理主要在下面2个方面:注意力机制(Attention)和Embedding(嵌入);今天我就给大家介绍一个通过在线编码,实际上手,深入理解transformer里面的embedding,它的原理以及用处的
视频介绍:
transformer的embedding视频介绍
embedding是用一个向量代表一个的词汇,所谓向量,就是一组数字,用一组数字来代表这个词就是嵌入(embedding);embedding能表达词汇的特征;比如‘斑马’这个embedding可能包含了属性特征,包括:动物,草原,条纹相间,四足,食草动物等等。不同embedding向量的大小不一样,有50位,有512, 768或者更多的;这些词嵌入是通过专门的AI模型训练好的,在transformer中我们直接调用训练好的模型,得到词汇的嵌入值;

我们假设一组词嵌入只需3个数字表示,我们把这3个数字对应3维空间的坐标xyz轴,‘斑马’所在的位置,与‘羚羊’所在的位置相对比较近,因为这两个东西有相近的特征;而‘飞机’会在比较远的地方;当然现实中的嵌入至少都是50位数字表示,我们无法放到空间坐标中去;projector.tensorflow.org这个网站可以将高维的向量转换成低维,可以直观的看到某个词嵌入和它相邻的词汇;
衡量2个向量的近似程度,一般用dot product或者cos距离
dot product: a.b = a1 * b1 + a2 * b2 + a3 * b3
或者cos近似度:只计算两个向量之间的角度,我们知道,cos(90)值是0,表示两个向量相似度为0,cos(0)的值是1表示两个相似度为100%

打开网页:https://chn.ai/embedding.html
这个页面是我给大家专门准备的,在网页浏览器里面可以运行的AI编程环境,大家不用安装,编程需要的库,模型都已经准备好,直接输入代码就可以运行;
这套环境用js编程,原因是:
- 不用安装;我们学的是人工智能,不是学怎么搭建python,解决依赖,科学上网,配置cuda,大多数小伙伴把这些搞定了,学习的热情都消耗了一半
- 可以使用webgl使用gpu,
- 学习够用
- 编程语言不是问题,问题在于机器学习的陌生

第一次需要点击左上角的“加载模型”,直到提示:模型加载成功:
在界面里输入代码:
import {
AutoModel, AutoTokenizer, dot } from 'https://res.chn.ai/module/transformers@2.15.1/transformers@2.15.1.js'
let tokenizer = await AutoTokenizer.from_pretrained('Xenova/jina-embeddings-v2-base-zh')
let model = await AutoModel.from_pretrained('Xenova/jina-embeddings-v2-base-zh')
function stringify(obj) {
return JSON.stringify(obj, (key, value) => {
return typeof value === 'bigint'
? value.


3062

被折叠的 条评论
为什么被折叠?



