GAMES101 Lecture 2 Review of Linear Algebra
这里回顾GAMES101 Lecture 2,线性代数复习。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://zh.m.wikipedia.org/zh-hans/%E5%8F%89%E7%A7%AF
大部分内容都比较熟悉,这里回顾下外积的内容。
外积定义外积$\vec a\times \vec b$是与$\vec a$和$\vec b$都垂直的向量$\vec c$,方向由右手定则决定,模长等于以两个向量为边的平行四边形的面积,定义为:
\vec a \times \vec b = \|\vec a\| \|\vec b\| \sin (\theta) \vec n其中$\theta$为 ...
GAMES101 Lecture 1 Overview of Computer Graphics
这里回顾GAMES101 Lecture 1,计算机图形学概述。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
什么是计算机图形学?计算机图学是使用计算机来合成和操作视觉信息的学科。
为什么要学习计算机图形学?闫老师给出了学习计算机图形学的三个动机:
应用
电子游戏
电影
动画
设计
可视化
虚拟现实
增强现实
数字插图(Digital Illustration)
模拟
图形用户界面(GUI)
字体排印学
智力挑战
创建逼真的虚拟世界并与之互动
需要了解物理世界的各个方面
新的计算方法、展示、技术
技术挑战
(透视)投影、曲线、曲面涉及到很多数学
光照和着色需要物理学
以3D形式表示/操作形状
动画/模拟
3D图 ...
GAMES101 HW2
这里回顾GAMES101 HW2,这次作业的内容是Triangles and Z-buffering。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://www.cnblogs.com/zzysmemory/p/14655679.html
https://github.com/MARMOTatZJU/GAMES101-HW/blob/master/hw2/rasterizer.cpp
https://github.com/kingiluob/Games101/blob/master/Assignment2/main.cpp
整体流程算法的整体流程如下:
for (each triangle T ...
GAMES101 HW1
这里回顾GAMES101 HW1,这次的作业主题是旋转与投影 。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
这次作业主要是实现get_model_matrix和get_projection_matrix函数。
get_model_matrix这里需要实现的是一种特殊情况,绕着$z$轴旋转,其一般情形为课程中介绍的罗德里格斯公式(公式的具体推导见后续的课程笔记):
\mathbf{R}(\mathbf{n}, \alpha)=\cos (\alpha) \mathbf{I}+(1-\cos (\alpha)) \mathbf{n} \mathbf{n}^T+\sin (\alpha) \underbrace{\left ...
GAMES101 HW0
这里回顾GAMES101 HW0。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
相关资料:
https://zhuanlan.zhihu.com/p/371080057
编程题首先使用齐次坐标:
(2, 1)\to (2, 1,1)然后使用对应的旋转矩阵:
\left[\begin{array}{ccc}
\cos 45^{\circ} & -\sin 45^{\circ} & 0 \\
\sin 45^{\circ} & \cos 45^{\circ} & 0 \\
0 & 0 & 1
\end{array}\right] = \left[\begin{array}{ccc}
\frac{\sqrt 2}{2} ...
GAMES101 WSL实验环境配置
这里介绍下GAMES101实验环境的配置问题。
课程主页:
https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html
课程作业:
http://games-cn.org/forums/topic/allhw/
课程视频:
https://www.bilibili.com/video/BV1X7411F744?spm_id_from=333.337.search-card.all.click
参考资料:
https://zhuanlan.zhihu.com/p/371080057
https://github.com/Microsoft/WSL/issues/1800
https://www.cnblogs.com/blauendonau/archive/2020/12/21/14166062.html
https://qiita.com/ryoi084/items/0dff11134592d0bb895c
https://zhuanlan.zhihu.com/p/342609905
https://www.cnblo ...
变分法 Lecture 2 基本原理以及欧拉-拉格朗日方程
这一讲主要介绍変分学的基本原理以及欧拉-拉格朗日方程。
参考资料:
公开课视频
公开课主页
变分法及有限元.pdf)
变分法基础%E3%80%8B%E8%80%81%E5%A4%A7%E4%B8%AD.pdf)
这一部分开始正式讨论变分法,在讨论之前需要给出几个定义。
函数类满足某种共同性质的函数构成的集合称为函数类,常见的函数类有:
$C[a,b]$:在区间$[a, b]$上连续的函数全体;
$C^n[a,b]$:在区间$[a, b]$上$n$阶导函数连续的函数全体;
0阶导函数为函数本身,即$C^0[a,b]=C[a,b]$;
在变分法中,主要讨论的是$C^1[a,b]$。
泛函记$F=\{y(x)\}$为某个函数类,如果对于$\forall y(x)\in F$,变量$J$都有一个确定的值与之对应,则称$J$为函数$y(x)$的泛函,记为$J[y(x)]$,$y(x)$称为泛函$J$的宗量。
例子
T=\int_{0}^1 y(x) dx, y\in C[0, 1]变分考虑函数类:
F=\{y| a\le x \le b , y(a)=y_0(a), y(b)= ...
变分法 Lecture 1 变分学的几个经典例子
这段时间主要精力都在炼丹,魔改网络结构上,公开课不知不觉落下许多,最近准备继续投入精力进行学习,主要集中于一些数学基础课程上,最先开始的是変分学,这里列出一些学习资料:
公开课视频
公开课主页
变分法及有限元.pdf)
变分法基础%E3%80%8B%E8%80%81%E5%A4%A7%E4%B8%AD.pdf)
変分学是研究泛函极值的问题,这里不从定义出发,从几个经典例子开始进入介绍。
例1:最速降线假设有不在同一铅垂线的两点$A$和$B$,在所有连接$A$和$B$的平面光滑曲线中,找出一条曲线,使得质点从$A$到$B$的时间最短(仅受重力的情况下):
假设按上图方式建系,并假设$A(0, 0), B(x_1, y_1)$。根据能量守恒,曲线上任意一点$(x,y)$的速度为:
\begin{aligned}
m g y &=\frac{1}{2} m v^{2} \\
v&=\sqrt{2gy}
\end{aligned}那么:
dt = \frac{ds}{v}=\frac{\sqrt{1+(y')^2}}{\sqrt{2gy}} dx总时间为:
T=\int_{0}^ ...
Performer和RFA的理论以及实现
参考代码:
https://github.com/lucidrains/performer-pytorch
https://github.com/Noahs-ARK/RFA
参考论文:
Rethinking Attention with Performers
Random Feature Attention
Orthogonal Random Features
概述:
待补充
符号参考:
https://doraemonzzz.gitbook.io/transformer_evolution_paper/notations
动机Softmax Attention的时间复杂度为$O(n^2d)$,其中$n$为序列长度,$d$为特征维度。有很多工作来改进这点,其中Performer和RFA都是通过对Softmax中Exp函数的近似来做到这点,下面会通过原理,实现的角度进行分析。
原理Softmax Attention(单头情形,忽略缩放因子$\sqrt d$)的计算公式为:
\begin{aligned}
\mathbf{o}_i&=\sum_{j=1}^n\frac{ ...
解封前的纪念
明天开始上海逐步恢复正常了,正好5月没写过博客,这里写篇博客做个纪念。
这次居家从3月14日开始,到今天正好78天,明天开始上海逐步恢复正常,总算给这段时间的居家办公画上句号了。说来唏嘘不已,去年也有一次封控经历:去年11月22日出去旅游,11月26日当地爆发疫情,在那边隔离到12月10日,当时还以为14天已经是极限,没想到这次直接在家呆了快80天,希望这次是最后一次。
回看上次发布博客,已经快过了两个月,有点小荒废,其实这段时间也没闲着,一直在炼丹,只不过之前一直学习的公开课确实落下了,6月开始一切要恢复正常了,过两天写个后续计划。
回想一下,整个封控期间分为三个阶段:
4月上旬之前,还是按照之前的节奏,学习公开课,炼丹,期待4月解封;
4月上旬到5月上旬,公开课完全不看了,彻底摆烂,基本上都在炼丹,然后整个人心态很差;
5月之后,彻底麻了,但心态也好了很多,这段时间完全没去想公开课这回事,炼丹,写论文,投稿等等;
希望一切都会更好吧。
OSTEP Chapter 18 回顾
这里回顾第18章,本章介绍了分页。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第18 章 分页:介绍内容回顾
分页:把进程地址空间分割成固定大小的单元,每个单元称为一页;
物理内存看成是定长槽块的阵列,叫作页帧(page frame),每个页帧包含一个虚拟内存页;
例子:
页表(page table):记录地址空间的每个虚拟页放在物理内存中的位置
主要作用是为地址空间的每个虚拟页面保存地址转换(address translation)
将虚拟地址映射到物理地址
拥有的内容:
映射关系
有效位(valid bit)用于指示特定地 ...
OSTEP Chapter 17 回顾
这里回顾第17章,本章介绍了空闲空间管理。
书籍介绍:
https://book.douban.com/subject/34994608/
学习资料:
https://pages.cs.wisc.edu/~remzi/OSTEP/
https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese
https://github.com/joshuap233/Operating-Systems-Three-Easy-Pieces-NOTES
第17 章 空闲空间管理内容回顾
管理空闲空间的数据结构被称为空闲列表(free list)
两种碎片
外部碎片:物理内存充满了许多空闲空间的小洞,因而很难分配给新的段,或扩大已有的段。
内部碎片:分配程序给出的内存块超出请求的大小,在这种块中超出请求的空间(因此而未使用)就被认为是内部碎片。
底层机制:
分割与合并
追踪已分配空间的大小
使用头块
typedef struct header_t {
int size;
int ...