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

2024-05-06 03:44

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

 前面我们已经了解到神经网络进行预测的过程,但是仍然留下许多疑问,比如权重值如何获得,如何训练神经网络等,这些问题我们将在本文展开。
   权重值也就是前文所提到的小蜘蛛的道具,没有看过的朋友可以先看看我的上一个博客。
    权重值该如何获得呢? 
   我们以最简单的三个神经元的神经网络举例子:
                                           最左边的神经元是起点,最右边的是终点,只有中间的神经元有权重值。
   我们先来 离散 的获得一部分点:   
                                           
   我们可以隐约地看到这些点大约分布在一条直线附近, 我们把这条直线画出来
                                           那我们如何通过这几个点来获得这条红色的线呢?
   这十个已知的点分别是什么?
                                            第一列表示x轴的坐标,第二列表示y轴的坐标 
   其实思路就是用最小二乘法,先假设随便画一条线
                                           我画了一条 y=0.1x+0.1 的线如图所示
   显然我们画的线差距很大,此时使用最小二乘法,就是每个点到直线的距离加起来,再用梯度下降法来优化!
   好的,如果我这么说,肯定和每说一样,那么我 一步一步 来
   第一个点的坐标是(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和b的值,只要重复这个步骤足够多的次数,那么就可以得到很接近红色的线。
   其实,这就是神经网络的训练过程。
   先把我们已经有的值传入网络,网络一开始的权重值是随机的,传入网络得到一个预测值,这个预测值会和真实值有一定的差距,那么我们优化这个差距,让这个差距变小,其实这就是一个反向传播的过程,我们用数学计算来更新了w和b的值,那么下一次传入网络得到的预测值与真实值之间的距离就会减小,周而复始,这个距离不断减小,我们就可以得到一个预测能力比较好的w和b,也就是拟合能力比较强的网络,就可以对未知的数据得到较为准确的结果。

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

2. 用最简单的神经网络做数据分类,展示神经网络训练过程

 本文用简单的神经网络做数据分类,展示神经网络训练过程,方便理解   神经网络模型:Y = w1 x1 + w2 x2 + b    第一步 :生成训练数据与标签
                                            第二步 :合并数据并将数据打乱,然后将数据转换为Paddle框架所需要的数据类型
    第三步 ,基于Paddle,构建神经网络、定义损失函数和优化器:Y = w1 x1 + w2 x2 + b
    第四步 ,构建训练过程
    最后一步 ,绘制训练结果

3. 神经网络测试样本集,训练样本集怎么理解,编程目的是让 测试样本输出跟踪目标输出么?谢谢指导~~~不懂~

训练样本是用来训练学习机的,测试样本是学习机要识别的对象。
比如你想让一台电脑能识别茶杯,首先你要准备一个茶杯(训练样本),然后把茶杯给计算机看(数据输入),并告诉电脑说这样的东东是茶杯(期望输出),电脑看到茶杯后它认为是花盆,但看到你的期望是茶杯,他就不停训练自己这个是茶杯不是花盆,直到电脑他自己认为茶杯是茶杯后结束(这个过程叫学习),然后你把另一只茶杯(测试样本)放在电脑面前,并问他这是什么东东,电脑通过运算后告诉你是茶杯(这个过程叫识别)。

神经网络的原理是输入层的数据经过多个神经元后的输出值尽量接近给出的期望值,如果输出值与期望值误差大,则反复修改神经元的权,直到输出值与期望值的误差在可接受范围。

神经网络测试样本集,训练样本集怎么理解,编程目的是让 测试样本输出跟踪目标输出么?谢谢指导~~~不懂~

最新文章
热门文章
推荐阅读