神经网络是所谓深度学习的一个基础,也是必备的知识点,他是以人脑中的神经网络作为启发,最著名的算法就是backpropagation算法,这里就简单的整理一下神经网络相关参数,和计算方法。

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

多层向前神经网络由一下几个部分组成:
输入层(input layer),隐藏层(Hidden layer),输出层(output layer)

这里写图片描述

特点如下:
1、每层由单元(units)组成
2、输入层是有训练集的实例特征向量传入
3、经过连接接点的权重(weight)传入下一层,一层的输出是下一层的输入
4、隐藏层的个数可以是任意的,输入层有一层,输出层有一层
5、每个单元也可以称之为神经结点,根据生物学来源定义
6、以上成为两层的神经网络,输入层是不算在里面的
7、一层中加权求和,然后根据非线性方程转化输出
8、作为多层向前神经网络,理论上,如果有足够的隐藏层,和足够的训练集,可以模拟出任何方程

二、设计神经网络结构

1、使用神经网络训练数据之前,必须确定神经网络的层数,以及每层单元的个数
2、特征向量在被传入输入层时通常要先标准化到0-1之间(为了加速学习过程)
3、离散型变量可以被编码成每一个输入单元对应一个特征值可能赋的值
比如:特征值A可能取三个值(a0, a1, a2), 可以使用3个输入单元来代表A。
如果A=a0, 那么代表a0的单元值就取1, 其他取0;
如果A=a1, 那么代表a1de单元值就取1,其他取0,以此类推
4、神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题
(1)对于分类问题,如果是2类,可以用一个输出单元表示(0和1分别代表2类),如果多余2类,则每一个类别用一个输出单元表示
(2)没有明确的规则来设计最好有多少个隐藏层,可以根据实验测试和误差以及精准度来实验并改进

三、交叉验证方法(cross-Validation)

这里有一堆数据,我们把他切成3个部分(当然还可以分的更多)
第一部分做测试集,二三部分做训练集,算出准确度;
第二部分做测试集,一三部分做训练集,算出准确度;
第三部分做测试集,一二部分做训练集,算出准确度;
之后算出三个准确度的平局值,作为最后的准确度,如下图:

这里写图片描述

四、backpropagation算法

他是通过迭代性来处理训练集中的实例,对比经过神经网络后,输人层预测值与真实值之间的误差,再通过反向法(从输出层=>隐藏层=>输入层)以最小化误差来更新每个连接的权重。

- 算法的详细介绍
输入:D(数据集),学习率(learning rate),一个多层向前神经网络
输出:一个训练好的神经网络(a trained neural network)

1.初始化权重和偏向:随机初始化在-1到1之间,或者-0.5到0.5之间,每个单元有一个偏向
2.开始对数据进行训练,步骤如下:
这里写图片描述

  1. 由输入层向前传送

    这里写图片描述
    Ij:要对其进行非线性转化,为下一单元的值
    Oi:是输入的值
    wij:为每个单元到下一个单元连线之间的权重
    θj:偏向

    对Ij进行非线性转化,得到下一个单元的值
    这里写图片描述

  2. 根据误差(error)反向传送

    对于输出层: 这里写图片描述
    对于隐藏层:这里写图片描述
    Errj:用于更新偏向
    Oj:为输出的值
    Tj:为标签的值

    权重更新:这里写图片描述
    括号里为小l ,是学习率(learning rate)

    偏向更新:这里写图片描述

  3. 终止条件
    方法一:权重的更新低于某个阈值
    方法二:预测的错误率低于某个阈值
    方法三:达到预设一定的循环次数

五、Backpropagation算法举例

这里写图片描述
w14…w56这些权重是初始化随机生成的,同样θ4到θ6也是随机生成的
将x的值与每一项的权重相乘求和算出Ij,之后对Ij进行非线性转化,求出输出值

这里写图片描述

之后算出结点上的误差,并对其更新,在如此反复

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