IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> DataWhale深度学习(三)前馈神经网络 -> 正文阅读

[人工智能]DataWhale深度学习(三)前馈神经网络

1 神经元模型

1943 年,美国神经生理学家沃伦·麦卡洛克( Warren McCulloch ) 和数学家沃尔特 ·皮茨(Walter Pitts )对生物神经元进行建模,首次提出了一种形式神经元模型,并命名为McCulloch-Pitts模型,即后来广为人知的M-P模型。
在这里插入图片描述
在M-P模型中,神经元可以接受多个其他神经元的输出作为输入 x = { x 1 , x 2 , … , x n } x=\{x_1,x_2,\dots,x_n\} x={x1?,x2?,,xn?},对这些信号进行加权求和,即 ∑ i w i x i \sum_iw_ix_i i?wi?xi?,将获得的结果与阈值 θ \theta θ相比,然后经过激活函数的非线性处理,获得最终的输出: y = f ( ∑ i w i x i ? θ ) y=f(\sum_iw_ix_i-\theta) y=f(i?wi?xi??θ)M-P 模型可以表示多种逻辑运算,如取反运算、逻辑或、逻辑与:

  • 取反运算:神经元只有一个单元,当输入为1时,输出为0;当输入为0时,输出为1。因此神经元的权值和阈值分别为: w = ? 2 , θ = ? 1 w=-2,\theta=-1 w=?2,θ=?1。最终的计算公式为: y = f ( ? 2 x + 1 ) y=f(-2x+1) y=f(?2x+1)
  • 逻辑或:神经元可以有多个输入,以两个输入为例。只有当两个输入均为0时,输出才为0,否则输出为1。因此神经元的权值和阈值为: w 1 = 1 , w 2 = 1 , θ = 1 w_1=1,w_2=1,\theta=1 w1?=1,w2?=1,θ=1,则最终公式为 y = f ( x 1 + x 2 ? 1 ) y=f(x_1+x_2-1) y=f(x1?+x2??1)
  • 逻辑与:只有当两个输入为1时,输出为1,否则输出为0。因此神经元的权值和阈值为: w 1 = 1 , w 2 = 1 , θ = 1.5 w_1=1,w_2=1,\theta=1.5 w1?=1,w2?=1,θ=1.5,则最终公式为: y = f ( x 1 + x 2 ? 1.5 ) y=f(x_1+x_2-1.5) y=f(x1?+x2??1.5)

由神经元构成的人工神经网络模型的结构可表示如下:
在这里插入图片描述
M-P模型的需要人为先确定每个神经元的权值才能进行网络的计算。

2 感知器模型

2.1 单层感知器

与M-P模型需要人为确定权值参数不同的是,1958年罗森布拉特提出的感知器不需要人为确定参数,可以通过训练自动确定参数。训练方式为有监督学习,然后根据实际输出与期望输出之差对参数进行修正,即误差修正学习: y ^ = f ( w x ? θ ) w i ← w i + α ( y ? y ^ ) x θ ← θ ? α ( y ? y ^ ) \hat{y}=f(wx-\theta) \\ w_i \leftarrow w_i+\alpha (y-\hat{y})x \\ \theta \leftarrow \theta-\alpha (y-\hat{y}) y^?=f(wx?θ)wi?wi?+α(y?y^?)xθθ?α(y?y^?)其中 α \alpha α为学习率, y y y y ^ \hat{y} y^?分别为期望输出和实际输出, f ( ? ) 为 激 活 函 数 f(\cdot)为激活函数 f(?)
在这里插入图片描述

  • 当实际输出 y ^ = 0 \hat{y}=0 y^?=0,期望输出 y = 1 y=1 y=1时(未激活)
    • 减小 θ \theta θ
    • 增大 x i = 1 x_i=1 xi?=1的链接权重 w i w_i wi?
    • x i = 0 x_i=0 xi?=0的链接权重不变
  • 当实际输出 y ^ = 1 \hat{y}=1 y^?=1,期望输出 y = 0 y=0 y=0时(激活过度)
    • 增大 θ \theta θ
    • 减小 x i = 1 x_i=1 xi?=1的链接权重 w i w_i wi?
    • x i = 0 x_i=0 xi?=0的链接权重不变

感知器模型的训练过程如下:


训练准备

  • 准备训练样本 x = { x 1 , x 2 , … , x n } x=\{x_1,x_2,\dots,x_n\} x={x1?,x2?,,xn?}和对应标签 y = { y 1 , y 2 , … , y n } y=\{ y_1, y_2, \dots ,y_n\} y={y1?,y2?,,yn?}
  • 初始化参数 w i w_i wi? θ \theta θ

