腾讯免费网站空间小企业怎么建网站平台

当前位置: 首页 > news >正文

腾讯免费网站空间,小企业怎么建网站平台,建立公司的流程,做搜狗手机网站快一、前向传播 1.1 概念 神经网络的前向传播#xff08;Forward Propagation#xff09;就像是一个数据处理的流水线。从输入层开始#xff0c;按照网络的层次结构#xff0c;每一层的神经元接收上一层神经元的输出作为自己的输入#xff0c;经过线性变换#xff08;加权…一、前向传播 1.1 概念 神经网络的前向传播Forward Propagation就像是一个数据处理的流水线。从输入层开始按照网络的层次结构每一层的神经元接收上一层神经元的输出作为自己的输入经过线性变换加权求和和非线性变换激活函数后将处理后的结果传递给下一层神经元。这个过程一直持续直到输出层产生最终的输出结果。它是神经网络进行预测的主要步骤数据按照正向的方向在网络中流动。 主要作用是根据给定的输入和当前神经网络的参数权重和偏置生成模型对该输入的预测输出。这个输出可以用于判断模型对输入数据的分类结果如在分类任务中或预测的数值如在回归任务中。 1.2 计算过程 以一个简单的全连接神经网络为例。 1输入层处理将原始数据输入到神经网络的输入层。假设输入层有 n 个神经元隐藏层有 m 个神经元输出层有 p 神经元。输入数据为 x ( x 1 , x 2 , … , x n ) x (x_1, x_2, \ldots, x_n) x(x1​,x2​,…,xn​) 。 2隐藏层计算数据从输入层进入隐藏层后通过线性组合和激活函数进行处理。对于输入层到隐藏层的连接设权重矩阵为 W 1 W_1 W1​ 维度为m x n偏置向量为 b 1 b_1 b1​ 维度为m x 1。隐藏层的输入为 z 1 W 1 x b 1 z_1W_1xb_1 z1​W1​xb1​ 然后通过激活函数 f f f 如 ReLU f ( z ) m a x ( 0 , z ) f(z)max(0,z) f(z)max(0,z)、Sigmoid f ( z ) 1 1 e − z f(z)\frac{1}{1e^{-z}} f(z)1e−z1​等得到隐藏层的输出 a 1 f ( z 1 ) a_1f(z_1) a1​f(z1​)。 3输出层生成结果隐藏层的输出作为输出层的输入经过类似隐藏层的计算过程得到最终的输出。从隐藏层到输出层设权重矩阵为 W 2 W_2 W2​ 维度为p x m偏置向量为 b 2 b_2 b2​ 维度为p x 1。输出层的输入为 z 2 W 2 a 1 b 2 z_2W_2a_1b_2 z2​W2​a1​b2​ 再通过激活函数如果需要得到最终的输出 y f ( z 2 ) yf(z2) yf(z2​)。例如在一个多分类任务中输出层可能使用 Softmax 激活函数将输出转化为各个类别上的概率分布。
二、反向传播 2.1 概念 反向传播Backward Propagation是一种用于计算神经网络中梯度的有效算法。它是基于链式法则从输出层开始反向计算损失函数关于网络中每个参数权重和偏置的梯度以便在训练过程中更新参数使得模型的预测输出与真实标签之间的损失函数值最小化。 主要作用是为神经网络的训练提供梯度信息。在训练过程中通过使用梯度下降等优化算法根据反向传播计算得到的梯度来更新网络的参数使得神经网络能够逐渐学习到输入数据和输出标签之间的复杂关系从而提高模型的预测准确性。 2.2 计算过程 首先需要定义一个损失函数 L 用于衡量模型的预测输出 y ^ \hat{y} y^​ 与真实标签 y y y 之间的差异。 常见的损失函数有均方误差MSE用于回归问题 L 1 n ∑ i 1 n ( y ^ i − y i ) 2 L \frac{1}{n} \sum
{i1}^{n} (\hat{y}_i - yi)^2 Ln1​i1∑n​(y^​i​−yi​)2 交叉熵损失Cross Entropy Loss 用于分类问题 L − ∑ i 1 n y i log ⁡ ( y ^ i ) L -\sum{i1}^{n} y{i} \log (\hat{y}{i}) L−i1∑n​yi​log(y^​i​) 交叉熵损失适用于多分类任务也常结合 Softmax 使用。二元交叉熵损失Binary Cross Entropy Loss适用于二分类任务也常结合 Sigmoid 使用。 L − [ y log ⁡ ( y ^ ) ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L -\left[ y \log(\hat{y}) (1 - y) \log(1 - \hat{y}) \right] L−[ylog(y^​)(1−y)log(1−y^​)] 在这里假设损失函数选用MSE激活函数选用线性激活函数 f ( x ) x f(x)x f(x)x。 1以计算损失函数关于权重 W 2 W_2 W2​ 的梯度为例根据链式法则 ∂ L ∂ W 2 ∂ L ∂ z 2 ∂ z 2 ∂ W 2 \frac{\partial L}{\partial {W}_2} \frac{\partial L}{\partial {z}_2} \frac{\partial {z}_2}{\partial {W}_2} ∂W2​∂L​∂z2​∂L​∂W2​∂z2​​。 先计算 ∂ L ∂ z 2 \frac{\partial L}{\partial {z}_2} ∂z2​∂L​ 它取决于损失函数的形式和激活函数的导数。由于 z 2 z_2 z2​经过激活函数 f 得到 y 即 y f ( z 2 ) yf(z_2) yf(z2​) 。所以 ∂ L ∂ z 2 ∂ L ∂ y ⋅ ∂ y ∂ z 2 \frac{\partial L}{\partial z_2} \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial z2} ∂z2​∂L​∂y∂L​⋅∂z2​∂y​ 。 对于 ∂ L ∂ y \frac{\partial L}{\partial y} ∂y∂L​这取决于损失函数。 对于 MSE 损失函数 L 1 n ∑ i 1 n ( y ^ i − y i ) 2 L \frac{1}{n} \sum{i1}^{n} (\hat{y}_i - yi)^2 Ln1​∑i1n​(y^​i​−yi​)2 对 y 求偏导 ∂ L ∂ y 2 n ∑ i 1 n ( y ^ i − y i ) \frac{\partial L}{\partial y} \frac{2}{n} \sum{i1}^{n} (\hat{y}_i - y_i) ∂y∂L​n2​∑i1n​(y^​i​−yi​) 。 对于 ∂ y ∂ z 2 \frac{\partial y}{\partial z_2} ∂z2​∂y​ 这取决于激活函数 f 的导数。 例如如果激活函数是线性函数 y z 2 yz_2 yz2​ 即 f ( z 2 ) z 2 f(z_2)z_2 f(z2​)z2​那么 ∂ y ∂ z 2 1 \frac{\partial y}{\partial z_2}1 ∂z2​∂y​1 。如果激活函数是 Sigmoid 函数 y 1 1 e − z 2 y \frac{1}{1 e^{-z_2}} y1e−z2​1​ 那么 ∂ y ∂ z 2 y ( 1 − y ) \frac{\partial y}{\partial z_2}y(1-y) ∂z2​∂y​y(1−y) 如果激活函数是 ReLU 函数 y max ⁡ ( 0 , z 2 ) y \max(0, z_2) ymax(0,z2​) 当 z 2 0 z_20 z2​0 时 ∂ y ∂ z 2 1 \frac{\partial y}{\partial z2}1 ∂z2​∂y​1 当 z 2 ≤ 0 z{2} \leq 0 z2​≤0 时 ∂ y ∂ z 2 0 \frac{\partial y}{\partial z_2}0 ∂z2​∂y​0 。 将 ∂ L ∂ y \frac{\partial L}{\partial y} ∂y∂L​ 和 ∂ y ∂ z 2 \frac{\partial y}{\partial z_2} ∂z2​∂y​相乘得到 ∂ L ∂ z 2 \frac{\partial L}{\partial {z}_2} ∂z2​∂L​ 。 接着计算 ∂ L ∂ W 2 \frac{\partial L}{\partial {W}_2} ∂W2​∂L​ 。由前向传播得到的 z 2 W 2 a 1 b 2 z_2W_2a_1b_2 z2​W2​a1​b2​ 可知 ∂ z 2 ∂ W 2 a 1 \frac{\partial \mathbf{z}_2}{\partial {W}_2}a_1 ∂W2​∂z2​​a1​ 。所以可求出 ∂ L ∂ W 2 \frac{\partial L}{\partial {W}_2} ∂W2​∂L​ 。
2计算损失函数关于偏置 b 2 b_2 b2​ 的梯度。根据链式法则 ∂ L ∂ b 2 ∂ L ∂ z 2 ⋅ ∂ z 2 ∂ b 2 \frac{\partial L}{\partial b_2} \frac{\partial L}{\partial z_2} \cdot \frac{\partial z_2}{\partial b_2} ∂b2​∂L​∂z2​∂L​⋅∂b2​∂z2​​ ∂ z 2 ∂ b 2 1 \frac{\partial z_2}{\partial{b}_2}1 ∂b2​∂z2​​1 可求出 ∂ L ∂ b 2 \frac{\partial L}{\partial b_2} ∂b2​∂L​ 。 3类似地可以计算出关于其他权重和偏置的梯度如 ∂ L ∂ W 1 \frac{\partial L}{\partial {W}_1} ∂W1​∂L​ 和 ∂ L ∂ b 1 \frac{\partial L}{\partial b1} ∂b1​∂L​ 等。
三、梯度下降 3.1 梯度下降 梯度下降Gradient Descent是一种常用的优化算法广泛应用于神经网络以及众多机器学习模型的训练过程中目的是通过迭代的方式来最小化目标函数比如神经网络中的损失函数的值。它的基本思想是沿着目标函数梯度导数的反方向更新模型参数以逐步降低目标函数的值直到找到一个局部最小值在非凸函数情况下或全局最小值在凸函数情况下。
对于一个损失函数可微函数 L ( θ ) L(\theta) L(θ) 其中 θ \theta θ 表示模型的参数如神经网络中的权重和偏置函数在某一点的梯度 ∇ L ( θ ) \nabla L(\theta) ∇L(θ) 表示函数在该点上升最快的方向。那么梯度下降算法就是朝着与梯度相反的方向即 − ∇ L ( θ ) -\nabla L(\theta) −∇L(θ) 来更新参数。 具体的更新公式为 θ new θ old − α ∇ L ( θ old ) \theta
{\text{new}} \theta{\text{old}} - \alpha \nabla L(\theta{\text{old}}) θnew​θold​−α∇L(θold​) 其中 α \alpha α 是学习率Learning Rate它决定了每次更新参数的步长大小。如果学习率过大可能会导致算法无法收敛甚至发散如果学习率过小算法收敛速度会非常慢。 下面介绍一下常用的随机梯度下降Stochastic Gradient DescentSGD。 每次迭代只使用一个随机选择的样本 ( x i , y i ) (x_i,y_i) (xi​,yi​) 来计算梯度并更新参数。即计算 ∇ L ( f ( x i ; θ ) , y i ) \nabla L(f(x_i; \theta), yi) ∇L(f(xi​;θ),yi​) 然后 θ new θ old − α ∇ L ( f ( x i ; θ ) , y i ) \theta{\text{new}} \theta_{\text{old}} - \alpha \nabla L(f(x_i; \theta), y_i) θnew​θold​−α∇L(f(xi​;θ),yi​) 。 优点计算速度快因为每次只需要处理一个样本能够快速地对参数进行更新在处理大规模数据集时优势明显。 缺点由于每次使用一个样本梯度的估计会有很大的噪声导致更新过程比较不稳定可能会在最小值附近出现震荡收敛速度可能会比较慢。 3.2 梯度爆炸 梯度爆炸Gradient Explosion是在训练神经网络时可能出现的一种不良现象。简单来说就是在计算神经网络中参数的梯度时梯度的值变得异常大这会导致在使用基于梯度的优化算法比如常见的随机梯度下降及其变种去更新网络参数时参数会以一种极不稳定且不合理的方式进行大幅度变化进而使得网络难以收敛甚至无法正常训练下去。 主要产生的原因有 深层网络的链式求导法则影响在深度神经网络中反向传播算法依据链式求导法则来计算梯度。对于一个有很多层的网络每一层的误差对前面各层参数的梯度是通过层层相乘的方式来传递的。如果每一层的局部梯度都稍大于 1那么经过多层传递后梯度就会呈指数级增长最终导致梯度爆炸。不合适的初始化参数如果神经网络的权重初始化不当比如将权重初始化为较大的值那么在一开始进行反向传播计算梯度时就很容易产生较大的梯度后续随着训练迭代这种较大梯度可能不断累积引发梯度爆炸。激活函数选择问题部分激活函数如 Sigmoid 函数在输入值较大或较小时其导数趋近于 0 或者非常大当网络中较多神经元的激活函数处于这样的区间时会导致梯度计算出现异常大的值进而可能引发梯度爆炸情况。 3.3 梯度消失 梯度消失Gradient Vanishing同样是在神经网络训练过程中出现的棘手问题。它指的是在反向传播计算参数梯度时梯度的值变得极小近乎趋近于零使得在利用基于梯度的优化算法更新网络参数时参数几乎无法得到有效调整进而影响网络的学习和收敛能力导致网络难以训练出理想的性能表现。 主要产生的原因有 深层网络的链式求导法则影响当网络层数较多时如果每一层的局部导数都小于 1经过多层相乘传递后梯度就会呈指数级衰减。权重初始化不合理如果权重初始值设置得太小在开始反向传播计算梯度时得到的梯度值本身就比较小随着训练迭代在经过多层网络的传递过程中小梯度不断相乘累积就容易造成梯度越来越小直至出现梯度消失状况。激活函数特性像 Sigmoid 函数其导数在输入值较大或较小时趋近于 0。对于较深的神经网络经过若干层后神经元的输入很容易落入导数接近 0 的区间这样后续反向传播计算梯度时每层传递过来的梯度都会乘上这个极小的导数从而使得梯度不断变小最终出现梯度消失现象。Tanh 函数也存在类似的情况在两端极限位置导数接近 0同样可能引发梯度消失问题。 左边梯度消失现象。右边梯度爆炸现象。