Advanced Dynamics
Rodrigues Rotation Formula
As the figure, the rotation can be expressed as the initial vector v⃗\vec vv rotate with the unit direction vector k^\hat kk^ and the v⃗\vec vv can be split into 2 parts v⃗∥\vec v_{\parallel}v∥ and v⃗⊥\vec v_{\perp}v⊥
v⃗∥=(v⃗⋅k^)⋅k^\vec v_{\parallel} = (\vec v\cdot \hat k)\cdot \hat k
v∥=(v⋅k^)⋅k^
v⃗⊥=−k^×(k^×v⃗)\vec v_{\perp} = -\hat k \times (\hat k \times \vec v)
v⊥=−k^×(k^×v)
where in the rotation plane, vector v⃗⊥⊥k^×v⃗\vec v_{\perp} \perp \hat k\times \vec v ...
1. 多线程同步机制
OS 抽象机制
OS 是一种对硬件功能映射到软件层的抽象机制
cpu -> process/thread
ram -> address space
disk -> files
进程属性
进程 process 是一个在执行中的程序, program 是一个静态 static 的实体,有能执行的潜能
每个线程拥有所有程序运行所需要的状态和属性
address space (memory)
code (text)
data (global -> heap)
stack (运行状态)
PC 表示程序运行进度
通用reg
通用 OS 资源如网络连接等
进程之间互相 isolate 即不可访问其他线程
线程属性
线程表示的是一系列执行流 execution stream
定义了 PC, SP, register, 没有定义单独的 address space, general process attributes (PID, open files…)
每个线程只能归属于一个 process, 一个进程可以有多个线程
同进程线程共享
进程内表示状态的资源: re ...
网络 Socket 编程
Socket 定义
socket 即套接字,是一个双向通信通道,两端为两个process或者两个机器
socket是对网络通信的一种抽象
提供了数据交换的 api
去处了一些网卡交互的细节
服务器工作流 server flow
用户工作流 client flow
工作流解读
SC 交互
socket() 构造
参数为 socket(int domain, int type, int protocol, 都使用宏定义进行输入的
domain 表示交流的范围,对于 IPv4 使用宏 AF_NET
type 定义了交流的semantics, 对于双向交流的 socket,使用宏 SOCK_STREAM
protocol 定义了协议,使用宏 IPPROTO_tCP 即可
整个函数定义在 <sys/socket.h>
bind() 绑定
参数为 bind(int sockfd, const struct sockaddr_in * addr, socklen_t addrlen);
sockfd: 上文构造的 socket 对象
addr 定义了一些参数包括 port ...
Piecewice Constant Curvature Soft Robotic Arm Geometrics and Dynamics
Geometrics
Space Definition
Each segment has id kkk (k = 1, 2, 3 …), in our current model it is k=2. Each segment kkk is modelled by three actuation variables. jjj means the jjj-th actuation length (jjj = 1, 2, 3). The actuation length is not the same as the stick length. The variables in actuation and configuration space can be expressed as LkL_kLk and QkQ_kQk respectively.
Actuation Space
actuation space is consist of 3 actuators’ length lk1l_{k1}lk1, lk2l_{k2}lk2, and lk3l_{k3}lk3.
Conf ...
1. 密码学基础
Message Integrity 信息完整性
定义
ensures that attackers cannot modify a message w/o being detected.
MITM 模型
传输部分
并不完全相信网络的信息的真实性
希望 Bob 接收到的完全就是 Alice 发出的信息
威胁模型 threat model
Mallory 可以 see/modify/forge(伪造) message
Mallory 的目的是让 Bob 相信一个不是由 Alice 发出的信息
防御威胁的方法论
verifier 验证器
如图所示,在发送的时候额外传送一个验证码,即要求验证码 v=f(m)v = f(m)v=f(m)
random function 完全随机函数
被 A/B 容易计算,但是不容易被 M 计算 (即不被知道)
如果被找到 x≠mx\neq mx=m 且 f(m)=f(x)f(m) = f(x)f(m)=f(x) 的 collision 就失败了
表示方法:用一个很大的表格记录映射关系,需要内存非常大
优点: 完全安全,即 M 除了瞎猜没有更好的 ...
1. OSI 概述与应用层
概述
网络信息传播需要遵循 应用(Application) -> 封装送货信息+路由选择(Transport) -> 国际地址封装(Network) -> 地区地址封装(Data Link) -> 物理层发送(Physical) 的五层收发结构
低层级 (后面的不需要知道前面发生了什么)
每一层只负责该层任务以及与相邻层的 api 交互
同层之间遵循同样的协议,可以互相交流
分层的优缺点
优点
reduce complexity
improve flexibility
better manageability
increase redundancy (冗余多): 每一层都有自己的恢复措施,因此可靠性更强
缺点
high overhead
cross layer information is often useful
speed decreased
封装形式
Header: 每一层协议,除了物理层都会给数据包在前面 append 一个表头表示 instructions on how to process payload.
Payload: 表示有效 ...
注意力机制到 transformer
背景 —— 从生物学说起
注意力会收到主观提示的引导,在深度学习中,也要设计一种能及时将注意力转移到某个感兴趣的角度的机制
查询 query, 键 key 和 值 value
定义自主性提示为查询, 也就是在输入一个 key (非意志线索) 的时候,通过输入一个查询将全连接层转变为一个注意力汇聚层,并且将汇聚之后的内容称为 值, 从而实现注意力的有向汇集与输出。
概述: 注意力机制通过注意力汇聚将查询(自主性提示)和键(非自主性提示)结合在一起,实现对值(感官输入)的选择倾向,这就是与 CNN 等模型的关键区别。
注意力汇聚:Nadaraya-Watson 核回归
背景问题
假设要拟合预测一个非线性函数
yi=2sinxi+xi0.8+ϵ,ϵ∼N(0,.5)y_i = 2\sin x_i + x_i ^ {0.8} + \epsilon, \epsilon\sim N(0,.5)
yi=2sinxi+xi0.8+ϵ,ϵ∼N(0,.5)
其中 ϵ\epsilonϵ 是一个噪声项,利用 numpy 生成 50 个 truth 数据集
平均汇聚
定义最简单的平均值计算为平均汇聚 ...
1. transformer 的基本原理
cnn 的弱点
由于 卷积神经网络提取特征的时候利用了图像的 locality 特点,因此其大多会提取出局部特征,但是对于图像中不同部分之间的关系就会比较难认知
因此,在存储数据信息的时候我们还要额外考虑数据位置的信息
新数据结构:token
定义 token 为神经元组成的向量,即讨论 transformer 的时候, 其神经元会被分成 token 进行讨论,每个 token 负责记忆输入的一部分信息
token 的数据处理
token 可以简单的理解为按照一维向量来进行存储,所以在多个 token 同时处理的时候可以将向量集合起来形成矩阵,再用矩阵相乘
因此 transformer 的网络结构就是按照 token 作为基础单元进行运算的
attention 注意力机制
在全连接层中,权重矩阵是固定的,但是,对于不同的输入,例如查询图中有多少个长颈鹿 和 查询图中草的品种的时候,二者对应的边权矩阵是不同的,但是注意力说明其可以在输入问题不同的时候用不同的权重矩阵来着重计算某几个 token 部分
即注意力权重矩阵 A:=f(input)A:=f(input)A:=f(input)
...
2. clip 方法实现
代码示例
12345678910111213141516171819202122import clipimport torchfrom PIL import Image# 加载模型device = "cuda" if torch.cuda.is_available() else "cpu"model, preprocess = clip.load("ViT-B/32", device=device)# 准备图像和文本image = preprocess(Image.open("path_to_image.jpg")).unsqueeze(0).to(device)text = clip.tokenize(["a description of what you are looking for"]).to(device)# 计算特征并比较with torch.no_grad(): image_features = model.encode_image(image) text_fe ...
2. Gaussian Splatting 高斯泼溅
Splatting 是一种点云的渲染技术,它的核心思想是将每个点云点以"斑块"或者"模糊点" (splat) 的形式投影到屏幕上,形成一个小的、带有一定宽度的圆形或椭圆形区域,以便填补点云中的空隙。这样可以使得稀疏的点云看起来更加连续和完整
在 Splatting 中,渲染器将每个点的三维位置根据相机视角投影到屏幕上的二维位置。为了让点的显示区域更大,渲染器为每个点分配一个近似圆形的小斑块区域,这个区域可以根据点的深度信息(与相机的距离)进行缩放。最终效果看起来是一个密集的、相互叠加的模糊点阵列
Splatting 泼溅过程
过程可以分成三步:选择雪球-> 抛掷雪球 -> 合成图像
高斯球
高斯椭球在此处定义为一个三维的概率分布模型,它通常有以下几个关键参数:
中心位置(均值):这个点表示我们“认为”物体的中心位置,或是物体最可能出现的位置。
协方差矩阵:这个矩阵定义了椭球在不同方向上的延展程度,也就是位置不确定性的分布。协方差矩阵的值越大,表明在该方向上的不确定性越大。
长短半轴:通过协方差矩阵可以计算出椭球的三个半轴长度和方向 ...
