bp神经网络输出值的计算_bp神经网络参数个数

2025-03-30 17:48 - 立有生活网

一道多层神经网络的计算题,请问该如何计算?

BP神经网络,指的是用了“BP算法”进行训练的“多层感知器模型”。 多层感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上,可以解决任何线性不可分问题。 不要把算法和网络搞混了。

bp神经网络输出值的计算_bp神经网络参数个数bp神经网络输出值的计算_bp神经网络参数个数


bp神经网络输出值的计算_bp神经网络参数个数


bp神经网络输出值的计算_bp神经网络参数个数


BP神经网络

神经网络能很好地解决不同的机器学习问题。神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。

上图显示了人工神经网络是一个分层模型,逻辑上可以分为三层:

输入层 :输入层接收特征向量 x

输出层 :输出层产出终的预测 h

隐含层 :隐含层介于输入层与输出层之间,之所以称之为隐含层,是因为当中产生的值并不像输入层使用的样本矩阵 X或者输出层用到的标签矩阵 y 那样直接可见。

下面引入一些标记法来帮助描述模型:

!$ a^{(j)}_{i} $ 代表第j层的第i个激活单元。 !$ theta^{(j)} $ 代表从第 j 层映射到第 j+1 层时的权重的矩阵,例如 !$ theta^{(1)} $ 代表从层映射到第二层的权重的矩阵。其尺寸为:以第 j+1层的激活单元数量为行数,以第 j 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中 !$ theta^{(1)} $ 的尺寸为 34。

对于上图所示的模型,激活单元和输出分别表达为:

!$ a^{(2)}_{1} = g( theta^{(1)}_{10}x_0 + theta^{(1)}_{11}x_1 + theta^{(1)}_{12}x_2 + theta^{(1)}_{13}x_3 ) $

!$a^{(2)}_{2} = g( theta^{(1)}_{20}x_0 + theta^{(1)}_{21}x_1 + theta^{(1)}_{22}x_2 + theta^{(1)}_{23}x_3 ) $

!$a^{(2)}_{3} = g( theta^{(1)}_{30}x_0 + theta^{(1)}_{31}x_1 + theta^{(1)}_{32}x_2 + theta^{(1)}_{33}x_3 ) $

!$h_{theta}{(x)} = g( theta^{(2)}_{10}a^{2}_{0} + theta^{(2)}_{11}a^{2}_{1} + theta^{(2)}_{12}a^{2}_{2} + theta^{(2)}_{13}a^{2}_{3} ) $

下面用向量化的方法以上面的神经网络为例,试着计算第二层的值:

对于多类分类问题来说:

我们可将神经网络的分类定义为两种情况:二类分类和多类分类。

二类分类: !$ S_{L} = 0,y = 0,y = 1$

多类分类: !$ S_{L} = k, y_{i} = 1表示分到第i类;(k>2)$

在神经网络中,我们可以有很多输出变量,我们的 !$h_{theta}{(x)} $ 是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为: !$ h_{theta}{(x)} in R^{K}(h_{theta}{(x)})_{i} = i^{th} output$

我们希望通过代价函数来观察算法预测的结果与真实情况的误有多大,不同的是,对于每一行特征,我们都会给出K个预测,基本上我们可以利用循环,对每一行特征都预测K个不同结果,然后在利用循环在K个预测中选择可能性的一个,将其与y中的实际数据进行比较。

正则化的那一项只是排除了每一层 !$theta_0$ 后,每一层的 矩阵的和。里层的循环j循环所有的行(由 +1 层的激活单元数决定),循环i则循环所有的列,由该层( !$ s_l$ 层)的激活单元数所决定。即: !$h_{theta}{(x)}$ 与真实值之间的距离为每个样本-每个类输出的加和,对参数进行 regularization 的 bias 项处理所有参数的平方和。

