神经网络

神经网络

  1. 背景:
    • 以人脑中的神经网络为启发,有很多不同版本
    • 最著名的是1980年的BackPropagation算法
  2. 多层向前神经网络(Multilayer Feed-Forward Neural Network)
    • BackPropagation被使用在多层向前神经网络上
    • 多层向前神经网络由以下三部分组成
      • 输入层(input layer)
      • 隐藏层(hidden layer)
      • 输出层(output layer)
    • 每层由多个单元组成
    • 输入,输出只有一层,隐藏层可以多层
    • 经过连接点的权重 ωij ω i j 传入下一层,每一层的输出是下一层的输入
    • 每个单元也可以叫做神经节点
    • 一层中加权的求和,然后根据非线性方程转化输出。作为下一层中一个unit的输入
    • 理论上,如果有足够多的隐藏层,可以模拟出任何方程
  3. 设计神经网络:

    • 神经网络层数以及每层的单元个数
    • 特征被传入输入层时通常会先被标准化
    • 神经网络可以解决分类问题和回归问题
    • 分类:
      • 如果有两类,一个输出单元表示 0 ,另一个输出单元表示 1
      • 如果有多个类,每个输出单元表示一个类别
  4. BackPropagation算法:

    • 神经网络正向走一遍直到输出层,然后反向走,经过不断的数学模型优化,最终达到终止条件所规定的阈值。

      • 反向走的时候进行权重(weight)和偏向(bias)的更新,直到达到终止条件,所以才叫Back Propagation。
    • 通过迭代性来处理训练集中的实例

    • 对比神经网络的预测值与真实值之间的差距,反方向(output layer, hidden layer, input layer)

    • 算法介绍:

      • 输入:
        • D:数据集,
        • 学习率(learning rate),
        • 多层向前神经网络
      • 输出:一个已经训练好的神经网络
    • 数学模型:

      Ij=iωijOi+θj I j = ∑ i ω i j O i + θ j

      • Sigmoid function: Oj=11+eIj O j = 1 1 + e I j
    • 正向由输入层走到输出层后,根据输出层的误差进行反向传送

      • 对于输出层: Errj=Oj(1Oj)(TjOj) E r r j = O j ( 1 − O j ) ( T j − O j )
      • 对于隐藏层: Errj=Oj(1Oj)kErrkωjk E r r j = O j ( 1 − O j ) ∑ k E r r k ω j k
        • Oj O j :当前层的值
        • Errk E r r k :第 k 层的误差(k < j)
        • ωjk ω j k :第 k 层的权重
      • 权重更新:
        Δωij=(l)ErrjOj Δ ω i j = ( l ) E r r j O j
        ωij=ωij+Δωij ω i j = ω i j + Δ ω i j

        • l l :learning rate
      • 偏向更新:
        • Δθj=(l)Errj Δ θ j = ( l ) E r r j
        • θj=θj+Δθj θ j = θ j + Δ θ j
    • 终止条件

      • 权重更新低于某个阈值
      • 预测的错误率低于某个阈值
      • 达到预设一定的循环次数

Reference:

https://github.com/leonbehero/Code

你可能感兴趣的:(Artificial,Inteligence)