过拟合

传统Tikhonov(L2)正则化逼近公式推导

感情迁移 提交于 2020-08-19 22:12:28
此篇文章主要针对Tikhonov正则化初学者了解Tikhonov泛函是怎样给出的以及解的推导。 Tikhonov正则化 首先我们先给出Tikhonov正则化方法 我们在学习研究反问题和正则化的文章时,往往会直接给出如上定理,但Tikhonov泛函和解的给出并没有作过多解释,因此,接下来的内容主要是推导和理解以上内容。 正则化 我们在解决如Ax=y的线性算子方程时,通常采用经典的最小二乘法估计,但是这种方法会导致过拟合或者产生方程的欠定解。解决过拟合的一种方法就是正则化方法。 最小二乘法 :最小二乘法的原则是以“残差平方和最小”确定直线位置。 过拟合 :过度拟合的问题通常发生在变量过多的时候。这种情况下训练出的方程总是能很好的拟合训练数据。但是,这样的曲线千方百计的去拟合训练数据,导致它无法泛化(模型能够应用到新样本的能力)到新的数据样本中,以至于无法预测新样本。 惩罚项 :所谓『惩罚』是指对损失函数中的某些参数做一些限制。引入正则化项之后,会提高抗干扰能力,提高泛化能力。 Tikhonov逼近式推导 得到Tikhonov泛函后,只需要求解使泛函最小值成立的X即可。 通过微分求解,得到的逼近式结果同上面的(2.8)结果相同。 线性算子角标不同的原因 :K*代表K的转置共轭,在推导时我们默认其为实矩阵。(相关内容可参考广义逆) 关于此文章有什么问题欢迎在评论区与我讨论~ 参考文献:

XGBoost类库使用小结

无人久伴 提交于 2020-08-19 20:52:34
    在 XGBoost算法原理小结 中,我们讨论了XGBoost的算法原理,这一片我们讨论如何使用XGBoost的Python类库,以及一些重要参数的意义和调参思路。     本文主要参考了 XGBoost的Python文档 和 XGBoost的参数文档 。 1. XGBoost类库概述     XGBoost除了支持Python外,也支持R,Java等语言。本文关注于Python的XGBoost类库,安装使用"pip install xgboost"即可,目前使用的是XGBoost的0.90版本。XGBoost类库除了支持决策树作为弱学习器外,还支持线性分类器,以及带DropOut的决策树DART,不过通常情况下,我们使用默认的决策树弱学习器即可,本文也只会讨论使用默认决策树弱学习器的XGBoost。     XGBoost有2种Python接口风格。一种是XGBoost自带的原生Python API接口,另一种是sklearn风格的API接口,两者的实现是基本一样的,仅仅有细微的API使用的不同,主要体现在参数命名上,以及数据集的初始化上面。 2. XGBoost类库的基本使用方式     完整示例参见我的 Github代码 。 2.1 使用原生Python API接口     XGBoost的类库的2种接口风格,我们先来看看原生Python API接口如何使用。    

Face++的AutoAssign(附源码)

我们两清 提交于 2020-08-18 21:04:59
​首先,从idea上讲,AutoAssign将label assignment完全做成端到端地(或者实际上是dynamic soft的),并且仅使用了最小先验(仅正样本的candidate location在gt框内部),的确算的上是一篇重量级并很general的作品。其次,这也是一篇可以预见的paper,具体可以参见Jianfeng Wang(也就是本文二作)在知乎上的回答如何评价zhangshifeng最新的讨论anchor based/ free的论文? http://www. zhihu.com 在该回答中,Jianfeng犀利地指出ATSS虽然利用统计量“动态”分配了正负样本,但这实际上是一种伪动态,因为样本的分配方式在数据集和网络配置完成之后其实是固定的,并不会随着训练过程而产生更好地调整和变化。正如Jianfeng所说,“有很多个项目,模型本身是一模一样的,但因为数据resolution不同,ground-truth的size不同,每个项目拿过来都要重新调anchor或者调分层参数,不仅是研究员和工程师的精力成本,也是自动化的障碍,在学术上还是更好解scale问题的阻碍;这个事,能不能训练的时候自己就学了?”,于是就有了这篇AutoAssign。接下来我们深入地理解一下AutoAssign是怎么操作的。从理念上来讲,AutoAssign跳出了此前object

svm为何不显式加正则?

