Questions tagged «gradient-descent»

梯度下降是一种用于寻找函数最小值的算法。它迭代地计算函数的偏导数(梯度),并与这些偏导数成比例地递减。梯度下降的一个主要应用是将参数化模型拟合到一组数据:要最小化的函数是模型的误差函数。

4
Scikit学习:让SGDClassifier进行预测以及Logistic回归
训练Logistic回归的一种方法是使用随机梯度下降,scikit-learn提供了接口。 我想做的是使用scikit-learn的SGDClassifier,并使其得分与此处的Logistic回归相同。但是,我必须错过一些机器学习增强功能,因为我的分数并不相同。 这是我当前的代码。我在SGDClassifier上缺少什么,它会产生与Logistic回归相同的结果? from sklearn import datasets from sklearn.linear_model import LogisticRegression from sklearn.linear_model import SGDClassifier import numpy as np import pandas as pd from sklearn.cross_validation import KFold from sklearn.metrics import accuracy_score # Note that the iris dataset is available in sklearn by default. # This data is also conveniently preprocessed. …


4
梯度下降是否总是收敛到最佳状态?
我想知道是否存在梯度下降不会收敛到最小的情况。 我知道,梯度下降并不能始终保证收敛到全局最优值。我也知道,如果步长太大,它可能会偏离最佳值。但是,在我看来,如果它偏离某个最佳值,那么它将最终达到另一个最佳值。 因此,将保证梯度下降收敛到局部或全局最优。那正确吗?如果没有,您能否提供一个粗略的反例?

1
为什么ReLU比其他激活功能更好
这里的答案指的是sigmoid像激活函数一样已经消失的梯度和爆炸的梯度,但是我猜Relu它有一个缺点,那就是它的期望值。对的输出没有限制Relu,因此其期望值不为零。我记得之前的时间普及Relu这tanh是最流行之间机器学习专家,而不是sigmoid。原因是的期望值tanh等于零,并且有助于更深层次的学习,从而在神经网络中更快地学习。Relu没有这个特性,但是如果我们不考虑它的派生优势,为什么它会如此出色。而且,我猜导数也可能会受到影响。因为激活(输出Relu)用于计算更新规则。


1
我应该使用多少个LSTM细胞?
是否有关于我应使用的LSTM电池的最小,最大和“合理”数量的经验法则(或实际规则)?具体来说,我与TensorFlow和property 有关的BasicLSTMCell有关num_units。 请假设我有以下定义的分类问题: t - number of time steps n - length of input vector in each time step m - length of output vector (number of classes) i - number of training examples 例如,训练示例的数量应该大于: 4*((n+1)*m + m*m)*c c单元数在哪里?我基于此:如何计算LSTM网络的参数数量?据我了解,这应该给出参数的总数,该总数应少于训练示例的数量。
12 rnn  machine-learning  r  predictive-modeling  random-forest  python  language-model  sentiment-analysis  encoding  machine-learning  deep-learning  neural-network  dataset  caffe  classification  xgboost  multiclass-classification  unbalanced-classes  time-series  descriptive-statistics  python  r  clustering  machine-learning  python  deep-learning  tensorflow  machine-learning  python  predictive-modeling  probability  scikit-learn  svm  machine-learning  python  classification  gradient-descent  regression  research  python  neural-network  deep-learning  convnet  keras  python  tensorflow  machine-learning  deep-learning  tensorflow  python  r  bigdata  visualization  rstudio  pandas  pyspark  dataset  time-series  multilabel-classification  machine-learning  neural-network  ensemble-modeling  kaggle  machine-learning  linear-regression  cnn  convnet  machine-learning  tensorflow  association-rules  machine-learning  predictive-modeling  training  model-selection  neural-network  keras  deep-learning  deep-learning  convnet  image-classification  predictive-modeling  prediction  machine-learning  python  classification  predictive-modeling  scikit-learn  machine-learning  python  random-forest  sampling  training  recommender-system  books  python  neural-network  nlp  deep-learning  tensorflow  python  matlab  information-retrieval  search  search-engine  deep-learning  convnet  keras  machine-learning  python  cross-validation  sampling  machine-learning 

4
如果函数平滑,为什么它会加快梯度下降?
我现在读了一本书,标题为“使用Scikit-Learn和TensorFlow进行动手机器学习”,在第11章中,对ELU(指数ReLU)的解释如下。 第三,该函数在所有位置(包括z = 0左右)都是平滑的,这有助于加速Gradescent Descent,因为它在z = 0的左右两侧反弹得不那么快。 在z装置上面的曲线图中的x轴上。我知道导数是平滑的,因为该z < 0直线具有曲线,并且在那个领域中导数不再等于0。 但是,为什么函数“在所有地方都平滑,包括z = 0左右”会加速梯度下降呢?

