今天,开源机器学习软件库,如TensorFlow , Keras或PyTorch我们可以创建神经网络,即使在高结构的复杂性,因为代码只需几行。 话虽如此,神经网络背后的数学仍然是我们中某些人的一个谜,拥有神经网络和深度学习背后的数学知识可以帮助我们了解神经网络内部正在发生的事情。 它还在架构选择,深度学习模型的微调,超参数优化和优化方面有帮助。
介绍
由于我对代数或微积分的了解不多,因此很长一段时间以来,我都忽略了对神经网络和深度学习背后的数学的理解。 几天前,我决定从头开始,推导神经网络和深度学习背后的方法论和数学,以了解它们如何工作以及为什么起作用。 我还决定写这篇文章,这对像我这样的人很有用,他们发现很难理解这些概念。
感知器
感知器—由弗兰克·罗森布拉特(Frank Rosenblatt)发明 在1957年,是最简单的神经网络,它由n个输入,一个神经元和一个输出组成,其中n是数据集的特征数量。 通过神经网络传递数据的过程称为前向传播,并在以下三个步骤中说明了在感知器中执行的前向传播。
步骤1 :对于每个输入,将输入值xᵢ乘以权重wᵢ 并将所有相乘的值相加。 权重-表示神经元之间连接的强度,并决定给定输入将对神经元输出产生多大影响。 如果权重w 1的值大于权重w 2,则输入x 1对输出的影响将大于w 2。
输入和权重的行向量分别为x = [x₁,x 2,…,xₙ]和w = [w₁,w 2,…,wₙ]及其点积 是(谁)给的
因此,总和等于向量x和w的点积
步骤2 :将偏差b加到相乘值的总和上,我们称其为z 。 偏差-在大多数情况下也需要偏移,才能将整个激活功能向左或向右移动以生成所需的输出值。
步骤3 :将z的值传递给非线性激活函数。 激活函数-用于将非线性引入神经元的输出中,否则,神经网络将只是线性函数。 而且,它们对神经网络的学习速度有重大影响。 感知器具有二进制步进功能作为其激活功能。 但是,我们将使用Sigmoid(也称为逻辑函数)作为激活函数。
其中, σ表示Sigmoid激活函数,在经过正向授权后获得的输出称为预测值 ŷ 。
学习算法
学习算法由两部分组成-反向传播和优化。
反向传播: 反向传播 ,是错误的向后传播的缩写,是指用于计算损失函数相对于权重的梯度的算法。 但是,该术语通常用于指整个学习算法。 以下两个步骤说明了在感知器中进行的反向传播。
第1步 :要知道我们与期望解有多远的距离,使用了损失函数 。 通常,对于回归问题,选择均方误差作为损失函数;对于分类问题,选择均方误差作为交叉熵 。 让我们考虑一个回归问题,其损失函数为均方误差,该均方根将实际 (yᵢ)与预测值 (ŷᵢ)之差平方。
针对整个训练数据集计算损失函数,其平均值称为成本函数 C。
第2步 :为了为我们的感知器找到最佳权重和偏差,我们需要知道成本函数相对于权重和偏差如何变化。 这是借助梯度 s( 变化率)完成的 -数量相对于另一数量如何变化。 在我们的案例中,我们需要找到成本函数相对于权重和偏差的梯度。
让我们使用偏导数计算成本函数C相对于权重wᵢ的梯度。 由于成本函数与权重wᵢ没有直接关系,因此我们使用链式规则 。
现在我们需要找到以下三个渐变
让我们从成本函数 (C)相对于预测值 (ŷ)的梯度开始
令y = [y y,y 2,…y y]和y y = [y y,y y 2,…y y]是实际值和预测值的行向量。 因此,上述方程式简化为
现在让我们找到预测值相对于z的梯度。 这会有点冗长。
z相对于权重wᵢ的梯度为
因此我们得到
偏见呢? -偏置在理论上被认为具有恒定值1的输入。 因此,
优化:优化是从一些可用替代方案中选择最佳元素,在我们的案例中,优化是选择感知器的最佳权重和偏差。 让我们选择梯度下降作为我们的优化算法,该算法将更改权重和偏差 ,与相应的权重或偏差相对于Cost函数的梯度负值成比例。 学习率 ( α )是一个超参数,用于控制权重和偏差的变化量。
权重和偏差按如下更新,重复进行Backporpagation和梯度下降直到收敛。
结论
我希望您发现本文很有用,并且理解了神经网络和深度学习背后的数学原理。 我已经在本文中解释了单个神经元的工作原理,但是这些基本概念适用于经过修改的各种神经网络。 如果您有任何疑问或发现错误,请在评论中让我知道。