て烟熏妆下的殇ゞ 提交于 2020-08-18 06:32:06
问题引入 大家可能在SVM中已经发现了它不需要加任何的正则就进行模型的训练,那为什么他不需要呢?大家在书上看到也没有基本怎么说正则。主要还是它建模的时候是对结构化风险建模的,这点相比于其它的一些算法只对经验风险最小化建模来说是有优势的。这里不提正则,只考虑简单的模型。加了正则之后肯定模型都会有减少过拟合,增强泛化能力的表现了。 问题解答 在李航博士的书中有介绍过这个东东,对于SVM的original问题的表达形式如下: 其实,上面的这三个小等式可以由下面的一个式子来表示,那这个式子是什么呢,应该猜到就是把(2)(3)合并到(1)中,这个式子是 尾部的+号表示的意思是这个是一个合页损失函数,如下所示 可以从公式4中看到,这就是一个加了正则化的合页损失函数的形式 笔者这里简化了一下东西,具体可以参考李航博士的《统计学习方法》 参考 [1]李航《统计学习方法》P114 [2] https://www. zhihu.com/question/2017 8589 [3] https:// blog.csdn.net/viewcode/ article/details/12840405 欢迎关注我的公众号,第一时间追踪相关面试题和总结:百面机器学习。 回复干货获取相关资料和面试题总结(定期更新)。 来源: oschina 链接: https://my.oschina.net/u/4404772

从赌博中的概率到AI中的概率

半城伤御伤魂 提交于 2020-08-18 04:20:10
不确定的世界 我们生活的这个世界里面普遍具有不确定性,除了很少一部分事件具有确定性,其它大部分事件都是不确定的。而这些不确定事件我们就需要概率来描述,目前概率论已经渗透进各个学科,可以说它是人类知识体系中非常重要的部分。概率论是科学的,科学理论也需要概率论去支撑。 关于概率 如果有人跟你说明天太阳从东边升起来,那么你会觉得这是确定的,因为在人类可以预见的未来都会是这样,这种事我们会说它的概率是100%。但如果有个卖保险的人向你推荐保险,对于有概率思维的你也许很快就会用各种理论去计算看哪款产品更优。从简单的掷骰子到复杂宏观的天气预测、股市经济预测,微观的量子力学等等都需要概率来描述。 概率下的游戏 概率论的最早起源可以追溯到公元前的埃及人,他们就已经跟现代人一样开始用骰子来玩游戏了。与现代人不一样的是,他们玩骰子是因为当时饥荒很严重而玩骰子,这样他们就能忘记饥饿了,而现代人是因为吃太饱闲得慌去玩骰子赌博。 到十七世纪欧洲贵族盛行赌博,通过使用各种随机游戏来进行赌博。其中有些人就开始对随机游戏进行思考,哪种情况的可能性较大呢?一直到1654年,费尔马和帕斯卡两位数学家对于“分赌注问题”的通信讨论被公认为是概率论诞生的标志,他们两与惠更斯被称为早期概率论的创立者。 可以说,概率论的起源是赌博和游戏,后面才开始跳出赌博游戏而发展的。 概率论后期发展 后面概率论的发展已经跟赌博关系不大

初始CNN及tensorflow实现

孤街醉人 提交于 2020-08-18 02:54:57
1、初识CNN 卷积神经网络(CNN),主要用于图像识别、特征提取、自然语言处理、分类。由输入层、卷积层(Convolutional Layer)、池化层(Pooling Layer)、和全连接层(Fully Connected Layer)组成,其中卷积用于提取高层次特征,池化用于缩小参数,一般为一层卷积加一层池化反复叠加或多层卷积加一层池化;全连接层用于卷积池化后,对数据列化然后经过一两层全连接层,得出结果。 2、CNN进行手写体识别 (1)数据来源:Mnist数据集,从tensorflow导入mnist数据集。首先,在你正在写的项目下创建文件夹MNIST_data;接着,从官网下载四个压缩包,不用解压直接放入文件夹中, http:// yann.lecun.com/exdb/mni st/ 。 import numpy as np import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mnist = input_data . read_data_sets ( 'mnist_data' , one_hot = True ) #one_hot为T代表标签是一个向量 (2)网络结构的搭建 定义网络的输入、输出:首先将输入进行初始化,接着将输入重构成4维;输出为一个二维向量

第19天:NLP实战(三)——用CNN实现微博谣言检测

谁说我不能喝 提交于 2020-08-17 15:09:35
  接着上次的项目,主要是为了熟悉我们对NLP知识的实际应用,接着上次对深度学习中的DNN的简单应用相信大家对深度学习的相关知识以及相应的实现流程有了一个初步的了解,今天接着上次的 项目 ,通过用CNN对微博谣言检测进行实现。很明显这是个二分类的问题,因此,我们可以用到朴素贝叶斯或者逻辑回归以及支持向量机都可以解决这个问题,另外在深度学习中,我们可以用CNN-Text或者RNN以及LSTM等模型最好,之所以本次用到CNN就是通过本次项目介绍让大家对CNN有一个更深层次的了解。接下来,我们详细给大家介绍项目。 任务介绍   人们常说“流言止于智者”,要想不被网上的流言和谣言盅惑、伤害,首先需要对其进行科学甄别,而时下人工智能正在尝试担任这一角色。那么,在打假一线AI技术如何做到去伪存真?传统的谣言检测模型一般根据谣言的内容、用户属性、传播方式人工地构造特征,而人工构建特征存在考虑片面、浪费人力等现象。本次实践使用基于卷积神经网络(CNN)的谣言检测模型,将文本中的谣言事件向量化,通过循环神经网络的学习训练来挖掘表示文本深层的特征,避免了特征构建的问题,并能发现那些不容易被人发现的特征,从而产生更好的效果。 数据集介绍   本次实践所使用的 数据 [验证码:u0is]是从新浪微博不实信息举报平台抓取的中文谣言数据,数据集中共包含1538条谣言和1849条非谣言。如下图所示

