人工神经网络

  • 简述

    • 很多术语听起来很唬人,“人工神经网络”就属于其中之一。在很多人看来,我们对人类的神经系统还没有研究透彻,这就来了一个“人工的”神经网络,人脑这样复杂,那么人工神经网络一定相当高深莫测。如果遇到一个耐心的学术专家,花上一两个小时给你讲讲人工神经网络的底细,那么你会发现,就这么回事而已。但是,如果遇到一个不太耐心或者喜好卖弄的,那么不好意思,你除了对他肃然起敬剩下的就是“这东西此生与我无缘了”。
    • 人工神经网络这个名词听起来像是用人工的办法来模拟人脑,加上他使用了与生物有关的名词如“神经元”,让人感觉神秘的同时又会联想到仿生学或者认知科学等知识。但是,除了借用生物学上的一些名词,并且做了一些形象的比喻外,人工神经网络和人脑没有半点关系,它的本质就是数据结构中必定提到的一种概念—有向图,只不过这个有向图有一点特殊罢了。它的节点被称为神经元,它的有向弧被称为连接神经元的神经。
      • 如图,所有的节点都是分层的,每一层节点可以通过有向弧指向下一层的节点,但是同一层的节点之间没有弧连接,而且每一个节点不能跨层到达某个节点。图中只有三层节点,但是理论上,人工神经网络的层数是任意的。但是,实际应用中不会设计超过5层的网络,因为层数过多,计算相当复杂。
      • 每一条弧上有一个值,称为权重或者权值,根据这些值可以使用一个非常简单的公式算出它们所指向节点的值。至于具体如何计算,暂时不说明。
      • 当然,为了方便交流,有一些约定俗成的说法。上图中最左边第一层被称为输入层,因为在各种应用中,这个模型的输入值只是赋予了这一层节点,图中其他节点的值都是根据这些输入值直接或者间接得到的。同样的,最右边那一层称为输出层,节点称为输出节点,因为我们想要通过这个模型获得的输出值都是这一层节点得到的。当然,中间各层被称为中间层,由于对外不可见,又叫做隐藏层(隐含层)。
      • 有弧上的值作为参数,前一层节点的值作为变量组成一个计算下一层节点值的函数,称为神经元函数。
    • 到此,人工神经网络的原理就讲完了,就是这样一个很基础很简单的模型却在如今被广泛使用。因为,如今很多人工智能的问题其实本质上都是多维空间进行模式分类的问题,而人工神经网络最擅长的就是模式分类。如今,模式分类广泛使用,如语音识别。机器翻译、人脸识别、疾病预测、股市预测等。
  • 原理
    • 一个模式的特征值(如坐标),从输入层开始,按照一定的规则和公式一层层向后传递,最后在输出层,哪个节点数值最大,输入的模式就被分在哪一类中。这就是人工神经网络的基本原理。
    • 在人工神经网络中,需要设计的部分只有两个,一个是它的结构,即网络分几层、每层几个节点、节点之间如何连接等;第二就是非线性函数f的设计,常用的是指数函数。(使用指数函数,人工神经网络的模式分类能力等价于最大熵模型)。
    • 值得一说的是,如果把不同输出节点上得到的值看成一种概率分布,那么这个神经网络就是一个概率模型了。
    • 但是,模型的参数,也就是弧上的权重是如何得到的呢,其实,和传统机器学习模型一样,也是训练得到的。
    • 人工神经网络的训练也分为有监督训练和无监督训练。对于成本函数的设计这里不多叙述。对于复杂的人工神经网络,训练计算量是非常巨大的,而且这还是一个NP-complete问题,因此很多机器学习专家投入其中寻找优秀的近似方法。
  • 与贝叶斯网络的关系
    • 其实,从图上看来,人工神经网络和贝叶斯网络十分类似,对于上面的那个有向图,说是贝叶斯网络也完全正确
    • 它们有很多共同之处。
      • 都是有向图,每一个节点的取值只取决于前一级的节点,与更前面的节点无关,也就是遵循马尔可夫假设。
      • 训练方法类似,且训练计算量都很大。使用人工神经网络是要有训练等待的准备。
      • 对于很多模式分类问题,效果上类似,两者都能解决,但是,效率不同。如果都看成统计模型,准确性也是类似的。
    • 它们有很多不同之处。
      • 人工神经网络在结构上是完全标准化的,而贝叶斯网络很灵活。有利有弊。
      • 虽然神经元函数为非线性函数,但是各个变量只能先进行线性组合,最后对一个变量(即前面组合出来的结果)进行非线性变换,因此计算机实现容易。而在贝叶斯网络中,变量可以组合成任意的函数,毫无限制,获得灵活性的同时大大加大了复杂性。
      • 贝叶斯网络更容易考虑上下文前后的相关性,因此可以解码一个输入的序列,比如将一段语音识别为文字。而人工神经网络的输出相对孤立,它可以识别一个个字,但很难处理一个序列,因此它主要的应用常常是估计一个概率模型的参数,比如机器翻译中语言模型参数的训练等,而不是作为一个解码器。
  • 补充说明
    • 这部分有趣的数学解释可以查看吴军的《数学之美》。
    • 如果你真的对神经网络感兴趣,尤其是对卷积神经网络感兴趣,那么不妨看看这本《深度学习之PyTorch实战计算机视觉》,我的下载区提供了下载,这虽然是讲PyTorch的书,但是前面一半几乎都是在详细讲解神经网络的构成和搭建,是我所见的为数不多的能把神经网络讲明白的书。(前提你有一定的线性代数基础)
    • 上面书籍下载仅供试读,不得用于商业用途,侵删。

