模态 modalities
常见:
文本,图像,音频,视频,表格数据
罕见:
3D模型,图数据,气味,神经信号等
多模态
1.输入和输出具有不同的模态(例如文本到图像,图像到文本)
2.输入是多模态的(例如可以处理文本和图像的系统)
3.输出是多模式的(例如可以生成文本和图像的系统)
为什么需要多模态
1.许多现实任务是天然的多模态任务 (比如去医院,医生通过看片来给你文本)
2.加入不同模态有助于模型提升表现 (如果不加,模型只能识别文字,像一个盲人,加上模态,模型能看图片之类的,就相当于有了视觉)
3.更加灵活的使用方式和广阔的应用场景
图像编码器
把一整张图切成若干个小块,这些小块按顺序来排序,一张图本身就是一个大的矩阵,然后过个线性层,类似于文本的embedding,加上位置编码,然后交给模型就可以,因为模型处理的是张量,只要能转换成张量,模型就能处理
图像 self-attention
图像编码与文本编码如何交互
CLIP图文交互
比如图像是一个快乐的仓鼠,文本也是,文本经过文本编码变成向量,图像也是经过图像编码变成向量,然后训练让这俩比较接近,不接近则训练不接近
使用对比学习的训练方式
找若干条文本和若干条图像,经过文字编码和图像编码后,横着的是文字编码,竖着的是图像编码,对角线上的是对应的,其他不对应,最终训练出,也就是目标,只有对应位置是1,其他为0
LLava图文交互(主流做法)
把文本的向量和图像的向量连成一个整体,变成一个更长的序列,作为语言模型的输入,这样attention变成了
图像和自身能计算相关性,和文本也能计算相关性
Diffusion Model(了解)
CV基础
图像等于矩阵
视频 = 多个图像(矩阵)组成的张量
或者说,图像是一种单帧视频
Diffusion思想
先随机生成一幅噪音图像,然后持续进行有条件的去噪(去噪过程由模型完成),直到显示有意义的图像
Denoise的实现
Noise Predictor 用于预测一个噪声(矩阵)
去噪过程: 有噪声图像 - 早上(矩阵减法)
切词方面的知识
像bert那种,中文词表训一个模型,英文词表训一个模型,这样处理中英混杂的时候效果不太好,那怎样的方法可以做到所有语种都能处理?BPE算法
词表构造问题
为了nlp模型训练,词表是必要的
统计训练语料中的所有字符是一种做法,但是容易出现一些问题:
1.测试数据中出现训练数据中没有的词 [UNK] 问题
2.词表过大 导致embedding层过大 embedding层 为词表个数 * 指定维度,输出层也是,h*V ,每个词的概率
3.对于不同语种,切分粒度不好确认(字or词)
BPE压缩算法(byte pair encoding)
首先从 aaabdaaabac 中找到出现次数最大的对,‘aa’最大,将aa压缩成Z,那么原本的串就变成了 ZabdZabac,然后再次找就会找到ab,将ab再次用Y代替,直到XdXac X=ZY Y=ab,Z=aa
BPE压缩算法,对于文本压缩比例较高,但是对于视频可能不变甚至压缩后文件更大
BPE属于无损压缩,就是有可能压缩后文件更大
有损压缩,则是有可能做到输出一定比输入小,因为有一定损失,比如在网上上传图片时,得到的比我们原图要小
BPE在NLP中的使用
假设语料内容如下:
字符集合 ['a','c','d','e','g','h','i','m','n','o','s',''t]
统计相邻字符同时出现的次数(字符中间如有空格不算相邻)
最高频的组合被视为一个新的字符
新的字符集合变为
['a','c','d','e','g','h','i','m','n','o','s','t','he','at']
然后再次利用新词表去切分
然后再来一次
直到词表达到要求的标准
多语种怎么办?
字符编码
比如韩语和英语加表情混合的句子
오늘은 Really 피곤해 😵💫
计算机能显示,是因为计算机为字符设计了一个unicode码的东西,收录了电脑上所有能显示的字符 ord() 函数是python的内置函数,能显示每个字符的unicode码
为什么unicode码不能直接用于模型训练?
unicode码本身会随时间在发生变化(unicode standard会被人为修订,为了应对新增字符等,这不是算法行为,是一种计算机协议)
unicode 字符总共14w+ ,太多了
为什么不直接用utf8编码直接送入模型训练?
utf8编码用最多4个16进制数来表示一个unicode字符,每个字符在0-256之间
这会使得序列长,每个字列被伸长到1-4个字符,对于模型学习难度加大
词表变小,但是文本长度变长了,找一个折中方案就可以
适当增加词表大小,减少文本长度,
BPE可以做到
一开始有256个字符,开始压缩增大词表大小,同时可以减少文本长度
KV cache推理加速技术(怎么让在模型应用的时候速度较快,在很多场景下,用户问相同的问题,哪怕用户问的不同,大模型有一段系统提示词,提示词对哪个用户都是一样,这部分如果每次都要重算会很浪费时间)
当大模型预测下一个字的时,每个token都有对应的字
在计算 S预测的下一个值,需要的时前面的K和V和这个词Q,不依赖上一词的token
也就是在计算Token4的时候,我们需要在意的时Q4,K1`K4,以及V1-V4,并不需要Token1-Token3,以及Q1-Q3
价值
在LLM做预测时,多个query有公共前缀,可以有效提升运算速度
这使得系统提示词为运算带来的负担减小了很多
LLM评价方式
现在的主要方法是利用一些评测集
下面是比较有名的评测集
MMLU
类似于考试,评测集包含各种领域的题,包括数学历史之类
CMMLU(国内的)
还有CEVAL,GSM8k(经常用数学来测,数学偏于推理和计算)
HumanEval 用来测试代码
会给你个function名字,给一段注释说明干啥,让大模型来补全function,或者依靠function来完成其他的
还有MATH,GPQA,都是出题让模型来答
还有大模型评价
另外 原则
























3184

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



