导航:首页 > 网络设置 > 神经网络的权重大小多少合适

神经网络的权重大小多少合适

发布时间:2025-01-21 17:38:07

⑴ 神经网络权值怎么确定

神经网络的权值是通过对网络的训练得到的。如果使用MATLAB的话不要自己设定,newff之后会自动赋值。也可以手动:net.IW{}= ; net.bias{}=。一般来说输入归一化,那么w和b取0-1的随机数就行。神经网络的权值确定的目的是为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。

参数初始化要满足两个必要条件:

1、各个激活层不会出现饱和现象,比如对于sigmoid激活函数,初始化值不能太大或太小,导致陷入其饱和区。

2、各个激活值不为0,如果激活层输出为零,也就是下一层卷积层的输入为零,所以这个卷积层对权值求偏导为零,从而导致梯度为0。

(1)神经网络的权重大小多少合适扩展阅读:

神经网络和权值的关系。

在训练智能体执行任务时,会选择一个典型的神经网络框架,并相信它有潜力为这个任务编码特定的策略。注意这里只是有潜力,还要学习权重参数,才能将这种潜力变化为能力。

受到自然界早成行为及先天能力的启发,在这项工作中,研究者构建了一个能自然执行给定任务的神经网络。也就是说,找到一个先天的神经网络架构,然后只需要随机初始化的权值就能执行任务。研究者表示,这种不用学习参数的神经网络架构在强化学习与监督学习都有很好的表现。

其实如果想象神经网络架构提供的就是一个圈,那么常规学习权值就是找到一个最优点(或最优参数解)。但是对于不用学习权重的神经网络,它就相当于引入了一个非常强的归纳偏置,以至于,整个架构偏置到能直接解决某个问题。

但是对于不用学习权重的神经网络,它相当于不停地特化架构,或者说降低模型方差。这样,当架构越来越小而只包含最优解时,随机化的权值也就能解决实际问题了。如研究者那样从小架构到大架构搜索也是可行的,只要架构能正好将最优解包围住就行了。

⑵ 研究人工神经网络的权值分布有什么意义

神经网络一般都是非常庞大的,每个边对应一个权值,如果权值不共享的话,数据量就更大了,但是为了提高效率,引入了权值共享,但是还不够,想再次提高效率和精确度,进行主成分分析,把一些重要的权重保留,不重要的舍弃,你这个权值分布就很有意义了,比如权重是5的权值在概率上占到了百分之95,或者说主成分分析的结果前2类权重就占据了百分之80,那么剩下的权值就可以省略,当然这都是理论上的

⑶ 神经网络超参数选择

深度学习模型通常由随机梯度下降算法进行训练。随机梯度下降算法有许多变形:例如 Adam、RMSProp、Adagrad 等等。这些算法都需要你设置学习率。学习率决定了在一个小批量(mini-batch)中权重在梯度方向要移动多远。

如果学习率很低,训练会变得更加可靠,但是优化会耗费较长的时间,因为朝向损失函数最小值的每个步长很小。
如果学习率很高,训练可能根本不会收敛,损失函数一直处于波动中,甚至会发散。权重的改变量可能非常大,使得优化越过最小值,使得损失函数变得更糟。

训练应当从相对较大的学习率开始。这是因为在开始时,初始的随机权重远离最优值。在训练过程中,学习率应当下降,以允许细粒度的权重更新。

参考: https://www.jiqixin.com/articles/2017-11-17-2

批次大小是每一次训练神经网络送入模型的样本数。在 合理的范围之内 ,越大的 batch size 使下降方向越准确,震荡越小,通常取值为[16,32,64,128]。

Batch_Size=全部数据集 缺点:
1) 随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。
2) 以 Rprop 的方式迭代,会由于各个 Batch 之间的采样差异性,各次梯度修正值相互抵消,无法修正。
Batch_Size = 1 缺点:
使用在线学习,每次修正方向以各自样本的梯度方向修正,横冲直撞各自为政,难以达到收敛。

在合理范围内,增大 Batch_Size 有何好处?
1) 内存利用率提高了,大矩阵乘法的并行化效率提高。
2) 跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。
3) 在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

盲目增大 Batch_Size 有何坏处?
1) 内存利用率提高了,但是内存容量可能撑不住了。
2) 跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
3) Batch_Size 增大到一定程度,其确定的下降方向已经基本不再变化。

参考: https://blog.csdn.net/juronghui/article/details/78612653

迭代次数是指整个训练集输入到神经网络进行训练的次数,当测试错误率和训练错误率相差较小,且测试准确率趋于稳定时(达到最优),可认为当前迭代次数合适;当测试错误率先变小后变大时则说明迭代次数过大了,需要减小迭代次数,否则容易出现过拟合。

