我对如何以正确的方式提升 sigmoid 结果感到困惑。例如,我的 NN 的输入介于 0,10 之间。我将其缩放到 -4,4 之间作为 sigmoid 的有效输入范围,我得到的结果是 0.83201。现在我想将其重新调整到 0,10 之间。
我认为 sigmoid 的倒数是logit,但是当我使用它时会发生有趣的事情:
float u = sig.LogSigmoid(sig.InputScaler(3,0f,10f,-4f,4f));
Debug.Log(-Mathf.Log(u/(1-u)));
结果:1.6。尽管
float u = sig.LogSigmoid(sig.InputScaler(4,0f,10f,-4f,4f));
Debug.Log(-Mathf.Log(u/(1-u)));
结果:0.8。
编辑:好的,经过一番摆弄,我发现 Logit 确实有效,只是它返回我的缩放输入:-)。所以对于 sigmoid + 缩小:
float u = sig.LogSigmoid(sig.InputScaler(6,0f,10f,-4f,4f));
以下 logit + upscaling 完美运行:
Debug.Log(sig.InputScaler(-Mathf.Log((1-u)/u),-4f,4f,0f,10f));
InputScaler 是:
public float InputScaler(float x, float minFrom, float maxFrom, float minTo, float maxTo)
{
float t = (((x-minFrom)*(maxTo-minTo))/(maxFrom-minFrom))+minTo;
return t;
}