Machine learning 神经网络预测
我尝试实现一个神经网络。我用反向传播来计算梯度。在获得梯度后,我将它们乘以学习率,然后从相应的权重中减去它们。(基本上是尝试应用梯度下降,如果这是错误的,请告诉我)。Machine learning 神经网络预测,machine-learning,neural-network,Machine Learning,Neural Network,我尝试实现一个神经网络。我用反向传播来计算梯度。在获得梯度后,我将它们乘以学习率,然后从相应的权重中减去它们。(基本上是尝试应用梯度下降,如果这是错误的,请告诉我)。 因此,在准备好反向传播和梯度下降之后,我尝试的第一件事是训练一个简单的异或分类器,其中输入可以是(0,0),(1,0),(0,1),(1,1),相应的输出是0,1,1,0。所以我的神经网络包含2个输入单元,1个输出单元和一个隐藏层,其中有3个单元。当以3.0的学习率对其进行训练,训练时间>100(甚至尝试次数>5000),成本会下
因此,在准备好反向传播和梯度下降之后,我尝试的第一件事是训练一个简单的异或分类器,其中输入可以是(0,0),(1,0),(0,1),(1,1),相应的输出是0,1,1,0。所以我的神经网络包含2个输入单元,1个输出单元和一个隐藏层,其中有3个单元。当以3.0的学习率对其进行训练,训练时间>100(甚至尝试次数>5000),成本会下降,直到达到某个特定点为止,因此保持不变。每次我运行程序时,权重都会随机初始化,但它总是以相同的特定成本被卡住。不管怎样,训练结束后,我试着在上面的任何输入上运行我的神经网络,输出总是0.5000。我考虑过改变输入和输出,使它们是:(-1,-1),(1,-1),(-1,1),(1,1)和输出-1,1,1,-1。现在,当以相同的学习率进行训练时,无论迭代次数多少,成本都在不断下降,但结果仍然是错误的,而且它们总是非常接近于0。我甚至试着训练它进行疯狂的迭代次数,结果如下:[迭代次数:(20kk),输入:(1,-1),输出:(1.6667e-08)],还有[迭代次数:(200kk),输入:(1,-1),输出:(1.6667e-09)],也试过输入(1,1)和其他,输出也非常接近于0。似乎输出总是平均值(min(y),max(y)),我以什么形式提供输入/输出并不重要。我想不出我做错了什么,有人能帮忙吗?有很多地方你可能会做错:
- 以数字形式检查渐变
- 你必须使用非线性隐藏单元来学习异或-你有非线性激活吗
- 你需要偏差神经元,有吗
- 输出节点中是否有S形激活(因为您的网络是一个分类器)
- 您是否使用交叉熵成本进行培训(尽管这是一个小问题)