误差函数

过拟合和欠拟合

雨燕双飞 提交于 2020-04-06 09:37:59
本文首发自公众号: RAIS ​前言 本系列文章为 《Deep Learning》 读书笔记,可以参看原书一起阅读,效果更佳。 构建复杂的机器学习算法 上一篇文章中我们介绍了什么叫做机器学习算法极其具体的定义和所关心的问题,比较简单,接下来的文章我们将介绍一些设计学习算法的基本准则。 误差 泛化:机器学习的目的是在新的输入上具有良好的表现,而不是已有的数据,这很好理解,在新的数据上表现良好的能力叫做 泛化 。 在机器学习中,总是存在误差的,百分之百的确定的事件已经不是机器学习研究的范围了。既然如此,就一定存在误差,训练过程在训练集上误差称作 训练误差 ,泛化后的在新的输入上的误差称为 泛化误差 或 测试误差 。我们都希望误差尽可能的小,并且相比较而言泛化误差减小更重要(毕竟解决问题才是最重要的)。 这里会遇到一个问题就是我们往往只能得到训练数据集,没有什么好的办法提前获取模型交付生产环境后所新输入的数据,针对这样的问题,我们往往在收集统计训练数据时,尽量接近实际生产环境,并且假设数据之间是 独立同分布 的,称为 数据生成分布 ,基于这样的原因,我们会假设训练误差和测试误差两者的期望是一样的。因此我们针对数据集,具体的做法就会是先尽可能的减小 训练误差 ,让模型在已有的数据上表现良好,然后再尽可能减小 测试误差 与训练误差之间的差距,这样就会得到一个测试误差较低的模型。

ML激活函数使用法则

≡放荡痞女 提交于 2020-03-06 00:13:42
以下仅为自己的整理记录,绝大部分参考来源: 莫烦Python ,建议去看原博客 一、处理结构 因为TensorFlow是采用数据流图( data flow graphs )来计算, 所以首先我们得创建一个数据流流图, 然后再将我们的数据( 数据以张量(tensor)的形式存在 )放在数据流图中计算. 节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组, 即张量(tensor). 训练模型时tensor会不断的从数据流图中的一个节点flow到另一节点, 这就是TensorFlow名字的由来. Tensor 张量意义 张量(Tensor) : 张量有多种. 零阶张量为 纯量或标量 (scalar) 也就是一个数值. 比如 [1] 一阶张量为 向量 (vector), 比如 一维的 [1, 2, 3] 二阶张量为 矩阵 (matrix), 比如 二维的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]] 以此类推, 还有 三阶 三维的 … 二、使用Tensorflow创建一个线性回归的模型 创建数据 加载 tensorflow 和 numpy 两个模块, 并且使用 numpy 来创建我们的数据. import tensorflow as tf import numpy as np # create data x_data = np

神经网络基本概念

天涯浪子 提交于 2020-02-22 19:45:32
相关练习项目: 一个简单的神经网络 感知器 (perceptron) 即信号输入元, 单个的数据源, 比如人的眼睛,耳朵,鼻子,都是感知器 离散型和连续型预测 (discrete & continuous) 激活函数 (activation function) 使用连续激活函数,预测的结果不是非对即错,而是一个概率,表示预测结果的可靠,及确定性 SoftMax 多类别分类时使用 SoftMax 定义 def softmax(L): expL = np.exp(L) return expL/expL.sum() 分类问题的预测结果使用 softmax 作为激活函数,转化之后的结果加总为 100%,每个值代表一个预测结果可能发生的概率 One-hot Encoding 多类别分类时,分类目标数据一般表示为 [2,4,56,7,8,...] ,需要转换成类似 [[0,1,0,0,0,0,0], [0,0,0,1,0,0,0], [0,0,1,0,0,0,0], [0,0,0,0,1,0,0], ...] 这样的数据,计算机才能高效的处理. (不过使用PyTorch做分类问题时,不需要手动转化) 最大似然率(maximum likelihood) 最大似然率 所有预测结果(概率)的乘积, 用来衡量预测的结果的好坏,随着数据量变大,乘积无限接近0,不是一个好的衡量方式,所以不用. 交叉墒

