Questions tagged «deep-learning»

机器学习领域,主要是通过深度神经网络来学习数据的分层表示。

1
如何训练深度网络的LSTM层
我正在使用lstm和前馈网络对文本进行分类。 我将文本转换为一键向量,然后将其输入到lstm中,这样我就可以将其总结为单个表示形式。然后,我将其馈送到另一个网络。 但是我如何训练LSTM?我只想按顺序对文本进行分类-是否应在未经培训的情况下进行输入?我只想将段落表示为单个项目,然后将其输入分类器的输入层。 我将不胜感激与此有关的任何建议! 更新: 所以我有一个lstm和一个分类器。我将lstm的所有输出并平均池化,然后将平均值输入分类器。 我的问题是我不知道如何训练lstm或分类器。我知道对于lstm的输入应该是什么,对于该输入的分类器的输出应该是什么。由于它们是两个单独的网络,它们只是按顺序激活的,因此我需要知道和不知道lstm的理想输出应该是什么,它也是分类器的输入。有没有办法做到这一点?

3
卷积神经网络如何精确地使用卷积代替矩阵乘法?
我正在读Yoshua Bengio关于深度学习的书,它在第224页上说: 卷积网络只是简单的神经网络,它在其至少一层中使用卷积代替一般的矩阵乘法。 但是,我不是100%确定如何从数学上精确地“通过卷积替换矩阵乘法”。 我真正感兴趣的是为1D中的输入向量定义此值(例如),因此我将没有输入作为图像并尝试避免2D的卷积。x∈Rdx∈Rdx \in \mathbb{R}^d 因此,例如,在“正常”神经网络中,操作和馈送模式可以简洁地表达,如Andrew Ng的注释: ˚F (Ž (升+ 1 ))= 一个(升+ 1 )W(l)a(l)=z(l+1)W(l)a(l)=z(l+1) W^{(l)} a^{(l)} = z^{(l+1)} f(z(l+1))=a(l+1)f(z(l+1))=a(l+1) f(z^{(l+1)}) = a^{(l+1)} 其中是在使向量通过非线性之前计算的向量。非线性作用在向量并且是有关层的隐藏单元的输出/激活。 ˚F Ž (升)一个(升+ 1 )z(l)z(l)z^{(l)}fffz(l)z(l)z^{(l)}a(l+1)a(l+1)a^{(l+1)} 对我来说,这种计算很清楚,因为矩阵乘法已为我明确定义,但是,用卷积代替矩阵乘法对我来说似乎并不明确。即 ˚F (Ž (升+ 1 ))= 一个(升+ 1 )W(l)∗a(l)=z(l+1)W(l)∗a(l)=z(l+1) W^{(l)} * a^{(l)} = z^{(l+1)} f(z(l+1))=a(l+1)f(z(l+1))=a(l+1) f(z^{(l+1)}) = a^{(l+1)} 我想确保我能精确地数学理解上述方程式。 …

1
为什么在实践中不使用“无马鞍牛顿”下降算法?
最近,我读了Yann Dauphin等人的论文。识别和解决高维非凸优化中的鞍点问题,他们引入了一种有趣的下降算法,称为“无鞍牛顿”,该算法似乎是专门为神经网络优化设计的,因此不会卡在鞍点上像香草SGD这样的一阶方法。 该论文的历史可以追溯到2014年,因此并不是什么新鲜事物,但是,我还没有看到它被“野外使用”。为什么不使用此方法?对于现实世界中存在的问题/网络,Hessian计算是否过于严格?该算法是否甚至有一些开源实现,可能与某些主要的深度学习框架一起使用? 2019年2月更新:现在有一个实现:https : //github.com/dave-fernandes/SaddleFreeOptimizer)


1
为随机梯度下降(SGD)选择合适的小批量大小
有没有文献研究随机梯度下降时小批量的选择?以我的经验,这似乎是一个经验选择,通常是通过交叉验证或使用不同的经验法则发现的。 随着验证错误的减少,逐渐增加小批量的大小是否是一个好主意?这将对泛化错误产生什么影响?我是否会使用极小的微型批处理程序进行更好的情况更新数十万次?在数量极少与批量之间保持平衡的状态下,我会更好吗? 我是否应该根据数据集的大小或数据集中预期的要素数量来缩放微型批处理的大小? 我显然对实现小批量学习方案有很多疑问。不幸的是,我阅读的大多数论文并没有真正说明他们如何选择此超参数。我从Yann LeCun等作家那里取得了一些成功,尤其是从Tricks of the Trade的论文收集中获得了成功。但是,我仍然没有看到这些问题得到充分解决。是否有人对论文有任何建议,或者关于在尝试学习功能时可以用来确定良好的小批量大小的标准的建议?



5
是否有用于设计和应用神经网络/深度学习的可视工具?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为交叉验证的主题。 10个月前关闭。 我知道有很多用于机器学习和深度学习的库,例如caffe,Theano,TensorFlow,keras等。但是对我来说,我似乎必须了解我想使用的神经网络的体系结构。 是否有一个(可视的)工具可以试验不同的网络设计并将其应用于自己的数据? 我正在考虑使用TensorFlow Playground之类的东西,但是具有n维数据和不同的图层类型。 提前致谢!

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 + …

