角色动画与运动仿真 05 Data-driven Character Animation
Motion CaptureThe History of Mocap
快速摄影
转描
现代动捕设备系统:
外骨骼
基于惯性
基于光学
Mechanical Mocap
外骨骼:
外骨骼的问题:影响人类运动
Inertial Mocap
惯性测量单元(IMU):Accelerometers (3dof) + axis gyroscope (3dof),可以通过积分得到位置和速度
问题:误差较大,精度高的传感器价格较高
还需要加入其他传感器:重力加速度传感器,电磁传感器
Optical MocapOptical Mocap
光学动捕:依靠光学设备采集标志点的位置
一般使用红外相机,精度高(毫米级)
计算点的位置:三角测量
问题:人的动作非常多非常复杂,可能造成遮挡,因而需要更多的相机进行测量
光学动捕只能得到标记点,之后还需labeling,进行补点
无需补点marker的方法:
Markerless Mocap with Multiple Cameras
Markerless Mocap with Depth Cameras
Motio ...
自然语言处理 lec4-3 nlm
Language Modelling as Classification
从分类器的角度看语言模型
目标:设计分类器计算:
输入:从第一个词到目前预测位置的词
输出:在词汇表中找到下一个词
A Log-linear based Language Model
Log-Linear Model:使用softmax来概率化/归一化
设计许多特征模板/函数 f∗() 来描述一段文本 x
y可以是给定单词的含义、给定书籍的类别或餐厅评论的正面/负面标签等等
An Intuitive Idea: N(ew)LM-0
直观地,构建一个对数线性分类器,将 h1-hi−1 作为输入并输出单词标签 w∗
从单词 h1-hi−1 的历史中提取特征
尝试任何可能的单词标签 w
输出概率最高的 w∗i
问题:
特征维度过大,不易应对可变长的位置表达
模型不容易优化
label set过大
特征跟位置有关,而位置难以表达
NLM-0(maximum entropy language models):设计了许多优化方法,但最终归结为最大熵梯度下 ...
自然语言处理 lec4-2 Language Modelling
N-gram Language Models
如果我们将每个可能的句子 s 视为空间 S 中的一个点:
然而将s的出现次数进行统计,近似,形式化是不可能的
解决方法:将问题分解。将每句话看成一个词的序列,视为一个随机变量X1,X2,…,Xn的序列
模型预测P(X1 = w1,X2 = w2,X3 = w3,…,Xn = STOP):
是一个序列而非集合
用特殊标记STOP,有时还会有START
可以用链式法则进行分解:
问题:很难“看到”历史贡献,当n很大的时候
解决方法:需要进行假设
Markov Assumptions
当历史很长的时候,是否还需考虑前面的词?当n很大的时候第一个词对最后的词的影响是否很大?
大多数时候无需很长的历史,只有前后几个上下文影响下一个词的内容,可以将历史的窗口变小
First-order Markov assumption:只看前面一个词,一阶假设
零阶假设(Unigram Language Model),完全不考虑历史:效果很差,和朴素贝叶斯模型一样,实质是 bag-of ...
自然语言处理 lec4-1 pre
More About ClassificationGenerative Models and Discriminative ModelsExamples from Dan Jurafsky
任务:区分猫和狗的图片
问题:光线,遮挡,清晰度,动画风格等
Generative Models(先学p(x,y)):估计描述猫和狗,有什么特征可以归类为猫,有什么特征可以归类为狗。训练两个模型比较得分,分类为猫或狗
Discriminative Models(直接学习p(y|x)):学习区分性的特征,例如:狗带项圈
同分布的数据下,判别式模型性能更强,能够反映一些差别
Generative Models v.s. Discriminative Models
Generative Models – Naive Bayes:
Discriminative Models – Log-Linear model:
Model Evaluation
在大多数情况下,得到一组训练数据,并被要求构建一个分类器,该分类器将被提交到其他地方并在未知的测试集中进行评估性能:
设计模型 ...
角色动画与运动仿真 03 Character Kinematics
Character Kinematics
基本假设:人体是刚体,通过关节连接形成骨骼
How to create a pose
Joint 不会自动生效…
我们需要仔细计算每个骨骼的位置和方向
Kinematics of a Chain
Qi:关节i方向(全局坐标系下)
Ri:关节i旋转(局部坐标系下)
问题:在诶出旋转后如何关节连接处的位置?
首先初始化Q1-Q4为I
从后往前考虑:先找到Q4相对其父结点Q3的局部旋转R4:
再考虑Q3相对于Q2的局部旋转R3,这里R3也要叠加到Q4,每次叠加都是旋转关节本身+作用于其所有的自关节:
继续上述过程直到算到启示的关节:
同时,已知两个朝向也可以计算中间的旋转:
计算关节位置要从前往后算:Pi+1 = Pi + QiLi。可以从上一步的世界坐标系位置计算下一步的位置
考察终点x,可以对其进行展开得到x相对于祖先结点的相对运动
若没有给出旋转矩阵而是给出旋转角θ:可以利用罗德里格公式计算旋转矩阵R
旋轴带动:
局部坐标系
旋转轴
位置
可以将人体关节抽象为 ...
角色动画与运动仿真 04 Keyframe Animation
Keyframe Animation(关键帧动画)
动画流程:给出关键帧并通过算法补充中间的动画
Interpolation
给定一系列关键点,计算关键点之间的点的值是多少——找f(x)映射:
关键点间的值:内插
关键点外的值:外插
Stepped Interpolation
阶梯差值缺点:不够平滑,函数不连续
Linear Interpolation
线性插值缺点:运动的时候可能突然改变速度(C1不连续),函数光滑性不够,C0连续
解决方法:需要非线性的插值
Polynomial Interpolation(多项式插值)
如果用单一的多项式进行插值,则有多少点就需要多少方程
可以写成矩阵形式用待定系数法求解:
问题:高次项有龙格现象:高次项插值虽然插值过所有点,曲线光滑,但是抖动幅度很大
Spline Interpolation
使用一阶的样条进行插值:类似于线性插值
常使用三次样条进行插值(Cubic Splines):
使用待定系数法求解:上例有 N 个段,4N 个未知参数,加入一些约束求解:
可以写成矩阵求解,但是这个矩 ...
大模型基础与对齐 03 DeepSeek & LLaMA
DeepSeek DetailsThe DeepSeek-V3 Architecture
The Mixture of Expert(MoE)
将transformer中的FNN编程多个小的FNN
决定走哪个小的FNN取决于专家选择,将专家合在一起
总的计算量不变
专家数量增加,颗粒度越精细,同时设置shared专家
负载均衡的路由策略:为解决MoE中专家负载失衡可能导致的“路由塌陷”问题(即部分专家过载而模型性能下降),DeepSeek-V3提出了无辅助损失的负载均衡策略。传统MoE(如 GShard、Switch Transformer)需要在损失函数中加入均衡项来惩罚不均衡,但过强的辅助损失会损害模型性能
DeepSeek-V3引入动态偏置:为每个专家的得分增加一个可调偏置,仅用于路由决策,不影响实际输出权重。训练中每步监控各专家的使用量,若某专家过载则降低其偏置,反之增加偏置,以动态平衡专家流量
Expert choice: 让expert选token而不是token选expert,传统的token选择expert方法在路由过程中无法控制每个专家接收的to ...
LLaMA3 自学笔记
LLaMA3模型
LLaMA3挑选了规模高达50TB的预训练语料,是LLaMA2的7倍之多,在性能上实现了质的飞跃,充分证明了数据的力量
这一语料库不仅包含丰富的代码数据以增强模型的逻辑推理能力,还涵盖了超过5%的非英文数据,覆盖30多种语言,显著扩展了模型的跨语言处理能力
LLaMA3还进行了与LLaMA2一样的人类反馈强化学习,这一策略已被证明能显著提升模型性能
在模型架构上,LLaMA3与前一代LLaMA2几乎完全相同,只是在分词(tokenizer)阶段,由sentencepiece 换成 tiktoken,将字典长度扩大了三倍,极大提升了推理效率
这一改进减少了文字符等语言元素被拆分为多个Token的情况,有效降低了总体Token数量,从而提高了模型处理语言的连贯性和准确性
另一方面,扩大的字典有助于减少对具有完整意义的语义单元进行分割,使模型在处理文本时可以更准确的捕捉词义和上下文,提高生成文本的流畅性和连贯性
LLaMA3均采用了分组查询注意力机制
tokenizer改进分词工具的更换
LLaMA2 使用 SentencePiece:
123self.s ...
LLaMA2 自学笔记
LLaMA2模型
秉承“小模型+大数据”的设计理念,LLaMA2在LLaMA1的基础上进一步优化和扩充了训练数据,将语料库的规模扩展至约7TB,实现了对更丰富语言和领域资源的覆盖
在预训练阶段之后,LLaMA2采纳了人类反馈强化学习的方法,进一步提升了模型的性能:
使用了大规模且公开的指令微调数据集对模型进行有监督的微调
LLaMA2还训练了RLHF奖励模型,并基于近似策略优化(Proximal Policy Optimization, PPO)以及拒绝采样(Rejection Sampling)进行强化学习对模型进行更新
在模型架构上,LLaMA2继承了LLaMA1的架构
LLaMA2-34B和LLaMA270B在decode 阶段的 kv cache 优化上做了改变,还额外增加了分组查询注意力(GroupedQueryAttention,GQA),以提升计算效率
在分组查询注意力机制下,键(key)以及值(value)不再与查询(query)一一对应,而是一组查询共享相同的键和值,从而有效降低内存占用并减少模型总参数量
分组查询注意力
MQA,全称 Mult ...
LLaMA1 自学笔记
LLAMA
LLaMA(LargeLanguage ModelMeta AI)是由MetaAI开发的一系列大语言模型
在模型架构上,LLaMA借鉴了GPT系列的设计理念,同时在技术细节上进行了创新和优化
LLaMA与GPT系列的主要区别在于:GPT系列的升级主线聚焦于模型规模与预训练语料的同步提升,而LLaMA则在模型规模上保持相对稳定,更专注于提升预训练数据的规模
LLaMA1模型
LLaMA1是 Meta AI 于 2023 年 2 月推出的首个大语言模型
在Chinchilla扩展法则的指引下,实践“小模型+大数据”的理念,旨在以大规模的优质数据训练相对较小的模型
相对较小的参数规模可以赋能更快的推理速度,使其可以更好的应对计算资源有限的场景
在预训练语料方面,LLaMA1的预训练数据涵盖了大规模网页数据,总数据量高达5TB
在模型架构方面,LLaMA1采用了与GPT系列同样的网络架构。但是其在Transformer 原始词嵌入模块、注意力模块和全连接前馈模块上进行了优化:
在词嵌入模块上,为了提高词嵌入质量,LLaMA1参考了GPTNeo的做法,使用旋转位 ...