引言
文章目录

一、神经网络通过梯度下降学习的步骤
1.1 初始化网络参数
- 随机初始化权重 W W W 和偏置 b b b
 - 这些参数将随着训练过程的进行而更新
 
1.2 前向传播(Forward Propagation)
- 对于每个训练样本  
      
       
        
        
          x 
         
        
       
         x 
        
       
     x 和其对应的标签 
      
       
        
        
          y 
         
        
       
         y 
        
       
     y: 
  
- 输入层:将输入 x x x传递到网络的第一层。
 - 隐藏层: 
    
- 计算加权输入: z [ l ] = W [ l ] a [ l − 1 ] + b [ l ] z^{[l]} = W^{[l]}a^{[l-1]} + b^{[l]} z[l]=W[l]a[l−1]+b[l],其中 l l l 表示层数, a [ l − 1 ] a^{[l-1]} a[l−1] 是前一层激活输出。
 - 应用激活函数: 
          
           
            
             
             
               a 
              
              
              
                [ 
               
              
                l 
               
              
                ] 
               
              
             
            
              = 
             
            
              σ 
             
            
              ( 
             
             
             
               z 
              
              
              
                [ 
               
              
                l 
               
              
                ] 
               
              
             
            
              ) 
             
            
           
             a^{[l]} = \sigma(z^{[l]}) 
            
           
         a[l]=σ(z[l]),其中 
          
           
            
            
              σ 
             
            
           
             \sigma 
            
           
         σ 是激活函数,如
ReLU、Sigmoid或Tanh 
 - 输出层: 
    
- 计算加权输入和激活输出,对于分类问题,通常使用Softmax函数计算最终输出
 
 
 
1.3 计算损失(Loss)
- 使用损失函数计算预测输出 y ^ \hat{y} y^和实际标签 y y y之间的差异。
 - 常见的损失函数包括: 
  
- 对于回归问题:均方误差(MSE) L ( y , y ^ ) = 1 2 m ∑ i = 1 m ( y ( i ) − y ^ ( i ) ) 2 L(y, \hat{y}) = \frac{1}{2m}\sum_{i=1}^{m}(y^{(i)} - \hat{y}^{(i)})^2 L(y,y^)=2m1∑i=1m(y(i)−y^(i))2
 - 对于分类问题:交叉熵损失 L ( y , y ^ ) = − 1 m ∑ i = 1 m y ( i ) log  ( y ^ ( i ) ) L(y, \hat{y}) = -\frac{1}{m}\sum_{i=1}^{m}y^{(i)}\log(\hat{y}^{(i)}) L(y,y^)=−m1∑i=1my(i)log(y^(i))
 
 
1.4 反向传播(Back Propagation)
- 计算损失函数关于输出层激活的梯度。
 - 逆向遍历网络,计算每一层的梯度: 
  
- 对于输出层: 
    