用激活函数给神经网络加入一些非线性因素,使得网络可以更好地解决较为复杂的问题。参考: https://blog.csdn.net/tyhj_sf/article/details/79932893

它能够把输入的连续实值变换为0和1之间的输出。
缺点:
1) 在深度神经网络中梯度反向传递时导致梯度爆炸和梯度消失,其中梯度爆炸发生的概率非常小,而梯度消失发生的概率比较大。
2) Sigmoid 的 output 不是0均值,使得收敛缓慢。batch的输入能缓解这个问题。

它解决了Sigmoid函数的不是zero-centered输出问题,然而梯度消失的问题和幂运算的问题仍然存在。
tanh函数具有中心对称性,适合于有对称性的二分类

虽然简单,但却是近几年的重要成果,有以下几大优点:
1) 解决了梯度消散问题 (在正区间)
2)计算速度非常快,只需要判断输入是否大于0
3)收敛速度远快于sigmoid和tanh
ReLU也有几个需要特别注意的问题:
1)ReLU的输出不是zero-centered
2)Dead ReLU Problem,指的是某些神经元可能永远不会被激活,导致相应的参数永远不能被更新。有两个主要原因可能导致这种情况产生: (1) 非常不幸的参数初始化,这种情况比较少见 (2) learning rate太高导致在训练过程中参数更新太大,不幸使网络进入这种状态。解决方法是可以采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。

为了解决Dead ReLU Problem,提出了将ReLU的前半段设为 αx 而非 0 ,如 PReLU 。

1)深度学习往往需要大量时间来处理大量数据,模型的收敛速度是尤为重要的。所以,总体上来讲,训练深度学习网络尽量使用zero-centered数据 (可以经过数据预处理实现) 和zero-centered输出。所以要尽量选择输出具有zero-centered特点的激活函数以加快模型的收敛速度。
2)如果使用 ReLU,那么一定要小心设置 learning rate,而且要注意不要让网络出现很多 “dead” 神经元,如果这个问题不好解决,那么可以试试 Leaky ReLU、PReLU 或者 Maxout.
3)最好不要用 sigmoid,你可以试试 tanh,不过可以预期它的效果会比不上 ReLU 和 Maxout.

公式: https://www.cnblogs.com/xiaobingqianrui/p/10756046.html
优化器比较: https://blog.csdn.net/weixin_40170902/article/details/80092628

⑷ 神经网络—前馈网络(feedforward network)

神经网络解决的问题是存在已知输入和输出,但决定输入与输出关系的函数未知。通过神经网络训练,最终得出输入与输出之间的函数关系,使机器具备了归纳和推广能力。例如,对于函数y=ax,其中x和y已知,系数a未知,神经网络的任务就是通过不断训练找到最合适的a值,使得函数关系确定。无论输入任何x值,都能得到准确的y输出。

前馈网络主要由以下部分组成:神经元、神经细胞层和整个神经网络。

神经元由输入数量和权重向量组成。输入数量决定了神经元接收多少个输入。初始化时,将输入数量的随机数(-1,1之间)作为权重。神经元构造函数如下:

SNeuron::SNeuron(int input)初始化神经元,input+1作为输入数量,为的是包含一个固定的权重值作为阈值。

神经细胞层由多个神经元组成。构造函数如下:

SNeuronLayer::SNeuronLayer(int neuron, int inputperneuron)创建神经细胞层,参数neuron为神经元数量,inputperneuron为每个神经元接收的输入数量。

整个神经网络由多个神经细胞层组成,构造函数如下:

CNeuralNet::CreateNet()根据是否包含隐藏层,创建相应的网络结构。

神经网络的权重设置和获取分别由CNeuralNet::PutWeights(vector& weights)和CNeuralNet::GetWeight() const函数实现。

神经网络的核心计算由CNeuralNet::Update(vector& input)函数完成。此函数通过迭代更新网络各层神经元的输出,实现输入与输出之间的计算。

神经网络通过上述结构和函数,实现了复杂问题的求解能力,具备了强大的学习和推广能力。

⑸ 神经网络算法

20 世纪五、六⼗年代,科学家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影响,发明了感知机(Perceptrons)。

⼀个感知器接受⼏个⼆进制输⼊, ,并产⽣⼀个⼆进制输出:

