其他算法-不动点迭代

不动点迭代

不动点迭代法(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^{*} limkxk=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=xcosy
迭代为:
y k + 1 = x − c o s ( y k ) y_{k+1}=x-cos(y_{k}) yk+1=xcos(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=xcos(xcos(xcosx))
此时,可以用tensorflow表示使用该激活函数的过程:

y=tf.matmul(W,x)+b
Y=y
for i in range(3):
	Y=y-tf.cos(Y)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值