文章目录- I . 基于 神经网络 进行分类
- II . 神经网络分类适用场景
- III . 神经网络分类的弊端
- IV . 神经网络分类的优点
- V . 后向传播算法
- VI . 后向传播算法 网络拓扑定义
- VII . 后向传播算法 学习过程
- VIII . 后向传播算法 步骤
- IX . 后向传播算法 初始化权
- X . 后向传播算法 步骤 二 : 向前传播输入 第一层输入值
- XI . 后向传播算法 步骤 二 : 向前传播输入 隐藏层 与 输出层 输入值计算
- XII . 后向传播算法 步骤 二 : 向前传播输入 隐藏层 与 输出层 输出值计算
I . 基于 神经网络 进行分类
1 . 神经网络 用途 : 感知器 类型的神经网络 , 常用于分类预测 ;
① 感知器 : 感知器 对应有监督的学习方法 , 给出已知的训练集 , 学习过程中指导模型的训练 ;
② 其它分类方法 : 决策树 , 贝叶斯 , 支持向量机 ;
2 . 分类知识存储 : 神经网络 分类知识 , 存储在 神经元单元 互相连接的边上 , 隐式地存储与神经元之间连接的 权值 系数上 ;
3 . 分类过程 : 将连接的 权值 ( 系数 ) 训练学习出来 , 该 神经网络 就可以进行分类 , 将样本特征信息输入到输入层中 , 就可以在输出层得到样本的类型 ;
① 迭代算法 : 神经网络 学习训练的过程 , 是一个迭代过程 , 主要是对权值进行迭代优化 ;
② 初始值 : 开始时 , 给每个连接的权值 , 赋值一个初始值 ;
③ 迭代目标 : 学习过程就是不断迭代优化连接的权值 , 使训练集中的样本能被正确分类 ;
II . 神经网络分类适用场景
神经网络 分类 适用场景 :
① 样本少 : 训练集的样本数据量小 , 没有足够的数量用于建立模型 ;
② 结构复杂 : 数据结构复杂 , 无法使用传统的统计方法描述 , 如图片数据 ;
③ 概率模型不适用 : 统计模型无法表示分类模型 , 无法使用概率来进行分类 ;
III . 神经网络分类的弊端
神经网络缺点 :
① 训练时间长 : 神经网络 的学习训练花费时间比较长 ;
② 参数 ( 连接权值 ) 数量多 : 神经元单元连接 , 每个连接都有一个权值 , 每个单元节点还有偏置 , 参数数量多 ;
③ 初始值确定依赖经验 : 参数的初始值需要依靠经验确定 , 如果初始值设置不当 , 训练时间会很长 , 如果初始值合适 , 训练时间很短 ;
④ 拓扑结构依赖经验 : 神经网络 的拓扑结构 , 也是需要经验来确定 , 选择不合适的拓扑结构 , 事倍功半 ;
⑤ 解释性差 : 根据一堆没有意义的参数权值预测出的结果 , 无法解释分类的底层原理 ; ( 炼金术 )
IV . 神经网络分类的优点
神经网络分类优点 :
① 准确 : 使用神经网络分类 , 准确性高 ;
② 处理 : 并行 分布式 处理数据 能力强;
③ 存储 : 分布式存储 能力强 ;
④ 学习 : 分布式学习 能力强 ;
⑤ 容错 : 对噪音数据容错能力高 , 鲁棒性好 ;
V . 后向传播算法
后向传播算法 运行基础 : 该算法在 多路前馈 神经网络 上学习 ;
多路 : 有多个输入 ;
前馈 : 数据不再回来 ;
VI . 后向传播算法 网络拓扑定义
1 . 定义网络拓扑结构 :
① 训练之前 , 先定义网络拓扑结构 ;
② 输入层 : 输入层的 单元 个数 ; 第一层是输入层 ;
③ 隐藏层 : 隐藏层 层数 , 每一层隐藏层 单元个数 ; 输入层和输出层之间的都是隐藏层 ;
④ 输出层 : 输出层 单元个数 ; 最后一层是输出层 ;
⑤ 连接方式 : 确定单元的连接方式 , 全连接 还是 局部连接 ;
2 . 输入单元 属性值值规范化 :
① 好处 : 对样本的属性值进行规范化 , 会提高学习的性能 ;
② 常用规范值 : 一般将数据值规范化为 0 ~ 1.0 之间的浮点数值 ;
3 . 输出单元 :
① 单个元表示类别数 : 每个输出单元只能表示
和
两个类别 ;
② 多类别情况 : 如果类别个数多于
个 , 那么使用多个输出单元 , 每个类使用一个输出单元 ;
4 . 训练过程 :
① 拓扑结构 : 网络拓扑结构 设计的过程 , 需要反复实验 , 训练 , 该设置影响最终的分类准确率 ;
② 初始权值 : 初始的 权值直接影响训练时间 , 也影响最终分类的准确度 ;
③ 反复迭代 : 如果经过训练后发现准确率低 , 就是 拓扑结构 和 初始权值 设置不合理 , 需要重复训练 ;
VII . 后向传播算法 学习过程
0 . 总结 : 前向传播输入 , 后向传播误差 , 根据误差修改每个连接的权值 , 最终达到要求的准确率 , 或权值趋于稳定 ;
1 . 后向传播算法 学习过程 :
① 前向传播 输入 ( 输入 -> 输出 方向 ) : 迭代 处理训练集样本数据 , 将 输出 的样本预测分类值 , 与实际的分类进行比较 ;
② 后向传播 误差 ( 输出 -> 输入 方向 ) : 每次迭代后 , 根据 分类结果 和 实际分类 进行对比 , 修改 单元 连接权值, 使 预测分类结果 与 实际分类 二者 均方差最小 ; 均方差 是 评分函数 ;
2 . 后向传播 核心 : 每次正向分类后 , 都要对比 分类结果 和 实际分类 , 然后反向将对比结果 , 由 输出层 , 途径每个隐藏层 , 送达第一个隐藏层 ; 目的是修改每个连接的权值 ;
3 . 后向传播迭代终止 :
① 准确率达到 : 训练集 中的样本 能被准确的分类 , 准确率达到标准 ;
② 连接权值稳定 : 训练一段时间 , 单元连接的权值 趋于稳定 , 不再有大的变化 , 如果准确率还很低 , 说明拓扑结构不行 ;
VIII . 后向传播算法 步骤
后向传播算法 步骤 :
① 初始化权与偏置 ( 执行
次 ) ;
② 向前传播输入 ( 迭代执行 ) ;
③ 向后传播误差 ( 迭代执行 ) ;
IX . 后向传播算法 初始化权
1 . 初始化权 : 神经网络 中神经元单元 连接的权值 , 通常初始化成 小随机数 , 一般是
或
区间内的值 ;
2 . 初始化偏置 ( bias ) : 神经网络 中每个神经元单元 都有一个 偏置 属性 , 也是初始化成 小随机数 , 一般是
或
区间内的值 ;
X . 后向传播算法 步骤 二 : 向前传播输入 第一层输入值
1 . 向前传播输入 : 计算每一层 , 每个单元的输入 和 输出 ;
2 . 输入层 ( 第一层 ) : 不做任何操作 , 只是将样本属性传入即可 , 输入层单元的值 , 就是样本的规范化后的属性值 ;
代表单元的索引值 ;
代表单元输入值 ;
代表单元的输出值 ;
代表规范化后的样本属性值 ;
规范化属性值 : 这个属性值
是经过规范化的 , 一般是
区间内的值 ;
XI . 后向传播算法 步骤 二 : 向前传播输入 隐藏层 与 输出层 输入值计算
1 . 隐藏层 与 输出层 : 这些层 单元 的 输入值 是 前一层输出 的 线性组合 ;
如 : 前一层的 单元
三个单元 与 后一层的 单元
连接 , 那么后一层的 单元
的输入就是 前一层
单元的线性组合 ;
2 . 隐藏层 与 输出层 输入值计算过程 :
单个单元入计算公式方式 ( 重要 ) : 如果有多个上层单元连接本层的 单元
, 那么需要多个输入值累加 ;
单元
的输入值计算方式 :
表示单元
的输入 ;
表示前一层有
个单元与 本层的 单元
连接 ;
;
表示前一层的单元索引 ;
表示 前一层的单元
与本层的连接的 权值 ;
表示上一层的输出 ; 这里注意 上一层的输出 与 连接权重 和 偏置 计算后 , 组成下一层的输入 ; ( 上一层的输出值 是 根据上上层的输出 与 上上层 与 连接 偏置计算 得来的 )
表示上一层单元
的偏置 , 该值通常与连接权值组合使用 , 可以看做是连接的附属属性 , 这样好理解 ;
XII . 后向传播算法 步骤 二 : 向前传播输入 隐藏层 与 输出层 输出值计算
隐藏层 与 输出层 输出值计算过程 : 使用 激活函数 , 将输入值转为输出值 , 一般使用 Sigmoid 激活函数 ;
Sigmoid 是非线性激活函数 , 作用是将全体实数 映射到
区间上 , 这样就能保证输出的值是一个
之间的值 ;
代表单元
的输出值 ;
代表单元
的输入值 ;