人工智能
神经网络是一种模拟人脑结构的算法模型。其原理就在于将信息分布式存储和并行协同处理。虽然每个单元的功能非常简单,但大量单元构成的网络系统就能实现非常复杂的数据计算,并且还是一个高度复杂的非线性动力学习系统。
神经网络的结构更接近于人脑,具有大规模并行、分布式存储和处理、自组织、自适应和自学能力。神经网络的用途非常广泛,在系统辨识、模式识别、智能控制等领域都能一展身手。而现在最吸引IT巨头们关注的就是神经网络在智能控制领域中的自动学习功能,特别适合在需要代入一定条件,并且信息本身是不确定和模糊的情况下,进行相关问题的处理,例如语音识别。
由于神经网络算法的设计面太大,我们此处暂且只分析Microsoft神经网络算法的原理,在Microsoft神经网络算法中,我们可以简化成下面这个图片:
Microsoft神经网络使用的由最多三层神经元组成的“多层感知器”网络,分别为:输入层、可选隐含层和输出层。
输入层:输入神经元定义数据挖掘模型所有的输入属性值以及概率。
隐含层:隐藏神经元接受来自输入神经元的输入,并向输出神经元提供输出。隐藏层是向各种输入概率分配权重的位置。权重说明某一特定宿儒对于隐藏神经元的相关性或重要性。输入所分配的权重越大,则输入值也就越重要。而这个过程可以描述为学习的过程。权重可为负值,表示输入抑制而不是促进某一特定结果。 输出层:输出神经元代表数据挖掘模型的可预测属性值。
数据从输入经过中间隐含层到输出,整个过程是一个从前向后的传播数据和信息的过程,后面一层节点上的数据值从与它相连接的前面节点传来,之后把数据加权之后经过一定的函数运算得到新的值,继续传播到下一层节点。这个过程就是一个前向传播过程。
而当节点输出发生错误时,也就是和预期不同,神经网络就要自动“学习”,后一层节点对前一层节点一个“信任”程度(其实改变的就是连接件的权重),采取降低权重的方式来惩罚,如果节点输出粗粗哦,那就要查看这个错误的受那些输入节点的影响,降低导致出错的节点连接的权重,惩罚这些节点,同时提高那些做出正确建议节点的连接的权重。对那些受到惩罚的节点而说,也用同样的方法来惩罚它前面的节点,直到输入节点而止。这种称为:回馈。 而我们学习的过程就是重复上面的介绍的流程,通过前向传播得到输入值,用回馈法进行学习。当把训练集中的所有数据运行过一遍之后,则称为一个训练周期。训练后得到神经网络模型,包含了训练集中相应值和受预测值影响变化的规律。
在每个神经元中的隐含层中都有着复杂的函数,并且这些都非线性函数,并且类似生物学神经网络的基本传输特征,这些函数称之为:激活函数,即:输入值发生细微的变化有时候会产生较大的输出变化。
在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能、构作专家系统、制成机器人、复杂系统控制等等。
纵观当代新兴科学技术的发展历史,人类在征服宇宙空间、基本粒子,生命起源等科学技术领域的进程中历经了崎岖不平的道路。我们也会看到,探索人脑功能和神经网络的研究将伴随着重重困难的克服而日新月异。
尽管神经网络现在已经被广泛用于语音识别领域,但是其用途肯定不限于此。下一步,神经网络最有可能进入图像软件领域。与分辨声音的过程类似,神经网络在分析图像时,每一层的图像探测器会首先寻找图像中的一些特征,例如图像的边缘。
当探测完成之后,另一层的软件就会将这些边缘结合起来,就会形成图像的边角等特征。然后如此反复下去,识别的图像特征就会越来越清晰、明确,到了最后一层就将所有图像特征结合起来,与数据库中的数据进行对比,就能得出图片里的物体究竟是什么的结论。
前面提到的谷歌狄恩研究小组就采用这种方法,开发出了一套软件,已经可以通过自学分辨出网络视频里的猫。或许未来这套软件将会推广到图片搜索领域,谷歌街景利用这一算法就能区分出不同事物的特征。 此外,神经网络在医学领域也有施展拳脚的空间,多伦多大学的一个研究团队,已经成功地用神经网络分析出药物分子在实际环境中可能的作用方式。
BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数、离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法。
1、这里以一个普遍实用的简单案例为例子进行编程的说明。假设一组x1,x2,x3的值对应一个y值,有2000组这样的数字,我们选择其中1900组x1,x2,x3和y作为样本,其余100组x1,x2,x3作为测试数据来验证。
2、首先需要读取这些数据,并把数据赋值给input 和 output 。我是把数据存储在excel表中,所以用xlsread函数来读取数据。读取出来的数据是2000*4的矩阵。
3、将样本数据进行归一化处理。
4、初始化网络结果,设置参数,并用数据对网络进行训练。newff函数是给出了最简单的设置,即输入样本数据,输出样本数据和隐含层节点数;epochs是设置迭代次数;lr是设置学习率;goal是设置目标值。
5、设置好参数,需要将预测数据进行归一化处理,然后将预测结果输出,并将输出的结果进行反归一化处理,神经网络就完成了。BPoutput为预测结果。
6、程序运行时显示的网络结构和运行过程如下图。
7、如果以后需要用到已训练好的网络可以把训练好的网络储存起来,下次可以直接进行预测,具体方法见下图。
在用神经网络进行预测时需要注意输入数据的数量和样本的数量,样本数量较少时要考虑网络的可用性和准确性。
全部0条评论
快来发表一下你的评论吧 !