Questions tagged «neural-networks»

人工神经网络(ANN)是一类广泛的基于生物神经网络的计算模型。它们包括前馈NN(包括“深度” NN),卷积NN,递归NN等。

3
为什么在RNN中通过时间反向传播?
在递归神经网络中,通常会向前传播几个时间步骤,“展开”网络,然后在输入序列中向后传播。 为什么不只在序列中的每个步骤之后更新权重?(等效于使用1的截断长度,因此没有展开的空间),这完全消除了消失的梯度问题,大大简化了算法,可能会减少陷入局部极小值的机会,并且最重要的是看起来工作正常。我以这种方式训练了一个模型来生成文本,结果似乎与从BPTT训练后的模型中看到的结果相当。我对此仅感到困惑,因为我所见过的每个有关RNN的教程都说要使用BPTT,几乎就像是正确学习所必需的那样,事实并非如此。 更新:我添加了一个答案

3
模式识别任务中最先进的集成学习算法?
这个问题的结构如下:首先,我提供整体学习的概念,进一步提供模式识别任务的列表,然后给出整体学习算法的示例,最后介绍我的问题。那些不需要所有补充信息的人可能只是看标题,直接回答我的问题。 什么是整体学习? 根据维基百科的文章: 在统计和机器学习中,集成方法使用多种学习算法来获得比单独从任何组成学习算法中获得的更好的预测性能。与通常是无限的统计力学中的统计集合不同,机器学习集合仅指的是一组有限的替代模型的具体有限集合,但通常允许在这些替代模型之间存在更灵活的结构。 模式识别任务的示例: 光学字符识别 条码识别 车牌识别 人脸检测 语音识别 影像辨识 文件分类 集成学习算法的示例: 以下用于PR任务的集成学习算法(根据Wiki): 集成学习算法(将多种学习算法结合在一起的监督元算法): Boosting(主要用于减少偏见的机器学习集成元算法,以及在监督学习中的差异,以及将弱学习者转换为强学习者的一系列机器学习算法) Bootstrap聚合(“ 装袋 ”)(一种机器学习集成元算法,旨在提高统计分类和回归中使用的机器学习算法的稳定性和准确性)。 集合平均(创建多个模型并将其组合以产生所需输出的过程,而不是仅创建一个模型。通常,一组模型的性能要优于任何单个模型,因为模型的各种错误会“平均化”。 ) 专家混合,专家分层混合 不同的实现 神经网络的集合(一组神经网络模型,通过对各个模型的结果求平均值来进行决策)。 随机森林(一种用于分类,回归和其他任务的整体学习方法,通过在训练时构造大量决策树并输出作为个体的类(分类)或均值预测(回归)模式的类来进行操作树木)。 AdaBoost(将其他学习算法(“弱学习者”)的输出合并为一个加权总和,该总和代表增强分类器的最终输出)。 另外: 使用一个神经网络组合不同分类器的方法 胜任范围法 我的问题 哪种集成学习算法被认为是当今最先进的,并且在企业和组织中实际用于实践中(用于面部检测,车牌识别,光学字符识别等)?应该使用集成学习算法来提高识别精度并导致更好的计算效率。但是,现实中的事情会这样吗? 哪种集成方法可能在模式识别任务中显示出更好的分类准确性和性能?也许,某些方法现在已经过时,或者已经证明无效。由于某些新算法的优势,现在可能不再使用集成方法了。那些在该领域有经验或在该领域有足够知识的人,您能帮助澄清问题吗?

1
训练神经网络时有多少训练示例太少了?
我是一个初学者,试图整理我的第一个项目。我有一个歌曲分类项目,但是由于要手动标记,因此我只能合理地组合大约1000首歌曲或60个小时的音乐。 我将按几个班级进行分类,因此一个班级可能在训练集中只有50-100首歌曲-这似乎太少了!是否有一般的经验法则来训练一个神经网络需要多少数据才能发挥作用? 编辑:我正在考虑使用香草LSTM。输入要素的尺寸为39,输出尺寸为6,我对隐藏层尺寸的首次尝试将是100。


1
训练堆叠式自动编码器和2层神经网络有什么区别吗?
假设我正在编写一种用于构建2层堆叠式自动编码器和2层神经网络的算法。它们是一样的还是不同的? 我了解的是,当我构建一个堆叠式自动编码器时,我会逐层构建。对于神经网络,我将初始化网络中的所有参数,然后对于每个数据点,将其通过网络并计算损耗(例如,euclean距离)并进行反向传播。

