神经网络NN简单理解以及算法

简介

1.什么是神经网络

1.1 背景 :

  • 以人脑中的神经网络为启发,历史上出现过很多不同版本
  • 最著名的算法是1980年的 backpropagation

1.2 多层向前神经网络(Multilayer Feed-Forward Neural Network)

  • Backpropagation被使用在多层向前神经网络上
  • 多层向前神经网络由以下部分组成: 
    输入层(input layer), 隐藏层 (hidden layers), 输入层 (output layers)

    多层向前神经网络

    • 每层由单元Unit组成
    • 连接Unit之间有权重weights
    • 输入层用来输入数据
    • 隐藏层数量可以是任意的
    • 理论上有足够多的数据以及足够多的隐藏层,该网络可以模拟出任何方程
    • 需要进行非线性的转换
    • 以上构成2层的神经网络 输入层不作为一层

      2. 主要算法介绍

      2.1 关于非线性转化方程(non-linear transformation function)

      代码中叫做 sigmoid / sigmoidDer (命名不当,理解就好) 
      - 双曲函数(tanh) 以及 导数 
      numpy库提供了tanh函数 : numpy.tanh(x)numpy.tanh(x) 
      导数为 : 1.0−tanh(x)21.0−tanh(x)2 
      - 逻辑函数(logistic function) 以及 导数 
      函数为 : logistic(x)=11+e−xlogistic(x)=11+e−x 
      导数为 : logistic(x)⋅(1−logistic(x))logistic(x)·(1−logistic(x))

      2.2 BackPropagation 算法

      简单的说就是通过迭代性的来处理训练集中的实例,经过神经网络后输入层预测值(predicted value)与真实值(target value)之间的误差不断调整权重weight来使其更加准确,最后反向计算误差来更新连接之间的权重weight

      算法大致流程 :

    • 建立神经网络
    • 算法输入数据集 学习率(步长alpha)
    • 初始化权重(weights)和偏向(bias): 随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向
    • 向前更新传送
    • 根据误差反向更新(weights)
    • 终止条件

          2.3 基于算法的几个公式

       NN             计算过程

向前更新传送过程

        

  • 公式1:Oj=∑iOiwij+θjOj=∑iOiwij+θj
  • 按照上图就是 Oj=y1w1j+y2w2j+...+ynwnj+θjOj=y1w1j+y2w2j+...+ynwnj+θj
  • 根据误差(error)反向传送过程

  • 公式2 : 对于输出层 Errj=Oj(1−Oj)(Tj−Oj)Errj=Oj(1−Oj)(Tj−Oj) 其中T为target,就是实际结果,Oj(1−Oj)Oj(1−Oj) 正好是logistic函数的导数,眼熟不…
  • 公式3 : 对于隐藏层 Errj=Oj(1−Oj)∑kwjk⋅ErrkErrj=Oj(1−Oj)∑kwjk·Errk 由于计算的时候是从后向前计算的 最后需要逆置一下
  • 公式4 : 对于weights wij=alpha⋅Errj⋅Oi

    3. 简单算法实现

    注意:本简单实现算法迭代过程使用了随机化,可以更改其条件达到更好的精确性

  • 4. 输出数据 以及 简单分析

你可能感兴趣的:(机器学习)