通过调整 Java 中的输入参数来最小化迭代次数
Minimization of number of itererations by adjusting input parameters in Java
我被这个问题启发了XOR Neural Network in Java
简而言之,训练一个 XOR 神经网络,完成训练所需的迭代次数取决于七个参数 (alpha, gamma3_min_cutoff, gamma3_max_cutoff, gamma4_min_cutoff, gamma4_max_cutoff, gamma4_min_cutoff, gamma4_max_cutoff).我想通过调整这些参数来最大程度地减少训练所需的迭代次数。
所以,我想重写来自
的程序
private static double alpha=0.1, g3min=0.2, g3max=0.8;
int iteration= 0;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println( "iterations: " + iteration)
至
for (double alpha = 0.01; alpha < 10; alpha+=0.01){
for (double g3min = 0.01; g3min < 0.4; g3min += 0.01){
//Add five more loops to optimize other parameters
int iteration = 1;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println( inputs );
//number of iterations, alpha, cutoffs,etc
//Close five more loops here
}
}
但是这种暴力破解方法不会有效。给定 7 个参数和每次计算的数百次迭代,即使每个参数有 10 个点也可以转化为数十亿次操作。非线性拟合应该可以,但是那些通常需要偏导数,而在这种情况下我不会。
是否有用于此类优化的 Java 包?
提前谢谢你,
斯捷潘
您有一些选择 - 取决于控制 error
参数的方程式。
- 在参数 space 中选择一个点并使用迭代过程走向最小值。从本质上讲,为每个参数添加一个增量,然后选择最能减少误差的那个 - rince - 重复。
- 选择每个参数并在其限制之间执行二进制搜索以找到它的最小值。仅当参数的效果是线性的时才有效。
- 使用某种形式的 Operations-Research 技术求解系统以追踪最小值。
我被这个问题启发了XOR Neural Network in Java 简而言之,训练一个 XOR 神经网络,完成训练所需的迭代次数取决于七个参数 (alpha, gamma3_min_cutoff, gamma3_max_cutoff, gamma4_min_cutoff, gamma4_max_cutoff, gamma4_min_cutoff, gamma4_max_cutoff).我想通过调整这些参数来最大程度地减少训练所需的迭代次数。
所以,我想重写来自
的程序private static double alpha=0.1, g3min=0.2, g3max=0.8;
int iteration= 0;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println( "iterations: " + iteration)
至
for (double alpha = 0.01; alpha < 10; alpha+=0.01){
for (double g3min = 0.01; g3min < 0.4; g3min += 0.01){
//Add five more loops to optimize other parameters
int iteration = 1;
loop {
do_something;
iteration++;
if (error < threshold){break}
}
System.out.println( inputs );
//number of iterations, alpha, cutoffs,etc
//Close five more loops here
}
}
但是这种暴力破解方法不会有效。给定 7 个参数和每次计算的数百次迭代,即使每个参数有 10 个点也可以转化为数十亿次操作。非线性拟合应该可以,但是那些通常需要偏导数,而在这种情况下我不会。
是否有用于此类优化的 Java 包?
提前谢谢你, 斯捷潘
您有一些选择 - 取决于控制 error
参数的方程式。
- 在参数 space 中选择一个点并使用迭代过程走向最小值。从本质上讲,为每个参数添加一个增量,然后选择最能减少误差的那个 - rince - 重复。
- 选择每个参数并在其限制之间执行二进制搜索以找到它的最小值。仅当参数的效果是线性的时才有效。
- 使用某种形式的 Operations-Research 技术求解系统以追踪最小值。