• 混沌系统在图像加密中的应用(小波混沌神经网络)


    混沌系统在图像加密中的应用(小波混沌神经网络)

    前言

    小波混沌神经网络是一种神经网络模型,结合了小波变换和混沌理论,用于信号处理、分类和预测。该模型基于多层前向神经网络,其中每一层由小波基函数和一个非线性混沌函数构成。

    一、小波混沌神经网络模型

    选用由小波函数组成的小波暂态混沌神经网络作为研究对象。在连续Hopfield网络中引入小波理论和暂态混沌构造的小波混沌神经网络定义如下

    对于Hopfield网络可以看我之前的文章
    混沌系统在图像加密中的应用(Hopfield混沌神经网络)

    在这里插入图片描述
    与 Hopfield 神经网络相 比,此小波混沌神经网络的激励函数由小波函数和 Sigmoid 函数组成,且具有暂态的混沌动力学行为。其激励函数是非单调递增但总体上是递增的函数,是由 Sigmoid 函数和 Wavelet 函数组合而成的。

    Wavelet 函数的意义是既能使激励函数非单调,又能使激励函数有小波函数的优点。其混沌产生机制是通过自反馈连接项按指数方式递减引入的。且此网络多增加了一项非线性时变衰减项

    在这里插入图片描述
    当自反馈连接权 z(t) 以指数方式趋于零时,此混沌神经网络退化为一个 Hopfield 神经网络

    为了更好地分析上述模型的运行机理,以单个神经元为例(令α=0),分析混沌 Hopfield 神经网络的动力学特性。我们选取的激活函数为sigmoid + Wavelet 函数,设置网络参数分别为:
    ε_1 = 0.035
    ε_2 = 0.1
    c = 1/7
    k = 1.0
    u_0 = 0.5
    z_0 = 0.8
    I_0 = 0.6
    β = 0.001

    则网络的输出 v(t)、退温函数z(t)的演化过程分别如下图所示。由图,该网络具有暂态混沌动力学行为,随 着z(t) 不断衰减,通过一个倍周期逆分岔的连续混沌分岔过程,网络将逐渐趋近于一个稳定的平衡点。

    在这里插入图片描述
    在这里插入图片描述

    二、拓展

    大家可以试试其他激活函数,比如softPlus、arcTan、softsign、bent_identity、symmetrical_sigmoid、log_log、gauss、Morlet、ReLU、P-ReLU、Leaky-ReLU、Maxout 等等

    三、python代码

    import numpy as np
    import matplotlib.pyplot as plt
    import pylab as mpl
    mpl.rcParams['font.sans-serif'] = ['YouYuan']  # 指定默认字体
    
    def sigmoid(x):
        return 1. / (1 + np.exp(-x))
    def Morlet(x):
        return np.exp(-((x)**2) / 2) * np.cos(5 * x)
    def Wave(u_t0, z0):
        v_t = sigmoid((u_t0 / r1)) + c * Morlet((u_t0 / r2))
        u_t = k * u_t0 - z0 * (v_t - I0)
        z_t = (1 - b) * z0
        return v_t, u_t, z_t
    
    list_vt = []
    list_ut = []
    list_I0 = []
    list_zt = []
    list_rt = []
    list_time = []
    # 系统初值
    z0 = 0.8
    u_t0 = 0.5
    # 系统参数
    r1 = 0.035
    r2 = 0.1
    c = 1 / 7  # 0
    k = 1.0  # 0<=k<=1
    b = 0.001  # 0
    I0 = 0.60
    for i in range(1500):
        v_t1, u_t1, z1 = Wave(u_t0, z0)
        u_t0 = u_t1
        z0 = z1
        r0 = r1
        list_vt.append(v_t1)
        list_I0.append(I0)
        list_ut.append(u_t0)
        list_zt.append(z0)
        list_rt.append(r0)
        list_time.append(i)
    
    plt.figure()
    plt.title('Wave Chaos -- activation:sigmoid+Morlet')
    plt.tick_params(labelsize=15)
    plt.xlabel('迭代次数', fontsize=15)
    plt.ylabel('v(t)', fontsize=15)
    plt.grid(True, color='c', linestyle='--', linewidth='1')
    plt.scatter(list_time, list_vt, c='r', marker='.', s=1)
    
    plt.figure()
    plt.tick_params(labelsize=15)
    plt.xlabel('迭代次数', fontsize=15)
    plt.ylabel('z(t)', fontsize=15)
    plt.grid(True, color='c',linestyle='--',linewidth='1')
    plt.scatter(list_time, list_zt, c='r',marker='.', s=1)
    
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
  • 相关阅读:
    vuecli配置sass
    Elesticsearch使用总结
    Python脚本:让工作自动化起来
    webrtc vp8/9视频编解码介绍
    工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
    【Python】jupyter lab虚拟环境选择错误
    JavaScript事件流:深入理解事件处理和传播机制
    【计算机网络】网络编程接口 Socket API 解读(4)
    windows一键部署java项目
    JavaScript 字符串连接的工作原理——“+”运算符与“+=”运算符
  • 原文地址:https://blog.csdn.net/weixin_42207434/article/details/134274527