task03过拟合、欠拟合

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-20 08:53:20
过拟合、欠拟合及其解决方案 过拟合、欠拟合的概念 权重衰减 丢弃法 模型选择、过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。 机器学习模型应关注降低泛化误差。 模型选择 验证数据集 从严格意义上讲,测试集只能在所有超参数和模型参数选定后使用一次。不可以使用测试数据选择模型,如调参。由于无法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留一部分在训练数据集和测试数据集以外的数据来进行模型选择。这部分数据被称为验证数据集,简称验证集(validation set)。例如,我们可以从给定的训练集中随机选取一小部分作为验证集,而将剩余部分作为真正的训练集。 K折交叉验证 由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈。一种改善的方法是K折交叉验证(K-fold cross-validation)。在K折交叉验证中

动手学:深度学习Task3

时间秒杀一切 提交于 2020-02-18 23:25:41
过拟合、欠拟合及其解决方案 过拟合、欠拟合的概念 权重衰减 丢弃法 模型选择、过拟合和欠拟合 训练误差和泛化误差 在解释上述现象之前,我们需要区分训练误差(training error)和泛化误差(generalization error)。通俗来讲,前者指模型在训练数据集上表现出的误差,后者指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集上的误差来近似。计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归用到的平方损失函数和softmax回归用到的交叉熵损失函数。 机器学习模型应关注降低泛化误差。 模型选择 验证数据集 从严格意义上讲,测试集只能在所有超参数和模型参数选定后使用一次。不可以使用测试数据选择模型,如调参。由于无法从训练误差估计泛化误差,因此也不应只依赖训练数据选择模型。鉴于此,我们可以预留一部分在训练数据集和测试数据集以外的数据来进行模型选择。这部分数据被称为验证数据集,简称验证集(validation set)。例如,我们可以从给定的训练集中随机选取一小部分作为验证集,而将剩余部分作为真正的训练集。 K折交叉验证 由于验证数据集不参与模型训练,当训练数据不够用时,预留大量的验证数据显得太奢侈。一种改善的方法是K折交叉验证(K-fold cross-validation)。在K折交叉验证中

DL notes 02: ML/DL模型训练的Tips

ε祈祈猫儿з 提交于 2020-02-16 21:55:11
文章目录 一、基本概念 二、应对欠拟合和过拟合的解决方法 2.1 欠拟合的解决办法 2.2 过拟合的解决办法 2.2.1 权重衰减 / L 2 L_{2} L 2 ​ 范数正则化 2.2.2 dropout 三、梯度消失和梯度爆炸 四、随机初始化模型参数 PyTorch的默认随机初始化 Xavier随机初始化(这里需要检查) 五、考虑环境因素 协变量偏移 标签偏移 概念偏移 Q&A 一、基本概念 训练误差(training error) :指模型在训练数据集(train dataset)上表现出的误差。 泛化误差(generalization error) :指模型在任意一个测试数据样本上表现出的误差的期望,并常常通过测试数据集(test dataset)上的误差来近似。 损失函数(loss function) :计算训练误差和泛化误差可以使用之前介绍过的损失函数,例如线性回归(linear regression)用到的平方损失(squared loss)函数和softmax回归用到的交叉熵(cross entropy)损失函数。 训练数据集(train dataset) :【模型】(Model)训练的过程其实就是在求【参数】的过程,我们先假定某类【模型】(比如决策树模型),然后用【训练集】来训练,学习到对应的最优的【参数】。但是问题在于,我们没有办法保证我们假设的那个【模型

机器学习之线性回归

99封情书 提交于 2020-02-07 01:01:04
1.什么是线性回归 线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务。那什么是回归任务和分类任务呢?简单的来说,在监督学习中(也就是有标签的数据中),标签值为连续值时是回归任务,标志值是离散值时是分类任务。 线性回归模型就是处理回归任务的最基础的模型。 线性回归模型试图学得一个线性模型以尽可能准确地预测实值X的输出标记Y。在这个模型中,因变量Y是连续的,自变量X可以是连续或离散的。 首先来了解一些字母的含义:m-训练集样本的数量;x-输入变量/特征;y-输出变量/要预测的目标变量;(x,y)-表示一个训练样本;( x ( i ) x^{(i)} x ( i ) , y ( i ) y^{(i)} y ( i ) )中i上标:表示第i个训练样本,即表示表格中的第i行; x 1 x_{1} x 1 ​ 、 x 2 x_{2} x 2 ​ 、… x n x_{n} x n ​ 表示特征向量,n表示特征向量的个数; h θ h_{\theta} h θ ​ (x)称为假设函数,h是一个引导从x得到y的函数; 举个简单的例子: 输入数据:工资( x 1 x_{1} x 1 ​ )和房屋面积( x 2 x_{2} x 2 ​ )(两个特征) 输出目标:预测银行会贷款多少钱(标签) 姓名 工资 房屋面积 可贷款金额 张三 6000 58 33433 李四 9000 77

