|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jerryxjr1220 于 2017-1-24 10:10 编辑
上一次的小练习简单分享了20行代码实现的多层神经网络的机器学习。
今天来讲一个具体的复杂例子,说明一下多层神经网络的机器学习的强大功能--拟合高幂次函数。
题目:
输入:[-0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
输出:[13.1441, 11.5536, 10.1961, 9.0416, 8.0625, 7.2336, 6.5321, 5.9376, 5.4321, 5.0, 4.6281, 4.3056, 4.0241, 3.7776, 3.5625, 3.3776, 3.2241, 3.1056, 3.0281, 3.0]
已知这是一个高幂次函数在【-0.9,1】区间段中的一组数据,求解拟合度最好的高幂次函数 (多少次幂未知)
如果没有高效的求解算法,要拟合幂次未知的高幂次方程难度是相当大的,哪怕在matlab中的标准回归模块中最高也仅支持3次幂。
下面,我们就用python高效的求解本题:
方法还是和上次小练习中的方法一样,区别是为了加快自修正的速度,我把每次修正的权重全部设为1,也就是每次都会用上一次的误差修正下一次地参数。
首先假设最高次幂为5次(设再高也是可行的,初次设定好最高次幂后,可以根据后续的确信度进行调整,若确信度低就再调高幂次)。
那么函数方程为:Y=o*X**5+p*X**4+q*X**3+r*X**2+s*X+t
还是先看最后的结果:
列出了前10次机器学习自调整的确信度以及总共1000次机器学习的确信度:(确信度利用标准差计算得到)
调整次数:1 确信度: -146.581969958%
调整次数:2 确信度: -57.1543895104%
调整次数:3 确信度: 41.9843490833%
调整次数:4 确信度: 54.3347839432%
调整次数:5 确信度: 69.4401666869%
调整次数:6 确信度: 76.2338848743%
调整次数:7 确信度: 81.8372422013%
调整次数:8 确信度: 86.5870224139%
调整次数:9 确信度: 89.8755646957%
调整次数:10 确信度: 92.2000428784%
调整次数:50 确信度: 99.442099187%
调整次数:100 确信度: 99.8405251983%
调整次数:150 确信度: 99.9536136407%
调整次数:200 确信度: 99.9864861301%
调整次数:250 确信度: 99.9960623667%
调整次数:300 确信度: 99.9988526468%
调整次数:350 确信度: 99.9996656821%
调整次数:400 确信度: 99.9999025858%
调整次数:450 确信度: 99.9999716153%
调整次数:500 确信度: 99.9999917292%
调整次数:550 确信度: 99.99999759%
调整次数:600 确信度: 99.9999992978%
调整次数:650 确信度: 99.9999997954%
调整次数:700 确信度: 99.9999999404%
调整次数:750 确信度: 99.9999999826%
调整次数:800 确信度: 99.9999999949%
调整次数:850 确信度: 99.9999999985%
调整次数:900 确信度: 99.9999999996%
调整次数:950 确信度: 99.9999999999%
调整次数:1000 确信度: 100.0%
拟合函数的参数:o=0.000000,p=1.000000,q=-2.000000,r=3.000000,s=-4.000000,t=5.000000
可以发现机器自学习的调整效率非常高,经过前10次调整确信度已经达到90%以上,经过前1000次调整,确信度接近100%(实际不可能达到100%,因为微小的误差始终存在,只是小数位数太长我舍去了)。
最终函数方程为:Y=X**4-2*X**3+3*X**2-4*X+5
整个自学习过程非常快速,毫秒级别即可完成。
对于再高幂次的方程可以增加自调整次数,我们普通计算机对于100万次以下的自学习都是没有问题的。
源代码如下:
|
评分
-
查看全部评分
|