Questions tagged «backpropagation»

反向传播是“错误的向后传播”的缩写,是训练人工神经网络与优化方法(例如梯度下降)结合使用的常用方法。

2
截断正态分布在神经网络中初始化权重有什么好处?
在前馈神经网络中初始化连接权重时,重要的是随机初始化它们,以避免学习算法无法打破的任何对称性。 我在不同地方(例如TensorFlow的MNIST教程)中看到的建议是使用标准偏差为的截断正态分布,其中是输入的数量给定的神经元层。1个ñ--√1个ñ\dfrac{1}{\sqrt{N}}ññN 我相信标准偏差公式可确保反向传播的梯度不会很快溶解或放大。但是我不知道为什么我们要使用截断的正态分布而不是正态正态分布。是否要避免稀疏的异常权重?

2
为什么带有LSTM单位的RNN也会遭受“爆炸梯度”的困扰?
我对RNN(尤其是LSTM单元)的工作方式有基本的了解。我对LSTM单元的体系结构有一个构想,即一个单元和几个门,它们调节值的流动。 但是,显然,我还没有完全理解LSTM如何解决“消失梯度和爆炸梯度”问题,该问题是在训练中使用常规RNN通过时间进行反向传播而发生的。我没有机会阅读论文以完全理解数学。 该答案简要说明了具有LSTM单位的RNN如何解决“消失梯度”问题。从数学上讲,原因似乎是不存在的导数不存在,即不趋于零。因此,作者指出:“至少存在一条不消失梯度的路径”。恕我直言,这种解释有点含糊。 同时,我正在阅读论文《使用神经网络进行序列学习》(作者:Ilya Sutskever,Oriol Vinyals,Quoc V. Le),在该论文的“ 3.4培训细节”部分中有说明 尽管LSTM往往不会遭受梯度消失的困扰,但它们可能会出现爆炸梯度。 我一直认为,带有LSTM单元的RNN可以解决“消失”和“爆炸梯度”的问题,但是,显然,带有LSTM单元的RNN也会遭受“爆炸梯度”的困扰。 凭直觉,为什么?从数学上讲,原因是什么?

1
反向传播的矩阵形式与批量归一化
批归一化已被认为可在深度神经网络中显着提高性能。互联网上的大量资料显示了如何在逐个激活的基础上实施它。我已经使用矩阵代数实现了backprop,并且考虑到我正在使用高级语言(同时依赖Rcpp(最终是GPU的)密集矩阵乘法),将所有内容剔除并采用for-loops可能会使我的代码变慢除了遭受巨大的痛苦之外 批处理归一化函数为 其中b(xp)=γ(xp−μxp)σ−1xp+βb(xp)=γ(xp−μxp)σxp−1+β b(x_p) = \gamma \left(x_p - \mu_{x_p}\right) \sigma^{-1}_{x_p} + \beta pxpxpx_p是激活之前的个节点ppp βγγ\gamma和是标量参数ββ\beta σ X p X pμxpμxp\mu_{x_p}和是均值和SD的。(请注意,通常使用方差的平方根加上一个模糊系数-假设非零元素为紧凑起见)σxpσxp\sigma_{x_p}xpxpx_p 以矩阵形式,整个层的批量归一化将为 其中b(X)=(γ⊗1p)⊙(X−μX)⊙σ−1X+(β⊗1p)b(X)=(γ⊗1p)⊙(X−μX)⊙σX−1+(β⊗1p) b(\mathbf{X}) = \left(\gamma\otimes\mathbf{1}_p\right)\odot \left(\mathbf{X} - \mu_{\mathbf{X}}\right) \odot\sigma^{-1}_{\mathbf{X}} + \left(\beta\otimes\mathbf{1}_p\right) XX\mathbf{X}是N×pN×pN\times p 1N1N\mathbf{1}_N是1的列向量 β pγγ\gamma和现在是每层归一化参数的行向量ββ\betappp σ X Ñ × p ÑμXμX\mu_{\mathbf{X}}和是矩阵,其中每一列都是列均值和标准差的向量σXσX\sigma_{\mathbf{X}}N×pN×pN \times pNNN ⊙⊗⊗\otimes是Kronecker产品,是elementwise(Hadamard)产品⊙⊙\odot ,这是一个非常简单的没有批次归一化且连续结果的单层神经网络 y=a(XΓ1)Γ2+ϵy=a(XΓ1)Γ2+ϵ y = a\left(\mathbf{X\Gamma}_1\right)\Gamma_2 + …

