【机器学习 & 深度学习】神经网络简述

🚀个人主页为梦而生~ 关注我一起学习吧!

💡专栏机器学习 欢迎订阅!相对完整的机器学习基础教学!

特别提醒 :针对机器学习,特别开始专栏:机器学习python实战 欢迎订阅!本专栏针对机器学习基础专栏的理论知识,利用python代码进行实际展示,真正做到从基础到实战!

💡往期推荐
【机器学习基础】一元线性回归(适合初学者的保姆级文章)
【机器学习基础】多元线性回归(适合初学者的保姆级文章)
【机器学习基础】决策树(Decision Tree)
【机器学习基础】K-Means聚类算法
【机器学习基础】DBSCAN
【机器学习基础】支持向量机
【机器学习基础】集成学习

💡本期内容:神经网络是一种模拟生物神经系统的信息处理模型,由多个神经元组成。这些神经元通过连接传递信号,并按照一定的权重进行加权求和,最终输出一个结果。神经网络的学习过程是通过不断调整神经元之间的连接权重来实现的,使得神经网络能够更好地适应不同的输入数据。


文章目录

  • [1 神经网络发展史](#1 神经网络发展史)
  • [2 神经元模型](#2 神经元模型)
    • [2.1 M-P 神经元模型](#2.1 M-P 神经元模型)
    • [2.2 激活函数](#2.2 激活函数)
  • [3 感知机与多层网络](#3 感知机与多层网络)
    • [3.1 感知机](#3.1 感知机)
    • [3.2 感知机学习](#3.2 感知机学习)
      • [3.2.1 感知机训练算法](#3.2.1 感知机训练算法)
    • [3.3 感知机求解异、或、非问题](#3.3 感知机求解异、或、非问题)
    • [3.4 多层感知机](#3.4 多层感知机)
    • [3.5 多层前馈神经网络](#3.5 多层前馈神经网络)
  • [4 误差逆传播](#4 误差逆传播)
    • [4.1 计算过程](#4.1 计算过程)
    • [4.2 扩展](#4.2 扩展)
  • [5 全局最小与局部最小](#5 全局最小与局部最小)

1 神经网络发展史

  1. 控制论(cybernetics)20世纪40年代-60年代

用简单线性模型模拟神经元。典型成果是20世纪50年代的感知机自适应线性单元

  1. 联结主义(connectionism)20世纪80年代-90年代

又叫做并行分布处理,中心思想是:当网络将大量简单的计算单元连接在一起时可以实现智能行为。主要成果:分布式表示,反向传播算法,LSTM网络,等。

  1. 以深度学习之名复兴 2006年以来

2006年,Hinton使用"贪婪逐层训练"的策略有效训练名为"深度信念网络"的神经网络,这标志着有能力训练以前不可能训练的比较深的神经网络。

神经网络是一个具有适应性的简单单元组成的广泛并行互联的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。


2 神经元模型

"神经网络 是由具有适应性的简单单元 组成的广泛并行互联 的网络, 它的组织能够模拟生物神经系统对真实世界物体所作出的反应"

  • 机器学习中的神经网络通常是指"神经网络学习" 或者机器学习与神经网络两个学科的交叉部分
  • 神经元模型即上述定义中的"简单单元"是神经网络的基本成分
  • 生物神经网络 :每个神经元与其他神经元相连, 当它"兴奋 "时, 就会向相连的神经云发送化学物质, 从而改变这些神经元内的电位;如果某神经元的电位超过一个"阈值 ", 那么它就会被激活, 即"兴奋"起来, 向其它神经元发送化学物质

2.1 M-P 神经元模型

  • 输入:来自其他 个神经云传递过来的输入信号
  • 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较
  • 输出 :通过激活函数的处理以得到输出

2.2 激活函数

  • 理想激活函数是阶跃函数, 0表示抑制神经元而1表示激活神经元
  • 阶跃函数具有不连续、不光滑等不好的性质, 常用的是 Sigmoid 函数

3 感知机与多层网络

3.1 感知机

  • 感知机由两层神经元组成, 输入层接受外界输入信号传递给输出层, 出层是M-P神经元(阈值逻辑单元)
  • 感知机能够容易地实现逻辑与、或、非运算

3.2 感知机学习

  • 给定训练数据集, 权重 w i ( i = 1 , 2 , . . . , n ) w_i(i=1,2,...,n) wi(i=1,2,...,n)与阈值 θ \theta θ可以通过学习得到
  • 感知机学习规则
    对训练样例 ( x , y ) (x,y) (x,y), 若当前感知机的输出为 y ^ \hat{y} y^, 则感知机权重调整规则为:
    w i ← w i + Δ w i Δ w i = η ( y − y ^ ) x i w_i\leftarrow w_i+\Delta w_i \\ \Delta w_i=\eta(y-\hat{y})x_i wi←wi+ΔwiΔwi=η(y−y^)xi
    其中 η ∈ ( 0 , 1 ) \eta \in (0, 1) η∈(0,1)是学习率
  • 若感知机对训练样例 ( x , y ) (x,y) (x,y)预测正确, 则感知机不发生变化;否则根据错误程度进行权重的调整

3.2.1 感知机训练算法

3.3 感知机求解异、或、非问题

  • 若两类模式线性可分, 则感知机的学习过程一定会收敛;否感知机的学习过程将会发生震荡
  • 单层感知机的学习能力非常有限, 只能解决线性可分问题
  • 事实上, 与、或、非问题是线性可分的, 因此感知机学习过程能够求得适当的权值向量. 而异或问题不是线性可分的, 感知机学习不能求得合适解
  • 对于非线性可分问题, 如何求解?(多层感知机)

3.4 多层感知机

解决异或问题的两层感知机

  • 输出层与输入层之间的一层神经元, 被称之为隐层或隐含层, 隐含层和输出层神经元都是具有激活函数的功能神经元
  • 用多条线性分割来围成近似的非线性分割

3.5 多层前馈神经网络

  • 定义:每层神经元与下一层神经元全互联, 神经元之间不存在同层连接也不存在跨层连接
  • 前馈:输入层接受外界输入, 隐含层与输出层神经元对信号进行加工, 最终结果由输出层神经元输出
  • 学习 :根据训练数据来调整神经元之间的"连接权 "以及每个功能神经元的"阈值"



4 误差逆传播

误差逆传播算法(Error BackPropagation, 简称BP)是最成功的训练多层前馈神经网络的学习算法.

  • 给定训练集 , 即输入示例由 d d d个属性描述, 输出 l l l维实值向量.
  • 为方便讨论, 给定一个拥有 d d d个输入神经元, l l l个输出神经元, q q q个隐层神经元的多层前向前馈网络结构.
  • 记号:
    θ j \theta_j θj:输出层第 j j j个神经元阈值;
    γ \gamma γ:隐含层第 h h h个神经元阈值;
    v i h v_{ih} vih:输入层与隐层神经元之间的连接权重;
    w h i w_{hi} whi:隐层与输出层神经元之间的连接权重;

4.1 计算过程

对于样例 ( x k , y k ) (x_k,y_k) (xk,yk) , 假设网络的实际输出为 y ^ k \hat{y}_k y^k

  • 前向计算

    step1: b h = f ( α h − γ h ) b_h=f(\alpha _h-\gamma _h) bh=f(αh−γh)

    step2: y ^ j k = f ( β j − θ j ) \hat{y}_j^k=f(\beta _j-\theta _j) y^jk=f(βj−θj)

    step3: E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 E_k= \frac{1}{2} \sum_{j=1}^l (\hat{y}_j^k - y_j^k)^2 Ek=21∑j=1l(y^jk−yjk)2

  • 参数数目

    权重: v i h , w h j v_{ih},w_{hj} vih,whj , 阈值: θ j γ h \theta_j \gamma_h θjγh ,

    因此网络中需要 ( d + l + 1 ) q + l (d+l+1)q+l (d+l+1)q+l个参数需要优化

  • 参数优化

    BP是一个迭代学习算法, 在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计, 任意的参数 v v v的更新估计式为
    v ← v + Δ v v \leftarrow v+\Delta v v←v+Δv

BP算法基于梯度下降策略, 以目标的负梯度方向 对参数进行调整. 对误差 E k E_k Ek, 给定学习率 η \eta η



注意到w~hj~先影响到第j个输出层神经元的输入值 β j \beta_j βj,再影响其输出值,最后影响到E~k~

类似可以推导出:



学习率 η ∈ ( 0 , 1 ) \eta \in (0, 1) η∈(0,1)控制着算法每一轮迭代中的更新步长, 若太长则让容易震荡, 太小则收敛速度又会过慢.

4.2 扩展

  • 标准 BP 算法
    每次针对单个训练样例更新权值与阈值.
    参数更新频繁, 不同样例可能抵消, 需要多次迭代.
  • 累计 BP 算法
    其优化的目标是最小化整个训练集上的累计误差 E = 1 m ∑ k = 1 m E k E=\frac{1}{m} \sum_{k=1}^mE_k E=m1∑k=1mEk
    读取整个训练集一遍才对参数进行更新, 参数更新频率较低.
  • 多层前馈网络表示能力
    只需要一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数
  • 多层前馈网络局限
    神经网络由于强大的表示能力, 经常遭遇过拟合. 表现为:训练误差持续降低, 但测试误差却可能上升
    如何设置隐层神经元的个数仍然是个未决问题. 实际应用中通常使用"试错法"调整
  • 缓解过拟合的策略
    早停 :在训练过程中, 若训练误差降低, 但验证误差升高, 则停止训练
    正则化:在误差目标函数中增加一项描述网络复杂程度的部分, 例如连接权值与阈值的平方和

5 全局最小与局部最小

  • "跳出"局部最小的策略

基于梯度的搜索是使用最为广泛的参数寻优方法. 如果误差函数仅有一个局部极小, 那么此时找到的局部极小就是全局最小;

然而,如果误差函数具有多个局部极小, 则不能保证找到的解是全局最小. 在现实任务中, 通常采用以下策略"跳出"局部极小, 从而进一步达到全局最小.

  1. 多组不同的初始参数优化神经网络, 选取误差最小的解作为最终参数
  2. 模拟退火技术 [Aarts and Korst, 1989]. 每一步都以一定的概率接受比当前解更差的结果, 从而有助于跳出局部极小.
  3. 随机梯度下降. 与标准梯度下降法精确计算梯度不同, 随机梯度下降法在计算梯度时加入了随机因素.
  4. 遗传算法 [Goldberg, 1989]. 遗传算法也常用来训练神经网络以更好地逼近全局极小.
相关推荐
边缘计算社区4 分钟前
首个!艾灵参编的工业边缘计算国家标准正式发布
大数据·人工智能·边缘计算
游客52015 分钟前
opencv中的各种滤波器简介
图像处理·人工智能·python·opencv·计算机视觉
一位小说男主15 分钟前
编码器与解码器:从‘乱码’到‘通话’
人工智能·深度学习
深圳南柯电子31 分钟前
深圳南柯电子|电子设备EMC测试整改:常见问题与解决方案
人工智能
Kai HVZ32 分钟前
《OpenCV计算机视觉》--介绍及基础操作
人工智能·opencv·计算机视觉
biter008837 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
吃个糖糖43 分钟前
35 Opencv 亚像素角点检测
人工智能·opencv·计算机视觉
qq_529025291 小时前
Torch.gather
python·深度学习·机器学习
IT古董2 小时前
【漫话机器学习系列】017.大O算法(Big-O Notation)
人工智能·机器学习