Alterna · 学习资料
03.4 许多入口和许多出口
让我们把它放在一张桌子上, 每个出口如何取决于每个条目。 这个本地敏感表叫做 Jakobi 矩阵 。
本节学习内容
- 每个出口各一行敏感度
- Jacobian 是一个本地变换矩阵
- 前向和后向使用不同的作品
内容与核心概念
在上一页,我们收集矢量的灵敏度。
让我们把它放在一张桌子上, 每个出口如何取决于每个条目。 这个本地敏感表叫做 Jakobi 矩阵 。
两个出口: [x2, xy]; x=2, y=1]。
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
每个出口各一行敏感度
如果
F
:
R
n
→
R
m
F:\mathbb R^n\to\mathbb R^m
F
:
R
n
→
R
m
其结果包含多个组成部分,因此一个梯度矢量是不够的。
J
F
(
x
)
∈
R
m
×
n
,
(
J
F
)
i
j
=
∂
F
i
∂
x
j
.
J_F(x)\in\mathbb R^{m\times n},
\qquad (J_F)_{ij}=\frac{\partial F_i}{\partial x_j}.
J
F
(
x
)
∈
R
m
×
n
,
(
J
F
)
ij
=
∂
x
j
∂
F
i
.
直线指一个出口,列指同一个入口。有些来源使用可转移布局;公式只有在明确宣布协议后方正确。
用于
F
(
x
,
y
)
=
[
x
2
x
y
]
F(x,y)=
\begin{bmatrix}
x^2\\xy
\end{bmatrix}
F
(
x
,
y
)
=
[
x
2
x
y
]
收到实实实
J
F
(
x
,
y
)
=
[
2
x
0
y
x
]
.
J_F(x,y)=
\begin{bmatrix}
2x&0\\y&x
\end{bmatrix}.
J
F
(
x
,
y
)
=
[
2
x
y
0
x
]
.
点点
z
=
[
2
,
1
]
T
z=[2,1]^T
z
=
[
2
,
1
]
T
:
F
(
z
)
=
[
4
,
2
]
T
,
J
F
(
z
)
=
[
4
0
1
2
]
.
F(z)=[4,2]^T,
\qquad J_F(z)=
\begin{bmatrix}4&0\\1&2\end{bmatrix}.
F
(
z
)
=
[
4
,
2
]
T
,
J
F
(
z
)
=
[
4
1
0
2
]
.
第一列
[
4
,
1
]
T
[4,1]^T
[
4
,
1
]
T
当入口由
x
x
x
; 第二次
[
0
,
2
]
T
[0,2]^T
[
0
,
2
]
T
- 移动时
y
y
y
.
Jacobian 是一个本地变换矩阵
小为小
δ
\delta
δ
F
(
z
+
δ
)
≈
F
(
z
)
+
J
F
(
z
)
δ
.
F(z+\delta)\approx F(z)+J_F(z)\delta.
F
(
z
+
δ
)
≈
F
(
z
)
+
J
F
(
z
)
δ
.
准标
δ
=
[
0.1
,
−
0.2
]
T
\delta=[0.1,-0.2]^T
δ
=
[
0.1
,
−
0.2
]
T
:
J
δ
=
[
4
0
1
2
]
[
0.1
−
0.2
]
=
[
0.4
−
0.3
]
.
J\delta=
\begin{bmatrix}4&0\\1&2\end{bmatrix}
\begin{bmatrix}0.1\\-0.2\end{bmatrix}
=\begin{bmatrix}0.4\\-0.3\end{bmatrix}.
J
δ
=
[
4
1
0
2
]
[
0.1
−
0.2
]
=
[
0.4
−
0.3
]
.
线性预测等于
[
4.4
,
1.7
]
T
[4.4,1.7]^T
[
4.4
,
1.7
]
T
和确切的出口。
F
(
2.1
,
0.8
)
=
[
4.41
,
1.68
]
T
.
F(2.1,0.8)=[4.41,1.68]^T.
F
(
2.1
,
0.8
)
=
[
4.41
,
1.68
]
T
.
错误错误错误
[
0.01
,
−
0.02
]
T
[0.01,-0.02]^T
[
0.01
,
−
0.02
]
T
由第二顺序的成员组成:
δ
x
2
\delta_x^2
δ
x
2
和
δ
x
δ
y
\delta_x\delta_y
δ
x
δ
y
.
前向和后向使用不同的作品
生产
J
δ
J\delta
J
δ
前门路口稍有变化,有形状
[
m
,
1
]
[m,1]
[
m
,
1
]
现在,让天降的失落取决于
F
F
F
和上上层长宽度等于
g
F
=
∇
F
L
∈
R
m
×
1
.
g_F=\nabla_F L\in\mathbb R^{m\times1}.
g
F
=
∇
F
L
∈
R
m
×
1
.
链条规则给予入口处的长线:
g
z
=
J
T
g
F
,
[
n
,
m
]
[
m
,
1
]
=
[
n
,
1
]
.
g_z=J^Tg_F,
\qquad [n,m][m,1]=[n,1].
g
z
=
J
T
g
F
,
[
n
,
m
]
[
m
,
1
]
=
[
n
,
1
]
.
例如,当
g
F
=
[
1
,
−
2
]
T
g_F=[1,-2]^T
g
F
=
[
1
,
−
2
]
T
:
J
T
g
F
=
[
4
1
0
2
]
[
1
−
2
]
=
[
2
−
4
]
.
J^Tg_F=
\begin{bmatrix}4&1\\0&2\end{bmatrix}
\begin{bmatrix}1\\-2\end{bmatrix}
=\begin{bmatrix}2\\-4\end{bmatrix}.
J
T
g
F
=
[
4
0
1
2
]
[
1
−
2
]
=
[
2
−
4
]
.
这是每个入口所有出口的矿床总和。 传送来自形状和卡路里差的对齐 :
d
L
=
g
F
T
d
F
=
g
F
T
J
d
z
=
(
J
T
g
F
)
T
d
z
.
dL=g_F^T\,dF=g_F^TJ\,dz=(J^Tg_F)^Tdz.
d
L
=
g
F
T
d
F
=
g
F
T
J
d
z
=
(
J
T
g
F
)
T
d
z
.
在大型系统里 完整的雅各比人往往不会实现
J
v
Jv
J
v
, reverse-mode — vector-Jacobian product
u
T
J
u^TJ
u
T
J
等值
J
T
u
J^Tu
J
T
u
这些是应用相同衍生物的不同方法,而不是不同的定义。
在实验室里,换衣服
x
x
x
和
y
y
y
零要素
J
01
=
0
J_{01}=0
J
01
=
0
表示第一个退出并不取决于本地
y
y
y
但不取消存在第二个出口。
J = [[4, 0], [1, 2]]
delta = [.1, -.2]
forward = [sum(a*b for a, b in zip(row, delta)) for row in J]
upstream = [1, -2]
backward = [sum(J[i][j]*upstream[i] for i in range(2)) for j in range(2)]
assert all(abs(a - b) < 1e-12 for a, b in zip(forward, [.4, -.3]))
assert backward == [2, -4]
代码重复了刚刚处理的操作
完全检查了 Python 示例章节
可用一个单独的文件; 显示的短片不会取代其执行 。
一个经修改的条目会影响几个出口,Jakobi表格收集了所有这些地方影响。
倾向本身如何改变?这个问题如何继续下去?
第03章Python实例
学术基础