问题标签 [convergence]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R中的nls收敛消息
我正在寻找来自nls
in的收敛消息的定义R
。relative convergence (4)
特别是和之间有什么区别both X-convergence and relative convergence (5)
。
r - R中的Newtonraphson代码导致不同的结果
我需要近似来自 Birnbaum-Saunders 分布的样本的参数。这是我的代码:
问题是,尽管似乎满足了收敛条件,但在我看来,我的近似值差异很大,这取决于我选择哪个 theta 作为起点。因此,我永远不知道选择一个稍微不同的起点会得到什么结果。
关于为什么该方法如此不稳定的任何想法?
optimization - Julia中最小二乘的坐标下降算法不收敛
作为编写自己的弹性网络求解器的热身,我正在尝试使用坐标下降来获得足够快的普通最小二乘版本。
我相信我已经正确实现了坐标下降算法,但是当我使用“快速”版本(见下文)时,该算法非常不稳定,当特征数量为与样本数量相比,规模适中。
线性回归和 OLS
如果 b = A*x,其中 A 是矩阵,xa 是未知回归系数的向量,y 是输出,我想找到最小化的 x
||b - 斧头||^2
如果 A[j] 是 A 的第 j 列并且 A[-j] 是没有列 j 的 A,并且对 A 的列进行归一化使得 ||A[j]||^2 = 1 对于所有 j,坐标然后是明智的更新
坐标下降:
我正在关注这些注释(第 9-10 页),但推导是简单的微积分。
有人指出,不是一直重新计算 A[j]^T(b - A[-j] * x[-j]) ,一种更快的方法是使用
快速坐标下降:
其中总残差 r = b - Ax 在循环外在坐标上计算。这些更新规则的等价性来自注意 Ax = A[j]*x[j] + A[-j]*x[-j] 并重新排列项。
我的问题是,虽然第二种方法确实更快,但只要特征数量与样本数量相比并不小,它对我来说在数值上非常不稳定。我想知道是否有人可能对为什么会这样有所了解。我应该注意到,随着特征数量接近样本数量,第一种方法更稳定,但仍然开始不同意更多标准方法。
朱莉娅代码
下面是两个更新规则的一些 Julia 代码:
问题示例
我使用以下内容生成数据:
在这里,我使用 p=50,并且在OLS_coord_descent(X,y)
和之间得到了很好的一致性OLS_builtin(X,y)
,而OLS_coord_descent_fast(X,y)
返回的回归系数的值呈指数级增长。
当 p 小于约 20 时,OLS_coord_descent_fast(X,y)
与其他两个一致。
推测
由于 p << n 的情况一致,我认为该算法在形式上是正确的,但在数值上不稳定。有没有人对这个猜测是否正确有任何想法,如果正确,如何在保持算法快速版本的(大部分)性能增益的同时纠正不稳定性?
r - 如何检测R中向量中的循环
假设我有以下向量:
您会注意到有三个重复元素(25、24 和 28)。如何让 R 识别向量中何时存在重复元素(或循环)?无论有多少元素重复(2 或 5 而不是 3),也无论它开始的向量中有多少元素,我都想检测到这一点。
对于上下文,我有一个算法试图收敛于一个值,但有时它会卡在这个重复循环中。我希望 R 检测到它何时卡在这个无限循环中并退出。在vec
我的示例中,是每次迭代的值的日志。
我已经弄清楚如何捕获双重重复元素(保存上次迭代的值以与当前迭代进行比较)但是这 3+ 重复元素让我感到困惑。
machine-learning - LBFGS 需要永远收敛
我正在使用HCRF 库进行序列预测任务。为了学习模型参数,我使用的是 LBFGS,尽管有使用 CG 和 BFGS 的选项。
我注意到收敛需要很长时间。我已将最大迭代次数(当前)设置为 5000。如果我对 HCRF 库的解释是正确的,那么从迭代到迭代的估计变化确实会变小。但是,该程序似乎不太可能在少于 5000 次迭代后终止,而且它确实需要这么长时间。
如果我将最大迭代次数设置为 500,那么在第 500 次迭代时,结果如下所示:
它以以下消息终止:
这意味着已经达到最大迭代次数。
这对数据意味着什么?是否可以在更早的时间终止它(例如 300 次迭代)?如果是这样,合理的“上限”或最大迭代次数是多少?
为了让您了解我正在训练的数据,我使用了 20,000 - 30,000 个观察值,每个观察值有 14 个特征。
谢谢,任何见解都将不胜感激。
r - 惩罚回归的 GLMNet 收敛问题
我正在研究政治网络的网络模型。我正在做的一件事是惩罚推理。我通过为 glmnet 设置惩罚因子来使用自适应套索方法。我的模型中有各种参数:alphas
和phis
. 它们是固定效果,alphas
所以我想在phis
受到惩罚时将它们保留在模型中。
我有来自 MLE 估计过程的起始系数glm()
来计算通过 的惩罚因子设置的自适应权重glmnet()
。
这是代码:
对于某些网络,此代码执行得很好,但是我有某些网络会出现以下错误:
奇怪的是它们都使用相同的代码,所以我想知道这是否是数据问题。附加信息:
+在一种情况下,我有超过 500alphas
和 21并且出现了这些错误,在另一种情况下,我有 200和 28phis
不起作用。但另一方面,我有一个超过 600和 28的案例,它收敛得很好。alphas
phis
alphas
phis
+我已经尝试过设置lambda.min.ratio
但nlambda
无济于事。
附加问题:罚分的第一个条目是否与拦截相关联?还是由 自动添加glmnet()
?我没有在glmnet
小插图中找到关于这一点的明确说明。我的想法是我不应该包含拦截的术语,因为据说惩罚在内部重新调整为总和nvars
,我认为拦截不是我的变量之一。
c++ - dlib 网络不收敛
我正在使用 dlib 在 linux 上进行字符识别。当我用 1000 个字符训练我的网络时,网络会收敛,直到达到 100% 的准确度,但是当我尝试用 10,000 或 100,000 个字符训练它时,它不再收敛到 100% 的准确度。我的学习率仍在下降,但错误预测的数量没有改变。我使用的网络如下
它基于 dlib 中的dnn_introduction2_ex.cpp示例。我不知道我是否必须使用网络的某些参数,或者我这个网络是否不适合我想做的事情。我将不胜感激任何建议或帮助。
chef-infra - Chef:对变量参数的懒惰评估
我们遇到了 Mapr 客户端安装的情况。我们希望能够复制位于 /opt/mapr/hive/hive-xy/conf/ 目录下的自定义 hive-site.xml 文件。问题是,直到一组软件包(包括 hive)完全安装后,我们才知道 hive 版本号。因此,如下代码失败:
似乎模板名称在编译时被评估,此时包安装未完成,因此名称被评估为/conf/hive-site.xml
而不是/opt/mapr/hive/hive-1.2/conf/site.xml
. 如果我们等待所有软件包完全安装并通过单独的调用或手动运行以下代码:
我们已经成功复制了配置文件;但是,如果它是您安装并尝试配置的过程的一部分,则它不起作用。以下是我们尝试过的其他一些事情:
- 尝试将代码的配置副本部分移动到单独的配方中并创建了一个运行列表,并希望如果保持执行顺序,一旦包安装完成,配置单元目录将可用,因此我们将拥有正确的文件路径。那没有用。
- 将配置复制代码放在 ruby_block、lazy evluator only_if 下(检查 /opt/mpar/hive 目录)等。没有运气。
- 将源 xml 文件复制到 /tmp/ 目录尝试在 /opt/mapr/hive 目录可用时简单地复制文件,再次使用惰性求值器、ruby_block 等。仍然失败。
- 试图通过 ruby_block 中的循环尝试检查
if !Dir.glob('/opt/mapr/hive/hive-*/conf/hive-site.xml').empty?
并休眠 5 秒。失败。
上面的其他一些变化也没有成功。在所有这些情况下,似乎"#{dir_hive[0]}/conf/hive-site.xml"
都是在编译时评估的,因此产生了错误的文件路径。
使用通配符捕获已安装文件路径的最佳方法是什么,然后将该路径用于某些操作(例如用自定义文件替换配置文件)。
或者,我们是否可以在执行某些操作后延迟评估表达式以产生变量名,并且延迟评估的变量名取决于该操作后出现的文件名?
感谢您的宝贵时间并感谢任何指示!
python - 逻辑回归梯度下降不收敛
我正在尝试使用梯度下降来实现逻辑回归,以在给定一些数据的情况下找到多元函数的权重。到目前为止,我已经提出了以下内容,并且 gradientDescent() 函数使用 meanSquareError() 输入函数工作。
当我使用logisticError() 函数时,我收到一个溢出错误,这是因为逻辑函数似乎没有与梯度下降收敛。我似乎可以通过正常的在线搜索找到任何错误,因此不胜感激。
algorithm - 感知器算法收敛的几何证明
考虑到 Geoffrey Hinton 的感知器算法收敛证明,我有一个问题:Lecture Slides。
在幻灯片 23 上,它说:
每次感知器出错时,到所有这些慷慨可行的权重向量的平方距离总是至少减少更新向量的平方长度。
我的问题是我可以通过将可行向量向右移动来使距离减少任意小。看这里的描述:
那么,如果我可以使距离任意小,如何保证距离通过更新向量的平方长度(蓝色)缩小?