IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 神经网络与BP反向传播 -> 正文阅读

[人工智能]神经网络与BP反向传播

BP的思路:

使用每一个结点的输出去求梯度更新到达这个结点的权值,如下图 使用h1的输出和h2的输出求梯度,去更新i1的w1和w2, b1参数 也就是用h1这一层的输出去计算梯度更新第一层的权重,使用o1这一层网络的所有输出计算梯度,更新第二层参数。

1.首先用随机初始化w矩阵(或者其他初始化方式),用这个w和输入数据x作矩阵运算,得到隐藏层输出和输出层的输出值,? 前向传播完成

2. 之后计算损失值, 利用这个损失值去更新输出层参数w和b, 隐藏层每个结点梯度用下面方法,??????????????????????????????? ???????????

解释隐层的梯度计算方法: 如下图, 计算o1的梯度是将o1和o2的损失加起来,求导得到梯度,但是h1的梯度等于o1对h1求导 + o2对h1求导? ,因为h1有两个输出都会影响h1的梯度。

3. 使用梯度下降算法迭代更新网络中的w和b值,最终训练结束得到的w和b值就是我们想要的模型.

公式:???z = w T * x + b?????? a = sigmoid( z )?????? J(w,b)=(1/2)*(a-y)^2????? w1 := w1 - α * dw1

现在要计算J对w的导数,根据链式法则,?????????????????????????????????????????????????????????????????????????????????????? 1. 先用J对预测值a求偏导, 导数等于= (1/2)*(a-y)^2??? 对a求偏导,? 等于=a-y ???????????????????????????? 2. 用a对z也就是激活函数求偏导,?? 就是求sigmoid(z)对z求导数, 导数等于=激活函数的导数??????? 3. 用z再对w求偏导,导数等等于w T * x + b 对w求偏导,????????????????????????????????????????????????????????????? 最后,三个导数相乘,根据链式法则,就得到了 J对w的导数.

隐藏层的求导过程:? 1.使用输出的得到的损失J, 用J和h1的输出a求导,(若隐层的下一层有多个神经元,则该神经元的输出等于下一层每个神经元的输入之和,即J对a求偏导,要将该神经元的所有输出分别求偏导累加) ? 之后h1的输出a再对z求偏导, 3. z在对h1的w求偏导,三个导数相乘就得到了隐层之间求导关系。

吴恩达老师的求导过程:

激活函数以及对应的导数

1.感知器: 是模仿神经元,对于多个输入节点,{xi | i=1,2,3....}对应一个输出结点y,每一个输入xi乘以相应的连续权重wi,然后累加得到输出。

神经元运算:

?

下面是搬运:反向传播——通俗易懂_chengchaowei的博客-CSDN博客_反向传播
?

向看明白下面的BP,就要搞清楚net1, o1代表的是什么。

Step 1 前向传播

  1.输入层---->隐含层:

  计算神经元h1的输入加权和:

神经元h1的输出o1:(此处用到激活函数为sigmoid函数):

  同理,可计算出神经元h2的输出o2:

  

  2.隐含层---->输出层:

  计算输出层神经元o1和o2的值:

  

这样前向传播的过程就结束了,我们得到输出值为[0.75136079 , 0.772928465],与实际值[0.01 , 0.99]相差还很远,现在我们对误差进行反向传播,更新权值,重新计算输出。

Step 2 反向传播

1.计算总误差

总误差:(square error)

但是有两个输出,所以分别计算o1和o2的误差,总误差为两者之和:

2.隐含层---->输出层的权值更新:

以权重参数w5为例,如果我们想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则)

下面的图可以更直观的看清楚误差是怎样反向传播的:

现在我们来分别计算每个式子的值:

计算

计算

(这一步实际上就是对sigmoid函数求导,比较简单,可以自己推导一下)

计算

最后三者相乘:

这样我们就计算出整体误差E(total)对w5的偏导值。

回过头来再看看上面的公式,我们发现:

为了表达方便,用来表示输出层的误差:

因此,整体误差E(total)对w5的偏导公式可以写成:

如果输出层误差计为负的话,也可以写成:

最后我们来更新w5的值:

(其中,是学习速率,这里我们取0.5)

同理,可更新w6,w7,w8:

3.隐含层---->隐含层的权值更新:

 方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算

计算:? 这里的分子表示的是h1结点的总输出值, 不是输出层的 J(w,b)值。

先计算

Eo1对net求导看成是输出对a值求导,? net对outh1求导看成是对激活函数求导

下图,0.74136507是损失J(w,b)=(1/2)*(a-y)^2,? 是J 对a求导???

下图的0.186815602是把z值代入得到激活函数sigmoid(z)的导数值,

同理,计算出:

          

两者相加得到总值:

再计算:? 这是激活函数求导。

再计算:?? 这是 z=w*x+b对w求导

最后,三者相乘:

?为了简化公式,用sigma(h1)表示隐含层单元h1的误差:

最后,更新w1的权值:

同理,额可更新w2,w3,w4的权值:

  这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代,在这个例子中第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。

数据特征对学习的影响:??

?1.一般而言, 机器学习中特征越多, 给出信息 就越多, 识别准确性会得到提升;

2.但特征多, 计算复杂度增加, 探索的空间就大???

3.如果有对分类无益的特征, 反而可能干扰学习效果。

? 结论: 特征不一定越多越好, 获得好的特征 是识别成功的关键。 需要有多少个特征, 需要学习问题本身来决定。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 15:52:28  更:2021-11-15 15:54:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 7:51:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码