我们将用0表示男性,用1表示女性,我们还将对数据进行移位,使其更容易使用:
文章插图
我随意选择了移位量(135和66)来使数字看起来漂亮一些 。一般情况下,你应该使用平均值来移位 。
损失
在训练我们的网络之前,我们首先需要一种方法来量化它做得有多“好”,这样它就可以尝试做得“更好” 。这种方法就是损失 。
我们将使用均方误差(MSE)损失:
文章插图
让我们来分解一下:
- n是样本的个数,这里是4 (Alice、 Bob、 Charlie、 Diana) 。
- y表示要预测的变量,即性别 。
- ytrue是变量(“正确答案”)的真值 。例如,对于Alice来说,ytrue是1(女性) 。
- ypred是变量的预测值 。它是我们网络的输出 。
更好的预测=更低的损失 。
训练一个网络=尽量减少它的损失 。
一个损失计算例子
假设我们的网络总是输出0,换句话说,它确信所有的人类都是男性 。那我们的损失是多少?
文章插图
代码: 均方误差损失
下面是一些计算损失的代码:
文章插图
如果你不理解这段代码的工作原理,请阅读NumPy数组操作快速入门 。
好了 。开始!
4.训练神经网络,第2部分我们现在有了一个明确的目标: 最小化神经网络的损失 。我们知道我们可以改变网络的权重和偏差来影响它的预测,但我们如何才能以一种减少损失的方式做到这一点呢?
本节使用了一些多变量微积分 。如果你对微积分不熟悉,你可以跳过数学部分 。
为了简单起见,假设我们的数据集中只有Alice:
文章插图
那么均方误差损失就是Alice的平方误差:
文章插图
另一种考虑损失的方法是将损失看作是一个权重和偏差的函数 。我们来标记我们的网络中的每个权重和偏差:
文章插图
然后,我们可以将损失写成一个多元函数:
文章插图
假设我们想调整w1 。如果我们改变w1,损失L将如何变化? 偏导数∂L/∂w1可以回答这个问题 。我们如何计算它?
这就是数学开始变得更加复杂的地方 。不要气馁!我建议你带一支笔和一张纸来跟着计算,它们可以帮助你理解 。
首先,我们用∂ypred/∂w1来重写偏导数代替:
文章插图
由于我们上边计算出了L=(1-ypred)2,因此,我们可以计算∂L/∂ypred:
文章插图
现在,让我们算出∂ypred/∂w1的值 。就像之前一样,假设h1、 h2 、σ1是它们所代表的神经元的输出 。那么
文章插图
由于w1只影响h1(不影响h2),因此,我们可以写
文章插图
我们对∂h1/∂w1做相同的事情:
文章插图
这里的x1 是体重 , x2是身高 。现在已经是我们第二次看到f'(x)(sigmoid函数的推导式)了!我们对它进行推导:
文章插图
我们稍后将使用f'(x)这个漂亮的形式 。
我们完成了!我们已经将∂L/∂w1分解成了几个我们可以计算的部分:
文章插图
这种通过逆向运行计算偏导数的系统称为反向传播,或者“backprop” 。
哦 。这里有很多符号——如果你仍然有点困惑,也没关系 。让我们举一个例子来实际看一下!
推荐阅读
- 蜂蜜柚子茶的正确做法简单三个步骤做出温暖减肥茶
- 如何通过序列号在苹果官网查询手机的真伪?很简单,只需这样操作
- 昔归茶简介普洱茶中的香妃
- 简单几步让你的iPhone桌面既个性又高效
- 华为交换机SVF介绍
- 柠檬水=柠檬+水?你想得太简单了,快和我一起学做柠檬水吧!
- 微信有个开关,不用绑定银行卡也能支付,操作简单一看就会
- 苹果手机怎么批量删除通讯录联系人?简单实用方法总结
- iPhoneX屏幕发热断触?解决方法竟如此简单
- 滑蛋虾仁