0

我想知道Netlab packagemlperr是在计算均方误差。 documentation指出它依赖于输出的单位激活函数。这有什么意义?它不应该独立于它吗?是Netlab的函数mlperr计算均方误差?

我也尝试阅读source code of mlperr,我没有看到任何迹象可能让我觉得这是一个MSE错误函数。

这里的任何Netlab专家可以提供一些见解吗?谢谢! :)

+1

源代码显然具有依赖于输出激活函数的开关语句:http://www.mathworks.com/matlabcentral/fileexchange/2654-netlab/content/mlperr.m。在线性函数情况下,它是计算MSE的公式确实是 – Amro

+0

我看,问题是为什么?它不应该只是调用前馈函数,然后通过输出和目标的差异来计算均方误差? – fstab

+1

可以使用各种[损失函数](https://en.wikipedia.org/wiki/Loss_function),而不仅仅是MSE .. – Amro

回答

1

这种方法是用来评估多层感知器accodring其输出激活。它假定这些最常见的用法,因此:对于线性输出

  • 它返回MSE错误

    0.5*sum(sum((y - t).^2))

  • 后勤输出它返回交叉熵误差

    -sum(sum(t.*log(y) + (1 - t).*log(1 - y)))

  • 对于softmax输出它返回相应的能量错误ř

    -sum(sum(t.*log(y)))

所有源可以看出here

+0

感谢您的回答。但为什么线性输出情况下的MSE误差缺少平均值?为什么总和函数被调用两次?因为变量是矩阵,所以'sum(sum(。))'' – fstab

+1

'。至于平均,它只是除以常量(实例的数量),所以它不会太重要.. – Amro