我目前正在研究一种机器学习算法,我注意到当我使用 Matlabfminunc
时,与手动更新参数时相比,算法收敛到全局最小值的速度非常快(迭代次数很少):
thetas[j] = thetas[j] - (alpha*gradient)/sampleNum;
我认为这是因为我天真地假设alpha
(步长比例)是恒定的。
那么,如何fminunc
在 C 中实现类似的东西呢?
我试着从一个大的开始,alpha
如果当前的成本比以前的成本大,我会调整它。当最小化函数的形状不是线性时,就会出现问题,因为alpha
最初可以得到一个非常小的值,并且当函数形状趋于“平坦”时无法返回到更大的值(并且可以采取更大的步骤) .