深度学习-人工神经网络概述相关推荐

  1. 深度学习与神经网络概述

    本文将简单介绍:人工智能(Artificial Intelligence).机器学习(Machine Learning).深度学习(Deep Learning),并介绍神经网络的发展,以及三个在线演示 ...

  2. 深度学习-人工神经网络网络

    神经元: 受生物学的启发,人工神经网络是生物神经网络的一种模拟和近似.它从结构.实现机理和功能上模拟生物神经网络,传统的生物神经元模型由树突.细胞核.细胞体.突触和神经末梢组成,如图所示. 如图下图所 ...

  3. 深度学习——人工神经网络再掀研究热潮

    人工神经网络起源于上世纪40年代,到今天已经70年历史了.就像人的一生,经历了起起落落,有过辉煌,有过黯淡,有过嘈杂,有过冷清.总体说来,过去的20年中人工神经网络的研究不温不火,直到最近三五年,随着 ...

  4. ann人工神经网络_深度学习-人工神经网络(ANN)

    ann人工神经网络 Building your first neural network in less than 30 lines of code. 用不到30行代码构建您的第一个神经网络. 1.W ...

  5. [深度学习]人工神经网络中激励函数作用详解

    前言 业余时间,看了关于深度学习方面的知识,对人工神经网络中激励函数存在疑惑,查阅资料,总结给大家,一起学习. 激励函数作用 不使用激励函数的话,神经网络的每层都只是做线性变换,多层输入叠加后也还是线 ...

  6. 初学者 深度学习 人工神经网络 可视化网站

    在深度学习的过程中,可能会感觉神经网络是一个灰箱,且没有完备的解析理论表达方式,机器的自学习过程过于抽象难以理解.此时通过一些可视化网址可帮助我们直观感受深度神经网络的魅力. 手写数字卷积神经网络可视 ...

  7. 深度学习——人工神经网络中为什么ReLu要好过于tanh和sigmoid function?

    参考吴恩达的深度学习课程. 先看看各个激活函数图: 第一个问题:为什么引入非线性激励函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很 ...

  8. 人工智能:通俗易懂理解深度学习与神经网络

    前言 初入学习人工智能领域,为方便对该领域有一个快速清晰的认识,因此收集了相关资料并整理了各位前辈们在此领域的研究现状.由浅入深.循序渐进理解什么是深度学习和神经网络,二者的联系和区别是什么,以及什么 ...

  9. 深度学习(1)基础1 -- 深度学习与神经网络基础

    目录 一.深度学习与神经网络 1.深度学习定义 2.神经网络 3.深度学习过程 4.深度学习功能 二.深度学习应用 三.分类数据集推荐 一.深度学习与神经网络 1.深度学习定义 深度学习(deep l ...

最新文章

  1. android post请求添加公共参数_Java实现通用的Get和Post请求组件
  2. css 链接悬浮动画
  3. autosys file watcher 注意事项
  4. 版本1.8.1Go安装以及语法高亮配置
  5. HoloLens开发手记-世界坐标系 Coordinate systems
  6. DevExpress v17.2新版亮点——XAF篇
  7. 浏览器 重定向次数限制_临近年关,修复ASP.NET Core因浏览器内核版本引发的单点登录故障...
  8. c语言手机程序代码,C语言必背18个经典程序(示例代码)
  9. TikTok(国际版抖音)时间线
  10. edge保存页面html,Edge浏览器怎么保存网页 保存网页方法介绍
  11. mariadb mysql.sock_数据库缺少mysql.sock文件的解决办法
  12. 有各组方差怎么算组间平方和_组内离差平方和,组间离差平方和与总离差平方和各反映了什么?...
  13. 九、51单片机之直流电机驱动
  14. [PS] 没有图层匹配此滤镜 我的图层消失了
  15. python象棋编程_Python开发象棋小游戏(绘制棋盘)
  16. java中flist cannot_cannot
  17. 数字孪生智慧医院:构建三维人体监测可视化管理平台(三)
  18. Linux 时间、时区设置
  19. linux ubuntu18.1安装教程,Ubuntu 18.04上Qmmp安装教程
  20. 基于 SpringBoot + MyBatis 的博客系统

热门文章

  1. ConcurrentHashMap的源码分析-put方法第四阶段
  2. MyBatis 架构分层与模块划分-核心处理层
  3. 基于Xml 的IOC 容器-开始读取配置内容
  4. Spring 中常用的设计模式对比
  5. 服务端支持的session
  6. 角色操作-角色添加流程分析
  7. shiro认证与授权:基于ini的用户授权
  8. goahead php,Goahead移植教程 | 学步园
  9. NIO--Selector
  10. JAVA ++ 运算符题目