迭代训练学习,不断调整参数,直到误差为0或者小于某个指定的数值

  1. 逐个喂入训练样本,计算实际输出 y ^ \hat{y} y^?
  2. 计算实际输出与期望输出之间的误差 y ? y ^ y-\hat{y} y?y^?
  3. 实际输出和期望输出相等时,保持参数不变,返回第1步;
  4. 实际输出与期望输出不同时 w i ← w i + α ( y ? y ^ ) x θ ← θ ? α ( y ? y ^ ) w_i\leftarrow w_i+\alpha (y-\hat{y})x \\ \theta \leftarrow \theta-\alpha (y-\hat{y}) wi?wi?+α(y?y^?)xθθ?α(y?y^?)
  5. 返回第1步,重复上述步骤

2.2 多层感知器

可以发现,单层感知器模型只有单层的输入和输出,只能进行线性处理,不能解决线性不可分问题,为了处理非线性可分问题,我们需要利用多层感知器模型进行非线性运算。仅仅使用神经元进行不同层的组合依然是线性组合,对每层用激活函数进行非线性变换后再连接,才能获得非线性链接。
在这里插入图片描述
多层感知器模型指由多层结构的感知器递阶组成的输入值向前传播的网络,也被称为前馈网络或正向传播网络。
以三层结构的多层感知器为例,它由输入层、中间层及输出层组成:

  • 各层之间通过权重对各单元进行连接
  • 各层通过阈值计算其输出值
  • 前一层的输出值作为后一层的输入值
    在这里插入图片描述

3 误差反向传播算法(BP算法)

对多层感知器模型的训练使用误差反向传播算法(Error Back Propagation),即BP算法。BP算法最早有沃博斯于1974年提出,鲁梅尔哈特等人进一步发展了该理论。

3.1 基本过程

BP算法过程分为两大部分:

  1. 前向传播计算:从输入层开始,向前逐层计算每层的输出结果,并由输出层输出网络的最终结果。
  2. 误差反向传播:获得网络的输出结果后,从后往前,将实际输出与期望输出之间的误差逐层传递,直达输入层。传递过程中,对模型的参数逐层进行更新。

这样反复进行“前向传播计算”和误差反向传播“,对模型进行训练,一步步优化模型参数。

BP算法就是先通过随机化的参数,获得模型的输出,再与期望输出计算得到误差,然后将误差从输出层逐层反向传播得到各层的误差,然后根据每层的误差调整每层的连接权重,权重的调整主要通过梯度下降法: Δ ω = ? α ? E ? ω \Delta \omega=-\alpha \frac{\partial E}{\partial \omega} Δω=?α?ω?E?