1
目标函数和输出层激活函数之间的联系有多灵活?
在许多神经网络软件包中,将目标函数与输出层中的激活函数配对以使其最小化似乎是标准的。 例如,对于用于回归的线性输出层,具有平方误差目标函数是标准的(通常是唯一的选择)。另一个常见的配对是逻辑输出和对数损失(或交叉熵)。还有一个是softmax和多对数丢失。 使用符号表示激活前的值(权重之和乘以来自上一层的激活),表示激活,表示用于训练的地面真理,表示输出神经元的索引。一个ÿ 我žžz一个一个aÿÿy一世一世i 线性激活带有平方误差1一个一世= z一世一个一世=ž一世a_i=z_i1个2∑∀ 我(y一世− a一世)21个2∑∀一世(ÿ一世-一个一世)2\frac{1}{2} \sum\limits_{\forall i} (y_i-a_i)^2 乙状结肠激活与对数损耗/交叉熵目标 -Σ∀我(ÿ我*升Ô克(一我)+(1-Ÿ我)*升Ô克(1-一个我))一个一世= 11 + e- ž一世一个一世=1个1个+Ë-ž一世a_i = \frac{1}{1+e^{-z_i}}− ∑∀ 我(y一世* 升ø 克(一个一世)+ (1 − y一世)* l o g(1−ai))−∑∀i(yi∗log(ai)+(1−yi)∗log(1−ai))-\sum\limits_{\forall i} (y_i*log(a_i) + (1-y_i)*log(1-a_i)) Softmax激活与多类对数丢失目标ai=ezi∑∀jezjai=ezi∑∀jezĴa_i = \frac{e^{z_i}}{\sum_{\forall j} e^{z_j}}− ∑∀ 我(y一世* 升ø 克(一个一世))-∑∀一世(ÿ一世∗升ØG(一个一世))-\sum\limits_{\forall i} (y_i*log(a_i)) 这些是我所知道的,我希望有很多我还没有听说过。 似乎只有输出和目标在[0,1]范围内时,对数损失才会起作用,并且数值上稳定。因此,尝试使用具有logloss目标函数的线性输出层可能没有意义。除非有一个更通用的logloss函数可以处理超出范围的值?ÿÿy 但是,尝试使用平方误差目标的S型输出看起来并不那么糟糕。它应该稳定并且至少收敛。 我了解这些配对背后的某些设计是,它使得的公式-其中是目标函数的值-易于向后传播。但是,仍然有可能使用其他配对来找到该导数。此外,还有许多其他激活函数在输出层中并不常见,但可行的是,例如,并且不清楚可以应用什么目标函数。δËδžδËδž\frac{\delta E}{\delta z}ËËEtanh …

2
基于向量运算的随机梯度下降?
让我们假设我想使用具有N个样本的数据集来训练随机梯度下降回归算法。由于数据集的大小是固定的,因此我将重复使用数据T次。在每次迭代或“纪元”时,在对整个训练集进行随机重新排序后,我都会使用每个训练样本一次。 我的实现基于Python和Numpy。因此,使用向量运算可以显着减少计算时间。提出批量梯度下降的矢量化实现非常简单。但是,在随机梯度下降的情况下,我无法弄清楚如何避免在每个时期迭代所有样本的外部循环。 有人知道随机梯度下降的任何矢量化实现吗? 编辑:有人问我,如果我的数据集大小固定,为什么要使用在线梯度下降。 从[1]中可以看出,在线梯度下降的收敛速度比批量梯度下降的慢,且经验成本最低。但是,它收敛得更快,达到了预期成本的最小值,从而衡量了通用性能。我想通过交叉验证来测试这些理论结果对我的特定问题的影响。没有矢量化的实现,我的在线梯度下降代码要比批处理梯度下降代码慢得多。这显着增加了完成交叉验证过程所需的时间。 编辑:根据ffriend的要求,我在这里包括了我的在线梯度下降实现的伪代码。我正在解决回归问题。 Method: on-line gradient descent (regression) Input: X (nxp matrix; each line contains a training sample, represented as a length-p vector), Y (length-n vector; output of the training samples) Output: A (length-p+1 vector of coefficients) Initialize coefficients (assign value 0 to all coefficients) Calculate outputs …

2
为什么学习率导致我的神经网络的权重急剧上升?
我正在使用tensorflow编写简单的神经网络以进行一些研究,并且在训练时遇到“ nan”权重的许多问题。我尝试了许多不同的解决方案,例如更改优化器,更改丢失,数据大小等,但无济于事。最后,我注意到学习速度的变化使我的体重产生了难以置信的变化。 使用.001(我认为是非常保守的)的学习率,最小化函数实际上将成倍地增加损失。一个世纪之后,损失可能从数千个跃升至一万亿个,然后达到无穷大('nan')。当我将学习率降低到.0001时,一切正常。 1)为什么单个数量级会产生这种影响? 2)为什么最小化函数实际上会执行与其功能相反的操作,并使损失最大化?在我看来,无论学习速度如何,都不应该发生这种情况。
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.