精华内容
下载资源
问答
  • cross entropy

    2017-07-19 16:31:50
    出处:https://liusida.github.io/2016/11/25/cross-entropy/ Cross Entropy 的通俗意义 ...CrossEntropy=−∑i(Li⋅log(Si))CrossEntropy=−∑i(Li⋅log⁡(Si)) 它描述的是可能性 S 到 L

    出处:https://liusida.github.io/2016/11/25/cross-entropy/


    Cross Entropy 的通俗意义

    cross_entropy 公式如下:

    CrossEntropy=i(Lilog(Si))CrossEntropy=−∑i(Li⋅log⁡(Si))

    它描述的是可能性 S 到 L 的距离,也可以说是描述用 S 来描述 L 还需要多少信息(如果是以2为底的log,则代表还需要多少bit的信息;如果是以10为底的log,则代表还需要多少位十进制数的信息)。

    当年 香农 Shannon 创立信息论的时候,考虑的是每一次都是扔硬币,结果只有2个可能,所以用的是以2为底,发明了bit计量单位。

    而软件实现,例如 Tensorflow 里的实现,则是使用以 e 为底的log。

    Tensorflow 中有个经常用到的函数叫 tf.nn.softmax_cross_entropy_with_logits 。这个函数的实现并不在 Python 中,所以我用 Numpy 实现一个同样功能的函数进行比对,确认它使用的是以 e 为底的log。理由很简单,因为 Softmax 函数里使用了 e 的指数,所以当 Cross Entropy 也使用以 e 的log,然后这两个函数放到一起实现,可以进行很好的性能优化。

    其中对于 logits 这个称呼,我仍然没有明白是为什么。

    import tensorflow as tf
    import numpy as np
    
    
    # Make up some testing data, need to be rank 2
    
    x = np.array([
    		[0.,2.,1.],
    		[0.,0.,2.]
    		])
    label = np.array([
    		[0.,0.,1.],
    		[0.,0.,1.]
    		])
    
    
    # Numpy part #
    
    def softmax(logits):
        sf = np.exp(logits)
        sf = sf/np.sum(sf, axis=1).reshape(-1,1)
        return sf
    
    def cross_entropy(softmax, labels):
    	return -np.sum( labels * np.log(softmax), axis=1 )
    
    def loss(cross_entropy):
    	return np.mean( cross_entropy )
    
    numpy_result = loss(cross_entropy( softmax(x), label ))
    
    print(numpy_result)
    
    # Tensorflow part #
    
    g = tf.Graph()
    with g.as_default():
    	tf_x = tf.constant(x)
    	tf_label = tf.constant(label)
    	tf_ret = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(tf_x,tf_label) )
    
    with tf.Session(graph=g) as ss:
    	tensorflow_result = ss.run([tf_ret])
    
    print(tensorflow_result)
    
    

    附各公式

    ### 1. Softmax
    Si=eXij(eXj)Si=eXi∑j(eXj)
    这里的 X 就是 logits,S 表示一次判断,Si 表示一次判断中的第i个选项。
    ### 2. Cross Entropy
    D=i(Lilog(Si))D=−∑i(Li⋅log⁡(Si))
    这里 D 表示一次判断,Li 是一次判断中一个 label 的第 i 个选项。log 是以 e 为底。
    ### 3. loss
    loss=1Nk(Dk)loss=1N∑k(Dk)
    这里的 Dk 表示第 k 次判断,N 表示总次数,也就是取平均值。


    展开全文
  • cross apply

    2019-05-15 11:07:28
    sqlserver中,用于对多连接 inner join必须有on,写上关联条件 cross apply不需要on 要求:查询每个学生最近两的考试成绩 SELECT a.id, a.name, b.score from TempStudent a inner join TempScore b on b....

    sqlserver中,用于一对多连接
    inner join必须有on,写上关联条件
    cross apply不需要on

    要求:查询每个学生最近两次的考试成绩

    SELECT a.id, a.name, b.score
    from TempStudent a
    inner join TempScore b on b.TempStudentId = a.id
    
    

    在这里插入图片描述
    满足不了

    SELECT a.id, a.name, b.score
    from TempStudent a
    cross apply (SELECT top 2 * from TempScore where TempStudentId = a.Id ORDER BY score desc) b
    

    在这里插入图片描述
    满足了

    展开全文
  • Cross Validation

    千次阅读 2014-11-17 18:49:48
    以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,部分做为训练集(train set),另部分做为验证集(validation set),首先...
    以下是我一直迷惑的、也是刚看到的validation set与training set、test set的关系:

     In particular, we cannot use the test set for the purpose of tweaking hyperparameters. Whenever you're designing Machine Learning algorithms, you should think of the test set as a very precious resource that should ideally never be touched until one time at the very end. Otherwise, the very real danger is that you may tune your hyperparameters to work well on the test set, but if you were to deploy your model you could see a significantly reduced performance. In practice, we would say that you overfit to the test set.

     Another way of looking at it is that if you tune your hyperparameters on the test set, you are effectively using the test set as the training set, and therefore the performance you achieve on it will be too optimistic with respect to what you might actually observe when you deploy your model. But if you only use the test set once at end, it remains a good proxy for measuring the generalization of your classifier .

     Luckily, there is a correct way of tuning the hyperparameters and it does not touch the test set at all. The idea is to split our training set in two: a slightly smaller training set, and what we call a validation set


    以下简称交叉验证(Cross Validation)CV.
    CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标.
    常见CV的方法如下:

    1).Hold-Out Method
    将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此Hold-OutMethod下分类器的性能指标.此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hold-Out Method并不能算是CV,因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性.

    2).K-fold Cross Validation(记为K-CV)
    将原始数据分成K(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标.K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2.K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性.

    3).Leave-One-Out Cross Validation(记为LOO-CV)
    如果设原始数据有N个样本,那么LOO-CV就是N-CV,即每个样本单独作为验证集,其余的N-1个样本作为训练集,所以LOO-CV会得到N个模型,用这N个模型最终的验证集的分类准确率的平均数作为此下LOO-CV分类器的性能指标.相比于前面的K-CV,LOO-CV有两个明显的优点:
    a.每一回合中几乎所有的样本皆用于训练模型,因此最接近原始样本的分布,这样评估所得的结果比较可靠。
    b.实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。

    LOO-CV的缺点则是计算成本高,因为需要建立的模型数量与原始数据样本数量相同,当原始数据样本数量相当多时,LOO-CV在实作上便有困难几乎就是不显示,除非每次训练分类器得到模型的速度很快,或是可以用并行化计算减少计算所需的时间.


    在 pattern recognition 与 machine learning 的相关研究中,经常会将 dataset分为 training 跟 test 这两个 subsets,前者用以建立 model,后者则用来评估该 model 对未知样本进行预测时的精确度,正规的说法是 generalization ability。在往下叙述之前,这边就必须点出一个极为重要的观念:只有 training data 才可以用在 model 的训练过程中,test data 则必须在 model 完成之后才被用来评估 model 优劣的依据。 


    怎么将完整的 dataset 分为 training set 与 test set 也是学问,必须遵守两个要点: 
    1.  training set 中样本数量必须够多,一般至少大于总样本数的 50%。 
    2.  两组子集必须从完整集合中均匀取样。 
    其中第 2 点特别重要,均匀取样的目的是希望减少 training/test set 与完整集合之间的偏差(bias),但却也不易做到。一般的作法是随机取样,当样本数量足够时,便可达到均匀取样的效果。然而随机也正是此作法的盲点,也是经常是可以在数据上做手脚的地方。举例来说,当辨识率不理想时,便重新取样一组training set 与 test set,直到 test set 的辨识率满意为止,但严格来说这样便算是作弊了。 


    Cross-validation 正是为了有效的估测 generalization error 所设计的实验方法,可以细分为 double cross-validation、k-fold cross-validation 与leave-one-out cross-validation。Double cross-validation 也称 2-fold cross-validation(2-CV),作法是将 dataset 分成两个相等大小的 subsets,进行两回合的分类器训练。在第一回合中,一个 subset 作为 training set,另一个便作为 test set;在第二回合中,则将 training set 与 test set 对换后,再次训练分类器,而其中我们比较关心的是两次 test sets 的辨识率。不过在实务上 2-CV 并不常用,主要原因是 training set 样本数太少,通常不足以代表母体样本的分布,导致 test 阶段辨识率容易出现明显落差。此外,2-CV 中分 subset的变异度大,往往无法达到「实验过程必须可以被复制」的要求。 


    K-fold cross-validation (k-CV)则是 double cross-validation 的延伸,作法是将 dataset 切成 k 个大小相等的 subsets,每个 subset 皆分别作为一次 test set,其余样本则作为 training set,因此一次 k-CV 的实验共需要建立 k 个models,并计算 k 次 test sets 的平均辨识率。在实作上,k 要够大才能使各回合中的 training set 样本数够多,一般而言 k=10 算是相当足够了。 


    最后是 leave-one-out cross-validation (LOOCV),假设 dataset 中有 n 个样本,那 LOOCV 也就是 n-CV,意思是每个样本单独作为一次 test set,剩余 n-1个样本则做为 training set,故一次 LOOCV 共要建立 n 个 models。相较于前面介绍的 k-CV,LOOCV 有两个明显的优点: 
         每一回合中几乎所有的样本皆用于训练 model,因此最接近母体样本的分布,估测所得的 generalization error 比较可靠。 
         实验过程中没有随机因素会影响实验数据,确保实验过程是可以被复制的。 
    但 LOOCV 的缺点则是计算成本高,因为需要建立的 models 数量与总样本数量相同,当总样本数量相当多时,LOOCV 在实作上便有困难,除非每次训练 model 的速度很快,或是可以用平行化计算减少计算所需的时间。 


    使用 Cross-Validation 时常犯的错误 :
    由于实验室许多研究都有用到 evolutionary algorithms(EA)与 classifiers,所使用的 fitness function 中通常都有用到 classifier 的辨识率,然而把cross-validation 用错的案例还不少。前面说过,只有 training data 才可以用于 model 的建构,所以只有 training data 的辨识率才可以用在 fitness function 中。而 EA 是训练过程用来调整 model 最佳参数的方法,所以只有在 EA结束演化后,model 参数已经固定了,这时候才可以使用 test data。 
    那 EA 跟 cross-validation 要如何搭配呢?Cross-validation 的本质是用来估测(estimate)某个 classification method 对一组 dataset 的 generalization error,不是用来设计 classifier 的方法,所以 cross-validation 不能用在 EA的 fitness function 中,因为与 fitness function 有关的样本都属于 training set,那试问哪些样本才是 test set 呢?如果某个 fitness function 中用了cross-validation 的 training 或 test 辨识率,那么这样的实验方法已经不能称为 cross-validation 了。 


    EA 与 k-CV 正确的搭配方法,是将 dataset 分成 k 等份的 subsets 后,每次取 1份 subset 作为 test set,其余 k-1 份作为 training set,并且将该组 training set 套用到 EA 的 fitness function 计算中(至于该 training set 如何进一步利用则没有限制)。因此,正确的 k-CV 会进行共 k 次的 EA 演化,建立 k 个classifiers。而 k-CV 的 test 辨识率,则是 k 组 test sets 对应到 EA 训练所得的 k 个 classifiers 辨识率之平均值。 


    Inferrences:

    http://cs231n.github.io/classification/

    http://www.ilovematlab.cn/thread-49143-1-1.html

    展开全文
  • 最近看到一篇决策树的论文,其中说到了5-fold cross-validation和10-fold cross-...它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这...

    转载自:https://www.jianshu.com/p/284581d9b189

    最近看到一篇决策树的论文,其中说到了5-fold cross-validation和10-fold cross-validation,所以查找了一些资料了解一下他们是什么。

    原理:

    它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。

    一般情况下,我们验证时只会使用到5-fold cross-validation和10-fold cross-validation。

     

     

    展开全文
  • Cross validation

    千次阅读 2009-12-18 00:10:00
    Cross validation is a model evaluation method that is better than residuals. The problem with residual evaluations is that they do not give an indication of how well the learner will do when it is ask
  • 深度学习(cross-entropy和sofrmax

    万次阅读 2017-09-19 11:21:15
    Cross-entropy 神经网络的学习行为和人脑差的很多, 开始学习很慢, 后来逐渐增快 为什么? 学习慢 => 偏导数 ∂C/∂w 和 ∂C/∂b 值小 回顾之前学习的Cost函数: 回顾sigmoid函数: 当神经元的输出接近1或0时,曲线...
  • 法(交叉验证法,Leave-One-Out Cross Validation)

    万次阅读 多人点赞 2019-08-05 16:05:38
    交叉验证法 这种方法比较简单易懂,就是把个大的数据集分为k个小数据集,其中k-1个作为...这种方法也被叫做‘k折交叉验证法(k-fold cross validation)’。最终的结果是这10验证的均值。此外,还有种交叉验...
  • 以前解决Rest服务的跨域问题都是都是使用Spring的@CrossOrigin注解,但是昨天个前端同事告诉我有跨域请求问题。  试了几,都开始怀疑@CrossOrigin是否真的能解决跨域问题了。  其实,如果先分析一下网络...
  • Deep & Cross模型

    2019-09-11 14:54:19
    就是说设计几层神经网络结构,每层代表其不同阶的组合,最下面是二阶组合,再套层,三阶组合,四阶组合,层往上套,这就叫显式地捕获高阶特征组合,Deep&Cross是最开始做这个的。 Deep & Cross ...
  • 使用sklearn的cross_val_score进行交叉验证

    万次阅读 多人点赞 2018-06-15 18:21:36
    在构建模型时,调参是极为重要的个步骤,因为只有选择最佳的参数才能构建个最优的模型。但是应该如何确定参数的值呢?所以这里记录一下选择参数的方法,以便后期复习以及分享。 (除了贝叶斯优化等方法)其它...
  • Cross Apply 与 Outer Apply 的区别

    千次阅读 2018-05-11 22:22:38
    Cross Apply 与 Outer Apply 的区别,就像是 Inner join 与 Outer Join 的区别。 Inner Join 如果两边的表,无论是 Left Table, 或者是 Right Table, 做了限制,都会被应用到两边去,即一方的结果影响了另一方的...
  • 要了解两者的区别,当然要先知道什么是softmax, sigmoid, 和 cross entropy(交叉熵)了: 1、softmax: 图片来源:李宏毅机器学习课程 sotfmax其实很简单,就是输入通过个函数映射到0-1之间的输出,上图中蓝色...
  • 在使用keras做对心电信号分类的项目中发现个问题,这个问题起源于我的个使用错误: binary_crossentropy 二进制交叉熵用于二分类问题中,categorical_crossentropy分类交叉熵适用于多分类问题中,我...
  • 交叉熵(Cross-Entropy)

    万次阅读 多人点赞 2016-03-03 18:31:10
    交叉熵(Cross-Entropy) 交叉熵是个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。 1.什么是信息量? 假设XX是个离散型随机变量,其取值集合为X\mathcal{X},概率分布函数为p(x)=Pr...
  • 交叉熵cross entropy

    千次阅读 2018-02-23 10:45:25
    在统计学中,损失函数是种衡量损失和错误程度的函数.建设某样本的实际输出为a,而预计的输出为y,则y和a之间可能会不一样,存在偏差,深度学习的目的就是通过不断地训练迭代,使得a越来越接近y,即,而训练的本质就是寻找...
  • Cross-validation\cross_val_score\鲁棒性

    千次阅读 2019-08-01 23:10:33
    有时我们挑出的模型在测试集上...目前普遍的做法,是使用cross_validation来评估模型以及挑选模型。   它的基本思想就是将原始数据(dataset)进行分组,部分做为训练集来训练模型,另部分做为测试集来评价模型。
  • Pytorch - Cross Entropy Loss

    万次阅读 多人点赞 2018-05-04 15:56:37
    Pytorch - Cross Entropy Loss Pytorch 提供的交叉熵相关的函数有: torch.nn.CrossEntropyLoss torch.nn.KLDivLoss torch.nn.BCELoss torch.nn.BCEWithLogitsLoss torch.nn.MultiLabelSoftMarginLoss ​ 1. ...
  • Cross-Validation概述

    千次阅读 2017-03-25 18:02:02
    Cross Validation概述  在同个数据集上对训练好的模型进行重复测试从方法上来说就是种错误。这样生成的模型对它重复看到的样本标签有个完美的预测分数,但是却不能预测到未知数据中任何有用的东西。这种情况...
  • 交叉熵损失函数是模型中非常常见的种损失函数,tensorflow中一个计算交叉熵的函数:tf.nn.sigmoid_cross_entropy_with_logits,也可以调用keras中的函数: tf.keras.backend.binary_crossentropy,两者有一些不同...
  • cross-request 插件下载安装教程

    千次阅读 2019-10-09 10:49:17
    cross-request 赋予个 html 页面跨域请求能力,该扩展仅支持 YApi 接口管理平台2.9版本修复了 chrome72 版本无法发送 cookie 问题 3.0修复 ...
  • 、回顾CROSS上线后的精彩数据 01月13日,CROSS正式上线火币生态链Heco,并在上线前3日就位于Heco人气榜前三,用户可前往Heco项目跟踪平台Defibox查看数据; 02月01日,CROSS v1.0更新了手机端和中韩两语,并适配了...
  • Cross Apply 与 Inner Join 的对抗

    千次阅读 2018-05-03 23:41:45
    Cross Apply 是 SQL Server 2005 新出的特性,微软给出的定义原文是这样: The MSDN definition is: “The APPLY operator is similar to the JOIN operator, but the difference is that the right-hand ...
  • Cross validation的一点笔记

    千次阅读 2014-03-05 11:08:22
    Our data is a sample,and what we need is to resample, Cross-validationis a resampling method. The lower the training error, the test error can get higherif we over fit. Model Complexity:
  • cross validation 交叉验证

    千次阅读 2015-06-01 10:47:36
    在pattern recognition与machine learning的相关研究中,经常会将dataset分为training跟test这两个subsets,前者用以建立model,后者...交叉验证(Cross validation),有时亦称循环估计, 是种统计学上将数据样本切
  • clang cross compile for mips

    千次阅读 2018-05-25 14:12:55
    安装libc交叉编译库 需要三种交叉编译的库: -libc指定平台的cpp标准库 -binutils指定平台的内置函数库 ...sudo apt-get install libc6-dev-mips-cross libc6-mips-cross sudo apt-get install bin...
  • 今天介绍4种列转行(又称宽表转长表、逆透视等)写法。 数据准备 CREATE ...CROSS JOIN ...CROSS JOIN与CROSS APPLY写法也只要扫描一次基表,可能执行效率比UNPIVOT差一点点,但好处是语法上更灵活
  • 论文-Deep Cross-Modal Hashing

    千次阅读 2017-11-07 17:11:00
    Deep Cross-Modal Hashing 关键词:cross-Modal, deep learning 因为cross-modal hashing...本论文提出了个deep cross-modal hashing(DCMH),首次将feature learning和hash-code learning结合到同个框...
  • 叉熵损失函数(Cross Entropy)

    万次阅读 2020-03-25 08:25:43
      我们在逻辑回归算法中引入了交叉熵函数,但是上一次,我并没有对交叉熵损失函数做一个详细的解释。这里就补上。损失函数又叫做误差函数,用来衡量算法的运行情况.在分类中,都是和分类错误的数量正相关的,分类...
  • 交叉验证 Cross-validation

    千次阅读 2017-12-21 16:24:44
    以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,部分做为训练集(train set),另部分做为验证集(validation set),首先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,653
精华内容 46,261
关键字:

一次cross