Google的神经网络算法模拟

Google的神经网络算法模拟

二分类问题

激活函数使用线性函数linear,学习率为0.03

noise设置为20,避免为理想情况。

不使用隐藏层,而且就两个特征项。
Google的神经网络算法模拟_第1张图片

可以看到模型训练良好

异或问题

线性激活函数

如果还是用线性的激活函数,则会出现下面的情况

Google的神经网络算法模拟_第2张图片

如果要采用线性神经网络解决异或问题,就在输入引入非线性项

如果抖动太大则是学习率太高。

梯度下降法会使得误差越来越小,但是不会直接到最小值,会在最小值的两边左右横跳。调小学习率即可。

Google的神经网络算法模拟_第3张图片

可以看到模型训练良好

BP学习算法

就需要引入隐藏层,这里我们引入5个隐藏层。将激活函数改为Sigmoid函数

Google的神经网络算法模拟_第4张图片

Google的神经网络算法模拟_第5张图片

其中小点代表偏置值。

换一个数据集

Google的神经网络算法模拟_第6张图片

也能得到较好的效果。

Sigmoid激活函数在隐藏层较多的时候,会使模型学习的效率变低。

因此我们在隐藏层较多的时候使用双曲正切函数Tanh激活函数

过拟合问题

我们在用训练数据得到一个很好的训练模型之后,再用测试数据来测试的时候,得不到一个较好的测试结果。

Google的神经网络算法模拟_第7张图片

要解决过拟合,可以加入正则项

在这里插入图片描述

这样会使很多权值都近等于0

Google的神经网络算法模拟_第8张图片

复杂数据集

对于较复杂的数据集,我们就需要多个神经元去拟合模型。

下面是在不同神经元下,分别测试的结果。(最后的数据测试结果都已趋于稳定)

Google的神经网络算法模拟_第9张图片

Google的神经网络算法模拟_第10张图片

Google的神经网络算法模拟_第11张图片

Google的神经网络算法模拟_第12张图片

你可能感兴趣的:(神经网络,算法,深度学习)