- KaTeX parse error: Can't use function '\)' in math mode at position 58: …igma'(z^{[L]}) \̲)̲,其中 \( \nabla_{…是损失函数关于 a [ L ] a^{[L]} a[L]的梯度, σ ′ \sigma' σ′是激活函数的导数。
 
 - 对于隐藏层: 
    
- δ [ l ] = ( ( W [ l + 1 ] ) T δ [ l + 1 ] ) ⋅ σ ′ ( z [ l ] ) \delta^{[l]} = ((W^{[l+1]})^T \delta^{[l+1]}) \cdot \sigma'(z^{[l]}) δ[l]=((W[l+1])Tδ[l+1])⋅σ′(z[l])
 
 - 计算损失函数关于参数的梯度: 
    
- ∂ L ∂ W [ l ] = 1 m δ [ l ] ( a [ l − 1 ] ) T \frac{\partial L}{\partial W^{[l]}} = \frac{1}{m} \delta^{[l]} (a^{[l-1]})^T ∂W[l]∂L=m1δ[l](a[l−1])T
 - ∂ L ∂ b [ l ] = 1 m ∑ i = 1 m δ [ l ] ( i ) \frac{\partial L}{\partial b^{[l]}} = \frac{1}{m} \sum_{i=1}^{m} \delta^{[l] (i)} ∂b[l]∂L=m1∑i=1mδ[l](i)
 
 
 - 对于输出层: 
    
 
1.5 参数更新
- 使用梯度下降更新权重和偏置:
- W [ l ] = W [ l ] − α ∂ L ∂ W [ l ] W^{[l]} = W^{[l]} - \alpha \frac{\partial L}{\partial W^{[l]}} W[l]=W[l]−α∂W[l]∂L - b [ l ] = b [ l ] − α ∂ L ∂ b [ l ] b^{[l]} = b^{[l]} - \alpha \frac{\partial L}{\partial b^{[l]}} b[l]=b[l]−α∂b[l]∂L
 - 其中, α \alpha α是学习率
 
1.6 迭代
- 重复步骤2到5,直到满足停止条件,如达到预定的迭代次数、损失低于某个阈值或验证集上的性能不再提升
 
1.7 详细说明反向传播中的梯度计算
- 输出层梯度:对于不同的损失函数,计算方式不同。例如,对于交叉熵损失, δ [ L ] = y ^ − y \delta^{[L]} = \hat{y} - y δ[L]=y^−y
 - 隐藏层梯度:通过链式法则,将输出层的梯度传递回前一层,计算每一层的梯度
 - 参数梯度:最终计算得到的梯度用于更新权重和偏置
 
1.8 总结
通过这个过程,神经网络能够通过不断调整参数来学习数据中的模式,并减少预测误差
二、前向传播
2.1 输入层
- 输入数据:网络接收输入数据 X X X,它是一个维度为 [ n , d ] [n, d] [n,d]的矩阵,其中 n n n 是样本数量, d d d 是每个样本的特征数量
 
2.2 第一层(隐藏层或输入层)
- 加权输入:计算每个神经元的加权输入 KaTeX parse error: Can't use function '\)' in math mode at position 9: Z^{[1]} \̲)̲。这通过将输入 \( X \)…相乘,并加上偏置向量 
      
       
        
         
         
           b 
          
          
          
            [ 
           
          
            1 
           
          
            ] 
           
          
         
        
       
         b^{[1]} 
        
       
     b[1]来完成。
Z [ 1 ] = W [ 1 ] X + b [ 1 ] Z^{[1]} = W^{[1]}X + b^{[1]} Z[1]=W[1]X+b[1] - 激活函数:将加权输入 
      
       
        
         
         
           Z 
          
          
          
            [ 
           
          
            1 
           
          
            ] 
           
          
         
        
       
         Z^{[1]} 
        
       
     Z[1]通过激活函数  
      
       
        
        
          σ 
         
        
       
         \sigma 
        
       
     σ 来获得该层的激活输出 
      
       
        
         
         
           A 
          
          
          
            [ 
           
          
            1 
           
          
            ] 
           
          
         
        
       
         A^{[1]} 
        
       
     A[1]
A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]} = \sigma(Z^{[1]}) A[1]=σ(Z[1])
常用的激活函数包括ReLU、Sigmoid、Tanh等 
2.3 后续隐藏层
- 对于网络的每一个隐藏层 
      
       
        
        
          l 
         
        
          ( 
         
        
          l 
         
        
          = 
         
        
          2 
         
        
          , 
         
        
          3 
         
        
          , 
         
        
          . 
         
        
          . 
         
        
          . 
         
        
          , 
         
        
          L 
         
        
          − 
         
        
          1 
         
        
          ) 
         
        
       
         l( l = 2, 3, ..., L-1 ) 
        
       
     l(l=2,3,...,L−1),其中  
      
       
        
        
          L 
         
        
       
         L 
        
       
     L是网络的总层数: 
  
- 加权输入:计算每个神经元的加权输入  
        
         
          
           
           
             Z 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           Z^{[l]} 
          
         
       Z[l],这是通过将前一层的激活输出  
        
         
          
           
           
             A 
            
            
            
              [ 
             
            
              l 
             
            
              − 
             
            
              1 
             
            
              ] 
             
            
           
          
         
           A^{[l-1]} 
          
         
       A[l−1]与权重矩阵  
        
         
          
           
           
             W 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           W^{[l]} 
          
         
       W[l]相乘,并加上偏置向量  
        
         
          
           
           
             b 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           b^{[l]} 
          
         
       b[l]来完成的。
