所以我有这样的事情, 的 Y = L3 * [SIN(theta1)* COS(theta2)* COS(theta3)+ COS(theta1)* SIN(theta2)* COS(theta3)-sin(theta1)* SIN(theta2)* SIN( theta3)+ COS(theta1)* COS(theta2) SIN(theta3)] + L2 [SIN(theta1)* COS(theta2)+ COS(theta1)* SIN(theta2)] + L1 *罪(theta1)+ 10;
和x类似的东西。其中thetai是指定间隔的角度和li的一些系数。任务是方程的近似反演,所以你设置x和y,结果将是合适的theta。所以我从指定的间隔随机生成thetas,计算x和y。然后我在< -1,1>之间指定x和y。并且在< 0,1>之间。我用这种方式作为训练集的数据,网络的输入被归一化为x和y,输出被归一化为thetas。
我训练网络,尝试了不同的配置,整夜培训后网络的绝对误差仍然在24.9%左右。它太多了,所以我不知道该怎么做。
技术信息
由于训练算法使用了错误反向传播。神经元具有乙状结肠激活功能,单位有偏差。我尝试了拓扑:[2 50 3],[2 100 50 3],训练集的长度为1000,训练持续时间为1000个周期(在一个周期内我遍历所有数据集)。学习率为0.2。
近似误差计算为
abs的总和(desired_output - reach_output)/ dataset_lenght 。
使用过的优化器是随机梯度下降。
损失函数,
1/2(期望到达)^ 2
网络是在我的NN的Matlab模板中实现的。我知道这是一个弱点,但我确信我的模板是正确的,因为(XOR问题的成功解决方案,微分方程的近似,状态调节器的近似)。但是我展示了这个模板,因为这些信息可能很有用。
修改 我在theta范围内使用了2500个唯一数据。
θ1<0,180>,θ2<-130,130>,θ3<-150,150>
我也尝试使用更大的数据集,但准确性并没有提高。