QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 1925|回复: 42

[技术交流] 20行代码实现多层神经网络的机器学习

[复制链接]
累计签到:258 天
连续签到:1 天
最佳答案
35 
发表于 2017-1-23 16:41:58 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
现在神经网络、机器学习、深度学习逐渐成为未来计算机发展的大趋势。

今天就通过一个很简单的小例子,浅谈一下如何用python实现多层神经网络的机器学习。

神经网络(Neural Networks)属于 机器学习(Machine Learning)的一种。

深层神经网络(Deep Neural Networks)也只是 深层学习(Deep Learning) 的一种。

"深度学习"是为了让层数较多的多层神经网络可以训练,能够work而演化出来的一系列的 新的结构和新的方法。

好吧,太复杂的概念大家可以google,这里举个简单的例子说明:

例如,
有一组输入:X = 1,2,3,4,5,6,7,8,9,10
有一组输出:Y = 10,20,30,40,50,60,70,80,90,100
求解:Y = k*X + b 中的 k 和 b 为何值时,函数拟合最好。
当然,这是非常简单的题目,用脚趾头想都能知道这个函数当然应该是 Y = 10 * X + 0,即 k = 10, b = 0.

那么用神经网络学习应该如何实现呢?

卖个关子。

我们先看结果吧:
当学习次数为100时,程序输出:
k=9.999852648623337 b=0.0007369339496443169

当学习次数为10000时,程序输出:
k=9.999866463857986 b=0.0007360277038955244

当学习次数为1000000时,程序输出:
k=9.999935468934599 b=0.0003552889884596963

可以看到随着学习次数的增加,输出值会无限接近标准值(但是永远也打不到标准值,因为机器学习的特点就是根据偏差值不断调整自身参数,以不断减小误差,但是误差是永远存在的。)

下面详细解释程序代码:
首先,我们要定义一个函数,这个函数的作用是能够把输入值转化为一个0~1之间的数,并且当输入值与0的差值越大,输出越接近1,输入值越接近0时,输入值也越接近于0. 这个函数的作用就是用来调整机器本身参数,使结果更加接近于标准值。
那么,我们这个函数F(x)= (e^x -1) / (e^x + 1) 就符合这样的要求,其中x>=0(取绝对值)。
def F(x):
    return (math.exp(abs(x))-1)/(math.exp(abs(x))+1)

然后当然要把X和Y以列表的形式放入以便机器学习使用。
X = list(range(1,11))
Y = list(range(10,110,10))

由于有k和b 2个未知数,我们设定一个二层的神经网络。
把X作为第一层输入,k*X作为第一层的输出
把k*X作为第二层输入,k*X+b作为第二层的输出

利用k*X与Y-b计算第一层的偏差值error1,代入F(error1)计算权重,然后把这个权重值*error1作为k值的调整值
同样,利用k*X+b与Y计算第二层的偏差值error2,代入F(error2)计算权重,再把这个权重值*error2作为b值的调整值

然后,不断反复迭代这个过程,使得k和b不断接近标准值。
这个过程就是这样。

20行源代码如下:
游客,如果您要查看本帖隐藏内容请回复
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:49 天
连续签到:1 天
最佳答案
6 
发表于 2017-1-23 22:12:44 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:8 天
连续签到:1 天
最佳答案
0 
发表于 2017-1-27 09:31:52 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-1-28 09:12:23 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:6 天
连续签到:1 天
最佳答案
0 
发表于 2017-1-30 21:58:52 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:2 天
连续签到:1 天
最佳答案
0 
发表于 2017-2-8 07:52:03 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-2-8 18:56:16 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-2-8 18:59:22 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:14 天
连续签到:1 天
最佳答案
0 
发表于 2017-2-11 22:04:21 From FishC Mobile | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:65 天
连续签到:1 天
最佳答案
0 
发表于 2017-3-10 15:37:52 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:271 天
连续签到:30 天
最佳答案
0 
发表于 2017-3-11 09:55:39 | 显示全部楼层
利用k*X与Y-b计算第一层的偏差值error1,代入F(error1)计算权重,然后把这个权重值*error1作为k值的调整值
同样,利用k*X+b与Y计算第二层的偏差值error2,代入F(error2)计算权重,再把这个权重值*error2作为b值的调整值
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-3-14 17:05:11 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-3-21 09:27:23 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:4 天
连续签到:4 天
最佳答案
0 
发表于 2017-3-30 08:46:34 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:581 天
连续签到:5 天
最佳答案
0 
发表于 2017-3-30 10:06:19 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

尚未签到

最佳答案
0 
发表于 2017-4-2 19:33:44 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:3 天
连续签到:1 天
最佳答案
0 
发表于 2017-4-6 23:30:00 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-4-8 19:42:30 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:49 天
连续签到:1 天
最佳答案
0 
发表于 2017-4-13 21:12:49 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
累计签到:1 天
连续签到:1 天
最佳答案
0 
发表于 2017-4-24 07:01:27 | 显示全部楼层
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-7-28 12:44 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表