tags
type
status
date
slug
summary
category
password
icon

# 术语及其缩写

召回率:猫的照片有多少能判断成猫
精确率:判断成猫的照片有多少真的是猫
DNN: Deep Neural Networks
ML: Machine Learning
CV: Computer Vision
NN: Neural Network
CNN: Convolutional Neural Networks
RNN: Recurrent Neural Networks
NLP: Natural Language Processing
DRAM: Dynamic Random Access Memory
HBM: High Bandwidth Memory
PIM: Processing In Memory
MLP: Multi-Layer Perceptron,又称前向传播网络

# 搜索

Uniform Cost Search

优先扩展当前总代价最小的节点,依次扩展“代价轮廓”。如,在浅水区扩展3步才在深水区扩展1步
实现:用优先队列维护代价轮廓,对当前优先队列里的最优节点删除,然后把其后继全部加入代价轮廓
注意:把终点加入队列不是结束,把终点pop出来才是结束
局限:不能处理负权边。没有利用目标信息,和dfs、bfs一样是盲目搜索

启发式搜索

启发(heuristic)是一个估计当前状态离目标还有多远的函数

A*搜索

UCS向后看,启发式向前看。能不能把两个结合一下?
A*:把从S到cur的代价c(cur)和cur的启发h(cur)加起来作为权重,优先扩展w最小的节点
  • 什么情况下A*能保证完备和最优?
notion image
如何保证A*最优?可接受(admissible)启发:为cur到终点的真实代价
【如果能保证已经取出来的节点的cost是最优的】这样如果从队列里取出了终点,就代表着现在还没扩展的节点(哪怕它能到达终点),其代价也不小于估计值,因此不会优于当前解
  • 如何对于每个中间节点都能保证pop出来一定是最优的呢?