机器学习(Machine Learning)- 吴恩达(Andrew Ng) 学习笔记(十)

久未见 提交于 2020-02-06 23:45:46
Advice for applying machine learning Decide what to try next Debugging a learning algorithm 调试学习算法 Suppose you have implemented regularized linear regression to predict housing prices. \[ J(\theta) = \frac{1}{2m} \left[ \sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\sum_{j=1}^m\theta_j^2 \right] \] However, when you test your hypothesis on a new set of houses, you find that it makes unacceptably large errors in its predictions. What should you try next? 假如你已经完成了房价预测的正则化线性回归(也就是最小化代价函数 \(J\) 的值),然而在你测试新的样例时发现产生了巨大的误差。要想改进这个算法你该怎么办? 可选的方法: Get more training examples 用更多的训练样本(收集样本耗费太大精力)

统计学习方法笔记

烂漫一生 提交于 2020-02-03 03:33:55
统计学习方法概论 1.1 统计学习 统计学习 (statistics learning): 计算机 基于 数据 构建 概率统计模型 并运用 模型 对 数据 进行 预测与分析 。也称为 统计机器学习 (statistics machine learning)。 统计学习的特点: 以 计算机及网络 为平台,是建立在计算机及网络之上的; 以 数据 为研究对象,是数据驱动的学科; 目的是对 数据 进行 预测与分析 ; 统计学习以 方法 为中心,统计学习方法构建 模型 并应用模型进行预测与分析; 是 概率论、统计学、信息论、计算理论、最优化理论及计算机科学等 多个领域的交叉学科; // 现在我们所说的机器学习,往往是指 统计机器学习 。 统计学习的对象 数据(data) 。 首先呢,统计学习从数据出发,提取数据的特征,抽象出数据中的模型,发现数据中的知识,最终又回到对数据的分析预测中去。 其次,作为统计学习的对象,数据是多样的,它包括存在于计算机及网络上的各种 数字 、 文字 、 图像 、 视频 、 音频 数据以及它们的组合。 关于数据的基本假设: 同类数据具有一定的统计规律性。 (什么叫“同类数据”:具有某种共同性质的数据,比如英文文章,互联网网页,数据库中的数据等,它们具有统 计规律性 ,所以可以用 概率统计方法 来进行处理。比如,可以用随机变量描述数据中的特征

L1和L2:损失函数和正则化

a 夏天 提交于 2020-01-29 16:08:52
作为损失函数 L1范数损失函数    L1 范数损失函数 ,也被称之为最小绝对值误差。总的来说,它把目标值$Y_i$与估计值$f(x_i)$的 绝对差值 的总和最小化。 $$S=\sum_{i=1}^n|Y_i-f(x_i)|$$ L2范数损失函数    L2 范数损失函数 ,也被称为最小平方误差,总的来说,它把目标值$Y_i$与估计值$f(x_i)$的 差值的平方和 最小化。 $$S=\sum_{i=1}^n(Y_i-f(x_i))^2$$ L1损失函数 L2损失函数 鲁棒 不是很鲁棒 不稳定性 稳定解 可能多个解 总是一个解    总结一下 :L2范数loss将误差平均化( 如果误差大于1,则误差会放大很多 ),模型的误差会比L1范数来得大,因此模型会对样本更加敏感,这就需要调整模型来最小化误差。如果有个样本是一个异常值,模型就需要调整以适应单个的异常值,这会牺牲许多其他正常的样本,因为这些正常的样本的误差比这单个的异常值的误差小。 作为正则化   我们经常会看见损失函数后面添加一个额外项,一般为 L1-norm , L2-norm ,中文称作 L1正则化 和 L2正则化 ,或者 L1范数 和 L2函数 。   L1正则化和L2正则化可以看做是损失函数的 惩罚项 。所谓『惩罚』是指对损失函数中的某些参数做一些限制。 防止模型过拟合而加在损失函数后面的一项。 L1正规化