2
关于使用神经网络进行Q学习的问题
我已经按照中所述实施了Q-Learning, http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf 为了大约。Q(S,A)我使用如下的神经网络结构, 激活乙状结肠 输入,输入数量+动作神经元的1(所有输入按0-1比例缩放) 输出,单路输出。Q值 N个M隐藏层。 探索方法随机0 <rand()<propExplore 在每次学习迭代中,使用以下公式, 我计算一个Q目标值,然后使用计算一个误差, error = QTarget - LastQValueReturnedFromNN 然后通过神经网络传播错误。 Q1,我走对了吗?我已经看到了一些论文,这些论文的每个动作都实现了一个带有一个输出神经元的NN。 Q2,我的奖励函数返回-1和1之间的数字。当激活函数为S形(0 1)时,可以返回-1和1之间的数字吗? 问题3,根据我对这种方法的理解,给定足够的培训实例,应该对其进行隔离以找到最佳的政策依据?训练XOR有时会在2k次迭代后学习,有时甚至在40k 50k迭代后也不会学习。

3
神经网络隐藏激活函数的选择
我在其他地方读过,NN中隐藏层激活功能的选择应基于自己的需要,即,如果您需要-1到1范围内的值,请使用tanh并使用Sigmoid来表示0到1的范围。 我的问题是如何知道自己的需求?是否基于输入层的范围,例如使用可以包含输入层的整个值范围的函数,还是以某种方式反映输入层的分布(高斯函数)?还是选择特定的需求问题/领域,并需要一个人的经验/判断才能做出选择?还是仅仅是“使用能够提供最佳交叉验证的最小训练误差的东西?”

