例子: 计算偏导数
我们将继续假设我们的数据集中只有Alice:
文章插图
我们初始化所有的权重为1,所有的偏差为0 。如果我们执行一个前馈通过网络,我们得到:
文章插图
该网络输出 ypred =0.524,这并没有特别偏向男性(0)或女性(1) 。我们来计算∂L/∂w1:
文章插图
提醒: 我们在前面为我们的 sigmoid函数推导出了f'(x) = f(x) * (1 - f(x)) 。
我们做到了!这告诉我们,如果我们增加w1,L就会相应地增加一点点 。
训练:随机梯度下降法
我们现在有了训练神经网络所需的所有工具! 我们将使用一种称为随机梯度下降(SGD)的优化算法,它告诉我们如何改变权重和偏差以最小化损失 。它基本上就是这个更新方程:
文章插图
η是一个称为学习率的常数,它控制我们训练的速度 。我们所做的就是从w1中减去η∂L/∂w1:
- 如果∂L/∂w1是正数,w1会减小,从而使得L也减小 。
- 如果∂L/∂w1 是负数,w1会增加,从而使得L也减小 。
我们的训练过程如下:
- 从数据集中选择一个样本 。这就是称其为随机梯度下降的原因——我们一次只对一个样本进行操作 。
- 计算所有关于权重或偏差的损失的偏导数(例如∂L/∂w1、∂L/∂w2等等) 。
- 使用更新方程来更新每个权重和偏差 。
- 回到步骤1 。
代码: 一个完整的神经网络
终于是时候实现一个完整的神经网络了:
文章插图
文章插图
文章插图
文章插图
文章插图
你可以自己运行/测试这段代码(https://repl.it/@vzhou842/An-Introduction-to-Neural-Networks ) 。你也可以在Github上找到它 。(https://github.com/vzhou842/neural-network-from-scratch )
随着网络的学习,我们的损失逐渐减小:
文章插图
我们现在可以用这个网络来预测性别:
文章插图
现在怎么办?
你成功了!现在来快速回顾一下我们所做的:
- 介绍了神经元——神经网络的构建块 。
- 在我们的神经元中使用了sigmoid激活函数 。
- 看到了神经网络只是连接在一起的神经元 。
- 创建了一个带有体重和身高的数据集,并将其作为输入(或特征),性别作为输出(或标签) 。
- 学习了损失函数和均方误差(MSE)损失 。
- 意识到训练一个网络只是最小化它的损失 。
- 使用反向传播计算偏导数 。
- 利用随机梯度下降法(SGD)对网络进行训练 。
- 使用合适的机器学习库(如Tensorflow、Keras和PyTorch)来测试更大/更好的神经网络 。
- 使用Keras构建你的第一个神经网络 。
- 在你的浏览器中修补一个神经网络 。
- 发现除了sigmoid之外的其它激活函数,如Softmax 。
- 发现除了SGD之外的其它优化器 。
- 阅读我的《卷积神经网络(CNNs)介绍》 。CNNs给计算机视觉领域带来了革命性的变化,其功能非常强大 。
- 阅读我的《递归神经网络(RNNs)介绍》 。RNNs经常用于自然语言处理(NLP) 。
感谢阅读!
英文原文:https://victorzhou.com/blog/intro-to-neural-networks/ 译者:Nothing
推荐阅读
- 蜂蜜柚子茶的正确做法简单三个步骤做出温暖减肥茶
- 如何通过序列号在苹果官网查询手机的真伪?很简单,只需这样操作
- 昔归茶简介普洱茶中的香妃
- 简单几步让你的iPhone桌面既个性又高效
- 华为交换机SVF介绍
- 柠檬水=柠檬+水?你想得太简单了,快和我一起学做柠檬水吧!
- 微信有个开关,不用绑定银行卡也能支付,操作简单一看就会
- 苹果手机怎么批量删除通讯录联系人?简单实用方法总结
- iPhoneX屏幕发热断触?解决方法竟如此简单
- 滑蛋虾仁