• 浅谈神经网络(二)


    神经网络中可以改变的有:

    1、各神经元的权值

    2、bias,广义上,也是权值

    3、激活函数

    4、神经网络的层数

    5、各层神经元的个数

    6、神经网络的连接结构

    7、输入输出的格式和质量

    下面我们一项一项进行说明,如何改变这些参数

    一、权值

    权值的改变分为 有监督的学习 和 无监督的学习

    1、有监督的学习Supervised Learning

    给定许多样本(包含输入与输出),将输入数据通过神经网络后,产生的实际输出和期望输出进行比较,通过差值逐步调整各神经元的权值和bias,两个问题:

    (1)期望输出是什么?

    期望输出就是给定的样本的输出,而实际输出就是输入经过神经网络后产生的输出

    (2)各权值初始化的值为多少?

    初始化权值随机分配,一般为较小的非零随机数,比如归一化到(-1,1)

    例:C语言中利用rand()函数(随机产生0-RAND_MAX之间的数),初始化权值为-1到1之间:w[i][j]=rand()*2.0/RAND_MAX-1;

    2、无监督的学习UnSupervised Learning

    大概思想是:当两个神经元同时处于激发状态时两者间的连接权会被加强,否则被减弱。

    注:关于训练算法有以下这些:

    BP算法、...(留待后续补充)

    ......

    算法多多,就像C语言中一个排序就有那么多算法一样,神经网络的训练算法有这么几种也不足为奇。

    二、激活函数

    (1) 线性函数 ( Liner Function )

    Matlab中可以使用:purelin函数

    (2) 阈值函数 ( Threshold Function )

    Matlab中可以使用:hardlim和hardlims函数,值域分别为[0,1]和[-1,1]

    (3) S形函数 ( Sigmoid Function )

    Matlab中可以使用:logsig函数

    (4) 双极S形函数

    Matlab中可以使用:tansig函数

    (5)后续补充...

    ......

    三、输入输出的质量和格式

    输入输出数据的质量:保证输入数据准确完整等等就行,这里不做深入讲解,具体可以看看数据预处理。

    输入输出数据的格式:这里涉及到的就是数据的归一化问题,这里简单说一下。

    1、什么是归一化?

    归一化就是利用一定的算法,将输入输出数据归一化到[0,1]或者[-1,1]之间

    2、为什么要归一化?

    (1)输入输出的单位不一样(比如输入是温度,输出是电流),范围不一样(比如输入数据之间数值相差很大),会导致神经网络的收敛速度变慢、训练时间变长;

    (2)数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小;

    (3)激活函数本身的输出是有范围的,比如用sigmoid函数,其值域范围为[0,1],这样就要求必须将输出数据映射到[0,1]上面,也就是输出数据的归一化问题;

    (4)sigmoid函数在[-5,5]范围之外偏向饱和,函数值之间差别太小,很难进行训练,比如f(5)和f(100)只相差0.0067,因此,我们取有效区间[-1,1],将输入数据映射到[-1,1]

    上面,方便进行训练,这也就是输入数据的归一化问题;

    3、如何进行归一化?

    输入数据的归一化

    (通常归一化到(-1,1)之间)

    (1)var = ( x - min )/( max - min),那么数据x就化简到[0,1]之间了。(编程中,可以var = ( x - min + 1 )/( max - min - 1),加上常数1防止分母为0)

    (2)var = 2 * ( x - min ) / ( max - min ) - 1,那么数据x就化简到[-1,1]之间了。(C编程中,可以采用 var = rand()*2.0/RAND_MAX-1)

    输出数据的反归一化

    如果采用sigmoid函数,函数值区间为(0,1),由var = ( x - min )/( max - min)可得反归一化后的值为

     x = var*(max - min) + min  (若有常数A,则x = var*(max - min + 1) + min - 1)

  • 相关阅读:
    Python全栈之路-Day40
    Python全栈之路-Day39
    Python全栈之路-Day38
    Python全栈之路-Day37
    Python全栈之路-Day36
    Python全栈之路-Day34
    Python全栈之路-Day33
    Python全栈之路-Day32
    深入理解urllib、urllib2及requests
    win10中的vmware桥接模式异常,不能设置同网段ip
  • 原文地址:https://www.cnblogs.com/shuaishuaidefeizhu/p/6832351.html
Copyright © 2020-2023  润新知