系统学习机器学习之神经网络(三)--GA神经网络与小波神经网络WNN
1 遗传算法
1.1 遗传算法简介:
遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随 机化搜索方法。它是由美国的 J.Holland 教授 1975 年首先提出,其主要特点是直接对结构对 象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力; 采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,不需 要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处 理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术之一。 在遗传算法里,优化问题的解被称为个体,它表示为一个变量序列,叫做染色体或者基 因串。染色体一般被表达为简单的字符串或数字串,不过也有其他的依赖于特殊问题的表示 方法适用,这一过程称为编码。首先,算法随机生成一定数量的个体,有时候操作者也可以 对这个随机产生过程进行干预,以提高初始种群的质量。在每一代中,每一个个体都被评价, 并通过计算适应度函数得到一个适应度数值。种群中的个体被按照适应度排序,适应度高的 在前面。这里的“高”是相对于初始的种群的低适应度来说的。 下一步是产生下一代个体并组成种群。这个过程是通过选择和繁殖完成的,其中繁殖包 括交配(crossover,在算法研究领域中我们称之为交叉操作)和突变(mutation)。选择则是根 据新个体的适应度进行的,但同时并不意味着完全的以适应度高低作为导向,因为单纯选择 适应度高的个体将可能导致算法快速收敛到局部最优解而非全局最优解,我们称之为早熟。 作为折中,遗传算法依据原则:适应度越高,被选择的机会越高,而适应度低的,被选择的 机会就低。初始的数据可以通过这样的选择过程组成一个相对优化的群体。之后,被选择的 个体进入交配过程。一般的遗传算法都有一个交配概率(又称为交叉概率),范围一般是 0.6~1,这个交配概率反映两个被选中的个体进行交配的概率。例如,交配概率为 0.8,则 80% 的“夫妻”会生育后代。每两个个体通过交配产生两个新个体,代替原来的“老”个体,而 不交配的个体则保持不变。交配父母的染色体相互交换,从而产生两个新的染色体,第一个 个体前半段是父亲的染色体,后半段是母亲的,第二个个体则正好相反。不过这里的半段并 不是真正的一半,这个位置叫做交配点,也是随机产生的,可以是染色体的任意位置。再下 一步是突变,通过突变产生新的“子”个体。一般遗传算法都有一个固定的突变常数(又称 为变异概率),通常是 0.1 或者更小,这代表变异发生的概率。根据这个概率,新个体的染 色体随机的突变,通常就是改变染色体的一个字节(0 变到 1,或者 1 变到 0)。 经过这一系列的过程(选择、交配和突变),产生的新一代个体不同于初始的一代,并 一代一代向增加整体适应度的方向发展,因为最好的个体总是更多的被选择去产生下一代, 而适应度低的个体逐渐被淘汰掉。这样的过程不断的重复:每个个体被评价,计算出适应度, 两个个体交配,然后突变,产生第三代。周而复始,直到终止条件满足为止。一般终止条件 有以下几种:
进化次数限制;
(1)计算耗费的资源限制(例如计算时间、计算占用的内存等);
(2)一个个体已经满足最优值的条件,即最优值已经找到;
(3)适应度已经达到饱和,继续进化不会产生适应度更好的个体;
(4)人为干预;
(5)以及以上两种或更多种的组合。
一个典型的遗传算法要求: 一个基因表示的求解域, 一个适应度函数来评价解决方案。
1.2 主要算法步骤(算法流程入有图所示):
(1)染色体表示
(2)初始化种群
(3)选择算子
(4)杂交算子
(5)变异算子
(6)适应度函数
对于一个具体问题
(1)确定问题的解空间和个体的表现型
(2)建立优化模型,确定出目标函数
(3)确定遗传算子
(4)确定运行参数
2 神经网络
2.1 神经网络简介
人工神经网络(artificial neural network,缩写 ANN),简称神经网络(neural network, 缩写 NN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型。神经网络由大量 的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结 构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具,常用来对输入和 输出间复杂的关系进行建模,或用来探索数据的模式。 神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联 接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个 节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于 人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。 而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
它的构筑理念是受到生物(人或其他动物)神经网络功能的运作启发而产生的。人工神 经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以 人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得 到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们 通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人 工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的 逻辑学推理演算更具有优势。
2.2 神经网络神经元示意图:
其中
a1~an 为输入向量的各个分量
w1~wn 为神经元各个突触的权值
b 为偏置
f 为传递函数,通常为非线性函数。
t 为神经元输出
2.3 神经网络的分类
人工神经网络分类为以下两种:
2.3.1 依学习策略(Algorithm)分类主要有:
监督式学习网络(Supervised Learning Network)为主
无监督式学习网络(Unsupervised Learning Network)
混合式学习网络(Hybrid Learning Network)
联想式学习网络(Associate Learning Network)
最适化学习网络(Optimization Application Network)
2.3.2 依网络架构(Connectionism)分类主要有:
前向式架构(Feed Forward Network)
回馈式架构(Recurrent Network)
强化式架构(Reinforcement Network)
2.4 学习算法:
(1) Hebb 学习规则
(2) Delta 学习规则
(3) 梯度下降学习规则
(4) Kohonen 学习规则(就是SOM)
(5)向后传播学系规则(BP)
(6) 概率式学习规则(GA)
(7) 竞争式学习规则(SOM,ART,CPN)
2.5 BP 神经网络:
BP 神经网络训练算法:
(1) 初始化网络设置
(2) 向前传播输入
(3) 反向误差传播
(4) 网络权重与神经元偏置调整
(5) 判断结束
2.6 神经网络的优越性
第一,具有自学习功能。例如实现图像识别时,只在先把许多不同的图像样板和对应的 应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自 学习功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提供经济预 测、市场预测、效益预测,其应用前途是很远大的。 第二,具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。 第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算 量,利用一个针对某问题而设计的反馈型人工神经网络,发挥计算机的高速运算能力,可能 很快找到优化解。
3、遗传算法在神经网络的应用
神经网络的设计要用到遗传算法,遗传算法在神经网络中的应用主要反映在 3 个方面: 网络的学习,网络的结构设计,网络的分析。
3.1 遗传算法在网络学习中的应用
在神经网络中,遗传算法可用于网络的学习。这时,它在两个方面起作用。学习规则的 优化用遗传算法对神经网络学习规则实现自动优化,从而提高学习速率。网络权系数的优化 用遗传算法的全局优化及隐含并行性的特点提高权系数优化速度。
3.2 遗传算法在网络设计中的应用
用遗传算法设计一个优秀的神经网络结构,首先是要解决网络结构的编码问题;然后才 能以选择、交叉、变异操作得出最优结构。编码方法主要有下列 3 种: 直接编码法:这是把神经网络结构直接用二进制串表示,在遗传算法中,“染色体”实质 上和神经网络是一种映射关系。通过对“染色体”的优化就实现了对网络的优化。 参数化编码法:参数化编码采用的编码较为抽象,编码包括网络层数、每层神经元数、 各层互连方式等信息。一般对进化后的优化“染色体”进行分析,然后产生网络的结构。 繁衍生长法:这种方法不是在“染色体”中直接编码神经网络的结构,而是把一些简单 的生长语法规则编码入“染色体”中;然后,由遗传算法对这些生长语法规则不断进行改变, 最后生成适合所解的问题的神经网络。这种方法与自然界生物地生长进化相一致。
3.3 遗传算法在网络分析中的应用
遗传算法可用于分析神经网络。神经网络由于有分布存储等特点,一般难以从其拓 扑结构直接理解其功能。遗传算法可对神经网络进行功能分析,性质分析,状态分析。 遗传算法虽然可以在多种领域都有实际应用,并且也展示了它潜力和宽广前景;但 是,遗传算法还有大量的问题需要研究,目前也还有各种不足。首先,在变量多,取值范围 大或无给定范围时,收敛速度下降;其次,可找到最优解附近,但无法精确确定最扰解位置; 最后,遗传算法的参数选择尚未有定量方法。对遗传算法,还需要进一步研究其数学基础理 论;还需要在理论上证明它与其它优化技术的优劣及原因;还需研究硬件化的遗传算法;以 及遗传算法的通用编程和形式等。
4 遗传算法在圣经网络应用的具体算法
4.1 利用遗传算法构建神经网络结构
(1)随机产生 N 个染色体数字串,组成初始种群,其中每个染色体表示一种参数组合对 应的神经网络模型;
(2)REPEAT 取出种群中第 I 个染色体,解码后得到一种参数组合,构成一个神经网络;评 价所得神经网络,计算其对应染色体的适应度;UNTIL 种群为空;进行选择、交叉、变异运 算,构成下一代种群;
(3)新种群满足性能评价标准或到达给定代数,转到(4),否则转到(2)重复执行;
(4)解码种群适应度最高的染色体,用其参数集构成一个神经网络,即为结构最优的神经 网络.
4.2 遗传算法对神经网络优化的一个算法
( 1 ) 确定神经网络的结构 ,给定神经 网络的输入、输出样本集 .
( 2 ) 确定网络权值的编码,个体的位串长度,一组权值与遗传空间的个体位串的关是由编 码映射确定的.
( 3 ) 选定遗传操作,设置遗传参数及 自适应调整算法等.
( 4 ) 随机产生初始群体,设为 N 个个体.
( 5 ) 对种群 中的每一个体位串进行译码 , 求得 N 组网络权值 , 得到具有相 同结构的 N 个网络.
( 6 ) 由输入样本集经前 向传播算 法求得 N 组网络权值对应的 N 个网络输 出.
( 7 ) 确定适应度函数,对 N 组 网络进行评价.一般以误差函数的倒数作 为染色体的评价 函数.计算每条染色体的适应度值,误差越大,适应度越小 .
( 8 ) 根据适应度在遗传空 间进行选优操作. 选择若干适 应度 函数值大 的个体 直接进 入下一代 ,适应度小 的个体被淘汰 .
( 9 ) 利用交叉、 变异等遗传算子对当前一代群体进行处理,并产生下一代群体.
( 10 ) 重复 步骤 ( 5 ) 一( 10) ,对新一代 群体 进行新一轮的迭代,直到训练练目标满足 终止条件为止,即得到一组优化的权值.
最后将这组优化后 的连接权值作 为神经 网络的新的权值应用到 B P 神经网络中去.
5 总结
遗传算法和神经网络都是计算智能领域重要的算法,遗传算法借鉴生物界适者生存,优胜劣 汰遗传机制的规律,来寻找一个问题的最优解。神经网络则是模拟生物神经网络的结构和功 能的数学模型或计算模型。大量细胞构成各种神经网络。通过在遗传算法调整神经网络的结 构,使得神经网络获得动态的结构,从而更加智能。用遗传算法调整权重,获得更快的速度, 同时更大程度的避免出现局部最优情况下收敛。将遗传算法应用于神经网络,大大提高神经 网络的性能
6 小波神经网络
小波神经网络是将神经网络的激活函数,例如Sigmod函数,替换成小波函数,而相应的输入层到隐层的权值及激活阈值,由小波函数的尺度伸缩因子和时间平移因子所代替,这是使用最广泛的结构,即紧致性结构。其主要作用还是在于神经网络的优化,小波神经网络相比于前向的神经网络,它有明显的优点:首先小波神经网络的基元和整个结构是依据小波分析理论确定的,可以避免BP神经网络等结构设计上的盲目性;其次小波神经网络有更强的学习能力,精度更高。因为小波理论是全尺度分析,不仅有全局最优解,还保持局部细节最优解,总的而言,对同样的学习任务,小波神经网络结构更简单,收敛速度更快,精度更高。
其他方面的内容,暂不研究,因为一方面这个方向内容很多,另外一方面,小波理论对我目前从事的行业实用性不强。
系统学习机器学习之神经网络(三)--GA神经网络与小波神经网络WNN的更多相关文章
- 小波神经网络(WNN)
人工神经网络(ANN) 是对人脑若干基本特性通过数学方法进行的抽象和模拟,是一种模仿人脑结构及其功能的非线性信息处理系统. 具有较强的非线性逼近功能和自学习.自适应.并行处理的特点,具有良好的容错能力 ...
- 机器学习作业(三)多类别分类与神经网络——Python(numpy)实现
题目太长了!下载地址[传送门] 第1题 简述:识别图片上的数字. import numpy as np import scipy.io as scio import matplotlib.pyplot ...
- 机器学习作业(三)多类别分类与神经网络——Matlab实现
题目太长了!下载地址[传送门] 第1题 简述:识别图片上的数字. 第1步:读取数据文件: %% Setup the parameters you will use for this part of t ...
- Node.js学习之(第三章:简易小demo)
前言 我们前面已经学习完了Node中一些核心模块还有如何正确配置响应头的Content-Type,今天我们来实现一个简单的demo,巩固下之前学习的内容. 需求 我们平时访问百度或者其他大的门户网站的 ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程)
ufldl学习笔记与编程作业:Multi-Layer Neural Network(多层神经网络+识别手写体编程) ufldl出了新教程,感觉比之前的好,从基础讲起,系统清晰,又有编程实践. 在dee ...
- 系统学习 Java IO (三)----文件类 File
目录:系统学习 Java IO---- 目录,概览 Java IO API 中的 File 类可以访问基础文件系统. 使用 File 类,可以: 检查文件或目录是否存在. 如果目录不存在,创建一个目录 ...
- 论文学习-混沌系统以及机器学习模型-11-29-wlg
混沌系统以及机器学习模型 概述: 必要条件下: negative values of the sub-Lyapunov exponents. 通过rc方法, 可以在参数不匹配的情况下,实现输入信号,混 ...
- 如何系统学习知识图谱-15年+IT老兵的经验分享
一.前言 就IT而言,胖子哥算是老兵,可以去猝死的年纪,按照IT江湖猿龄的规矩,也算是到了耳顺之年:而就人工智能而言,胖子哥还是新人,很老的新人,深度学习.语音识别.人脸识别,知识图谱,逐个的学习了一 ...
随机推荐
- js去掉字符串中的所有空格
1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){ var result; result = str.replace(/(^ ...
- Eclipse生成EXE文件(可视化Login/读取文件)
Java Swing实现文件的简单读取 WindowBuilder的安装与使用 如何采用java设置一个登陆界面 package jp.services.slink2.batch.so2or; imp ...
- Linux 操作memcache命令行
telnet 127.0.0.1 11211 连接 memcache stats 查看 memcache 状态 状态说明: pid memcache服务器的进程ID uptime 服务器已经运行的秒数 ...
- ERS:百科
ylbtech-ERS:百科 ERS=(Enterprises Run System)企业运行系统 企业运行系统-ERS,是继ERP系统之后的企业管理控制软件系统的终极形式,有着非常美好的市场前景,尤 ...
- c++ throw异常(学习)
#include <iostream>#include <stdio.h> using namespace std; void my_copy(const char* src_ ...
- jmeter 调用python的方法三种 (还没试)
参考文章1: Jmeter 运行 Python 代码进行 AK/SK 认证 (使用 OS Process Sampler) 思路是:jmeter调用shell,用shell执行py 参考文章2: Jm ...
- python3 枚举enum定义和使用
两种方式定义枚举类: 1.直接使用Enum列出多个枚举值来创建枚举类. 2.通过集成Enum基类派生枚举类. 程序示范: 1.直接使用Enum列出多个枚举值来创建枚举类. from enum impo ...
- Win10安装多个MySQL实例
Win10安装MySQL-8.0.15 1.下载mysql-8.0.15-winx64.zip安装包,地址如下 https://cdn.mysql.com//Downloads/MySQL-8.0/m ...
- kubernetes之StatefulSet部署zk和kafka
前提 至少需要三个node节点,否则修改亲和性配置 如果外部访问,需要自己暴露 需要有个storageClass,这样做的原因是避免手动创建pv了 部署zk和kafka 参考: https://www ...
- hdfs操作命令
文件操作命令:hdfs dfs -ls /hdfs dfs -mkdir /hdfs dfs -rm -rf /hdfshdfs dfs -duhdfs dfs -get /hdfs /localhd ...