3
神经体系结构:数据通知自动设计
神经网络的最新进展总结为一系列新颖的体系结构,这些体系结构的主要特征是其不断增加的设计复杂性。从LeNet5(1994)到AlexNet(2012),到Overfeat(2013)和GoogleLeNet / Inception(2014)等... 是否有任何尝试让机器根据数据决定/设计要使用的体系结构?

4
如何(系统地)使用梯度下降作为优化器来调整学习率?
ML / DL领域的局外人;开始了基于Tensorflow的Udacity深度学习课程;做作业3的问题4; 尝试使用以下配置调整学习率: 批次大小128 步骤数:足以填满2个纪元 隐藏层的大小:1024、305、75 重量初始化:使用std正常截断。sqrt(2 / n)的偏差,其中n是上一层的大小 失学保持机率:0.75 正则化:不适用 学习率算法:指数衰减 玩弄学习率参数;在大多数情况下,它们似乎没有作用;在这里编码 ; 结果: Accuracy learning_rate decay_steps decay_rate staircase 93.7 .1 3000 .96 True 94.0 .3 3000 .86 False 94.0 .3 3000 .96 False 94.0 .3 3000 .96 True 94.0 .5 3000 .96 True 我应该如何系统地调整学习率? 学习率与步数有何关系?

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

2
为什么0-1损失函数很难处理?
在伊恩·古德费洛(Ian Goodfellow)的深度学习书中,写道 有时,我们实际上关心的损失函数(例如分类错误)并不是可以有效优化的函数。例如,即使对于线性分类器,精确地将期望的0-1损失最小化通常也是棘手的(输入维度上的指数)。在这种情况下,通常通常会优化替代损失函数,该函数充当代理但具有优势。 为什么0-1损失难以解决,或者在输入维度中它如何指数化?

3
激励神经网络中的S型输出单元,以和线性非标准化对数概率开始
背景:我正在研究Ian Goodfellow,Yoshua Bengio和Aaron Courville撰写的《深度学习》第6章。在第6.2.2.2节(在此处可以查看 183页的182页中,鼓励使用S形输出。P(y=1|x)P(y=1|x)P(y=1|x) 为了总结一些材料,他们使是应用激活之前的输出神经元,其中是先前隐藏层的输出,是权重的向量,是标量偏差。输入向量表示为(是其函数),输出值表示为,其中是S型函数。该书希望使用值定义的概率分布。从第183页的第二段:z=wTh+bz=wTh+bz = w^Th+bhhhwwwbbbxxxhhhy=ϕ(z)y=ϕ(z)y=\phi(z)ϕϕ\phiyyyzzz 我们暂时忽略对的依赖,以讨论如何使用值定义的概率分布。可以通过构造未归一化的概率分布来激发S形,该概率分布之和不等于1。然后,我们可以除以适当的常数以获得有效的概率分布。如果我们假设未归一化的对数概率在和是线性的,则我们可以求幂以获得未归一化的概率。然后,我们进行标准化处理,以查看产生的z的S形变换控制的伯努利分布: xxxyyyzzzP~(y)P~(y)\tilde P(y)yyyzzzlogP~(y)P~(y)P(y)P(y)=yz=exp(yz)=exp(yz)∑1y′=0exp(y′z)=ϕ((2y−1)z)log⁡P~(y)=yzP~(y)=exp⁡(yz)P(y)=exp⁡(yz)∑y′=01exp⁡(y′z)P(y)=ϕ((2y−1)z)\begin{align} \log\tilde P(y) &= yz \\ \tilde P(y) &= \exp(yz) \\ P(y) &= \frac{\exp(yz)}{\sum_{y'=0}^1 \exp(y'z) } \\ P(y) &= \phi((2y-1)z) \end{align} 问题:我对两件事感到困惑,尤其是第一件事: 最初的假设来自哪里?为什么未归一化的对数概率在和呈线性关系?有人可以给我一些有关作者如何以开头的观点吗?yyyzzzlogP~(y)=yzlog⁡P~(y)=yz\log\tilde P(y) = yz 最后一行如何?

2
Keras:为什么损失减少而val_loss增加?
我为一组参数设置了网格搜索。我正在尝试为进行二进制分类的Keras神经网络找到最佳参数。输出为1或0。大约有200个要素。当我进行网格搜索时,我得到了一堆模型及其参数。最佳模型具有以下参数: Epochs : 20 Batch Size : 10 First Activation : sigmoid Learning Rate : 1 First Init : uniform 该模型的结果是: loss acc val_loss val_acc 1 0.477424 0.768542 0.719960 0.722550 2 0.444588 0.788861 0.708650 0.732130 3 0.435809 0.794336 0.695768 0.732682 4 0.427056 0.798784 0.684516 0.721137 5 0.420828 0.803048 0.703748 0.720707 …

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.