python深度学习笔记2--机器学习基础

一、机器学习分支

  • 监督学习 :给定一组样本,机器学习可以学会将输入数据映射到已知目标 [标注]
    主要包括分类和回归
    还有更多奇异的变体 如序列生成 目标检测 图像分割

  • 无监督学习:没有目标的情况下寻找输入数据的有趣变换 常见无监督学习方法 降维和聚类

  • 自监督学习 没有人工标注的标签

  • 强化学习

二、评估机器学习模型

机器学习的目的:得到可以泛化(generalize)的模型,即在前所未见的数据上表现很好的模型
难题:过拟合——随着训练的进行,模型在训练数据上的性能始终在提高,但在前所未见的数据上的性能则不再变化或者开始下降。
1训练过程 :在训练集上训练模型,在验证集上评估模型。一旦找到了最佳参数,就在测试集上最后测试一次
2开发模型时总是需要调节模型配置,比如选择层数或每层大小[这叫作模型的超参数,以便与模型参数(即权重)区分开]。这个调节过程需要使用模型在验
证数据上的性能作为反馈信号。这个调节过程本质上就是一种学习:在某个参数空间中寻找良好的模型配置。
3.在验证时,如果可用数据很少,用到的三种经典的评估方法:简单的留出验证、K 折验证,以及带有打乱数据的重复 K 折验证

  • 1留出验证python深度学习笔记2--机器学习基础_第1张图片

  • 2K 折验证
    对于每个分区 i,在剩余的 K-1 个分区上训练模型,然后在分区 i 上评估模型。最终分数等于 K 个分数的平均值。
    -python深度学习笔记2--机器学习基础_第2张图片

  • 3带有打乱数据的重复K折验证
    在每次将数据划分为K个分区之前先将数据打乱

注意事项 数据代表性 数据冗余 时间箭头

三、数据预处理

  1. 值标准化
    -输入数据应该 具有以下特征。
    取值较小:大部分值都应该在 0~1 范围内。
    同质性(homogenous):所有特征的取值都应该在大致相同的范围内。
    此外,下面这种更严格的标准化方法也很常见-。
    -将每个特征分别标准化,使其平均值为 0。
    -将每个特征分别标准化,使其标准差为 1。
  2. 向量化
    神经网络的所有输入和目标都必须是浮点数张量
    (在特定情况下可以是整数张量)。
    无论处理什么数据(声音、图像还是文本),都必须首先将其转换为张量,这一步叫作数据向量化。例如,在前面两个文本分类的例子中,开始时文本都表示为整数列表,然后我们用 one-hot 编码将其转换为 float32 格式的张量。
  3. 处理缺失数据
    将缺失数据 变为0

四、过拟合与欠拟合

机器学习的根本问题是优化泛化之间的对立。
优化:调节模型以在训练数据上得到最佳性能(即机器学习中的学习)
泛化:训练好的模型在前所未见的数据上的性能好坏。
机器学习的目的
得到良好的泛化,但是泛化无法控制,只能基于训练数据调节模型。
训练开始: 欠拟合即仍有改进的空间,网络还没有对训练数据中所有相关模式建模。
欠拟合:在训练数据上迭代一定次数之后,泛化不再提高,验证指标先是不变,然后开始变差,即模型开始过拟合。这时模型开始学习仅和训练数据有关的模式,但这种模式对新数据来说是错误的或无关紧要的。
最优解决方法获取更多的训练数据。模型的训练数据越多,泛化能力自然也越好。
正则化: 调节模型允许存储的信息量,或对模型允许存储的信息加以约束。如果一个网络只能记住几个模式,那么优化过程会迫使模型集中学习最重要的模式,这样更可能得到良好的泛化。这种降低过拟合的方法叫作
1 防止过拟合方法——减小网络大小
在深度学习中,模型中可学习参数的个数通常被称为模型的容量。直观上来看,参数更多的模型拥有更大的记忆容量
为了让损失最小化,网络必须学会对目标具有很强预测能力的压缩表示,这也正是我们感兴趣的数据表示。使用的模型应该具有足够多的参数,以防欠拟合,即模型应避免记忆资源不足。要在容量过大与容量不足之间要找到一个折中
没有一个魔法公式能够确定最佳层数或每层的最佳大小。必须评估一系列不同的网络架构(在验证集上评估),以便为数据找到最佳的模型大小。
要找到合适的模型大小,一般的工作流程是开始时选择相对较少的层和参数,然后逐渐增加层的大小或增加新层,直到这种增加对验证损失的影响变得很小。

