我知道渐变下降和反向传播定理。我没有得到的是:什么时候使用偏见很重要,你如何使用它?
例如,在映射AND
函数时,当我使用2个输入和1个输出时,它不会给出正确的权重,但是,当我使用3个输入(其中1个是偏置)时,它给出正确的权重。
答案 0 :(得分:1186)
我认为偏见几乎总是有用的。实际上,偏差值允许您将激活功能向左或向右移动,这对成功学习至关重要。
看一个简单的例子可能会有所帮助。考虑这个没有偏差的1输入,1输出网络:
通过将输入(x)乘以权重(w 0 )并将结果通过某种激活函数(例如sigmoid函数)来计算网络的输出。
以下是此网络计算的函数,w 0 的各种值:
改变重量w 0 实质上改变了sigmoid的“陡度”。这很有用,但如果你希望网络在x为2时输出0怎么办?只是改变sigmoid的陡峭度并不会真正起作用 - 你希望能够将整条曲线向右移动。
这正是偏见允许你做的事情。如果我们向该网络添加偏见,请执行以下操作:
...然后网络的输出变为sig(w 0 * x + w 1 * 1.0)。以下是w 1 的各种值的网络输出:
对于w 1 ,权重为-5会将曲线向右移动,这样我们就可以拥有一个当x为2时输出0的网络。
答案 1 :(得分:294)
加上我的两分钱。
更简单的方法来理解偏差是什么:它在某种程度上类似于线性函数的常数 b
y = ax + b
它允许您上下移动线以更好地适应预测。 没有 b ,该行总是通过原点(0,0),你可能会变得更差。
答案 2 :(得分:40)
两种不同的参数可以 在培训期间进行调整 人工神经网络,权重和价值 激活功能。这是 不切实际,如果 只有一个参数应该是 调整。为了解决这个问题a 偏见神经元是发明的。偏见 神经元位于一层,是连接的 对于下一层中的所有神经元, 但没有在前一层和它 总是发出1.自从偏见神经元 发出1个权重,连接到 偏向神经元,直接添加到 其他权重的总和 (等式2.1),就像t值一样 在激活函数中。1
它不切实际的原因是因为你同时调整了权重和值,所以对权重的任何改变都可以抵消对先前数据实例有用的值的改变...添加一个没有a的偏置神经元更改值允许您控制图层的行为。
此外,偏见允许您使用单个神经网络来表示类似的情况。考虑以下神经网络表示的AND布尔函数:
ANN http://www.aihorizon.com/images/essays/perceptron.gif
单个感知器可用于 代表许多布尔函数。
例如,如果我们假设布尔值 1(真)和-1(假),然后一 使用双输入感知器的方法 实现AND功能就是设置 权重w0 = -3,w1 = w2 = .5。 可以制造这种感知器 代表OR函数代替 将阈值改为w0 = -.3。在 事实上,AND和OR可以被视为 m-of-n函数的特例: 也就是说,功能至少为m 必须是感知器的n个输入 真正。 OR函数对应于 m = 1,AND函数为m = n。 任何m-of-n功能都很容易 使用感知器代表 将所有输入权重设置为相同 值(例如,0.5)然后设置 相应的阈值w0。
感知者可以代表所有人 原始布尔函数AND,OR, NAND(1 AND)和NOR(1 OR)。机器学习 - 汤姆米切尔)
阈值是偏差, w0 是与偏差/阈值神经元相关的权重。
答案 3 :(得分:24)
该线程确实帮助我开发了自己的项目。这里有一些进一步的说明,显示了一个简单的2层前馈神经网络在二变量回归问题上有无偏置单元的结果。权重随机初始化,并使用标准ReLU激活。正如我面前的答案所得出的那样,在没有偏差的情况下,ReLU网络无法在(0,0)处偏离零。
答案 4 :(得分:21)
没有偏差的神经网络中的层只不过是输入向量与矩阵的乘法。 (输出向量可能会通过sigmoid函数进行规范化,然后用于多层ANN,但这并不重要。)
这意味着您正在使用线性函数,因此所有零的输入将始终映射到全零的输出。对于某些系统而言,这可能是一个合理的解决方案,但总的来说它太具有限制性。
使用偏差,您可以有效地为输入空间添加另一个维度,该维度始终取值为1,因此您将避免使用全零的输入向量。你不会失去任何一般性,因为训练有素的权重矩阵不需要是满足的,因此它仍然可以映射到以前可能的所有值。
2d ANN:
对于将两个维度映射到一个维度的ANN,如在再现AND或OR(或XOR)函数时,您可以将神经网络视为执行以下操作:
在2d平面上标记输入矢量的所有位置。因此,对于布尔值,您需要标记(-1,-1),(1,1),( - 1,1),(1,-1)。你的ANN现在做的是在2d平面上绘制一条直线,将正输出与负输出值分开。
没有偏见,这条直线必须经过零,而有偏见,你可以自由地把它放在任何地方。 所以,你会看到没有偏见你就会遇到AND函数的问题,因为你不能把(1,-1)和(-1,1)放到负数侧。 (它们不允许在行上。)OR函数的问题是相同的。但是,如果有偏见,就很容易划清界限。
请注意,即使有偏差,也不能解决那种情况下的XOR功能。
答案 5 :(得分:20)
偏见不是NN
项,它是一个需要考虑的通用代数项。
Y = M*X + C
(直线方程式)
现在如果C(Bias) = 0
那么,
该行将始终通过原点,即(0,0)
,并且仅依赖于一个参数,即M
,这是斜率,因此我们可以使用更少的东西。
C
,偏见需要任意数字,并且具有移动图表的活动,因此能够代表更复杂的情况。
在逻辑回归中,目标的预期值由链接函数转换,以将其值限制为单位间隔。通过这种方式,模型预测可以被视为主要结果概率,如下所示:Sigmoid function on Wikipedia
这是NN地图中打开和关闭神经元的最终激活层。在这里,偏见还有一个作用,它可以灵活地改变曲线,以帮助我们绘制模型。
答案 6 :(得分:19)
当您使用人工神经网络时,您很少了解您想要学习的系统的内部结构。如果没有偏见,有些事情是无法学到的。例如,看看以下数据:(0,1),(1,1),(2,1),基本上是将任何x映射到1的函数。
如果您有一个单层网络(或线性映射),则无法找到解决方案。但是,如果你有偏见,这是微不足道的!
在理想的设置中,偏差还可以将所有点映射到目标点的平均值,并让隐藏的神经元模拟与该点的差异。
答案 7 :(得分:14)
神经元WEIGHTS的修改仅用于操纵传递函数的形状/曲率,而不是其平衡/零交叉点。
偏差神经元的引入允许您沿输入轴水平(左/右)移动传递函数曲线,同时保持形状/曲率不变。 这将允许网络生成与默认值不同的任意输出,因此您可以自定义/移动输入到输出映射以满足您的特定需求。
请点击此处查看图解说明: http://www.heatonresearch.com/wiki/Bias
答案 8 :(得分:12)
只是为了补充所有这些非常缺失的东西,其余的,很可能,都不知道。
如果您正在使用图片,您可能实际上更愿意不使用偏见。理论上,通过这种方式,您的网络将更加独立于数据量级,如图像是否暗,或是否明亮和生动。通过研究数据中的相对性,网络将学习如何做到这一点。许多现代神经网络利用这一点。
对于其他有偏见的数据可能很关键。这取决于您正在处理的数据类型。如果你的信息是幅度不变的 - 如果输入[1,0,0.1]会产生与输入[100,0,10]相同的结果,你可能会在没有偏见的情况下变得更好。
答案 9 :(得分:11)
在my masters thesis的几个实验中(例如第59页),我发现偏差可能对第一层很重要,但特别是在最后完全连接的层,它似乎不是发挥了重要作用。
这可能高度依赖于网络架构/数据集。
答案 10 :(得分:10)
偏差决定你想让你的体重旋转多少角度。
在二维图表中,权重和偏差有助于我们找到输出的决策边界。 假设我们需要构建AND函数,输入(p) - 输出(t)对应该是
{p = [0,0],t = 0},{p = [1,0],t = 0},{p = [0,1],t = 0},{p = [1 ,1],t = 1}
现在我们需要找到决策边界,想法边界应该是:
请参阅? W垂直于我们的边界。因此,我们说W决定了边界的方向。
但是,第一次很难找到正确的W.大多数情况下,我们随机选择原始W值。因此,第一个边界可能是这样的:
现在边界是y轴的pareller。
我们想要旋转边界,怎么样?
通过更改W。
W'= W + P等于W'= W + bP,而b = 1。
因此,通过改变b(偏差)的值,你可以决定W'和W之间的角度。这就是“ANN的学习规则”。
您还可以阅读Martin T. Hagan / Howard B. Demuth / Mark H. Beale撰写的Neural Network Design,第4章“Perceptron学习规则”
答案 11 :(得分:8)
特别是,Nate的answer,zfy的answer和Pradi的answer都很棒。
简单来说,偏差允许学习/存储越来越多的变异 ...(侧注:有时会给出一些阈值)。无论如何,更多变化意味着偏差将输入空间的更丰富的表示添加到模型的学习/存储权重。 (更好的权重可以提高神经网络的猜测能力)
例如,在学习模型中,假设/猜测在给定一些输入的情况下,希望以y = 0或y = 1为界,可能是某些分类任务...即某些y = 0,某些x =(1,1)对于某些x =(0,1),有些y = 1。 (关于假设/结果的条件是我上面谈到的阈值。请注意,我的示例设置输入X为每个x =一个双值或两个值向量,而不是Nate的一些集合X的单值x输入)。 / p>
如果我们忽略偏见,许多输入可能最终由很多相同的权重表示(即学习权重主要发生在接近来源(0,0)。 然后,该模型将被限制为较少量的良好权重,而不是通过偏差可以更好地学习的许多更好的权重。 (如果学习量不足导致较差的猜测或神经网络的猜测能力下降)
因此,模型最接近原点,同时也在阈值/决策边界内尽可能多的地方学习。 通过偏见,我们可以使原点靠近原点,但不限于原点的直接区域。
答案 12 :(得分:8)
扩展@zfy解释...... 一个输入,一个神经元,一个输出的等式应该看起来:
y = a * x + b * 1 and out = f(y)
其中x是输入节点的值,1是偏置节点的值; y可以直接输出或传递给函数,通常是sigmoid函数。还要注意,偏差可以是任何常数,但是为了使一切变得更简单,我们总是选择1(并且可能这很常见,@ zfy没有显示和解释它就这样做了。)
您的网络正在尝试学习系数a和b以适应您的数据。
因此,您可以看到为什么添加元素b * 1
可以更好地适应更多数据:现在您可以更改斜率和截距。
如果您有多个输入,则公式将如下所示:
y = a0 * x0 + a1 * x1 + ... + aN * 1
注意,该等式仍然描述了一个神经元,一个输出网络;如果你有更多的神经元,你只需要在系数矩阵中添加一个维度,将输入多路复用到所有节点,并对每个节点的贡献求和。
你可以用矢量化格式写作
A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT
即。把系数放在一个数组中并且(输入+偏差)放在另一个数组中你有你想要的解决方案作为两个向量的点积(你需要转换X以使形状正确,我写了XT a'X transposed')
所以最后你也可以看到你的偏见只是另外一个输入来表示实际上独立于你输入的输出部分。
答案 13 :(得分:6)
以简单的方式思考,如果你有 y = w1 * x ,其中 y 是你的输出,而 w1 是重量想象的条件 x = 0 然后 y = w1 * x 等于0 ,如果你想更新你的体重,你必须计算多少变化通过 delw = target-y ,其中target是您的目标输出,在这种情况下,' delw' 将不会更改,因为 y 计算为0.因此,假设您可以添加一些额外值,它将帮助 y = w1 * x + w0 * 1 ,其中bias = 1并且可以调整权重以获得正确的偏差。考虑下面的例子。
就线而言,斜率截距是一种特定形式的线性方程。
Y = mx + b中
检查图像
这里b是(0,2)
如果你想把它增加到(0,3)你将如何通过改变b的值来做到这一点
答案 14 :(得分:6)
对于我研究的所有ML书籍,W总是被定义为两个神经元之间的连通性指数,这意味着两个神经元之间的连通性越高,信号从发射神经元传递到目标神经元或Y的能力越强。 = w * X是维持神经元生物学特性的结果, 我们需要保持1> = W> = -1,但在实际回归中,W将以| W |结束。 > = 1与神经元的工作方式相矛盾,因此我建议W = cos(theta),而1> = | cos(theta)| ,Y = a * X = W * X + b 而a = b + W = b + cos(theta),b是整数
答案 15 :(得分:3)
术语“偏差”与y截距一样用于调整最终输出矩阵。例如,在经典等式y = mx + c中,如果c = 0,则直线将始终通过0。添加偏差项可为我们的神经网络模型提供更大的灵活性和更好的概括性。
答案 16 :(得分:1)
在神经网络中:
在没有偏差的情况下,仅考虑来自输入层的加权总和可能无法激活神经元。如果神经元未激活,则来自该神经元的信息不会通过其余的神经网络传递。
偏见的值是可学习的。
有效地,偏差=阈值。您可以认为偏差是让神经元输出1 how很容易的方法-具有很大的偏差,神经元很容易输出1,但是如果偏差非常负,则很困难。 >
总结: 偏置可帮助控制激活功能将触发的值。
关注该视频以了解更多details
几个有用的链接:
答案 17 :(得分:0)
一般来说,在机器学习中我们有这个基本公式Bias-Variance Tradeoff 因为在NN中我们存在过度拟合的问题(模型泛化问题,其中数据的微小变化导致模型结果的大的变化)并且因此我们具有大的变化,引入小的偏差可以帮助很多。考虑上面Bias-Variance Tradeoff的公式,其中偏差是平方的,因此引入小的偏差可能会导致方差的减少很多。 所以,当你有很大的差异和过度拟合的危险时,引入偏见。
答案 18 :(得分:0)
除了提到的答案。.我还要补充一点。
Bias是我们的锚点。这是我们拥有某种基准的一种方法,我们不能低于该基准。就图而言,想像y = mx + b就像是该函数的y截距。
输出=输入乘以重量值并加上一个偏差值,然后应用激活函数。
答案 19 :(得分:0)
偏见有助于获得更好的方程式
想象一下输入和输出,就像一个函数y = ax + b
一样,如果保持不变,则需要在输入(x)和输出(y)之间放置一条正确的线,以最小化每个点和该线之间的全局误差。这样的方程y = ax
,您将只有一个参数用于自适应,即使您找到最佳的a
来最小化全局误差,也离期望值很远
您可以说偏差使方程式更加灵活,以适应最佳值