不动点迭代
不动点迭代法(Fixed Point Iteration)又叫简单迭代法,对于一个非线性方程
f
(
x
)
=
0
f(x)=0
f(x)=0 将其转换成以下形式:
x
=
φ
(
x
)
x=\varphi (x)
x=φ(x)
假设
φ
(
x
)
\varphi (x)
φ(x) 是一个连续函数(
φ
(
x
)
\varphi (x)
φ(x)被称为迭代函数),任取一个初始值
x
0
x_{0}
x0 代入上式右端,得到:
x
1
=
φ
(
x
0
)
x_{1}=\varphi (x_{0})
x1=φ(x0)
并依次迭代计算:
x
2
=
φ
(
x
1
)
,
.
.
.
,
x
k
+
1
=
φ
(
x
k
)
x_{2}=\varphi (x_{1}),...,x_{k+1}=\varphi (x_{k})
x2=φ(x1),...,xk+1=φ(xk)
如果存在一点
x
∗
x^{*}
x∗,使得迭代序列{
x
k
x_{k}
xk}满足:
l
i
m
k
→
∞
x
k
=
x
∗
lim_{k\rightarrow \infty }x_{k}=x^{*}
limk→∞xk=x∗,则称迭代是收敛的,否则为发散;
迭代的收敛性
设迭代函数 φ ( x ) \varphi (x) φ(x) 在 [ a , b ] [a,b] [a,b] 上连续,且满足:
- 当 x ∈ [ a , b ] x\in [a,b] x∈[a,b] 时, a ≤ φ ( x ) ≤ b a\leq \varphi (x)\leq b a≤φ(x)≤b;
- 存在一个正数 0 < L < 1 0<L<1 0<L<1,且 ∀ x ∈ [ a , b ] \forall x\in [a,b] ∀x∈[a,b],有 ∣ φ ′ ( x ) ∣ ≤ L |\varphi ^{'}(x)|\leq L ∣φ′(x)∣≤L
则方程 x = φ ( x ) x=\varphi (x) x=φ(x) 在 [ a , b ] [a,b] [a,b] 内有唯一解 x ∗ x^{*} x∗,对任意初始值 x 0 ∈ [ a , b ] x_{0}\in [a,b] x0∈[a,b],迭代法总能收敛于 x ∗ x^{*} x∗
迭代法实例
对于一层全连接网络,如果使用tanh作为激活函数,很容易通过tensorflow写出过程:
# 注意tf.multiply是张量逐个元素相乘,tf.matmul才是矩阵乘法
y=tf.matmul(W,x)+b
y=tf.tanh(y)
假设现在想用 x = y + c o s y x=y+cosy x=y+cosy 的反函数 y = f ( x ) y=f(x) y=f(x) 来激活,就需要先解出 y = f ( x ) y=f(x) y=f(x);很明显 y = f ( x ) y=f(x) y=f(x) 是一个超越函数,不能用初等函数有限表示,故用不动点迭代法求出近似值;(把 x x x 看作常量,方程就变成只含有 y y y 的式子)
改变形式为:
y
=
x
−
c
o
s
y
y=x-cosy
y=x−cosy
迭代为:
y
k
+
1
=
x
−
c
o
s
(
y
k
)
y_{k+1}=x-cos(y_{k})
yk+1=x−cos(yk)
选择初始值
y
0
=
x
y_{0}=x
y0=x,迭代三次为:
y
=
x
−
c
o
s
(
x
−
c
o
s
(
x
−
c
o
s
x
)
)
y=x-cos(x-cos(x-cosx))
y=x−cos(x−cos(x−cosx))
此时,可以用tensorflow表示使用该激活函数的过程:
y=tf.matmul(W,x)+b
Y=y
for i in range(3):
Y=y-tf.cos(Y)