Java教程

神经网络基础:学习方法与数据处理

本文主要是介绍神经网络基础:学习方法与数据处理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

神经网络基础:学习方法与数据处理

Author:雾雨霜星
Time:2021-06-26
欢迎来我的网站学习:
https://www.shuangxing.top/#/passage?id=28

前言

在把书上的三个例子自己码了一次跑完,对keras的使用稍微有点上手了,在训练模型的过程终究难以跨越的一个坎就是,过拟合。

学习方法

监督学习

给定一组样本,训练模型从输入数据映射到输出目标。数据的目标是人为所做的标注。

常见有:逻辑回归与分类、序列生成、语法树预测、目标检测、图像分割

无监督学习

在没有指定目标的状况下,从输入数据中找到数据间的关系。

目的在于数据压缩、数据降噪等,常见训练方法是:降维、聚类。

为了更好的了解数据集,处理数据,无监督学习往往是监督学习处理数据的必要步骤。

自监督学习

给定一组数据,训练从输入数据映射到输出目标,但是目标不是人为给定的,而是使用启发式算法从输入数据中生成的。

强化学习

通过训练得到模型,学会选择某种奖励最大化的行动。

例子比如自动驾驶、谷歌的围棋机器人。

验证集的使用

在整个训练(学习)流程中,数据集一般分为三组:训练接、验证集、测试集

训练集用于训练模型参数(权重和偏置量),验证集用于确定模型超参数(网络层数、隐藏层层数、训练轮数等),测试集用于评估模型。

验证集和训练集都不该参与到模型的训练中,即模型的反向传递不会涉及到验证集合测试集。

验证集一般可以用在每次模型训练一轮后,计算模型的验证集上的损失(Loss on Validation)和验证集上的精度(metrics on Validation)。

但是计算所得的损失和精度不会参与到反向传播,计算梯度不会利用验证集上计算得到的参数。

验证集上计算的损失和精度仅仅是用于给训练者提供参考:模型在每一轮训练后的状况、什么时候开始出现过拟合、对比其他架构(不同层数、不同隐藏层等)每轮训练效果如何,等参考。

用验证集确定的超参数包括:

  1. 网络层数

  2. 网络隐藏层数

  3. 网络正则化设置

  4. 训练轮数

  5. 学习率

注意在keras的models训练API,fit方法中,可以传入验证集,用于记录每次训练后的损失和精度,从而做出模型的调整。也可以不传入验证集数据,这样就直接训练模型,没有每轮训练状况在非训练集上的参考。

可以理解为,训练集就像是我们上课每次的作业,验证集就像是高考的模拟考,测试集就是高考。

训练前的数据处理

数据预处理

为了使得训练数据在网络的训练过程中,使训练收敛速度更快,效果更好,减少资源的浪费,对数据进行预处理往往是必须的。

通常需要进行的操作是以下几步:

  1. 向量化

    神经网络输入数据应该是浮点型张量,某些特定状况下可以使用整数。

    把数据转化为张量就是数据向量化。

    import numpy as np
     data_s = np.asarray(data).astype(np.float64)
    
    • 执行这一步骤是因为keras神经网络对输入数据的要求。
  2. 标准化

    把数据进行变换,使得平均值为0,标准差为1。

    x -= x.mean(axis=0)
    x /= x.std(axis=0)
    
    • 该步骤是对那些取值范围较大、每个数据间的差异较大的数据进行的。因为这样的数据在网络中训练时往往会计算得到较大的梯度更新,导致网络无法收敛,消耗更多的训练时间。

    • 目的是使得数据具有以下特征:

      1. 取值范围较小:一般控制在0~1范围内
      2. 同质性:所有特征的取值在大致的范围内
  3. 处理缺失值

    在数据中可能会有缺失值,一般使用0代表缺失值,让网路在训练中学习到0代表缺失数据。

    注意的是,划分训练集、验证集和测试集时,要保证训练集中有一定数量的具有缺失值数据的样本,不然网路无法学习到忽略缺失值。通常做法是自己人为从原本数据中抽一些样本来,删除某些特征值改为0,制作含有缺失值数据的样本。

数据特征化

通过对数据的转化,采用一些编码方式来转化数据,从而确定出特征的表示方法。

用更加简单的方式表述问题,使得问题变得容易。

目的是减少所需的训练资源(训练时间、占用内存、GPU消耗),以及在更少的数据上解决问题。

转载请注明出处!

欢迎来我的网站学习:
https://www.shuangxing.top/#/passage?id=28

Thanks!

PS: 毕竟,霜星酱水平有限,如果发现任何错误还请及时邮箱告知我,我会去改哦!

这篇关于神经网络基础:学习方法与数据处理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!