精华内容
下载资源
问答
  • 小结某些机器学习算法归纳偏置

    千次阅读 2017-01-12 20:52:21
    小结某些机器学习算法归纳偏置,个人的理解

    主要参考书:《Machine Learning》Tom M.Mitchell

    对归纳偏执的理解:
      某个机器学习算法在使用或者说泛化的过程中,所需要遵守的约束条件,只有当这些条件满足时,才能说这一算法是有效或者能适用的。

    概念学习:

      目标概念在假设空间中。
      另外,隐含的归纳偏执是所有属性起作用的程度一致。
      无论是FIND-S算法还是候选消除法,如果不满足归纳偏执的话会导致无法找到满足条件的变形空间。

    决策树:
      ID3算法:优先选择较短树,或者说更靠近根节点的树优先,或者说信息增益高的属性优先。
      因较短的树能够覆盖更大的假设空间。

    SVM:
      数据间的平滑插值。
      也就是说如果两数据输入位置离得近,则输出也离得近(相对于第三个数据来说)。
      也可以理解成决策面是连续平滑曲面。


    展开全文
  • 神经元不添加偏置项可以吗?答案是,不可以 每个人都知道神经网络的偏置(bias)是什么,而且从人类实现第一个感知器开始,每个人都知道神经元需要添加偏置项。但你是否考虑过我们为什么要使用偏置项呢?就我而言...

    神经元中不添加偏置项可以吗?答案是,不可以
    每个人都知道神经网络中的偏置(bias)是什么,而且从人类实现第一个感知器开始,每个人都知道神经元需要添加偏置项。但你是否考虑过我们为什么要使用偏置项呢?就我而言,直到不久前我才弄清楚这个问题。当时我和一个本科生讨论了一些神经网络模型,但不知何故她把“偏置输入”(bias input)和“统计基差”( statistical bias)搞混了。对我来说,向她解释这些概念当然很容易,但我却很难进一步地告诉她我们为什么要使用偏置项。过了一段时间,我决定尝试写代码来研究这一问题。
    让我们先从一些简单的概念开始。
    感知器是多层感知器(MLP)和人工神经网络的前身。众所周知,感知器是一种用于监督学习的仿生算法。它本质上是一个线性分类器,如图所示:

    一个简单的感知器示意图


    下面让我们考察一下这个模型的数学方程:

    在这里,f(x)代表激活函数(通常是一个阶跃函数)。b是偏置项, p和w分别是输入和权重。

    你可能会注意到它与线性函数的标准形式是相似的。如果我们不适用激活函数,或将激活函数替换为恒等映射,这些公式将是相同的(在这里为了方便描述,我们只考虑单一输入):

    在这里偏置项的权重是1

    比较这两个公式,很明显我们的偏置项就对应了线性函数中的b。现在的问题就转化为,线性函数中的b为什么那么重要?如果你过去几年没有上过任何线性代数课程(就像我一样),可能对一些概念不够了解。但是下面的内容是很容易理解的:

    我们很容易就注意到,当b=0时,函数总是通过原点[0,0]。当我们保持a不变的情况下引入b时,新的函数总是相互平行的。那么,我们能从中得到什么信息呢?
    我们可以说,系数a决定了函数的角度,而分量b决定了函数与x轴的交点。
    此时我想你已经注意到了一些问题,对吧?如果没有b,函数将会失去很多灵活性。只不过对一些分布进行分类时偏置项可能有用,但不是对所有情况都有用。怎样测试它的实际效果呢?让我们使用一个简单的例子:OR函数。让我们先来看看它的分布:
    绘制在笛卡尔坐标系中的OR函数:
    述
    我想你已经想明白了这个问题。图中两个点([0,0]和[1,0])是两个不同的类,但任何一条过[0,0]的直线都没有办法将这两个点分开。那么感知机如何对它分类呢?有偏置项和无偏置项的结果分别是怎样的呢?让我们通过编程,看看将会发生什么!下面是用Python实现的感知器神经元:

    classPerceptron():def__init__(self, n_input, alpha=0.01, has_bias=True):
        self.has_bias = has_bias
        self.bias_weight = random.uniform(-1,1)
        self.alpha = alpha
        self.weights = []
        for i in range(n_input):
            self.weights.append(random.uniform(-1,1))defclassify(self, input):
        summation = 0if(self.has_bias):
            summation += self.bias_weight * 1for i in range(len(self.weights)):
            summation += self.weights[i] * input[i]
        return self.activation(summation)defactivation(self, value):if(value < 0):
            return0else: 
            return1deftrain(self, input, target):
        guess = self.classify(input)
        error = target - guess
        if(self.has_bias):
            self.bias_weight += 1 * error * self.alpha
        for i in range(len(self.weights)):
            self.weights[i] += input[i] * error * self.alpha
    

    没有偏置项的感知器

    首先,让我们训练无偏置项的感知器。我们知道,分类器(在本例中是我们的函数)总是通过[0,0]的。正如我们之前所说的那样,分类器无法分开这两类。在这种情况下尽管一直在向分离平面逼近,但它还是不能将[0,0]和[1,0]分开,

    有偏置项的感知器

    现在我们来看一下有偏置项的感知器。首先,注意分类器的灵活性。如前所述,在这种情况下感知器具有更大的灵活性。此外我们可以注意到,它正在寻找与上一个示例相同的判别平面,但是现在它能够找到分离数据的最佳位置。
    所以,偏置项的重要性现在已经很清楚了。我知道你现在可能在思考激活函数,我们在python例子中使用了一个阶跃函数作为激活函数,如果我们使用sigmoid作为激活函数,它的效果可能会更好?相信我:不会的。让我们看看当我们将sigmoid函数作为线性函数的激活函数(σ(f (x)))会发生什么:

    你是否注意到这里的例子和线性函数的例子很相似?sigmoid函数虽然改变了输出的形状,但是我们仍然遇到同样的问题:如果没有偏置项,所有的函数都会经过原点。当我们试图用曲线分离OR函数中时,它仍然得不到满意的结果。如果您想尝试一下,看看它是如何工作的,您只需要对python代码做一些小小的修改。
    我真诚地感谢你对这个主题感兴趣。如果你有任何建议、意见,或者只是想和我打个招呼,请给我留言!我将很乐意和你讨论这个问题。

    deephub翻译组:zhangzc

    展开全文
  • 参考西瓜书对归纳偏置(偏好)的一些总结理解 模型对应假设空间的一个假设! 现在,与训练集(样本)一致的假设有多个,那么应该选择哪一个模型(假设)呢? 如果认为相似的样本应有相似的输出,则...
    参考西瓜书对归纳偏置(偏好)的一些总结理解

    模型对应假设空间中的一个假设!

    现在,与训练集(样本)一致的假设有多个,那么应该选择哪一个模型(假设)呢?
    如果认为相似的样本应有相似的输出,则对应的学习算法可能偏好“平滑”的曲线。

    归纳偏好可以看作学习算法自身在一个庞大的假设空间中对假设进行选择的启发式或者“价值观”。即天涯何处无芳草,却为什么偏偏选择你!!!

    那怎样才能引导算法确立“正确的”偏好,找到更好的你呢?
    奥卡姆剃刀原则!即若有多个假设与观察(训练集)一致,则选最简单的那个!简单粗暴有木有!
    这里有个问题,简单的定义是什么不是那么好确定的。

    但是,就算你确实选择了最简单的假设,没有免费的午餐NFL定理告诉我们,与训练集一致有多个假设,真实的目标函数f是这些假设之一,如果f是均匀分布,即在这些假设中是等概率的,那么任意的学习算法,它们偏好不同并分别选择了其中一种假设,则他们最终的期望性能相同,与算法无关。

    NFL假设了f的均匀分布,而实际问题并非如此。考虑西瓜问题,假设1:好瓜={色泽=*,根蒂=蜷缩,敲声=浊响};假设2:好瓜={色泽=*,根蒂=硬挺,敲声=清脆},他们都符合样本。
    从NFL定理可知,这两种假设一样好。然而注意到,{根蒂=蜷缩,敲声=浊响}的好瓜常见,{根蒂=硬挺,敲声=清脆}的好瓜罕见,甚至不存在。所以归纳偏置会选择假设1的算法自然就优于其他算法。


    总结:归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能!


     以下是机器学习中常见的归纳偏置列表:
    - 最大条件独立性(conditional independence):如果假说能转成贝叶斯模型架构,则试着使用最大化条件独立性。这是用于朴素贝叶斯分类器(Naive Bayes classifier)的偏置。
    - 最小交叉验证误差:当试图在假说中做选择时,挑选那个具有最低交叉验证误差的假说,虽然交叉验证看起来可能无关偏置,但天下没有免费的午餐理论显示交叉验证已是偏置的。
    - 最大边界:当要在两个类别间画一道分界线时,试图去最大化边界的宽度。这是用于支持向量机的偏置。这个假设是不同的类别是由宽界线来区分。
    - 最小描述长度(Minimum description length):当构成一个假设时,试图去最小化其假设的描述长度。假设越简单,越可能为真的。见奥卡姆剃刀。
    - 最少特征数(Minimum features):除非有充分的证据显示一个特征是有效用的,否则它应当被删除。这是特征选择(feature selection)算法背后所使用的假设。
    - 最近邻居:假设在特征空间(feature space)中一小区域内大部分的样本是同属一类。给一个未知类别的样本,猜测它与它最紧接的大部分邻居是同属一类。这是用于最近邻居法的偏置。这个假设是相近的样本应倾向同属于一类别。K紧邻





    展开全文
  • 机器学习之权重、偏置自动调参

    千次阅读 2018-10-31 08:47:36
    其实学习机器学习内容的时候,我对这些算法过程是理解的,但是我对细节是模糊的。 所以,我需要写点代码,在电脑里面跑一下,自己才能领会到算法的真正含义。 开始讲解 那么,下面我就列举一个输入为二维的特征值,...

    背景

    这段时间在学习神经网络相关的内容,神经网络的算法里面只要给定它特征值丢进去,算法就会自身跟新权重和误差(偏置)。其实学习机器学习内容的时候,我对这些算法过程是理解的,但是我对细节是模糊的。

    所以,我需要写点代码,在电脑里面跑一下,自己才能领会到算法的真正含义。


    开始讲解

    那么,下面我就列举一个输入为二维的特征值,输出为一维的简单的神经网络模拟。
    例如:A有两个特征值,一个特征值是他有棍子,另一个特征值是他会躁动。现在我们有10组样本,每个样本的特征值对应着A是否会和你打架的真实值。

    x = [(1,1),(0.9,1.8),(2.3,1),(2.8,1.5),(1.3,4),(6,4.6),(4.2,5.1),(5.1,6.6),(6.2,5.6),(4.6,5.2)]
    y = [-1,-1,-1,-1,1,1,1,1,1,1]
    

    例如上面,x就是特征值,比如第一个样本(1,1)就是A有棍子的概率为1,A会躁动的概率为1,此时对应y真实值是-1,那么表示A不会生气。再比如,最后一个样本(4.6,5.2),就是A有棍子的概率为4.6,A会躁动的概率为5.2,此时A对应的真实值为1,那么表示此时A会生气。

    上面10组样本就是真实情况下发生的,可以理解我10次惹了A,其中4次A没有生气,6次A生气了。

    那么,我现在想弄一个算法出来,当下一次我再惹A时候,我输入A有棍子的概率和A会躁动的概率,然后算法自动给出此时会不会生气,那么根据算法来判断我该不该惹A了,哈哈哈,是不是很好玩。


    代码

    我使用的是PyCharm软件进行代码编写,代码写的也比较简单,需要导入matplotlib库,因为我把样本用散点图的形式表示出来。

    另外,我对参数w1,w2,bw_1,w_2,b进行初始赋值,分别为0.5,0.5,0.5 。这个初始值可以随便赋值,反正你把样本丢进去,这些参数会自动调参。因为我的样本比较少,训练个5~6边权重和偏置基本就稳定下来了。

    好了,废话不多说,直接上代码~

    
    import matplotlib.pyplot as plt
    
    class Perceptron:
        w1, w2, b = 0.5, 0.5, 0.5
    
        x = [(1,1),(0.9,1.8),(2.3,1),(2.8,1.5),(1.3,4),(6,4.6),(4.2,5.1),(5.1,6.6),(6.2,5.6),(4.6,5.2)]
        y = [-1,-1,-1,-1,1,1,1,1,1,1]
        # 设置X轴标签
        plt.xlabel('X')
        # 设置Y轴标签
        plt.ylabel('Y')
    
        def show(self):
            mark = []
            color = []
            # 把特征值提取出来,x1是其中一个特征值,使用元组来存储,有多维
            x1, x2 = zip(*self.x)
            for i in range(10):
                s = self.w1 * x1[i] + self.w2 * x2[i] + self.b
                if s>0:
                    color.append('red')
                    mark.append('x')
                else:
                    color.append('blue')
                    mark.append('o')
            for _k,_c,_x1,_x2 in zip(mark,color,x1,x2):
                plt.scatter(_x1,_x2,s=100,c=_c)
                # mark参数不能用,不知道为什么
                # plt.scatter(_x1, _x2,mark = _k, s=100, c=_c)
            s1 = (0,-self.b/self.w2)
            s2 = (8,(-self.b-8*self.w1)/self.w2)
            plt.plot([s1[0],s2[0]],[s1[1],s2[1]],'k-',linewidth=2.0,color='g')
            plt.show()
    
        def learn(self):
                x1,x2 = zip(*self.x)
                # 训练次数10
                for _ in range(10):
                    # 开始对每组样本的特征进行调参
                    for i in range(10):
                         s = self.w1 * x1[i] + self.w2 * x2[i] + self.b
                         if(s*self.y[i] <=0 ):
                            self.w1 += self.y[i] * x1[i]
                            self.w2 += self.y[i] * x2[i]
                            self.b += self.y[i]
                    print(self.w1,self.w2,self.b)
    
                self.show()
    
    
    #main
    
    p = Perceptron()
    p.learn()
    
    
    
    展开全文
  • 对于神经网络,一般只对每一层仿射变换的weights进行正则化惩罚,而不对偏置bias进行正则化。 相比于weight,bias训练准确需要的数据要更少。每个weight指定了两个变量之间的关系。weights训练准确需要在很多种情况...
  • BAT机器学习面试1000题系列

    万次阅读 多人点赞 2017-12-14 15:19:15
    1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列; 2、文章带斜体的文字代表是本人自己增加的内容,如有错误还请批评指正; 3、原文中有部分链接已经失效,故而本人重新加上了新的链接,如有...
  • 机器学习理论-Part3正则化和偏置方差的权衡 在第一部分探讨了统计模型潜在的机器学习问题,并用它公式化获得最小泛化误差这一问题;在第二部分通过建立关于难懂的泛化误差的理论去得到实际能够估计得...
  •  这部分不是要介绍哪个具体的机器学习算法,前面做了一些机器学习的算法,本人在学习的过程也去看别人写的材料,但是很多作者写的太难懂,或者就是放了太多的公式,所以我就想我来写点这方面的材料可以给大家参照...
  • 机器学习的应用——关于正确应用机器学习

    万次阅读 多人点赞 2014-11-03 15:55:14
    引言  前阵子看到一篇文章,学习了一段时间的机器学习算法后,再回头看机器学习问题,发现要想利用机器学习去很好的求解一个问题,其实是一件很难的事情。...但是在机器学习中,问题就变得复杂多了,很多将机器
  • BAT机器学习面试1000题系列(第1~305题)

    万次阅读 多人点赞 2017-09-28 11:37:49
    BAT机器学习面试1000题系列 整理:July、元超、立娜、德伟、贾茹、王剑、AntZ、孟莹等众人。本系列大部分题目来源于公开网络,取之分享,用之分享,且在撰写答案过程若引用他人解析则必注明原作者及来源链接...
  • :特征输入向量,其中是偏置项; :有的地方写成,权重向量; 黄色圈圈:神经元,也叫做激活函数。 :输出 2、激活函数 常用的非线性激活函数有sigmoid、tanh、relu等等。简要介绍下最基础的sigmoid函数(该函数...
  • 机器学习中的训练集、验证集、测试集训练集验证集测试集参考 训练集 训练集用来训练模型,即确定模型的权重和偏置这些参数,通常我们称这些参数为学习参数。 验证集 而验证集用于模型的选择,更具体地来说,验证集并...
  • 线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性。然而,尽管他们简单但也有一些缺点,在很多情况下它们并不是最佳选择。实际上存在很多种回归模型,每种都有自己的优...
  • 线性回归 对于线性模型,其预测模型可以写为:y^=θ0+θ1x1+θ2x2+⋯+θnxn\hat{y}=\theta_0+\theta_...θj\theta_jθj​是第j个模型参数(包括偏置项θ0\theta_0θ0​以及特征权重θ0,θ1,⋯ ,θn\theta_0,\theta_1,\
  • 机器学习100+问

    万次阅读 2020-12-07 00:23:19
    1. 机器学习的发展历史上有哪些主要事件? 2. 机器学习有哪些主要的流派?它们分别有什么贡献? 3. 讨论机器学习与人工智能的关系 4. 讨论机器学习与数据挖掘的关系 5. 讨论机器学习与数据科学、大数据分析等概念...
  • 之前写过一个【机器学习机器学习系统设计理论性的内容,这节使用线性回归的例子来看看如何优化一个机器学习模型,也就是机器学习中的偏差和方差问题。 视频讲解: 彻底搞定机器学习算法理论与实战——机器学习...
  • 1.前言 很多人不明白为什么要在神经网络、逻辑回归要在样本X的最前面...究其原因,还是没有理解这个偏置项的作用啦。 一个传统的神经网络就可以看成多个逻辑回归模型的输出作为另一个逻辑回归模型的输入的“...
  • 机器学习中的线性回归是一种来源于经典统计学的有监督学习技术。然而,随着机器学习和深度学习的迅速兴起,因为线性(多层感知器)层的神经网络执行回归,线性回归的使用也日益激增。 这种回归通常是线性的,但是当...
  • 我爱机器学习 机器学习干货站 跳至正文 机器学习 Deep Learning 所有主题 关注我们 DeepMind团队的《Deep Reinforcement Learning in Large Discrete Action Spaces》 发表于2016年4月7日由smallroof Paper: Deep ...
  • MNIST机器学习入门

    2017-07-26 15:07:41
    MNIST机器学习入门这个教程的目标读者是对机器学习和TensorFlow都不太了解的新手。如果你已经了解MNIST和softmax回归(softmax regression)的相关知识,你可以阅读这个快速上手教程。当我们开始学习编程的时候,第一...
  • 机器学习(ML, machine learning)在药物发现的受欢迎程度持续增长,取得了令人印象深刻的结果。随着其使用的增加,其局限性也变得明显。这些局限性包括它们对大数据的需求、数据的稀疏性以及缺乏可解释性。此外,...
  •   本篇主要是让大家熟悉机器学习实际项目的全流程,并伴随案例讲解,通过让大家动手了解实际机器学习项目的大体流程,以及面对一些常见情况的处理方法 编程环境: Anaconda3:juputer notebook Python3 Pycharm...
  • 本博客为唐宇迪老师python数据分析与机器学习实战课程学习笔记 一. 线性回归算法概述 1.1 线性回归 机器学习分有监督学习和无监督学习。 有监督学习分回归和分类。 回归:通过数据最终预测出一个值。 分类:根据...
  • 机器学习应用指南算法评估训练集与测试集多项式与交叉验证集方差与偏置多项式正则化学习曲线 算法评估 面对途中问题,随机尝试列举的解决方案并不合适,我们需要一套高效的评估方案来寻找到关键问题所在,对症下药...
  • 正则化是在机器学习和深度学习作为一种抑制过拟合的比较有效的手段之一,好的算法应该具有良好的泛化能力,即不仅要在训练集数据上表现良好,推广到未知的测试数据时,也能有良好的表现。正则化是一类通过显式设计...
  • 机器学习笔记

    千次阅读 2019-05-03 14:48:29
    机器学习(machine learning):用已有的数据训练某种模型,利用模型预测未来 Python机器学习库官网https://scikit-learn.org/stable/ 机器学习分为有监督的机器学习和无监督的机器学习 有监督的机器学习:回归、...
  • 机器学习】Python实现机器学习算法——东南大学

    千次阅读 多人点赞 2018-03-12 21:15:57
    机器学习算法python实现原文地址:https://github.com/lawlite19/MachineLearning_Python/blob/master/readme.md#机器学习算法python实现目录机器学习算法Python实现一、线性回归1、代价函数2、梯度下降算法3、均值...
  • 机器学习-线性回归总结 (θ0 是偏置项,比如说,银行贷款,这个偏置项,保证贷款额度可以上下浮动一些) 线性回归 简单来说,就是选择一条线性函数来很好的拟合已知数据并预测未知数据。 似然函数:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,158
精华内容 4,063
关键字:

机器学习中的偏置项