TensorFlow 2入门指南,初学者必备!

独自空忆成欢 提交于 2020-08-17 08:03:19
什么是Tensorflow? TensorFlow是谷歌推出的深度学习框架,于2019年发布了第二版。 它是世界上最著名的深度学习框架之一,被行业专家和研究人员广泛使用。 Tensorflow v1难以使用和理解,因为它的Pythonic较少,但是随着Keras发行的v2现在与Tensorflow.keras完全同步,它易于使用,易学且易于理解。 请记住,这不是有关深度学习的文章,所以我希望您了解深度学习的术语及其背后的基本思想。 我们将使用非常著名的数据集IRIS数据集探索深度学习的世界。 废话不多说,我们直接看看代码。 导入和理解数据集 from sklearn.datasets import load_iris iris = load_iris() 现在,这个 iris 是一个字典。 我们可以使用下面的代码查看键值 iris.keys() dict_keys([‘data’, ‘target’, ‘frame’, ‘target_names’, ‘DESCR’, ‘feature_names’, ‘filename’]) 因此,我们的数据在 data 键中,目标在 targe 键中,依此类推。 如果要查看此数据集的详细信息,可以使用 iris[ ['DESCR']。 现在,我们必须导入其他重要的库,这将有助于我们创建神经网络。 from sklearn.model

pytorch学习笔记(十三):Dropout

混江龙づ霸主 提交于 2020-08-17 07:59:05
文章目录 1. 方法 2. 从零开始实现 2.1 定义模型参数 2.2 定义模型 2.3 训练和测试模型 3. 简洁实现 小结 除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法(dropout)来应对过拟合问题。 1. 方法 这里有一个单隐藏层的多层感知机。其中输入个数为4,隐藏单元个数为5,且隐藏单元 h i h_i h i ​ ( i = 1 , … , 5 i=1, \ldots, 5 i = 1 , … , 5 )的计算表达式为 h i = ϕ ( x 1 w 1 i + x 2 w 2 i + x 3 w 3 i + x 4 w 4 i + b i ) h_i = \phi\left(x_1 w_{1i} + x_2 w_{2i} + x_3 w_{3i} + x_4 w_{4i} + b_i\right) h i ​ = ϕ ( x 1 ​ w 1 i ​ + x 2 ​ w 2 i ​ + x 3 ​ w 3 i ​ + x 4 ​ w 4 i ​ + b i ​ ) 这里 ϕ \phi ϕ 是激活函数, x 1 , … , x 4 x_1, \ldots, x_4 x 1 ​ , … , x 4 ​ 是输入,隐藏单元 i i i 的权重参数为 w 1 i , … , w 4 i w_{1i}, \ldots, w_{4i} w 1 i ​ , … , w 4

SparseNN中的优化

≡放荡痞女 提交于 2020-08-17 00:53:21
作者|The AI LAB 编译|VK 来源|Medium 对SparseNN模型的过拟合进行研究,并探索了多种正则化方法,如嵌入向量的max-norm/constant-norm、稀疏特征id的dropout、参数的freezing、嵌入收缩等。然而,据我们所知,在单次训练中,没有显著的减少过拟合的效果。 正则化全连接层和稀疏参数 随机梯度下降优化器使用小批量样本来更新全连接层和稀疏参数。给定一个小批量的例子,通常所有的全连接层参数都会被更新(假设没有gate或dropout),而只有一小部分稀疏参数会在正向传播中被激活,从而在反向传播中被更新。例如,假设一个稀疏特征对用户在过去一周内单击的广告id进行编码,虽然我们可能有数百万个惟一的广告id,但是在一个小型批处理中(通常是100个样本)出现的广告id的数量与基数相比非常有限。 正则化稀疏参数与全连接层参数的不同之处在于,我们需要在运行时识别小型批处理中已激活的稀疏参数,然后仅对这些参数进行正则化。 在正则化全连接层参数时需要注意的一点是,全连接层中的偏差通常不需要正则化。因此,需要识别这些偏差,并将它们自动排除在正则化之外。 L2正则化 J(W)是经验损失,||W_dense||²是全连接层稀疏参数(也称为L2正则化器)的L2范数的平方;||W_sparse||²也是如此。 参数W_i的损失L的梯度被分解为经验损失J和所谓的