无法保证中间节点最优的例子:
notion image
要保证这一点,需要启发是一致性(consistent)的,即(越靠前,越乐观
在此条件下,如果C出队列时A还没有没扩展,那么
则就算A扩展,
由此可以保证第一个出队的C就是最优的
  • 结论:当启发是可接受的(admissible),A*在树搜索树上可以保证最优 当启发是一致的(consistent),A*在图搜索树上可以保证最优(否则可能中间节点被取出的时候不是最优的)

CDCL

有两种赋值方式:手动赋值和BCP赋值
设立一个计数器,每次手动赋值+1,BCP赋值的计数器为触发者的层级
当出现矛盾时,把手动赋值和冲突用一条线划分到两边,边界上的子句即为矛盾的原因,加入新的子句,最好是能触发BCP的

Min-Max与alpha beta剪枝

不论是不是min max两两交替,都可以用以下逻辑:
  1. 向下递归时,子节点继承父节点的不等式(直接copy,不用变符号),这里不等式包括所有之前走过的节点构成的约束
  1. 搜索子节点,如果子节点的值违反了当前节点的“反向不等式”(即min节点违反≥alpha,max节点违反≤beta),则返回该异常值(其实返回+-inf也可以);否则更新父节点对应约束(min节点更新≤,max节点更新≥),接着搜子节点。如果全部搜完都没有异常,则返回min{son}或max{son}
notion image
notion image
min节点只更新beta,只检测alpha;max节点只更新alpha,只检测beta。剪枝则返回异常值,正常则返回正常值。
【总结】:如何高效手动模拟alpha-beta剪枝?(以max节点为例)
  1. 节点有三个参数,写作:alpha≤v≤beta
  1. 初始化:从父节点继承上下界,或者为-inf~+inf。v为-inf
  1. 从子节点得到其v,如果与beta冲突(与alpha冲突没事!),直接返回v。否则更新自己的v和alpha。

MCTS

重复以下步骤:
  1. 选择。从当前局面的节点(根)开始,只要当前节点下还有节点(即经过次数>1),则用UCB走向估值最高的点。
  1. 扩展。当步骤1来到叶子节点,则向下扩展一个节点。
  1. 模拟。从新扩展的节点开始,纯随机或者已某种概率算法模拟一定步数,然后返回分数到新扩展节点。模拟过程中的节点不会加入MCTS树种。
  1. 回溯。更新从新扩展节点到根的路径上所有节点的访问次数和分数,重复步骤1
notion image

# 神经网络基础

#脉络

先说判别式模型。所有判别式模型都遵循ERM,区别只是在于选了怎么样的f(x)和Loss(theta)。最简单的,线性回归,f(x)线性,L2Loss;在逻辑回归(实则为分类)中,为了处理二分类和多分类问题,把Loss变成了概率,f(x)是啥都行(这也是为什么可以多个层叠加),只要把f(x)的值用某种方式映射为Loss就行,sigmoid和Softmax分别是2维和n维的激励函数;另一种处理多分类的方法就是决策树,Loss可以看成是“纯度”,而它的f(x)是一种比较奇怪的分段函数,可以处理线性不可分的问题
神经网络的最后一层等价于一个以倒数第二层的激活作为输入的逻辑回归

#模型分类

判别式模型(Discriminative Models):给输入,输出标签,即学习p(label | input)
描述式模型(Descriptive Models):学习p(input)(解释输入数据背后的生成机制?非监督式)
生成式模型(Generative Models):基于噪声向量生成结果,学习p(output | input)
监督式学习:人为给标签
非监督式学习:不预先给标签
强化学习:与环境交互,优化数据
参数化模型:包含能够训练的参数,不需要记录全部的训练数据
回归(regression)vs分类(classification):结果连续、有大小关系or离散、无大小关系

#训练过程

对原始数据进行特征提取,得到特征向量(feature vector)x
训练误差(training error)低不代表模型就是好的,因为其泛化(generalization)能力并不一定好,可能过拟合(overfitting),因此还要看它的测试误差(test error)
notion image
可以按收集数据的时间顺序划分训练集和测试集,这样即可以避免在随机划分时一些测试数据泄露到训练集中,也符合平时的应用规律

#K近邻(k-Nearest Neighbor, k-NN)

对于一个测试样本,用训练样本中距离它最近的k个样本中占多数的标签来预测测试样本
优点:不需要训练 缺点:需要存储所有训练样本;在测试时需要计算测试样本到所有训练样本的距离;有时很难找到一个好的距离函数;k-NN不适合高纬度,高纬度下欧氏距离失效

#线性回归(linear regression)

特征向量x,权重(weight)w,偏置(bias)b,真实值(ground truth)y
平方损失函数(squared loss, L2 loss)
梯度下降:

#经验风险最小化框架(Empirical Risk Minimization, ERM)

先确定采用的回归模型f(x),然后确定损失函数,然后在训练集上最小化损失函数的平均值

#最大似然估计框架(Maximum Likelihood Estimation, MLE)

对于已知的概率模型,(为概率模型中待学习的参数)和一组已知的观测数据,尝试找到最佳的,使得在该概率模型下,这组数据出现的概率最大(因为认为每个观测数据独立,所以才可以直接乘起来)
然而,大量连乘很容易超出计算机小数精度,所以我们取log,
MLE可以看作一种ERM,(注意负号

#逻辑回归(Logistic Regression)(核心:根据yf(x)判断Loss)

在逻辑回归中,
确定模型:,Likelihood衡量输出为f(x)时判断为y的概率
  • 零一损失函数
但是这样的损失函数不连续,且无法提供下降方向,难以使用梯度下降
  • sigmoid函数(将f(x)转化成概率)
与零一损失的区别在于,前者认为只要f(x)>0,就100%是y=1,而后者则将f(x)转化成概率
sigmoid函数
在一组参数下,把判断成的概率 注意到,,因此这个函数满足概率归一性
称为交叉熵损失(Cross Entropy Loss),也称为 Logistic/Log Loss
最大化就是最小化,故这里是求和!
为什么可以这样替代?
notion image
交叉熵损失是零一损失的上界,如果交叉熵损失很小了,零一损失肯定更小。且交叉熵函数是凸的,方便梯度下降
绿色是合页损失函数(Hinge Loss),
  • Softmax回归
如何处理多分类问题?要分k类,每次把分成“是第i类”和“不是第i类”,学习k个分类。但是当k非常大的时候这样训练效率太低了
同时训练k个函数f1(x)~fk(x),每个函数都有自己的一组参数
这样也能满足归一化,且奖励了突出的值
notion image

#正则化(Regularization)

在Loss函数之后加上一项,f为函数
L2正则化:,惩罚少数过大的权重
L1正则化:,使得=0的权重尽可能多
线性回归+L2正则化⇒岭回归 (Ridge Regression)
线性回归+L1正则化⇒Lasso 回归
交叉熵损失+L2正则化⇒逻辑回归
合页损失+L2正则化⇒支持向量机回归

#超参数与模型验证

为了给模型找到最好的超参数,如学习率、正则化系数、损失函数等,可以寻找所有超参数的组合,然后在训练集、测试集之外引入验证集,通常按照训练集/验证集/测试集分别80%/10%/10%的比例划分 • 对每一组超参数的组合,在训练集上训练参数,在验证集上验证模型误差 • 遍历所有可能的超参数组合,选择在验证集上误差最小的模型和超参数 • 使用选定的模型和超参数在测试集上最终测试模型误差,估计模型泛化能力(用来盖棺定论的)
  • K-折交叉验证: • 将测试集外的所有数据随机分为 K 份 • 对一组给定的超参数组合: • 每次使用 K-1 份数据训练模型,用 1 份验证模型误差 • 将 K 次验证的模型误差取平均来衡量该组超参数的好坏 • 遍历所有可能的超参数组合 • 返回平均误差最低的超参数组合,在测试集上最终测试模型性能

#决策树与随机森林

决策树:在每一层上根据同一个标准对节点样本集进行特征测试,根据结果将样本归入下一层的节点。根节点包含所有数据点,而叶子节点则对应着决策结果
notion image
理想情况下,每个叶子节点的样本的标签yi应该相同,那么这组分类标准达到了提高“纯度”的目的。如何衡量一组分类的纯度呢?引入熵的概念。
  • 熵的定义
对一个随机分布X,
X=x发生的概率越小,其信息量越大。可以用衡量其信息量
一个系统的信息熵为不同事件“信息量”的期望值
  • 熵的性质
  • 联合熵、条件熵与互信息
对于一个联合概率分布p(x, y),联合熵描述一个联合概率分布的不确定程度:
条件熵描述在已知随机变量X的条件下随机变量Y的不确定性:
notion image
互信息描述Y中“包含”X(或者X中包含Y)的信息量,
当XY独立时,I(X,Y)=0
  • 划分准则1:信息增益
经验分布下标签的信息熵表示标签为k的集合
属性A对集合D的信息增益:
  • 划分准则2:信息增益率
,其中不同于!!
前者是以A为标签的熵,后者是原本标签的熵
  • 信息增益会偏好取值可能多的属性,而信息增益率则会偏好取值可能少的,很难说哪种一定比哪种好
  • 划分准则3:基尼系数(不再用熵衡量“纯度”)
基尼系数:描述随机取2个样本,其类别不同的可能性
选择子节点中Gini最小的
  • 属性从离散到连续
从小到大排序,取n-1个切口,对每个变成二分类,取结果最优者
  • 标签从离散到连续
用L2Loss描述样本集的“纯度”
  • 随机森林
多个决策树or回归树的结合。样本扰动+属性扰动

#神经网络

对于线性不可分的问题(如xor),不存在任何线性分类器可以拟合,因此引入神经网络,其中激励函数使得它能完成非线性任务(如果只是线性的嵌套,最终展开之后仍然是线性的)
  • 感知器(perceptron)
可以理解为单层的神经网络,对于输入的向量x,依次经过线性映射和激励函数映射后输出激活的结果
,输出,f为(非线性的)激励函数
激励函数有很多种:
Sigmoid:
ReLU:
  • 多层感知器(Multi-Layer Perceptron, MLP)
也称为全连接神经网络
  • 反向传播(backpropagation)
注意:我们只传导最终Loss函数对自变量的偏导,而不关心中间结果z对自变量的偏导(不传导,只是用于计算)
接近输出层为上游,接近输入层为下游。从上游传过来(因此往下游传的东西也应该是)。记为f,f为z和与z同层的一些其他z的函数,而z又是xi们(在下图中是x和y)和wi们的函数。如果其他的z们也是xi的函数,下游的节点自然要将所有接受到的值求和。
下游梯度=Sum{上游梯度*本地梯度}
当节点本身有参数时(如对wi们和b的梯度)也要计算,要用来更新的
notion image
notion image
神经网络可以分散,也可以集成:
notion image
notion image
sigmoid函数的本地梯度总是<1,多次传导后可能出现梯度消失的现象;同时,梯度总是>1也不好,这样会使模型难以收敛,梯度爆炸
因此ReLU是一个很好的激活函数,梯度总为0或1
  • 矩阵形式
notion image
notion image

#卷积神经网络(CNN)

想要让算法自动提取图像的特征
  • 卷积层(Convolution Layers)
对于图片的矩阵,用滤波器依次进行对点数乘,输出一个新的矩阵。为了使前后矩阵大小相同,可以先在原图周围补零。一般会把滤波器大小设计成奇数。
notion image
对同一个输入的矩阵,可以用多个不同的滤波器,每个滤波器对应一个输出通道(channel)
notion image
一般输出图片长宽越来越小,但输出的通道数越来越多
  • 批归一化(batch normalization)
将各维度特征标准化(0均值,1方差),大致将各特征统一到相同尺度,利于优化
归一层一般放在卷积层和非线性层之间
  • 池化层(pooling)
减小数据规模,没有要学习的参数。例子如MaxPooling
  • Dropout
当特征很多而样本不足时,模型容易过拟合。DropOut可以使模型对微小扰动需要具有鲁棒性。
在训练过程的每一次迭代中,以p的概率随机丢弃一些神经元。保留的神经元需要除以1-p,以保持一层的期望不变。
  • 全连接层
一般只在网络的最后放一层,每个输出值都由全部的输入值(图像的矩阵拉直成一个行向量)和全连接层的一行做点乘计算得来。
  • 残差连结
notion image
层数过多会导致梯度消失或者梯度爆炸。
通过跨层的直接连结可以顺利地把梯度信息传递回去

#递归神经网络(RNN)

在每一个时间步中加入隐状态。隐状态根据上一时刻的隐状态和这一时间的输入更新。而每次的输出根据当下的输入和隐状态得到。
优点:可以处理任意长度(不定长)的数据,且模型大小不随数据长度变化
缺点:未来的状态依赖与过去的计算,因此无法并行计算;难以处理长距离的依赖,之前的信息会遗忘
改进:
LSTM:把之前的东西不断拿出来复习。和RNN一样不能并行计算
Transformer:可以堆叠,可以并行计算。把一本书的所有页同时展开了
notion image
自注意力机制没有非线性。因此堆叠更多的自注意力层只是重新平均value向量。修复:添加一个前向传播网络(Feed Forward Network,即MLP)来后处理输出向量。

#图网络(GNN)

要解决的问题:改变节点的顺序,结果不能改变
对于每个节点,聚合邻居节点的信息(还可以加上自己的信息),得出该节点的信息。把这个过程递归重复5~6遍。
notion image

#成像与三维重建

notion image
世界坐标经过旋转+平移⇒相机坐标;相机坐标经过相似关系⇒成像坐标;成像坐标平移得到图像坐标。为了方便表达,引入齐次坐标,无关项补1
称为相机的外参;称为相机的内参
一般而言,相机坐标中的z是未知的,因此映射过程为:
notion image

# 自然语言处理

#句法分析

句法(Syntax):规定了如何用单词来组成句子,句法也是有歧义的
语义(Semantic):语言包含的含义。可能句法结构良好,但是毫无意义
文法(grammar):一组规则,定义了合法短语的树结构
语言(language):遵循这些规则的句子集
  • CYK算法:处理上下文无关的文法(Context-Free Grammar, CFG),且必须遵循乔姆斯基范式(CNF)
    • X→Y意为左边的东西可以由Y构成。大写表示非终结符(即还能被分解为更小的单位,可以理解为短语),小写表示终结符(即为最小单位,可以理解为单词)。
      notion image
      CYK算法基于dp思想,自底向上计算构成短语的各种可能性。最后看S是否存在于最上层的格子中。再用一个三维数组p[n,n,r]记录路径,即可给出句法树。
      notion image
      A*算法比CYK快。

#词袋模型(Bag-of-Words Model, BoW)

不考虑文本中词与词之间的上下文关系,只考虑所有词的权重,而权重与词在文本中出现的频率有关。以词的统计直方图作为该文本(文档/句子)的特征。
问题:过于稀疏,没有体现关键词的重要性

#朴素贝叶斯(Naive Bayes)

notion image
notion image
notion image
加法平滑(additive smoothing):为防止有些p=0,给统计到的每种样本数量加上一个固定值alpha。

#信息检索:tf-idf

去掉功能词,留下实义词
,衡量一个词占某个文章的比例; ,期中D为文档总数,d为包含这个词的文档数量,用来衡量一个词的罕见程度 最后用tf和idf的乘积来挑选关键词

#词表示(Word Representation)

如何把一个词用向量表达出来?word embedding
  • 独热表示(one-hot)
    • 每个词用只有一个1,其余全为0的向量表示
  • 分布式表示:从上下文决定词语的意思
  • 分布式的一种:word2vec(CBOW)
    • notion image
      真实标签是我们手动设置的希望值。最后独热向量*周围词向量矩阵=1*N向量即为学习到的向量表示。
notion image
notion image
notion image

#Transformer

序列到序列变换(seq2seq):先encode编码,得到中间向量,然后中间向量解码decode直到句子终止,得到结果
不再只给解码器最后一次的隐变量,而是把所有隐变量都传给解码器,解码器对隐变量施加不同的权重
相比RNN之前状态只能通过隐变量来传递,Transformer可以直接见到之前所有的单词(每个单词都跟其他所有单词匹配一遍),这也使得Transformer的计算量非常大。
notion image
notion image
【Attention总结】:在每个Layer内,设有L个词,X(L,d).【注意每个词对应的是行向量!】 Q,K,V(L,d). e=Q(K^T)(L,L),对第二个维度进行softmax得alpha(L,L),out=alpha*V(L,d)
当对多个batch同时处理时,用numpy中的@运算符,只对后两维进行矩阵乘法!
每个注意力层都是一个多头注意力+MLP
  • 一些技巧:
    • 多头注意力:对每个X,用多个注意力矩阵进行计算,最后把数个结果综合起来(先concat,然后用矩阵右乘变为原来的维度)
      为了使模型对词序敏感,在单词的向量中加入位置编码
      当嵌入表示的维度d变得很大时,点乘的结果会变得很大。Softmax的输入也会很大,导致梯度很小。因此在Softmax前,给注意力的结果除上
      残差连结。
      层归一化LayerNorm,在每个词自己embed的维度上进行归一化。不采用BatchNorm是因为一个batch的数据量会很大。

#知识图谱

知识图谱(Knowledge Graph, KG)旨在利用图结构建模、识别和推断事物之间的复杂关联关系和沉淀领域知识,本质上是一种大规模语义网络(Semantic Network),包括实体(entity,节点)和关系(relationships,边)
构建知识图谱的关键步骤:知识抽取、知识表示、知识推理
  • 知识抽取(Extraction),从数据中提取知识
实体抽取,又称命名实体识别(Named Entities Recognition,NER),实体抽取旨在抽取文本中的原子信息元素,通常包含人名、组织/机构名、地理位置、时间/日期等标签。
关系抽取(Relation Extraction)是指从文本中抽取出两个或者多个实体之间的语义关系,作为从文本获取知识图谱三元组的主要技术手段,通常被用于知识图谱的补全。
事件抽取(Event Extraction)是指从无结构文本中自动抽取结构化事件知识(即事件实例),包含事件发现和分类、事件要素提取两个过程,其中事件要素为事件所涉及的人/组织,时间,地点等。
notion image
  • 知识表示(Knowledge Representation, KR)
一阶谓词逻辑 (First Order Predicate Logic) 也称经典逻辑,是一种基于数理逻辑的知识表示方法,是到目前为止能够表达人类思维活动规律的一种最精准形式语言。它与人类的自然语言比较接近,又可方便存储到计算机中去,并被计算机进行精确处理。
命题(Propositional)是具有真假意义的陈述句。命题若是简单的陈述句,不能分解成更简单的句子,我们称这样的命题为简单命题或原子命题(Atomic Proposition)。
逻辑联结词用于将多个原子命题组合成复合命题。
notion image
notion image
【注意上面的PQ都是命题,而不是个体词】
个体词(individual word)对应知识图谱中的实体,是没有真假的;谓词(predicate)将数个个体词映射为True/False,如North(PKU);而函数是将个体词映射到个体词,如Father(Xiaoming),函数不能单独构成命题,必须与谓词一起使用。
如果个体词是个体变量,则又有量词来对个体的数量进行约束
  • 其他的知识表示方法
产生式表示法:用自然语言表示?
框架表示法
向量表示法
  • 知识推理(reasoning)
notion image
notion image
化为子句集之后,看子句集能不能全部满足

#机器人

#定位与地图创建

在真实环境中,机器人的位置Xt不是直接得到的,而是通过计算得到的信念位置。同时,机器人每一步的动作At和观测Zt都是存在误差的。如何通过这些已知信息为机器人定位呢?
notion image
执行后,观测到,此时位于的概率正比于:从所有的到达的概率 * 在观测到的概率。对所有的都算一下这个概率并且对x归一化,就得到了一个新的关于x的概率分布。
  • 蒙特卡洛定位(假设地图准确已知),基于粒子滤波器
假设机器人不知道自己一开始在地图的哪个地方,需要我们通过探测来定位。
开始先在地图各个地方均匀撒上粒子。对每个粒子,根据收集到的zt,算出每个粒子位置的可能性。之后重新采样,每个地方的采样数正比于该处的可能性,采样粒子总数不变。这样粒子就会慢慢聚集到一个地方。
  • 如果地图不是已知的?SLAM

#运动规划(连续空间的搜索)

  • 构型空间(configuration space)
    • 机器人的各个运动参数构成的、不会碰到障碍物的状态空间
运动规划的问题,就是要在构型空间的可行域内找到一条路径,从初始构型到达目标构型
  • Way1~4:能见度图,沃罗诺伊图式、单元分解、随机运动规划
  • 快速探索随机树(RRT)
    • 每次在图上随机采样一个点,找到目前在RRT树上的离这个点最近的点,从树上的点向随机点前进stepsize的距离。如果前进后的点在可行域内,则将其加入RRT树,否则重新随机。直到RRT树上某个点与目标点足够近。
      notion image
      缺点:地图有大量障碍物或者狭窄通道的时候,模型收敛很慢

#运动控制

如何施加力和力矩,使得机器人到达需要的状态?
  • P控制器(比例控制器)
    • 施加正比于误差的力or力矩
      然而,如果外界有恒定阻力,会使得机器人接近目标时无法再前进
  • PI控制器(比例积分控制器)
    • 把误差对时间的累计也计入
      notion image
      但是这样会导致运动过度,产生较大震荡
  • PID控制器(比例积分微分控制器)
    • notion image

#强化学习

与传统的监督/非监督学习不同,强化学习不预给定任何数据,其数据都从与环境的交互中获得
  • 基本概念
    • 状态
    • 动作
    • 转移模型 ,行动不一定和想象的效果一样
    • 奖励函数 ,一般是确定的,也可以是概率分布
    • 策略 ,一个概率分布函数
    • 轨迹 ,按照某个策略行动的状态、行动、奖励的序列
    • 价值 。以s0为起点,往未来看,后面都是还没发生的事情
    • notion image
  • 价值函数:用来评价一个策略的好坏
    • 状态价值函数
      表示采用策略,从s0出发的各种可能的轨迹得到的价值的期望值
      为了能方便从当前状态选择具体动作,再定义一个动作价值函数
  • Bellman Function
    • 本质上是动态规划的想法,详细推导见课件
      notion image
      在最优方程里,策略不再是一个概率,而是对每个s给出一个确定的动作a。因为无后效性(对于马尔科夫问题),所以局部最优的动作就是全局最优的动作
    • 策略迭代
    • 第一步:对于所有策略(概率性的),求出。采用数值迭代的方法
      notion image
      第二步:对每个状态s,计算,并从中找到最好的a作为当前的最佳策略(确定性的)。因为马尔科夫无后效性,这样的策略不会变差。(Rmk:第二步依赖于第一步,因为Q的更新必须要知道所有的V
      notion image
      当V不再变化的时候,满足最优Bellman方程,此时策略最优,算法结束;否则回到第一步,再来一轮
      notion image
    • 数值迭代:直接采用数值迭代求Bellman最优方程的解,求出最优的V*后,对每个s求使得Q最好,即算出Q*
    • notion image
    • Q-Learning(对数值迭代的改进)
      • 注意到在数值迭代中,算V*每次都需要遍历。可不可以只遍历一些状态?选择下一个要遍历的状态时采用greedy
        notion image
    • 如果S、A空间很大?没法列举所有的V(s)和Q(s,a),但是可以用神经网络代替。但是很难收敛,因为对神经网络而言,其目标是不断在变化的

#多智能体

纳什均衡:如果其他参与者保持不变,任何一个参与者都无法通过单方面改变自己的策略来而获得更高的收益
帕累托最优:不存在不损害他人利益的改动,使得一个参与者变得更好。(允许同时改变,即全局、全员最优)
纳什定理:在任何有限博弈(即参与者和策略集合均有限的博弈问题)中,若允许参与者采用混合策略,则存在至少一个纳什均衡
两人博弈采取混合策略时,先固定自己的p,根据每个p算出自己受益的最小值,然后再求p使得受益最大(即max-min)
notion image
合作博弈:
联盟、收益

#仿真

为了以较小的代价或许大量数据

#外观仿真

几何表示

我们需要找到一种数学描述,完成两点:(1)对于空间中一点,判断其在形状的内部or外部or表面(2)列举出表面的所有点
隐式表示:f(x,y)=0,容易判断位置关系,难以列举表面点 显式表示:(x,y)=f(theta),容易列举表面点,难以判断位置关系
  • SDF(Signed Distance Function)
可以训练f(x,y),使;也可以将空间离散化,近似SDF场函数
  • 点云表示
  • 体素表示
  • 多边形网络
    • 将形状近似的用多边形面片表示,只需记录顶点的坐标,面片上点的坐标可以通过插值计算

渲染

notion image
第二种方法更好(基于光线追踪):
(1)从(屏幕上)每个像素发出一条射线(正交投影:平行光;透视投影:从视点发出的光)
(2)反向追踪光线,考虑折射反射透射。,第一项为环境光的贡献,后面为其他入射光对这个像素的颜色的贡献。反向追踪的路径上所有物体的贡献求和。

#物理仿真

时间离散化、空间离散化(欧拉视角vs拉格朗日视角)
notion image
隐式积分总是能稳定,显式积分和半隐式积分只有步长很小时才能稳定。隐式积分的计算速度远远慢于其他两者
 
Systems & Signals数据结构与算法