如上图所示的感知机有三个输⼊: 。通常可以有更多或更少输⼊。 我们再引⼊权重: ,衡量输入对输出的重要性。感知机的输出为0 或者 1,则由分配权重后的总和 ⼩于等于或者⼤于阈值决定。和权重⼀样,阈值(threshold)是⼀个实数,⼀个神经元的参数。⽤更精确的代数形式如下:

给三个因素设置权重来作出决定:

可以把这三个因素对应地⽤⼆进制变量 来表⽰。例如,如果天⽓好,我们把

,如果不好, 。类似地,如果你的朋友陪你去, ,否则 。 也类似。

这三个对于可能对你来说,“电影好不好看”对你来说最重要,而天气显得不是那么的重要。所以你会这样分配权值: ,然后定义阈值threshold=5。

现在,你可以使⽤感知器来给这种决策建⽴数学模型。

例如:

随着权重和阈值的变化,你可以得到不同的决策模型。很明显,感知机不是⼈做出决策使⽤的全部模型。但是这个例⼦说明了⼀个感知机如何能权衡不同的依据来决策。这看上去也可以⼤致解释⼀个感知机⽹络有时确实能够做出一些不错的决定。

现在我们队上面的结构做一点变化,令b=-threshold,即把阈值移到不等号左边,变成偏置, 那么感知器的规则可以重写为:

引⼊偏置只是我们描述感知器的⼀个很⼩的变动,但是我们后⾯会看到它引导更进⼀步的符号简化。因此,我们不再⽤阈值,⽽总是使⽤偏置。

感知机是首个可以学习的人工神经网络,它的出现引起的神经网络的第一层高潮。需要指出的是,感知机只能做简单的线性分类任务,而且Minsky在1969年出版的《Perceptron》书中,证明了感知机对XOR(异或)这样的问题都无法解决。但是感知机的提出,对神经网络的发展是具有重要意义的。

通过上面的感知机的观察我们发现一个问题,每个感知机的输出只有0和1,这就意味着有时我们只是在单个感知机上稍微修改了一点点权值w或者偏置b,就可能造成最终输出完全的反转。也就是说,感知机的输出是一个阶跃函数。如下图所示,在0附近的时候,输出的变化是非常明显的,而在远离0的地方,我们可能调整好久参数也不会发生输出的变化。

这样阶跃的跳变并不是我们想要的,我们需要的是当我们队权值w或者偏置b做出微小的调整后,输出也相应的发生微小的改变芹则禅。这同时也意味值我们的输出不再只是0和1,还可以输出小数。由此我们引入了S型神经元。

S型神经元使用 S 型函数,也叫Sigmoid function函数,我们用它作为激活函数。其表达式如下:

图像如下图所示:

利⽤实际的 σ 函数,我们得到⼀个,就像上⾯说明的,平滑的感知器。 σ 函数的平滑特性,正是关键因素,⽽不是其细部形式盯明。 σ 的平滑意味着权重和偏置的微⼩变化,即 ∆w 和 ∆b,会从神经元产⽣⼀个微⼩的输出变化 ∆output。实际上,微积分告诉我们

∆output 可以很好地近似表⽰为:

上面的式子是⼀个反映权重、偏置变化嫌尘和输出变化的线性函数。这⼀线性使得我们可以通过选择权重和偏置的微⼩变化来达到输出的微⼩变化。所以当 S 型神经元和感知器本质上是相同的,但S型神经元在计算处理如何变化权重和偏置来使输出变化的时候会更加容易。

有了对S型神经元的了解,我们就可以介绍神经网络的基本结构了。具体如下:

在⽹络中最左边的称为输⼊层,其中的神经元称为输⼊神经元。最右边的,即输出层包含有输出神经元,在图中,输出层只有⼀个神经元。中间层,既然这层中的神经元既不是输⼊也不是输出,则被称为隐藏层。

这就是神经网络的基本结构,随着后面的发展神经网络的层数也随之不断增加和复杂。

我们回顾一下神经网络发展的历程。神经网络的发展历史曲折荡漾,既有被人捧上天的时刻,也有摔落在街头无人问津的时段,中间经历了数次大起大落。

从单层神经网络(感知机)开始,到包含一个隐藏层的两层神经网络,再到多层的深度神经网络,一共有三次兴起过程。详见下图。

我们希望有⼀个算法,能让我们找到权重和偏置,以⾄于⽹络的输出 y(x) 能够拟合所有的 训练输⼊ x。为了量化我们如何实现这个⽬标,我们定义⼀个代价函数:

这⾥ w 表⽰所有的⽹络中权重的集合, b 是所有的偏置, n 是训练输⼊数据的个数,
a 是表⽰当输⼊为 x 时输出的向量,求和则是在总的训练输⼊ x 上进⾏的。当然,输出 a 取决于 x, w和 b,但是为了保持符号的简洁性,我没有明确地指出这种依赖关系。符号 ∥v∥ 是指向量 v 的模。我们把 C 称为⼆次代价函数;有时也称被称为均⽅误差或者 MSE。观察⼆次代价函数的形式我们可以看到 C(w, b) 是⾮负的,因为求和公式中的每⼀项都是⾮负的。此外,代价函数 C(w,b)的值相当⼩,即 C(w; b) ≈ 0,精确地说,是当对于所有的训练输⼊ x, y(x) 接近于输出 a 时。因

此如果我们的学习算法能找到合适的权重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,当 C(w; b) 很⼤时就不怎么好了,那意味着对于⼤量地输⼊, y(x) 与输出 a 相差很⼤。因此我们的训练算法的⽬的,是最⼩化权重和偏置的代价函数 C(w; b)。换句话说,我们想要找到⼀系列能让代价尽可能⼩的权重和偏置。我们将采⽤称为梯度下降的算法来达到这个⽬的。

下面我们将代价函数简化为C(v)。它可以是任意的多元实值函数, 。
注意我们⽤ v 代替了 w 和 b 以强调它可能是任意的函数,我们现在先不局限于神经⽹络的环境。

为了使问题更加简单我们先考虑两个变量的情况,想象 C 是⼀个只有两个变量 和 的函数,我们的目的是找到 和 使得C最小。

如上图所示,我们的目的就是找到局部最小值。对于这样的一个问题,一种方法就是通过微积分的方法来解决,我们可以通过计算导数来求解C的极值点。但是对于神经网络来说,我们往往面对的是非常道的权值和偏置,也就是说v的维数不只是两维,有可能是亿万维的。对于一个高维的函数C(v)求导数几乎是不可能的。

在这种情况下,有人提出了一个有趣的算法。想象一下一个小球从山顶滚下山谷的过程, 我们的⽇常经验告诉我们这个球最终会滚到⾕底。我们先暂时忽略相关的物理定理, 对球体的⾁眼观察是为了激发我们的想象⽽不是束缚我们的思维。因此与其陷进物理学⾥凌乱的细节,不如我们就这样问⾃⼰:如果我们扮演⼀天的上帝,能够构造⾃⼰的物理定律,能够⽀配球体可以如何滚动,那么我们将会采取什么样的运动学定律来让球体能够总是滚落到⾕底呢?

为了更精确地描述这个问题,让我们思考⼀下,当我们在 和 ⽅向分别将球体移动⼀个很⼩的量,即 ∆ 和 ∆ 时,球体将会发⽣什么情况。微积分告诉我们 C 将会有如下变化:

也可以用向量表示为

现在我们的问题就转换为不断寻找一个小于0的∆C,使得C+∆C不断变小。

假设我们选取:

这⾥的 η 是个很⼩的正数(称为学习速率),于是

由于 ∥∇C∥2 ≥ 0,这保证了 ∆C ≤ 0,即,如果我们按照上述⽅程的规则去改变 v,那么 C
会⼀直减⼩,不会增加。

所以我们可以通过不断改变v来C的值不断下降,是小球滚到最低点。

总结⼀下,梯度下降算法⼯作的⽅式就是重复计算梯度 ∇C,然后沿着相反的⽅向移动,沿着⼭⾕“滚落”。我们可以想象它像这样:

为了使梯度下降能够正确地运⾏,我们需要选择合适的学习速率η,确保C不断减少,直到找到最小值。

知道了两个变量的函数 C 的梯度下降方法,我们可以很容易的把它推广到多维。我们假设 C 是⼀个有 m 个变量 的多元函数。 ∆C 将会变为:

其中, ∇C为

∆v为:

更新规则为:

在回到神经网络中,w和b的更新规则为:

前面提到神经⽹络如何使⽤梯度下降算法来学习他们⾃⾝的权重和偏置。但是,这⾥还留下了⼀个问题:我们并没有讨论如何计算代价函数的梯度。这里就需要用到一个非常重要的算法:反向传播算法(backpropagation)。

反向传播算法的启示是数学中的链式法则。

四个方程:

输出层误差方程:

当前层误差方程:

误差方程关于偏置的关系:

误差方程关于权值的关系

算法描述:

检视这个算法,你可以看到为何它被称作反向传播。我们从最后⼀层开始向后计算误差向量δ。这看起来有点奇怪,为何要从后⾯开始。但是如果你认真思考反向传播的证明,这种反向移动其实是代价函数是⽹络输出的函数的结果。为了理解代价随前⾯层的权重和偏置变化的规律,我们需要重复作⽤链式法则,反向地获得需要的表达式。

