您当前的位置: 首页 >  网络

韩曙亮

暂无认证

  • 2浏览

    0关注

    1068博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )

韩曙亮 发布时间:2020-04-27 08:21:04 ,浏览量:2

文章目录
        • I . 向后传播误差 简介
        • II . 输出层误差计算公式
        • III . 隐藏层层误差计算公式
        • IV . 使用误差更新 连接权值
        • V . 使用误差更新 单元偏置
        • VI . 反向传播 过程
        • VII . 损失函数 简介
        • VIII . 损失函数
        • IX . 损失函数 举例
        • X . 损失函数 优化过程

I . 向后传播误差 简介

1 . 后向传播误差 : 计算每层每个单元的误差 , 根据该误差更新 权值 和 偏置 设置 ;

2 . 计算误差的目的 : 使用计算出来的误差 , 更新单元连接的 权值 , 和 单元 本身的偏置 参数 , 用于实时反映出前向传播输入的误差 ;

II . 输出层误差计算公式

输出层误差计算 :

① 输出层单元 j j j , 误差计算公式 :

E r r j = O j ( 1 − O j ) ( T j − O j ) Err_j = O_j ( 1 - O_j ) ( T_j - O_j ) Errj​=Oj​(1−Oj​)(Tj​−Oj​)

O j O_j Oj​ 是单元 j j j 的输出 ;

T j T_j Tj​ 是样本分类的真实的属性值 , 取值 0 或 1 , 输出层每个单元的节点输出都是 0 或 1 , 如果分类有多个离散值 , 那么输出层使用多个节点表示这些分类 ;

② 公式来源 : 该公式来源于 损失函数 , 对损失函数进行求导 ;

III . 隐藏层层误差计算公式

隐藏层误差计算 :

E r r j = O j ( 1 − O j ) ( ∑ k = 1 n E r r k w j k ) Err_j = O_j ( 1 - O_j ) ( \sum_{k=1}^n Err_k w_{jk} ) Errj​=Oj​(1−Oj​)(k=1∑n​Errk​wjk​)

O j O_j Oj​ 是本层单元 j j j 的输出 ;

E r r k Err_k Errk​ 是下一层第 k k k 个单元的误差 ;

w j k w_{jk} wjk​ 是本单元 与 下一层第 k k k 个单元连接的 权值 ;

∑ k = 1 n E r r k w j k \sum_{k=1}^n Err_k w_{jk} ∑k=1n​Errk​wjk​ 是一个线性组合 , 本层的 j j j 单元 , 连接下一层的 n n n 个单元 , 计算下层每个节点的误差 E r r k Err_k Errk​ , 乘以连接的权值 w j k w_{jk} wjk​ , 再将多个下层节点的 E r r k w j k Err_k w_{jk} Errk​wjk​ 计算值累加 ;

IV . 使用误差更新 连接权值

1 . 计算误差的目的 : 使用计算出来的误差 , 更新单元连接的 权值 , 和 单元 本身的偏置 参数 , 用于实时反映出前向传播输入的误差 ;

2 . 权值更新公式 : 修改 单元 i i i 和 单元 j j j 连接的权值 , 注意连接方向是 单元 i i i 连接到单元 j j j , i i i 是 j j j 的前一层 ;

Δ w i j = ( l ) E r r j O i \Delta w_{ij} = (l) Err_j O_i Δwij​=(l)Errj​Oi​

w i j ′ = w i j + Δ w i j w_{ij}' = w_{ij} + \Delta w_{ij} wij′​=wij​+Δwij​

Δ w i j \Delta w_{ij} Δwij​ 是 单元 i i i 和 单元 j j j 的连接的权值的改变值 ;

l l l 是学习率 , 一般是 0.8 0.8 0.8 , 0.9 0.9 0.9 等 ( 0 , 1 ) (0,1) (0,1) 区间内的数值 ;

E r r j Err_j Errj​ 是单元 j j j 的误差 ;

O i O_i Oi​ 表示 单元 i i i 的输出 ;

E r r j O i Err_j O_i Errj​Oi​ 是通过求导得出的梯度 ;

w i j ′ w_{ij}' wij′​ 表示新的权值 ;

w i j w_{ij} wij​ 表示老的权值 ;

3 . 连接权值更新总结 : 该公式是梯度公式 , 后向传播算法是梯度下降算法 , 其权值更新是 旧的权值 , 加上权值的改变 , 计算出新的连接权值 ;

V . 使用误差更新 单元偏置

1 . 计算误差的目的 : 使用计算出来的误差 , 更新单元连接的 权值 , 和 单元 本身的偏置 参数 , 用于实时反映出前向传播输入的误差 ;

2 . 偏置更新公式 : 修改 单元 j j j 的偏置 ;

Δ θ j = ( l ) E r r j \Delta \theta_j = (l) Err_j Δθj​=(l)Errj​

θ ′ = θ j + Δ θ j \theta' = \theta_j + \Delta \theta_j θ′=θj​+Δθj​

Δ θ j \Delta \theta_j Δθj​ 是偏置的改变 ;

l l l 是学习率 , 一般是 0.8 0.8 0.8 , 0.9 0.9 0.9 等 ( 0 , 1 ) (0,1) (0,1) 区间内的数值 ;

E r r j Err_j Errj​ 是单元 j j j 的误差 ;

θ ′ \theta' θ′ 是新的偏置 ;

θ \theta θ 是老的偏置 ;

3 . 偏置更新总结 : 当前节点的误差 , 乘以学习率 , 就是偏置的改变 ; 旧的偏置值 , 加上偏置改变 , 可计算出新的偏置值 ;

VI . 反向传播 过程