Z [ l ] = W [ l ] A [ l − 1 ] + b [ l ] Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} Z[l]=W[l]A[l−1]+b[l] - 激活函数:将加权输入 
        
         
          
           
           
             Z 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           Z^{[l]} 
          
         
       Z[l]通过激活函数 
        
         
          
          
            σ 
           
          
         
           \sigma 
          
         
       σ 来获得该层的激活输出 
        
         
          
           
           
             A 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           A^{[l]} 
          
         
       A[l]
A [ l ] = σ ( Z [ l ] ) A^{[l]} = \sigma(Z^{[l]}) A[l]=σ(Z[l]) 
 - 加权输入:计算每个神经元的加权输入  
        
         
          
           
           
             Z 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           Z^{[l]} 
          
         
       Z[l],这是通过将前一层的激活输出  
        
         
          
           
           
             A 
            
            
            
              [ 
             
            
              l 
             
            
              − 
             
            
              1 
             
            
              ] 
             
            
           
          
         
           A^{[l-1]} 
          
         
       A[l−1]与权重矩阵  
        
         
          
           
           
             W 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           W^{[l]} 
          
         
       W[l]相乘,并加上偏置向量  
        
         
          
           
           
             b 
            
            
            
              [ 
             
            
              l 
             
            
              ] 
             
            
           
          
         
           b^{[l]} 
          
         
       b[l]来完成的。
 
2.4 输出层
- 对于网络的输出层 
      
       
        
        
          L 
         
        
       
         L 
        
       
     L: 
  
- 加权输入:计算每个神经元的加权输入 
        
         
          
           
           
             Z 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           Z^{[L]} 
          
         
       Z[L],这是通过将最后一层的激活输出 
        
         
          
           
           
             A 
            
            
            
              [ 
             
            
              L 
             
            
              − 
             
            
              1 
             
            
              ] 
             
            
           
          
         
           A^{[L-1]} 
          
         
       A[L−1]与权重矩阵 
        
         
          
           
           
             W 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           W^{[L]} 
          
         
       W[L]相乘,并加上偏置向量 
        
         
          
           
           
             b 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           b^{[L]} 
          
         
       b[L] 来完成的。
Z [ L ] = W [ L ] A [ L − 1 ] + b [ L ] Z^{[L]} = W^{[L]}A^{[L-1]} + b^{[L]} Z[L]=W[L]A[L−1]+b[L] - 激活函数:根据问题的性质,选择合适的激活函数。对于分类问题,通常使用Softmax函数来获得概率分布输出 
        
         
          
           
           
             Y 
            
           
             ^ 
            
           
          
         
           \hat{Y} 
          
         
       Y^
Y ^ = softmax ( Z [ L ] ) \hat{Y} = \text{softmax}(Z^{[L]}) Y^=softmax(Z[L])
其中,Softmax函数将 Z [ L ] Z^{[L]} Z[L]转换为概率分布,使得每个输出 y ^ [ i ] \hat{y}^{[i]} y^[i] 都在0和1之间,并且所有输出之和为1 
 - 加权输入:计算每个神经元的加权输入 
        
         
          
           
           
             Z 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           Z^{[L]} 
          
         
       Z[L],这是通过将最后一层的激活输出 
        
         
          
           
           
             A 
            
            
            
              [ 
             
            
              L 
             
            
              − 
             
            
              1 
             
            
              ] 
             
            
           
          
         
           A^{[L-1]} 
          
         
       A[L−1]与权重矩阵 
        
         
          
           
           
             W 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           W^{[L]} 
          
         
       W[L]相乘,并加上偏置向量 
        
         
          
           
           
             b 
            
            
            
              [ 
             
            
              L 
             
            
              ] 
             
            
           
          
         
           b^{[L]} 
          
         
       b[L] 来完成的。
 
2.5 总结
前向传播的整个过程可以总结为以下步骤:
- 对于每个层 l l l,计算加权输入 Z [ l ] Z^{[l]} Z[l]
 - 应用激活函数 σ \sigma σ 来获得激活输出 A [ l ] A^{[l]} A[l]
 - 重复步骤1和2,直到到达输出层
 - 在输出层应用适当的激活函数(如
Softmax)以获得最终输出。 