2
在使用截断的反向传播时捕获初始模式(RNN / LSTM)
假设我使用RNN / LSTM进行情感分析,这是一种多对一的方法(请参阅此博客)。通过截断时间反向传播(BPTT)对网络进行训练,在该网络中,像往常一样仅在最后30个步骤中展开网络。 就我而言,我要分类的每个文本节都比展开的30个步骤(〜100个单词)长得多。根据我的知识,BPTT仅对单个文本部分运行一次,这是当BPTT遍历整个文本部分并计算了二进制分类目标,它将与损失函数进行比较以发现错误。yyy 这样就永远不会针对每个文本部分的第一个单词计算梯度。然后,RNN / LSTM如何仍然调整其权重以捕获仅在前几个单词内出现的特定模式?例如,假设所有标记为句子均以“我爱这个” 开头,所有标记为句子均以“我讨厌这个”开头。当RNN / LSTM到达100步长序列的末尾时,它仅在最后30步才展开时,将如何捕获呢?positivepositivepositivenegativenegativenegative

2
小批量梯度下降如何批量更新每个示例的权重?
如果我们批量处理10个示例,我理解我们可以将每个示例的损失相加,但是反向传播在更新每个示例的权重方面如何工作? 例如: 示例1->损失= 2 示例2->损失= -2 这导致平均损失为0(E = 0),那么这将如何更新每个权重并收敛呢?仅仅是通过批次的随机化,我们“希望”早晚收敛?难道这还不是只为最后处理的示例计算第一组权重的梯度吗?

2
如何通过反向传播训练SVM?
我想知道是否可以使用反向传播训练SVM(例如,将其简化为线性模型)? 目前,我处于障碍之中,因为我只能考虑将分类器的输出编写为 F(X ; θ ,b )= SGN (θ ·&X - (b + 1 ))= SGN (克(x ; θ ,b ))f(x;θ,b)=sgn(θ⋅x−(b+1))=sgn(g(x;θ,b)) f(\mathbf{x};\theta,b) = \text{sgn}(\theta\cdot\mathbf{x} - (b+1)) = \text{sgn}(g(\mathbf{x};\theta,b)) 因此,当我们尝试计算“向后传递”(传播错误)时,我们得到 因为的导数是 sgn(x)dsgn(x)∂Ë∂X= ∂Ë∂F(x ; θ ,b )∂F(x ; θ ,b )X= ∂Ë∂F(x ; θ ,b )∂SGN (克(x ; θ ,b ))∂G(x …

1
训练卷积神经网络
我目前正在开发使用卷积神经网络识别面部的面部识别软件。根据我的阅读,我收集到卷积神经网络具有权重,以节省训练时间。但是,如何适应反向传播,以便可以在卷积神经网络中使用。在反向传播中,人们使用与此类似的公式来训练权重。 New Weight = Old Weight + LEARNING_RATE * 1 * Output Of InputNeuron * Delta 但是,由于在卷积神经网络中权重是共享的,因此每个权重都与多个神经元一起使用,那么如何确定使用哪个权重Output of InputNeuron? 换句话说,由于权重是共享的,我该如何决定将权重改变多少?

2
什么是预训练?如何预训练神经网络?
我知道预培训可避免常规培训中的某些问题。如果我将反向传播与自动编码器一起使用,我知道我会遇到时间问题,因为反向传播的速度很慢,而且我会陷入局部最优状态而无法学习某些功能。 我不了解的是我们如何预训练网络,以及具体如何进行预训练。例如,如果给我们一堆受限的玻尔兹曼机器,我们将如何对该网络进行预训练?

1
skipgram word2vec的渐变
我正在研究斯坦福大学NLP深度学习班的书面作业问题,网址为http://cs224d.stanford.edu/assignment1/assignment1_soln 我试图了解3a的答案,他们正在寻找中心词向量的导数。 假设你被给予预测的字向量对应于中心字Ç为skipgram,和字预测与在word2vec模型中发现的功能SOFTMAX制成。vcvcv_{c} y^o=p(o|c)=exp(uTovc)∑Ww=1exp(uTwvc)y^o=p(o|c)=exp(uoTvc)∑w=1Wexp(uwTvc)\hat{y}^{o} = p(o | c) = \frac {exp(u_{o}^{T} v_{c})}{\sum_{w=1}^{W}exp(u_{w}^{T} v_{c})} 其中w表示第w个单词,而(w = 1,...,W)是词汇表中所有单词的“输出”单词向量。假定将交叉熵成本应用于此预测,并且单词o是预期单词。uwuwu_w 其中是所有的输出向量的矩阵,并让ÿ是词的SOFTMAX预测的列向量,并且ÿ是独热标签,该标签也是列向量。U=[u1,u2,⋅⋅⋅,uW]U=[u1,u2,···,uW]U = [u_1,u_2, · · · ,u_W ]y^y^\hat{y} 其中交叉熵是CE(y,y^)=−∑iyilog(y^i)CE(y,y^)=−∑iyilog⁡(y^i)CE(y, \hat{y}) = − \sum_iy_i\log(\hat{y}_i) 所以对于梯度为中心矢量答案是∂J∂vc=UT(y^−y).∂J∂vc=UT(y^−y).\frac{∂J}{∂v_c}= U^T(\hat{y} − y). 有人可以告诉我实现此目标的步骤吗?我一直用这个问题作为参考在word2vec交叉熵损失的衍生,但我特别想知道表示。UT(y^−y).UT(y^−y).U^T(\hat{y} − y).
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.