神经网络是一种人工智能方法,它辅导盘算机以雷同于人脑的方式处理处罚数据。神经网络通过输入多个数据实例、推测输出、找出实际答案与呆板答案之间的毛病,然后微调权重以淘汰此毛病来举行学习。
固然神经网络看起来非常复杂,但它实际上是线性代数和多元微积分的奇妙运用。本文旨在全面先容粉碎神经网络的数学原理。
假设和准备知识
神经网络必要对大学水平的微积分和线性代数有踏实的明白。在可汗学院网站上可以找到很好的复习资料(链接在上一句中)。本例中必不可少的算法是梯度降落,本视频对此举行了很好的表明。
对于与神经网络更相干的课程,Adam Dhalla 的这个视频仅教您此示例所需的微积分和线性代数的须要范畴。
神经网络底子
我们将使用的示例是:
通常,输入层(绿色)是来自数据集的输入变量,输出层(赤色)是神经网络的推测值。在潜伏层和输出层中,对每个节点举行加权和(用s体现),然后应用激活函数(用a体现),根据所需的激活函数对值举行归一化。
将数据从输入端通过网络馈送到输出端的过程称为前向传播。观察前向传播的错误率并将错误反馈回网络以微调神经网络权重的过程称为反向传播。我们在反向传播之前先辈行前向传播。
前向传播
留意:在这个例子中,我使用sigmoid函数作为激活函数(激活函数用作将输入映射到肯定范围内 - 对于 sigmoid 来说,范围是 (0, 1))。
潜伏层
潜伏层 1:
潜伏层 2:
潜伏层 3:
输出层
输出层 1:
输出层 2:
均方毛病 (MSE) 盘算
均方毛病是预期输出和实际输出之间差别的度量。我们正在探求较低的 MSE 分数,这表明模子与数据的拟合度更高。我们将使用梯度降落法来低落该值。
反向传播
现在已经盘算出推测值,神经网络必要根据推测毛病调解其权重。这是通过反向传播完成的。
对于此示例,思量学习率为 0.1
反向传播背后的一样平常数学头脑是应用链式法则来找到毛病函数随权重变革的变革。以权重 7 为例:
全部三个部分方程均可从我们的工作中推导出来。
起首,
第二,
末了,
因此,把这三个术语放在一起,
该公式可以实用于毗连潜伏层和输出层的全部权重。
留意:作者通常会使用 delta 来写方程:δ₀₁= (a₀₁−expected₁) × a₀₁ × (1−a₀₁),因此方程可以写成 ∂E₀₁ / ∂w₇ = δ₀₁ × aₕ₁
现在我们得到了毛病函数的梯度。
我们想应用梯度降落来得到权重 w₇ 的新值。新的 w₇(我们可以将其符号化为 w₇')可以通过从 w₇ 中减去学习率乘以梯度来得到。
一样平常来说,对于输入迷经元:
输出层
现在,应用示例中的实数来查找 w₇ 到 w₁₂ 的新值
输出层 1:
输出层 2:
潜伏层(衍生)
找到一种方法来优化潜伏层权重具有更大的推导量——本节中的任何内容都与盘算无关,因此假如必要,可以随意跳过此部分。
思量更新 w₁ 的权重——原则上,更新任何权重在围绕偏微分旋转方面都会具有雷同风格的公式。
然而这一次,我们离输入迷经元更远了——因此,为了找到这个方程右侧各个分量的值,还必要举行更多的“链接”……
对于一阶导数:
在那里:
现在,由于我们之前已经盘算了 δ₀₁ 和 δ₀₂(拜见本文输出层部分所做的盘算),我们可以将这些增量的值代入方程中。
因此,加权和相对于前一层的神经元的导数本质上就是相应的权重。
现在,用这些值代替部分毛病项:
∂aₕ₁ / ∂sₕ₁ 的值只是 S 型函数的导数
∂sₕ₁ / ∂w₁ 的值是前一层神经元的输出(在本例中,由于只有一个潜伏层,以是是输入层神经元)
综上所述:
我渴望您能看到这些步调中发生了什么——可以举行雷同的工作过程来找到全部权重的公式(我不会展示)。
但本质上,要找到更新权重的值,起首盘算权重输入迷经元的增量,然后从增量中减去旧权重,乘以增量,再乘以权重输着迷经元的先前值。
假如这很难明白,那么下面的盘算大概会资助您相识数字上发生的情况。
潜伏层(盘算)
先前盘算的 delta 值:
δ₀₁ = -0.0984
δ₀₂ = 0.1479
潜伏层 1:
潜伏层 2:
潜伏层 3:
完成了!
具有更新权重的神经网络
竣事语
以下是 3 层神经网络前向和反向传播的完备示例。
通常,神经网络在多个数据实例上举行练习,也可以举行多次迭代练习(我们称之为时期)。如许做会根据实例徐徐增长/淘汰权重,直到神经网络针对一组实例举行优化。
这个过程非常费力,而且数学运算量很大——幸好这就是我们用盘算机模拟全部这些工作的缘故起因。像PyTorch如许的库抽象了很多数学复杂性,绝对应该用于任何范例的模子练习。
只管云云,完备的数学演练肯定有助于强化实行该模子时所需的明白。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |