神经网络的训练,究竟在训练什么

前面我们已经了解到神经网络进行预测的过程,但是仍然留下许多疑问,比如权重值如何获得,如何训练神经网络等,这些问题我们将在本文展开。


权重值如何得到

权重值也就是前文所提到的小蜘蛛的道具,没有看过的朋友可以先看看我的上一个博客。

权重值该如何获得呢?

我们以最简单的三个神经元的神经网络举例子:


最左边的神经元是起点,最右边的是终点,只有中间的神经元有权重值。

我们先来离散的获得一部分点:

我们可以隐约地看到这些点大约分布在一条直线附近, 我们把这条直线画出来


那我们如何通过这几个点来获得这条红色的线呢?

先来明确一个问题:获得红色的线有什么用?

  • 获得红色线后,我们可以提供一个x的值,然后预测y的值,虽然这个值不一定准确,但是也在一个大概的范围内。

这十个已知的点分别是什么?


第一列表示x轴的坐标,第二列表示y轴的坐标

其实思路就是用最小二乘法,先假设随便画一条线


我画了一条y=0.1x+0.1的线如图所示

y = wx + b

我令w=0.1, b=0.1

随机给w和b赋值,不用在以是多少,先画出来,有可能一次就能画出红色的线!

显然我们画的线差距很大,此时使用最小二乘法,就是每个点到直线的距离加起来,再用梯度下降法来优化!


好的,如果我这么说,肯定和每说一样,那么我一步一步

第一个点的坐标是(1, 0.16375502570787515),我们把x=1带入y=0.1x+0.1这个函数,得到y=0.2

显然我们正确的y应该是0.163,那么正确的y,和我们在y=0.1x+0.1得到的y值差距是多大呢?差距是:(0.163-0.2)^2

我们要想办法减小这个差距

差距是怎么得到的?预测值减去真实值再平方,用数学语言就是(0.1*1+0.1-0.2)^2 ==> (wx+b-2)^2

就是说我们要对函数 (y - wx+b)^2 获得的值最小,也就是求这个函数的最小值,高中数学就讲到求函数最小值的方法就是求导,这是二元函数,就是高考最喜欢做的题目!!!求导之后画出导数函数的图像,然后与0相交的点就是极小值点!大家应该很熟悉这个步骤。

不过

这个函数有w和b两个未知数,我们的思路是正确的,只是不能通过这种方式获得最小值,所以这里我们求的是对w和对b的偏导数,(这里需要微积分学历)对w的偏导数就是 2w(wx+b-y)。对b的偏导数就是2(wx+b-y)

此时我们把第一个点的数据代入 x=1, y=0.163, w=0.1, b=0.1

对w的偏导数等于 0.0326

对b的偏导数等于 0.326


此时,我们设定一个步长,也叫学习率,假设等于0.2吧,

对于步长的理解,类似于我们在山顶,找不到下山的路,那我们可以一小步一小步走,每走一小步,环顾四周,看看哪一边最陡峭,就往那边走一小步,不断走,就可以到达山底。

那么,

  • 更新后的w等于 0.1 - (-0.0326) x 0.2 = 1.00652

  • 更新后的b等于 0.1 - (-0.326) x 0.2 = 1.0652


我们已经更新了w和b的值,只要重复这个步骤足够多的次数,那么就可以得到很接近红色的线。

其实,这就是神经网络的训练过程。

过程总结

先把我们已经有的值传入网络,网络一开始的权重值是随机的,传入网络得到一个预测值,这个预测值会和真实值有一定的差距,那么我们优化这个差距,让这个差距变小,其实这就是一个反向传播的过程,我们用数学计算来更新了w和b的值,那么下一次传入网络得到的预测值与真实值之间的距离就会减小,周而复始,这个距离不断减小,我们就可以得到一个预测能力比较好的w和b,也就是拟合能力比较强的网络,就可以对未知的数据得到较为准确的结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。