1
如何处理神经网络中二进制和连续输入的混合?
我正在R中使用nnet软件包来尝试构建ANN以预测公寓(个人项目)的房地产价格。我是新来的,没有数学背景,所以请和我一起裸露。 我有二进制和连续输入变量。例如,对于神经网络,一些最初为是/否的二进制变量被转换为1/0。其他变量是连续的,如Sqft。 输入数据样本 我已将所有值标准化为0-1比例。也许Bedrooms并且Bathrooms不应该归一化,因为它们的范围仅为0-4? 这些混合输入是否给ANN带来了问题?我已经取得了不错的结果,但是仔细检查一下ANN为某些变量选择的权重似乎没有任何意义。我的代码在下面,有什么建议吗? ANN <- nnet(Price ~ Sqft + Bedrooms + Bathrooms + Parking2 + Elevator + Central.AC + Terrace + Washer.Dryer + Doorman + Exercise.Room + New.York.View,data[1:700,], size=3, maxit=5000, linout=TRUE, decay=.0001) 更新: 基于以下有关将二进制输入分成每个值类的单独字段的注释,我的代码现在看起来像: ANN <- nnet(Price ~ Sqft + Studio + X1BR + X2BR + X3BR + …

3
在玻尔兹曼机器中学习权重
我试图了解Boltzmann机器的工作原理,但是我不太确定如何学习权重,也无法找到清晰的描述。以下正确吗?(此外,指向任何好的玻尔兹曼机器解释的指针也将很棒。) 我们有一组可见单元(例如,对应于图像中的黑色/白色像素)和一组隐藏单元。权重以某种方式初始化(​​例如,统一从[-0.5,0.5]开始),然后我们在以下两个阶段之间交替,直到达到某个停止规则: 固定阶段-在此阶段,所有可见单位的值都是固定的,因此我们仅更新隐藏单位的状态(根据Boltzmann随机激活规则)。我们更新直到网络达到平衡。一旦达到平衡,我们将继续更新ññN次(对于一些预定义的),同时跟踪的平均值(其中是节点和j的状态)。在这N个均衡更新之后,我们更新w_ij = w_ij + \ frac {1} {C}平均(x_i x_j),其中CññNX一世XĴX一世XĴx_i x_jX一世,XĴX一世,XĴx_i, x_j一世一世iĴĴjññNw一世j = w一世j + 1C甲v Ë ř 一个克È (X一世XĴ)w一世Ĵ=w一世Ĵ+1个C一种vË[R一种GË(X一世XĴ)w_ij = w_ij + \frac{1}{C} Average(x_i x_j)CCC是一定的学习速度。(或者,不是在最后进行批量更新,而是在均衡步骤之后进行更新?) 自由阶段-在此阶段,将更新所有单元的状态。一旦达到平衡,我们类似地会继续更新N'次,但是除了在末尾添加相关性之外,我们减去:。w我Ĵ= w我Ĵ− 1C一种v Ë ř 一个克È (X一世XĴ)w一世Ĵ=w一世Ĵ-1个C一种vË[R一种GË(X一世XĴ)w_{ij} = w_{ij} - \frac{1}{C} Average(x_i x_j) 所以我的主要问题是: 每当我们处于固定阶段时,我们都将可见单位重置为我们要学习的模式之一(以某种频率表示该模式的重要性),还是将可见单位保持在它们处于的状态在免费阶段结束时? 我们是在每个阶段结束时批量更新权重,还是在阶段的每个平衡步骤中更新权重?(或者,可以吗?)

1
插入符glmnet与cv.glmnet
在glmnet内部caret使用搜索最佳lambda和cv.glmnet执行相同任务的比较中似乎有很多困惑。 提出了许多问题,例如: 分类模型train.glmnet与cv.glmnet? 在插入符号中使用glmnet的正确方法是什么? 使用`caret`交叉验证`glmnet` 但是没有给出答案,这可能是由于问题的可重复性。在第一个问题之后,我给出了一个非常相似的示例,但确实存在相同的问题:为什么估计的lambda如此不同? library(caret) library(glmnet) set.seed(849) training <- twoClassSim(50, linearVars = 2) set.seed(849) testing <- twoClassSim(500, linearVars = 2) trainX <- training[, -ncol(training)] testX <- testing[, -ncol(testing)] trainY <- training$Class # Using glmnet to directly perform CV set.seed(849) cvob1=cv.glmnet(x=as.matrix(trainX),y=trainY,family="binomial",alpha=1, type.measure="auc", nfolds = 3,lambda = seq(0.001,0.1,by = 0.001),standardize=FALSE) …

2
自动编码器神经网络的起源是什么?
我在Google,Wikipedia,Google Scholar等上进行了搜索,但找不到Autoencoders的来源。也许这是一个逐渐发展的概念,不可能追溯到一个清晰的起点,但是我仍然想对它们的主要发展步骤进行一些总结。 Ian Goodfellow,Yoshua Bengio和Aaron Courville的深度学习书中有关自动编码器的章节说: 几十年来,自动编码器的思想已成为神经网络历史的一部分(LeCun,1987; Bourlard和Kamp,1988; Hinton和Zemel,1994)。传统上,自动编码器用于降维或特征学习。 此演示文稿由帕斯卡尔·文森特说: 实际上,使用经典自动编码器进行降噪的方法要早得多(LeCun,1987; Gallinari等,1987),作为Hopfield网络的替代方法(Hopfield,1982)。 这似乎暗示“经典自动编码器”在此之前存在:LeCun和Gallinari使用了它们,但并未发明它们。1987年之前,我看不到“经典自动编码器”的踪迹。 有任何想法吗?

8
训练神经网络以区分偶数和奇数
问题:是否有可能仅使用数字本身作为输入来训练NN来区分奇数和偶数? 我有以下数据集: Number Target 1 0 2 1 3 0 4 1 5 0 6 1 ... ... 99 0 100 1 我使用一种非常简单的遗传算法训练了一个带有两个输入神经元(一个是变量Number,另一个是偏向神经元),隐藏层中的9个神经元和一个输出神经元的NN:在每个时期,两组权重“互相对抗;错误率最高的人将输掉,并由获胜者的修改版本代替。 该脚本可以轻松解决诸如AND,OR和XOR运算符之类的简单问题,但是在尝试对奇数和偶数进行分类时会遇到困难。目前,最好的方法是从100个数字中识别出53个数字,这花费了几个小时。我是否将输入归一化似乎没有什么区别。 如果我想作弊,我可以对数据进行预处理,并将%2作为输入提供给NN,但我不想这样做。NN应该能够近似所有函数,包括模运算符(我相信)。我究竟做错了什么?


2
如何从神经网络获取实值连续输出?
到目前为止,在我所见过的大多数神经网络示例中,都使用该网络进行分类,并使用S型函数对节点进行变换。但是,我想使用神经网络来输出连续的实际值(实际上,输出通常在-5到+5范围内)。 我的问题是: 1. Should I still scale the input features using feature scaling? What range? 2. What transformation function should I use in place of the sigmoid? 我希望最初实现它来描述这些层类型的 PyBrain 。 所以我在想应该有3个都是线性层的图层开始(输入,隐藏和输出层)?那是合理的方法吗?还是可以在-5到5的范围内“拉伸” S型函数?

1
深度神经网络中的灵敏度分析
在回答一个已经回答的问题之后(从单层前馈网络提取权重重要性),我正在寻找关于神经网络中输入相关性的推论。 考虑到一个深层网络,通过从感兴趣的输出节点向后遍历各层来重建输入的重要性可能很困难或很耗时,我想知道在进行神经网络的敏感性分析时是否存在一些理论框架,基本上改变了一个输入并考虑感兴趣的输出节点如何变化。 在神经网络中是否存在执行某种敏感性分析的规范方法? 如果有的话,我真的很欢迎一些Python代码这样做

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.