作家
登录

神经网络中 BP 算法的原理与 Python 实现源码解析

作者: 来源: 2017-06-01 08:55:31 阅读 我要评论

比来这段时光体系性的进修了 BP 算法后写下了这篇进修标记,因为才能有限,如有明显缺点,还请斧正。

  什么是梯度降低和链式求导轨则

假设我们有一个函数 J(w),如下图所示。

梯度降低示意图

如今,我们请求当 w 等于什么的时刻,J(w) 可以或许取到最小值。大年夜图中我们知道最小值袈溱初始地位的左边,也就意味着如不雅想要使 J(w) 最小,w的值须要减小。而初始地位的切线的斜率a > 0(也即该地位对应的导数大年夜于0),w = w – a 就可以或许让 w 的值减小,轮回求导更新w直到 J(w) 取得最小值。如不雅函数J(w)包含多个变量,那么就要分别对不合变量求偏导来更新不合变量的值。

所谓的链式求导轨则,就是求复合函数的导数:

4. 避免 Overfitting 的 L1 和 L2正则化是什么。

  参考

链式求导轨则

链式求导的例子

  神经收集的构造

神经收集由三部分构成,分别是最左边的输入层,隐蔽层(实际应用中远远不止一层)和最右边的输出层。层与层之间用线连接在一路,每条连接线都有一个对应的权重值 w,除了输入层,一般来说每个神经元还有对应的偏置 b。

因为输出层的值与真实的值会存在误差,我们可以用均方误差来衡量猜测值和真实值之间的误差。

神经收集的构造图

除了输入层的神经元,每个神经元都邑有加权乞降获得的输入值 z 和将 z 经由过程 Sigmoid 函数(也等于激活函数)非线性转化后的输出值 a,他们之间的计算公式如下

l 和 l+1 层的神经元

神经元输出值 a 的计算公式

个中,公式琅绫擎的变量l和j表示的是第 l 层的第 j 个神经元,ij 则表示大年夜第 i 个神经元到第 j 个神经元之间的连线,w 表示的是权重,b 表示的是偏置,后面这些符号的含义大年夜体上与这琅绫氰述的类似,所以不会再解释。下面的 Gif 动图可以加倍清跋扈每个神经元输入输出值的计算方法(留意,这里的动图并没有加上偏置,但应用中都邑加上)

动图显示计算神经元输出值

放个例题,会加倍明白一点:

关于为什么线性函数模型表达才能不敷,可以点击这里查看知乎膳绫擎的评论辩论。

sigmoid 函数

可以看到 Sigmoid 函数的值域为 (0,1) ,若对于多分类义务,输出层的每个神经元可以表示是该分类的概率。当然还存在其他的激活函数,他们的用处和优缺点也都各别。

 1/8    1 2 3 4 5 6 下一页 尾页

  推荐阅读

  PHP底层的运行机制与原理解析

PHP说简单,然则要精晓也不是一件简单的事。我们除了会应用之外,还得知道它底层的工作道理。懂得PHP底层实现的目标是什么?动态说话要像用好起首得懂得它,内存治理、框架模型值得我们借鉴>>>详细阅读


本文标题:神经网络中 BP 算法的原理与 Python 实现源码解析

地址:http://www.17bianji.com/lsqh/35499.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)