1 . 权值 偏置 更新操作 : 先计算误差 , 然后根据误差计算 权值 和 偏置的改变值 , 再将原来的 权值 和 偏置 值 加上对应的改变值 , 计算出新的权值和偏置值 ;

2 . 反向传播的过程 : 将误差从后向前传播 , 根据误差 , 从后到前依次修改权值和偏置值 ;

① 向后传播误差本质 : 使用梯度下降方法 , 优化损失函数 , 使损失函数取最小值 , 在这个过程中 , 不停地迭代修改 单元连接权值 , 和 每个单元的偏置 ;

② 3 3 3 种梯度下降方法 : 随机梯度下降 , 批量梯度下降 , 小批量梯度下降方法 ;

③ 损失函数 : 类似于评分函数 ; 如 误差平方和 ;

④ 两个核心 : 首先 , 采用什么样的损失函数 , 其次 , 如何进行迭代修改 权值和偏置 ;

VII . 损失函数 简介

1 . 损失函数 作用 :

① 训练输出 : 神经网络 学习训练样本有一个输出输出 ;

② 样本实际值对应输出 : 数据集样本的真正的属性值对应的输出 , 0 0 0 或 1 1 1 ;

③ 引入损失函数 : 使用损失函数 计算 上述 训练输出 和 样本实际值对应输出 的差别 ;

④ 损失函数最小值 : 训练输出 和 样本实际值对应输出 的差别越小越好 , 因此损失函数进行优化时 , 损失函数的值越小越好 ;

2 . 损失函数优化 :

① 损失函数 优化过程 : 在优化使损失函数取最小值的过程 , 就是使对应的 单元连接权值 , 和 单元的偏置 , 等参数不断优化的过程 ;

② 损失函数最小值 与 最佳参数 : 最终损失函数最小值的状态的 权值 和 偏置就是 学习出的最佳参数值 ;

3 . 损失函数本质 : 损失函数 最小值 计算过程 , 就是通过 梯度下降方法 , 逐步迭代获取 最佳 权值 与 偏置过程 ;

VIII . 损失函数

1 . 损失函数作用 : 度量 预测结果 与 实际结果 差异 ;

① 神经网络学习训练目的 : 使 损失函数 取值最小 ;

② 损失函数要求 : 预测结果越好 , 损失越小 ;

2 . 损失函数选择 :

① 分布比较 : 比较的两个属性是 分布 , 那么使用 交叉熵 损失函数 ;

② 数值比较 : 如果是两个 数值属性 之间比较 , 使用 误差平方和 损失函数 ;

IX . 损失函数 举例

1 . 样本示例 :

① 样本个数 : n n n 个 ;

② 样本属性 : 取值有两种 , 0 0 0 或 1 1 1 , 即样本的属性值只能从 { 0 , 1 } \{0, 1\} {0,1} 集合中取值 ;

③ 实际属性值 : y i y_i yi​ 为实际属性值 , 并且有 y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi​∈{0,1} ;

④ 预测属性值 : x i x_i xi​ 为预测属性值 , 并且有 x i ∈ [ 0 , 1 ] x_i \in [0, 1] xi​∈[0,1] , 在 误差平方和 ( Mean squared error ) 损失函数中 , x i x_i xi​ 取值范围可以是全体实数 ;

2 . 误差平方和 ( 均方误差 Mean Squared Error ) 损失函数

误差平方和公式 : 误差平方和 , 又叫均方误差 , 英文全称 Mean squared error , 简称 MSE ;

误 差 平 方 和 = 1 n ∑ i = 1 n ( x i − y i ) 2 误差平方和 = \dfrac{1}{n} \sum_{i = 1}^{n} (x_i - y_i)^2 误差平方和=n1​i=1∑n​(xi​−yi​)2

预测属性 减去 实际属性 得到差值 , 将该差值平方 , 目的是去掉差值的符号 ( 正负号 ) , 得到误差平方 , 再将 n n n 个误差平方加起来 , 得到平方和 , 然后除以 n n n 取平均值 , 即得到 n n n 个样本的 平均的 误差平方 , 因此叫做 均方误差 , 又叫误差平方和 ;

3 . 交叉熵 ( Cross Entropy ) 损失函数

交叉熵公式 :

交 叉 熵 = − 1 n ∑ i = 1 n [ y i × l o g ( x i ) + ( 1 − y i ) × l o g ( 1 − x i ) ] 交叉熵 = - \dfrac{1}{n} \sum_{i = 1}^{n} [ y_i \times log(x_i) + (1 - y_i) \times log(1 - x_i) ] 交叉熵=−n1​i=1∑n​[yi​×log(xi​)+(1−yi​)×log(1−xi​)]

该 交叉熵公式 通常用于比较分布之间的差别 ;

X . 损失函数 优化过程

1 . 损失函数作用 : 损失函数的目的是为神经网络优化 每个连接的 权值 和 每个单元的 偏置 , 使数据集的损失函数最小 ;

2 . 损失函数优化注意事项 :

① 参数个数 : 参数数量很多 , 搜索算法空间很大 , 可能有百万级 ;

② 参数取值 : 参数取值范围很广 , 取值范围从 负无穷 到 正无穷 ;

③ 损失函数复杂 : 损失函数 与 参数 的关系很复杂 ;

④ 计算能力 : 对于海量的大数据 , 训练时不能一次性训练所有的数据 , 计算能力也是有限制的 ;

⑤ 过拟合问题 : 训练集上损失函数达到最小值 , 在测试模型时 , 不一定能得到该结果 ;

关注
打赏
1663594092
查看更多评论
立即登录/注册

微信扫码登录

0.0852s