由于神经网络允许多个隐含层,即各层的神经元都会产出预测,因此,就不能直接利用传统回归问题的梯度下降法来小化 !$J(theta)$ ,而需要逐层考虑预测误,并且逐层优化。为此,在多层神经网络中,使用反向传播算法(Backpropagation Algorithm)来优化预测,首先定义各层的预测误为向量 !$ δ^{(l)} $

训练过程:

当我们对一个较为复杂的模型(例如神经网络)使用梯度下降算法时,可能会存在一些不容易察觉的错误,意味着,虽然代价看上去在不断减小,但终的结果可能并不是解。

为了避免这样的问题,我们采取一种叫做梯度的数值检验( Numerical Gradient Checking )方法。这种方法的思想是通过估计梯度值来检验我们计算的导数值是否真的是我们要求的。

对梯度的估计采用的方法是在代价函数上沿着切线的方向选择离两个非常近的点然后计算两个点的平均值用以估计梯度。即对于某个特定的 ,我们计算出在 !$theta - epsilon$ 处和 !$theta + epsilon$ 的代价值(是一个非常小的值,通常选取 0.001),然后求两个代价的平均,用以估计在 !$theta$ 处的代价值。

当 !$theta$ 是一个向量时,我们则需要对偏导数进行检验。因为代价函数的偏导数检验只针对一个参数的改变进行检验,下面是一个只针对 !$theta_1$ 进行检验的示例:

如果上式成立,则证明网络中BP算法有效,此时关闭梯度校验算法(因为梯度的近似计算效率很慢),继续网络的训练过程。

matlab 实现BP神经网络 怎样根据隐含层和输入层的权值阈值得到输入到输出的计算公式

训练好的权值、阈值的输出方法是:

输入到隐层权值:

w1=net.iw

隐层阈值:

theta1=net.b

隐层到输出层权值:

w2=net.lw;

输出层阈值:

theta2=net.b

这是我常逛的,你有兴趣的可以看一下。

神经网络——BP算法

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义。

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,Did Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次具有决定性意义。

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括近炙手可热的深度学习概念下的卷积神经网络(s)。

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

BP算法全称叫作误反向传播(error Back Propagation,或者也叫作误逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误,将误反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

BP算法中核心的数学工具就是微积分的 链式求导法则 。

BP算法的缺点,首当其冲就是局部极小值问题。

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

[1]、《BP算法的哲学思考》,成素梅、郝中华著

[2]、《机器学习》,周志华著

[3]、 Deep Learning论文笔记之(四)卷积神经网络推导和实现

2016-05-13 次发布

2016-06-04 较大幅度修改,完善推导过程,修改文章名

2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误

在三层bp神经网络中,如果知道输入层的值和各个神经元的权值,怎么求输出层的值?

你可以用MATLAB求解,先把输入层的值归一化处理,然后选择适当的激活函数,试试看隐含层S型正切,输入层S型对数,还是matlab好用,编程也简单。

你得看你怎么布置的神经网络吧,一般情况用输入层各个神经元的值乘以相应的权值求和(或其他)的值送入一个函数(看你设置的是什么)终给出结果

流血狗怎么打 深渊流血狗怎么打

狗狗流血怎么办 在处理狗狗打架导致舌头被咬破的情况时,保持冷静是非常重要的。及时清洁伤口、止血和消毒,并使用鲜本芦荟胶来促进伤口愈合是有效的方法。如果情况或无法控制,请及时就···

离我最近的散打培训班在哪里_离我最近的散打

韶关什么地方还有学散打的 云强武术馆 离我最近的散打培训班在哪里_离我最近的散打培训班在哪里啊 离我最近的散打培训班在哪里_离我最近的散打培训班在哪里啊 设施:擂台 沙包等等都2、文化···

朝阳区体育局_朝阳区体育局冯长林

怎么转让朝阳公司营业执照,海淀营业执照,丰台营业执照,通州营业执照,大兴营业执照? (5)比分打到5:5,2.胜1盘6:6,7:7,8:8……时,需连胜两分才能决定谁为胜方。但在记分表上则统···