机器学习之实战matlab神经网络工具箱

上节在
《机器学习之从logistic到神经网络算法》
中,我们已经从原理上介绍了神经网络算法的来源与构造,并编程实战了简单神经网络对于线性与非线性数据的分类测试实验。看过上节的可能会发现,上节实现的算法对于非线性数据的分类效果并不是非常完美,有许多值得优化的地方。而matlab作为一个科学计算软件,本身集成了非常多的优化算法,其中的神经网络工具箱就是其中一个优秀的工具箱,本节将以工具箱中的函数重新实验上节中的分类实验。

首先来了解这个工具箱。我们说,一个简单的神经网络就如下图所示:
这里写图片描述
这是我们上节用过的网络,含有两层,每层3个节点的网络。然而已经证明,其实只含有一个隐含层的网络是可以拟合出任意有限的输入输出映射问题的。基于此,在matlab集成的工具箱中我们只能看到只含有一个隐含层的网络,而网络的节点个数却是我们可以需要改变与设计的。简单来工具箱的一个简单神经网络可以表示如下:
这里写图片描述
通过输入然后映射到输出,输出在映射到最终输出。整个网络包含权值w、v和常数b。网络需要设计的就是确定隐含层的节点个数(matlab默认10),同时映射函数需要注意,上节我们默认的都是采用sigmod函数,然而matlab默认的是隐含层输出采用sigmod,而输出后的映射采用的是线性映射,像上图中的在输出部分的红色所示。其实除了这两种映射函数外,还有正切等等函数,可以作为映射函数的共同点就是他们都是可导的(这是原理推导上所必须的)。那么matlab默认输出映射为什么是线性的而不是sigmod的呢?我们知道sigmod函数会把数据映射到0-1之间,然而我们实际应用中获得的数据的目标值(分类标签)并不一定都在0-1之间,那么如果用sigmod函数,那么我们需要把原始数据的目标输出转化到0-1之间,而线性映射就没有这个问题(因为它映射后的数据没有上下限)。

好了下面说说关于几个重要的函数:

  1. 网络创建函数:feedforwardnet(hiddenSizes,trainFcn) ,(matlab2012后较新的版本),在老版本的matlab,这个函数是newff。这个函数就是创建一个上述的(前馈)网络,包括两个参数,第一个hiddenSizes隐藏层的大小(实际就是节点数的多少,默认10),trainFcn是网络训练所采取的方法,这个方法包括:梯度下降算法、动量梯度下降算法、变学习率梯度下降算法等等数10种方法,各种方法各有优

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值