机器学习第十一次课

前言

从现在开始进入神经网络的领域了

正文

先是一段历史介绍,这个就跳过吧,我觉得这里最重要的就是反向传播这里

反向传播

反向传播(Backpropagation)是一种训练人工神经网络的算法,它通过计算损失函数关于网络参数的梯度来调整网络参数,以减少预测误差。反向传播算法通常与梯度下降法结合使用,以优化网络的权重。

反向传播算法的工作原理可以概括为以下几个步骤:

  1. 前向传播:输入样本通过网络,计算每个神经元的输出,直到最后一层。在输出层,计算预测值与实际值之间的误差。

  2. 计算误差:使用损失函数(如均方误差、交叉熵等)计算预测值和实际值之间的差异。

  3. 反向传播误差:从输出层开始,逆向计算每一层的误差贡献,即计算损失函数对每个权重的梯度。

  4. 更新权重:使用梯度下降法或其他优化算法,根据计算出的梯度调整每个权重。

下面是一个简单的反向传播计算例子,考虑一个具有单个输入、单个隐藏层(两个神经元)和单个输出的神经网络。假设激活函数为Sigmoid函数,损失函数为均方误差(MSE)。

网络结构如下:

输入层 -- 隐藏层 -- 输出层

网络参数:

  • 输入到隐藏层的权重:w1, w2
  • 隐藏层到输出层的权重:w3, w4
  • 隐藏层和输出层的偏置:b1, b2

Sigmoid函数定义为:

σ(z) = 1 / (1 + e^(-z))

Sigmoid函数的导数为:

σ'(z) = σ(z) * (1 - σ(z))

计算步骤如下:

  1. 前向传播

    • 隐藏层输入:net_h1 = w1 * x + b1net_h2 = w2 * x + b2
    • 隐藏层输出:out_h1 = σ(net_h1)out_h2 = σ(net_h2)
    • 输出层输入:net_o = w3 * out_h1 + w4 * out_h2 + b2
    • 输出层输出:out_o = σ(net_o)
  2. 计算误差

    • 假设实际输出为y,则损失L = 0.5 * (y - out_o)^2
  3. 反向传播误差

    • 输出层误差:δ_o = -(y - out_o) * σ'(net_o)
    • 隐藏层误差:δ_h1 = w3 * δ_o * σ'(net_h1)δ_h2 = w4 * δ_o * σ'(net_h2)
  4. 计算梯度

    • 对于每个权重和偏置,计算损失函数的梯度:
      • dw3 = δ_o * out_h1
      • dw4 = δ_o * out_h2
      • db2 = δ_o
      • dw1 = δ_h1 * x
      • dw2 = δ_h2 * x
      • db1 = δ_h1 + δ_h2
  5. 更新权重

    • 使用梯度下降法更新权重和偏置:
      • w1 = w1 - α * dw1
      • w2 = w2 - α * dw2
      • w3 = w3 - α * dw3
      • w4 = w4 - α * dw4
      • b1 = b1 - α * db1
      • b2 = b2 - α * db2

其中α是学习率。

这个过程会重复进行,每次迭代都会使神经网络的预测更接近实际值。这个例子是简化版的反向传播,实际应用中的网络可能包含多个隐藏层,每层有多个神经元,处理起来会更加复杂。

下面还是给一个计算例子吧:

然后这里

我们需要的是x,y,z对于最终f函数的偏导数

但是我们现在只有x,y对于加号,也就是q的倒数,然后我们还有对于q的偏导,当然这里的话z已经可以直接求出偏导了

然后这里用一个链式求导法则就完事了

然后就求出来了!

相关推荐

  1. 机器学习--

    2024-06-07 11:28:05       11 阅读
  2. 机器学习

    2024-06-07 11:28:05       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-07 11:28:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-07 11:28:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-07 11:28:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-07 11:28:05       20 阅读

热门阅读

  1. 详解MySQL的间隙锁

    2024-06-07 11:28:05       9 阅读
  2. mm-qcamera-daemon主函数分析

    2024-06-07 11:28:05       7 阅读
  3. Mysql基础进阶速成版

    2024-06-07 11:28:05       7 阅读
  4. 在 Vue 中实现算法可视化

    2024-06-07 11:28:05       10 阅读
  5. Elixir学习笔记——关键字列表和映射

    2024-06-07 11:28:05       8 阅读
  6. SwiftUI二列表和导航

    2024-06-07 11:28:05       7 阅读
  7. c++“二纯” 纯虚函数和纯虚析构

    2024-06-07 11:28:05       10 阅读
  8. 2024-06-07 问AI: LLM tokenizer 是什么?

    2024-06-07 11:28:05       8 阅读
  9. Kafka初步学习

    2024-06-07 11:28:05       7 阅读