训练神经网络添加

Fle*_*seo 22 neural-network

我需要训练一个网络来增加或增加2个输入,但是在20000次迭代之后,它似乎并不适合所有点.更具体地说,我在整个数据集上训练它并且它在最后几点很接近,但似乎对第一个端点没有任何好处.我规范化数据,使其介于-0.8和0.8之间.网络本身由2个输入3个隐藏神经元和1个输出神经元组成.我还将网络的学习率设置为0.25,并将其用作学习函数tanh(x).

对于在数据集中最后训练的点,它非常接近,但对于第一点,它似乎不能很好地近似.我不知道它是什么,它无法帮助它调整好,无论是我正在使用的拓扑还是其他什么?

此网络的隐藏层中有多少神经元适合?

Ark*_*kun 9

由权重= {1,1},偏差= 0和线性激活函数的单个神经元组成的网络执行两个输入数的相加.

乘法可能更难.以下是网络可以使用的两种方法:

  1. 将其中一个数字转换为数字(例如,二进制)并执行乘法,就像在小学一样.a*b = a*(b0*2^0 + b1*2^1 + ... + bk*2^k) = a*b0*2^0 + a*b1*2^1 + ... + a*bk*2^k.这种方法很简单,但需要与输入的长度(对数)成比例的可变数量的神经元b.
  2. 取输入的对数,添加它们并对结果取幂.a*b = exp(ln(a) + ln(b))该网络可以处理任何长度的数字,只要它可以足够接近对数和指数.


hzi*_*oun 7

可能为时已晚,但一个简单的解决方案是使用RNN(回归神经网络).

RNN SUM两个数字

将数字转换为数字后,您的NN将从左到右的数字序列中取几个数字.

RNN必须循环其输出之一,以便它可以自动理解有一个数字要携带(如果总和为2,则写入0并携带1).

要训​​练它,你需要给它输入由两个数字组成的输入(一个来自第一个数字,第二个来自第二个数字)和所需的输出.RNN最终会找到如何做到这一点.

请注意,此RNN只需知道以下8个案例即可学习如何将两个数字相加:

  • 带进位的1 + 1,0 + 0,1 + 0,0 + 1
  • 1 + 1,0 + 0,1 + 0,0 + 1无进位


reg*_*fry -3

想象一下,如果用tanh(x)x 的线性函数(称之为)替换阈值函数a.x,并将其视为a每个神经元中唯一的学习参数,会发生什么。这实际上就是您的网络将要优化的目标;它是函数过零的近似值tanh

现在,当你对这种线性类型的神经元进行分层时会发生什么?当脉冲从输入到输出时,将每个神经元的输出相乘。您正在尝试用一组乘法来近似加法。正如他们所说,这不能计算。

  • 我认为你的数学有问题。如果没有非线性激活函数,多层人工神经网络就会分解为单层人工神经网络,而单层人工神经网络又只是将输入向量乘以权重矩阵。每个输出只是输入的加权*和*。具有“1”权重和 0 偏差的单个神经元/感知器对两个输入求和。 (5认同)