参考链接: http://neuralnetworksanddeeplearning.com/

⑹ 绁炵粡缃戠粶瓒呭弬鏁伴夋嫨

1銆佹墍浠ヨ佸敖閲忛夋嫨杈揿嚭鍏锋湁zero-centered鐗圭偣镄勬縺娲诲嚱鏁颁互锷犲揩妯″瀷镄勬敹鏁涢熷害銆

2銆佹瘆濡傚湪BP绁炵粡缃戠粶涓锛屽叾鐩镄勪富瑕佷负浜嗛夋嫨妯″瀷镄勫眰鏁般佺炵粡鍏幂殑婵娲诲嚱鏁般佹疮灞傛ā鍨嬬殑绁炵粡鍏冧釜鏁(鍗虫墍璋撶殑瓒呭弬鏁)锛屾疮涓灞傜绣缁灭炵粡鍏冭繛鎺ョ殑链缁堟潈閲嶆槸鍦ㄦā鍨嬮夋嫨(鍗矺鎶树氦鍙夐獙璇)涔嫔悗锛岀敱鍏ㄩ儴镄勮缁冩暟鎹閲嶆柊璁缁冦

3銆侀夊彇璁缁幂炵粡缃戠粶镞跺厛阃夊ソbatchsize锛屽啀璋冨叾浠栫殑瓒呭弬鏁般傚苟涓斿疄璺典笂𨱒ヨ达纴灏变袱涓铡熷垯钬斺攂atchsize鍒澶灏忥纴涔熷埆澶澶э纴鍏朵粬閮借屻傚洜涓哄悎阃傜殑batchsize锣冨洿鍜岃缁冩暟鎹瑙勬ā銆佺炵粡缃戠粶灞傛暟銆佸崟鍏冩暟閮芥病链夋樉镢楃殑鍏崇郴銆

4銆佷綋绯荤粨鏋勫拰瓒呭弬鏁扮殑阃夋嫨阆靛惊銆傚湪绗涓杞涓锛屽畾浣嶅櫒妯″瀷搴旂敤浜庡浘镀忎腑链澶-链灏忎腑蹇冩柟褰浣灭墿銆备綔鐗╃殑澶у皬璋冩暣鍒扮绣缁滆緭鍏ュぇ灏廼s220脳220銆傚崟娆¢氲繃杩欎釜缃戠粶锛屾垜浠灏卞彲浠ュ缑鍒颁笂锏句釜鍊欓夋棩链熸嗐

5銆佺劧钥岋纴DNN瓒呴珮镄勫嗳纭镐ф槸浠ヨ秴楂樼殑璁$畻澶嶆潅搴︿负浠d环镄勚傞氩父镒忎箟涓嬬殑璁$畻寮曟搸锛屽挨鍏舵槸GPU锛屾槸DNN镄勫熀纭銆

6銆侀拡瀵笲P绁炵粡缃戠粶锲炲綊杩囨嫙钖堥梾棰桡纴寤鸿灏濊瘯浣跨敤L1姝e垯鍖栧拰dropout鏂规硶𨱒ヨВ鍐炽傚傛灉闇瑕佽繘琛岀壒寰侀夋嫨锛屽垯鍙浠ヤ娇鐢↙1姝e垯鍖栥傚傛灉闇瑕佹彁楂樼绣缁灭殑娉涘寲鑳藉姏锛屽垯鍙浠ヤ娇鐢╠ropout鏂规硶銆

阅读全文

与神经网络的权重大小多少合适相关的资料

热点内容
中国移动网络密钥重设 浏览:891
没有网络打哪个电话最好 浏览:13
地摊和网络哪个比较好 浏览:9
网络问卷一般多少钱 浏览:380
停电了笔记本如何有网络 浏览:161
苹果手表上的微信没有网络连接 浏览:627
移动网络通用应该怎样使用 浏览:401
网络教育客观题满分60多少合格 浏览:56
手机网络信号97d 浏览:435
55寸网络电视怎么接线 浏览:480
网络不能用怎么拨号 浏览:783
计算机网络中ppp名词解释 浏览:285
如何重启手机网络 浏览:946
苹果6s有信号没网络 浏览:8
美国网络安全就业 浏览:914
用黑苹果系统怎么连接网络 浏览:18
FS1130mfp设置网络 浏览:599
杭州语音网络电话软件 浏览:602
湖南网络营销培训 浏览:920
网络被骗转账最低多少立案 浏览:375

友情链接