【发布时间】:2013-06-23 01:06:15
【问题描述】:
我开发了一个图像处理程序,可以识别给定数字图像的数字。每张图像为 27x27 像素 = 729 像素。我取每个 R、G 和 B 值,这意味着我从每张图像中有 2187 个变量(截距 +1 = 总共 2188)。
我使用了下面的梯度下降公式:
Repeat {
θj = θj−α/m∑(hθ(x)−y)xj
}
其中θj是变量j的系数; α 是学习率; hθ(x) 是假设; y 是实际值,xj 是变量 j 的值。 m 是训练集的数量。 hθ(x)、y 用于每个训练集(即,这就是求和符号的用途)。进一步的假设被定义为:
hθ(x) = 1/(1+ e^-z)
z= θo + θ1X1+θ2X2 +θ3X3...θnXn
有了这个和 3000 张训练图像,我能够在一个多小时内训练我的程序,并且在交叉验证集上进行测试时,它能够识别出正确的图像 ~ 67% 的时间。
我想改进它,所以我决定尝试一个 2 次多项式。
但是,每张图像的变量数量从 2188 个跃升至 2,394,766 个!仅做一步梯度下降就需要我一个小时。
所以我的问题是,机器学习中如何处理大量变量?一方面,我没有足够的空间来为每个训练集保存那么多变量。另一方面,我目前为每个训练样本存储 2188 个变量,但我必须执行 O(n^2) 才能将每个变量的值乘以另一个变量(即多项式到 2 阶值)。
非常感谢任何建议/建议。
【问题讨论】:
-
你应该看看随机(小批量)梯度下降。
标签: machine-learning gradient-descent