2防止过拟合方法——添加权重正则化
给定一些训练数据和一种网络架构,很多组权重值(即很多模型)都可以解释这些数据。简单模型比复杂模型更不容易过拟合。
这里的简单模型(simple model)是指参数值分布的熵更小的模型(或参数更少的模型)
权重正则化: 一种常见的降低过拟合的方法就是强制让模型权重只能取较小的值,从而限制模型的复杂度,这使得权重值的分布更加规则
实现方法:向网络损失函数中添加与较大权重值相关的成本。
这个成本有两种形式。
L1 正则化:添加的成本与权重系数的绝对值成正比。
L2 正则化:添加的成本与权重系数的平方(权重的 L2 范数)成正比。
神经网络的 L2 正则化也叫权重衰减(weight decay)。
权重衰减与 L2 正则化在数学上是完全相同的。
在 Keras 中,添加权重正则化的方法是向层传递权重正则化项实例
2防止过拟合方法——添加 dropout 正则化
-对某一层使用 dropout,就是在训练过程中随机将该层的一些输出特征舍 弃(设置为 0)

五、机器学习通用流程

1定义问题收集数据集
你面对的问题是什么类型?
多类别单标签 还是多类别多标签? 分类问题还是回归问题
你的输入是什么,你要预测什么?
2衡量成功的指标
精度? 准确率?召回率指引选择损失函数,跟目标保持一致可以浏览kaggle网站上的数据科学竞赛,有各种各样的问题和评估指标
3确定评估方法
留出验证集
K折交叉验证
重复的K折交叉验证
4准备数据
把数据变为浮点和张量
变成小数值
标准化
5 开发比基准更好地模型
准确率比随机乱猜更好 训练神经网络
开发第一个比基准更好的模型,即一个具有统计功效的模型。

重点:最后一层激活函数 损失函数 优化配置 使用哪种优化器 学习率是什么

python深度学习笔记2--机器学习基础_第3张图片
6扩大模型规模:开发过拟合的模型
慢慢把模型变大找到临界值恰好在验证集上开始overfiting
(1) 添加更多的层。
(2) 让每一层变得更大。
(3) 训练更多的轮次。
要始终监控训练损失和验证损失,以及你所关心的指标的训练值和验证值。如果你发现模型在验证数据上的性能开始下降,那么就出现了过拟合。下一阶段将开始正则化和调节模型,以便尽可能地接近理想模型,既不过拟合也不欠拟合
7模型正则化与调节超参数
不断地调节模型、训练、在验证数据上评估(这里不是测试数据)、
再次调节模型,然后重复这一过程,直到模型达到最佳性能。
你应该尝试以下几项

  • 1添加 dropout。
  • 2尝试不同的架构:增加或减少层数。
  • 3添加 L1 和 / 或 L2 正则化。
    尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。
    可选)反复做特征工程:添加新特征或删除没有信息量的特征。(现在工作重点)
    **

小结

1定义问题与要训练的数据
2选择衡量问题成功的指标。
3确定评估方法
4准备数据
5开发第一个比基准更好的模型,即一个具有统计功效的模型。
6开发过拟合的模型。
7基于模型在验证数据上的性能来进行模型正则化与调节超参数。许多机器学习研究往往只关注这一步,但你一定要牢记整个工作流程

分类回归的术语

样本(sample)或输入(input):进入模型的数据点。
预测(prediction)或输出(output):从模型出来的结果。
目标(target):真实值。对于外部数据源,理想情况下,模型应该能够预测出目标。 预测误差(prediction error)或损失值(loss value):模型预测与目标之间的距离。
类别(class):分类问题中供选择的一组标签。例如,对猫狗图像进行分类时,“狗”和“猫”就是两个类别。
标签(label):分类问题中类别标注的具体例子。比如,如果 1234 号图像被标注为包含类别“狗”,那么“狗”就是 1234 号图像的标签。
真值(ground-truth)或标注(annotation):数据集的所有目标,通常由人工收集。
二分类(binary classification):一种分类任务,每个输入样本都应被划分到两个互斥的类别中。
多分类(multiclass classification):一种分类任务,每个输入样本都应被划分到两个以上的类别中,比如手写数字分类。
多标签分类(multilabel classification):一种分类任务,每个输入样本都可以分配多个标签。举个例子,如果一幅图像里可能既有猫又有狗,那么应该同时标注“猫”标签和“狗”标签。每幅图像的标签个数通常是可变的。
标量回归(scalar regression):目标是连续标量值的任务。预测房价就是一个很好的例子,不同的目标价格形成一个连续的空间。
向量回归(vector regression):目标是一组连续值(比如一个连续向量)的任务。如果对多个值(比如图像边界框的坐标)进行回归,那就是向量回归。
小批量(mini-batch)或批量(batch):模型同时处理的一小部分样本(样本数通常为 8~128)。样本数通常取 2 的幂,这样便于 GPU 上的内存分配。训练时,小批量用来为模型权重计算一次梯度下降更新

你可能感兴趣的:(python深度学习,python,机器学习,深度学习)