深入浅出3D感知中的优化与基于学习的技术 (第二章) 原创教程

深入浅出3D感知中的优化与基于学习的技术 (第二章)原创教程

总结了下这部分基于学习的感知技术,会写一个新的系列教程讲解这部分三维感知技术的发展到最新的技术细节,并支持自己最近的项目开发和论文。本系列禁止转载有技术探讨可以发邮件给我 fanzexuan135@163.com
这一章先讲一些数学知识,这是看懂后面要讲解的论文和学术界前沿技术的关键。

2.1 导数记号

我们将导数视为向量空间之间的线性映射。更准确地说,给定在开集 U ⊆ X U\subseteq X UX V ⊆ Y V\subseteq Y VY 上定义的函数 F : U → V F:U\rightarrow V F:UV 以及 a ∈ U a\in U aU,在 a a a 处的导数是一个线性映射 D F ( a ) : X → Y DF(a):X\rightarrow Y DF(a):XY,满足:

lim ⁡ v → 0 ∥ F ( a + v ) − F ( x ) − D F ( a ) ⋅ v ∥ ∥ v ∥ = 0 (2.1) \lim_{v\to 0} \frac{\|F(a+v)-F(x)-DF(a)\cdot v\|}{\|v\|}=0 \tag{2.1} v0limvF(a+v)F(x)DF(a)v=0(2.1)

其中, ∥ ⋅ ∥ \|\cdot\| 表示向量的范数。

如果 X = R n X=\mathbb{R}^n X=Rn Y = R m Y=\mathbb{R}^m Y=Rm 是欧几里得空间,那么可以通过对标准坐标基 { e 1 , e 2 , … , e n } \{e_1,e_2,\dots,e_n\} {e1,e2,,en} 作用导数算子来形成雅可比矩阵:

J i j = ∂ F i ∂ x j ( a ) = D F i ( a ) e j , F ( a ) = ( F 1 ( a ) , … , F m ( a ) ) (2.2) J_{ij}=\frac{\partial F_i}{\partial x_j}(a)=DF_i(a)e_j,\quad F(a)=(F_1(a),\dots,F_m(a)) \tag{2.2} Jij=xjFi(a)=DFi(a)ej,F(a)=(F1(a),,Fm(a))(2.2)

式中, ∂ ∂ x j \frac{\partial}{\partial x_j} xj 表示对第 j j j 个分量求偏导数。

高阶导数的表示类似,例如二阶导数 D x 2 F = D x x F D^2_xF=D_{xx}F Dx2F=DxxF

梯度: 关于泛函 L L L (即损失函数)的导数称为梯度。我们将梯度表示为行向量:

∂ L ∂ x = D x L = [ ∂ L ∂ x 1 … ∂ L ∂ x n ] (2.3) \frac{\partial L}{\partial x}=D_xL=\left[\frac{\partial L}{\partial x_1}\quad\dots\quad\frac{\partial L}{\partial x_n}\right] \tag{2.3} xL=DxL=[x1LxnL](2.3)

这暗示了它们属于 R n \mathbb{R}^n Rn 上线性泛函的空间。在推导自定义网络层的反向传播时,这种表示法的经济性很明显。给定函数 F : X ↦ Y F:X\mapsto Y F:XY L : Y ↦ R L:Y\mapsto\mathbb{R} L:YR 以及 a ∈ X a\in X aX,应用链式法则,我们得到反向传播算法中典型的向量-雅可比乘积:

D L x ( a ) = D y L ( F ( a ) ) ⋅ D x F ( a ) (2.4) DL_x(a)=D_yL(F(a))\cdot D_xF(a) \tag{2.4} DLx(a)=DyL(F(a))DxF(a)(2.4)

在大多数情况下,不需要显式构造矩阵 D x F ( a ) D_xF(a) DxF(a),而是可以就地计算向量-雅可比乘积。

2.2 隐式层

隐式层是在神经网络中施加先验和几何约束的强大工具。与直接将输入映射到输出 y = f ( x ) y=f(x) y=f(x) 的典型前馈层不同,隐式层定义了一个函数 ϕ ( x , y ) = 0 \phi(x,y)=0 ϕ(x,y)=0,给定的输出 y ∗ y^* y 必须满足这个函数。当然,任何前馈层都可以写成隐式形式 ϕ ( x , y ) = f ( x ) − y = 0 \phi(x,y)=f(x)-y=0 ϕ(x,y)=f(x)y=0

作为一个激励性的例子,考虑一个求解线性系统 A x = b Ax=b Ax=b 的层,其中 A ∈ R n × n A\in\mathbb{R}^{n\times n} ARn×n 是非奇异的, b ∈ R n b\in\mathbb{R}^n bRn, x ∈ R n x\in\mathbb{R}^n xRn。我们可以将其表示为一个神经网络层,它接受两个输入 A A A b b b,并求解一个满足约束 A x = b Ax=b Ax=b x x x。为了训练具有这种层的网络,我们需要能够通过这一层进行微分。换句话说,给定梯度 ∂ L ∂ x \frac{\partial L}{\partial x} xL,我们需要计算相对于输入的梯度 ∂ L ∂

上一篇:Java 应用启动时出现编译错误进程会退出吗?


下一篇:Java 方法中循环调用具有事务的方法