一个BP算法的示例:
以包含一个中间层和一个输出单元 y y y的三层感知器模型为例: ω 1 i j \omega_{1ij} ω1ij?表示输入层与中间层之间的连接权重, ω 2 j 1 \omega_{2j1} ω2j1?表示中间层与输出层之间的连接权重, i i i表示输入层感知器单元, j j j表示中间层感知器单元。
在这里插入图片描述

  1. 第一步,调整中间层与输出层之间的连接权重,其中 y = f ( u 21 ) y=f(u_{21}) y=f(u21?) f ( ? ) f(\cdot) f(?)是激活函数Sigmod, u 21 = ∑ j = 1 m ω 2 j 1 z j u_{21}=\sum_{j=1}^{m} \omega_{2j1}z_j u21?=j=1m?ω2j1?zj? z j z_j zj?是中间层的值,把误差函数 E E E对连接权重 ω 2 j 1 \omega_{2j1} ω2j1?的求导展开成符合函数求导: ? E ? ω 2 j 1 = ? E ? y ? ? y ? u 21 ? u 21 ? w 2 j 1 = ? ( y ^ ? y ) ? y ( 1 ? y ) ? z j \frac{\partial E}{\partial{\omega_{2j1}}} = \frac{\partial E}{\partial y} \cdot \frac{\partial y}{\partial u_{21}} \cdot \frac{u_{21}}{\partial w_{2j1}} = -(\hat{y}-y)\cdot y(1-y)\cdot z_j ?ω2j1??E?=?y?E???u21??y???w2j1?u21??=?(y^??y)?y(1?y)?zj?
    在这里插入图片描述
    中间层到输出层的连接权重调整如下: Δ ω 2 j 1 = α ( y ^ ? y ) y ( 1 ? y ) z j \Delta \omega_{2j1}=\alpha(\hat{y}-y)y(1-y)z_j Δω2j1?=α(y^??y)y(1?y)zj?
  2. 第二步,调整输入层与中间层的连接权重,其中 z j = f ( u 1 j ) , u 1 j = ∑ i n w 1 i j x i z_j=f(u_{1j}),u_{1j}=\sum_i^nw_{1ij}x_i zj?=f(u1j?),u1j?=in?w1ij?xi? ? E ? ω 1 i j = ? E ? y ? ? y ? u 21 ? ? u 21 ? ω 1 i j = ? E ? y ? ? y ? u 21 ? ? u 21 ? z j ? ? z j ? ω 1 i j = ? E ? y ? ? y ? u 21 ? ? u 21 ? z j ? ? z j ? u 1 j ? ? u 1 j ? w 1 i j = ? ( y ^ ? y ) ? y ( 1 ? y ) ? ω 2 j 1 ? z j ( 1 ? z j ) ? x i \frac{\partial E}{\partial \omega_{1ij}} = \frac{\partial E}{\partial y}\cdot \frac{\partial y}{\partial u_{21}}\cdot \frac{\partial u_{21}}{\partial \omega_{1ij}} \\= \frac{\partial E}{\partial y}\cdot \frac{\partial y}{\partial u_{21}}\cdot \frac{\partial u_{21}}{\partial z_j}\cdot \frac{\partial z_j}{\partial \omega_{1ij}} \\=\frac{\partial E}{\partial y}\cdot \frac{\partial y}{\partial u_{21}}\cdot \frac{\partial u_{21}}{\partial z_j}\cdot \frac{\partial z_j}{\partial u_{1j}}\cdot \frac{\partial u_{1j}}{\partial w_{1ij}} \\=-(\hat{y}-y)\cdot y(1-y)\cdot \omega_{2j1}\cdot z_j(1-z_j)\cdot x_i ?ω1ij??E?=?y?E???u21??y???ω1ij??u21??=?y?E???u21??y???zj??u21????ω1ij??zj??=?y?E???u21??y???zj??u21????u1j??zj????w1ij??u1j??=?(y^??y)?y(1?y)?ω2j1??zj?(1?zj?)?xi?
    在这里插入图片描述
    输入层与中间层的连接权重更新为: Δ ω 1 i j = α ( y ^ ? y ) ? y ( 1 ? y ) ? ω 2 j 1 ? z j ( 1 ? z j ) ? x i \Delta \omega_{1ij}=\alpha (\hat{y}-y)\cdot y(1-y)\cdot \omega_{2j1}\cdot z_j(1-z_j)\cdot x_i Δω1ij?=α(y^??y)?y(1?y)?ω2j1??zj?(1?zj?)?xi?

3.2 激活函数

然而,进行反向传播时,面临的一个问题就是激活函数:M-P模型中使用阶跃函数作为激活函数,是非连续函数,在0位置处不可导,其他位置导数为0,无法使用梯度下降法。

为了能利用梯度下降法进行反向传播,又发展出多种激活函数,这里列出三种常用的激活函数:

  1. Sigmod函数: σ ( x ) = 1 1 + e ? x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+e?x1?
    在这里插入图片描述

  2. tanh函数: σ ( x ) = e x ? e ? x e x + e ? x \sigma(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} σ(x)=ex+e?xex?e?x?
    在这里插入图片描述

  3. ReLU函数: σ ( x ) = m a x ( 0 , x ) \sigma(x)=max(0,x) σ(x)=max(0,x)
    在这里插入图片描述

3.3 优化问题

然而模型在训练过程中还面临大量的问题:

  • 参数过多,影响训练
  • 非凸优化问题:存在局部最优解而非全局最优解,影响迭代
  • 梯度消失问题,下层参数比较难调
  • 参数解释起来比较困难

解决优化的基本算法有:

  • 随机梯度下降法
  • 动量
  • Neterov动量

自适应学习率算法:

  • AdaGrad
  • RMSProp
  • Adam

二阶近似方法:

  • 牛顿法
  • 共轭梯度
  • BFGS

优化策略和元算法:

  • 批标准化
  • 坐标下降
  • Polyak平均
  • 监督预训练

参考

  1. DataWhale学习资料
  2. 花书
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 07:56:48  更:2021-11-24 07:57:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:37:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码