近几年,有几个被媒体大肆报道的事件,如下表所示。

如上所示,深度学习作为人工智能的一种具有代表性的实现方法,取得了很大的成功。那么,深度学习究竟是什么技术呢?深度学习里的“学习”是怎么做到的呢?本文我们就来解答一下这个疑问,不过在此之前,我们需要先了解一下神经网络,因为深度学习是以神经网络为出发点的。

神经网络的灵感来源

谈到神经网络的想法,我们需要从生物学上的神经元(neuron)开始说起。从生物学扎实的研究成果中,我们可以得到以下关于构成大脑的神经元知识。

人的大脑是由多个神经元互相连接形成网络而构成的。也就是说,一个神经元从其他神经元接收信号,也向其他神经元发出信号。大脑就是根据这个网络上的信号的流动来处理各种各样的信息的。

神经元示意图

神经元主要由细胞体、轴突、树突等构成。树突是从其他神经元接收信号的突起。轴突是向其他神经元发送信号的突起。由树突接收的电信号在细胞体中进行处理之后,通过作为输出装置的轴突,被输送到其他神经元。另外,神经元是借助突触结合而形成网络的。

让我们来更详细地看一下神经元传递信息的结构。如上图所示,神经元是由细胞体、树突、轴突三个主要部分构成的。其他神经元的信号(输入信号)通过树突传递到细胞体(也就是神经元本体)中,细胞体把从其他多个神经元传递进来的输入信号进行合并加工,然后再通过轴突前端的突触传递给别的神经元。

那么,神经元究竟是怎样对输入信号进行合并加工的呢?让我们来看看它的构造。

假设一个神经元从其他多个神经元接收了输入信号,这时如果所接收的信号之和比较小,没有超过这个神经元固有的边界值(称为阈值),这个神经元的细胞体就会忽略接收到的信号,不做任何反应。

注:对于生命来说,神经元忽略微小的输入信号,这是十分重要的。反之,如果神经元对于任何微小的信号都变得兴奋,神经系统就将“情绪不稳定”。

不过,如果输入信号之和超过神经元固有的边界值(也就是阈值),细胞体就会做出反应,向与轴突连接的其他神经元传递信号,这称为点火。

那么,点火时神经元的输出信号是什么样的呢?有趣的是,信号的大小是固定的。即便从邻近的神经元接收到很大的刺激,或者轴突连接着其他多个神经元,这个神经元也只输出固定大小的信号。点火的输出信号是由0 或1 表示的数字信息。

将神经元的工作在数学上抽象化,并以其为单位人工地形成网络,这样的人工网络就是神经网络。将构成大脑的神经元的集合体抽象为数学模型,这就是神经网络的出发点。

对于用神经网络实现的人工智能,人们只需要简单地提供数据即可。神经网络接收数据后,就会从网络的关系中自己学习并理解。如此看来,神经网络似乎有一些不可思议的逻辑。然而,从数学上来说,其原理十分容易。下面我们就一点点阐述它的原理。

神经网络中的数学

一、神经元工作的数学表示

让我们先整理一下已经考察过的神经元点火的结构。

(i) 来自其他多个神经元的信号之和成为神经元的输入。

(ii) 如果这个信号之和超过神经元固有的阈值,则点火。

(iii) 神经元的输出信号可以用数字信号0 和1 来表示。即使有多个输出端,其值也是同一个。

下面让我们用数学方式表示神经元点火的结构。

首先,我们用数学式表示输入信号。由于输入信号是来自相邻神经元的输出信号,所以根据(iii),输入信号也可以用“有”“无”两种信息表示。因此,用变量x 表示输入信号时,如下所示。

注:与视细胞直接连接的神经元等个别神经元并不一定如此,因为视细胞的输入是模拟信号。

接下来,我们用数学式表示输出信号。根据(iii),输出信号可以用表示点火与否的“有”“无”两种信息来表示。因此,用变量y 表示输出信号时,如下所示。

最后,我们用数学方式来表示点火的判定条件。

从(i) 和(ii) 可知,神经元点火与否是根据来自其他神经元的输入信号的和来判定的,但这个求和的方式应该不是简单的求和。例如在网球比赛中,对于来自视觉神经的信号和来自听觉神经的信号,大脑是通过改变权重来处理的。因此,神经元的输入信号应该是考虑了权重的信号之和。

用数学语言来表示的话,例如,来自相邻神经元1、2、3 的输入信号分别为x1、x2、x3,则神经元的输入信号之和可以如下表示。

式中的w1、w2、w3 是输入信号x1、x2、x3 对应的权重(weight)。

根据(ii),神经元在信号之和超过阈值时点火,不超过阈值时不点火。于是,利用式(1),点火条件可以如下表示。

这里,θ 是该神经元固有的阈值。

例1

来自两个神经元1、2 的输入信号分别为变量x1、x2,权重为w1、w2,神经元的阈值为θ。当w1 = 5,w2 = 3,θ = 4 时,考察信号之和w1x1+ w2x2 的值与表示点火与否的输出信号y 的值。

二、点火条件的图形表示

下面我们将表示点火条件的式(2) 图形化。以神经元的输入信号之和为横轴,神经元的输出信号y 为纵轴,将式(2) 用图形表示出来。如下图所示,当信号之和小于θ 时,y 取值0,反之y 取值1。

如果用函数式来表示这个图形,就需要用到下面这个单位阶跃函数。

单位阶跃函数又称单位布阶函数,目前有三种定义,它们共同之处是自变量取值大于0时,函数值为1;自变量取值小于0时,函数值为0,不同之处是,自变量为0时函数值各不相同。

单位阶跃函数的图形如下所示。

利用单位阶跃函数u(z),式(2) 可以用一个式子表示如下。

通过下表可以确认式(3) 和式(2) 是一样的。

此外,该表中的z(式(3) 的阶跃函数的参数)的表达式

这称为该神经元的加权输入。

三、将神经元的工作一般化

上面为了接近神经元的形象,我们将神经元表示为了下图的样子。

然而,为了画出网络,我们需要画很多的神经元,在这种情况下上面那样的图就不合适了。因此,我们使用如下所示的简化图,这样很容易就能画出大量的神经元。

为了与生物学的神经元区分开来,我们把经过这样简化、抽象化的神经元称为神经单元(unit)。

将神经元的示意图抽象化之后,对于输出信号,我们也对其进行一般化。

上面我们提到,根据点火与否,生物学上的神经元的输出y 分别取值1 和0(下图)。

然而,如果除去“生物”这个条件,这个“0 和1 的限制”也应该是可以解除的。这时表示点火与否的下式(前边式(3))就需要修正。

这里,u 是单位阶跃函数。我们将该式一般化,如下所示。

这里的函数a 是建模者定义的函数,我们称为激活函数(activation function)。x1、x2、x3 是模型允许的任意数值,y 是函数a 能取到的任意数值。这个式(2) 就是今后所讲的神经网络的出发点。

注:虽然式(2) 只考虑了3 个输入,但这是很容易推广的。另外,式(1) 使用的单位阶跃函数u(z) 在数学上也是激活函数的一种。

请注意,式(2) 的输出y 的取值并不限于0 和1,对此并没有简单的解释。一定要用生物学来比喻的话,可以考虑神经单元的“兴奋度”“反应度”“活性度”。

我们来总结一下神经元和神经单元的不同点,如下表所示。

将神经元点火的式(1) 一般化为神经单元的激活函数式(2),要确认这样做是否有效,就要看实际做出的模型能否很好地解释现实的数据。实际上,式(2) 表示的模型在很多模式识别问题中取得了很好的效果。

四、神经单元的激活函数

Sigmoid 函数

神经单元激活函数的代表性例子是Sigmoid 函数σ(z),其定义如下所示。

关于这个函数,我们以后可以继续深入学习。这里,我们先来看看它的图形,Sigmoid 函数σ(z) 的输出值是大于0 小于1 的任意值。此外,该函数连续、光滑,也就是说可导。这两种性质使得Sigmoid 函数很容易处理。

右图是激活函数的代表性例子Sigmoid 函数σ(z) 的图形。除了原点附近的部分,其余部分与单位阶跃函数(左图)相似。Sigmoid 函数具有处处可导的性质,很容易处理。

单位阶跃函数的输出值为1 或0,表示点火与否。然而,Sigmoid 函数的输出值大于0 小于1,这就有点难以解释了。如果用生物学术语来解释的话,如上文中的表格所示,可以认为输出值表示神经单元的兴奋度等。输出值接近1 表示兴奋度高,接近0 则表示兴奋度低。

偏置

再来看一下激活函数的式(2)。

这里的θ 称为阈值,在生物学上是表现神经元特性的值。从直观上讲,θ表示神经元的感受能力,如果θ 值较大,则神经元不容易兴奋(感觉迟钝),而如果值较小,则神经元容易兴奋(敏感)。

然而,式(2) 中只有θ 带有负号,这看起来不漂亮。数学不喜欢不漂亮的东西。另外,负号具有容易导致计算错误的缺点,因此,我们将- θ 替换为b。

经过这样处理,式子变漂亮了,也不容易发生计算错误。这个b 称为偏置(bias)。

我们将式(4) 作为标准使用。另外,此时的加权输入z如下所示。

式(4) 和式(5) 是今后所讲的神经网络的出发点,非常重要。

另外,生物上的权重w1、w2、w3 和阈值θ( = - b)都不是负数,因为负数在自然现象中实际上是不会出现的。然而,在将神经元一般化的神经单元中,是允许出现负数的。

练习题

下图是一个神经单元。如图所示,输入x1 的对应权重是2,输入x2的对应权重是3,偏置是- 1。根据下表给出的输入,求出加权输入z 和输出y。注意这里的激活函数是Sigmoid函数。

请自行填写之后看下面答案。

解:结果如下表所示(式(3) 中的e 取e = 2.7 进行计算)。

备注

改写式(5)。

我们将式(5) 像下面这样整理一下。

这里增加了一个虚拟的输入,可以理解为以常数1 作为输入值(下图)。于是,加权输入z 可以看作下面两个向量的内积。

( w1,w2,w3,b)(x1,x2,x3,1)

计算机擅长内积的计算,因此按照这种解释,计算就变容易了。

神经网络作为本文的主题,它究竟是什么样的呢?下面让我们来看一下其概要。

五、神经网络

上面我们考察了神经单元,它是神经元的模型化。那么,既然大脑是由神经元构成的网络,如果我们模仿着创建神经单元的网络,是不是也能产生某种“智能”呢?这自然是让人期待的。众所周知,人们的期待没有被辜负,由神经单元组成的网络在人工智能领域硕果累累。

在进入神经网络的话题之前,我们先来回顾一下上面考察过的神经单元的功能。

将这样的神经单元连接为网络状,就形成了神经网络。它的连接方法多种多样,本文将主要考察作为基础的阶层型神经网络。

神经网络各层的职责

阶层型神经网络如下图所示,按照层(layer)划分神经单元,通过这些神经单元处理信号,并从输出层得到结果,如下图所示。

构成这个网络的各层称为输入层、隐藏层、输出层,其中隐藏层也被称为中间层。

各层分别执行特定的信号处理操作。

  • 输入层负责读取给予神经网络的信息。属于这个层的神经单元没有输入箭头,它们是简单的神经单元,只是将从数据得到的值原样输出。

  • 隐藏层的神经单元执行前面所复习过的处理操作(1) 和(2)。在神经网络中,这是实际处理信息的部分。

  • 输出层与隐藏层一样执行信息处理操作(1) 和(2),并显示神经网络计算出的结果,也就是整个神经网络的输出。

人工智能中著名的深度学习,顾名思义,就是叠加了很多层的神经网络。叠加层有各种各样的方法,其中著名的是卷积神经网络。

了解卷积神经网络可以阅读《卷积神经网络的Python实现》这本书。关于神经网络的详细介绍,请看《这是我看过,最好懂的神经网络》这篇文章。

从数学角度看神经网络的学习

我们了解了神经网络识别输入图像的机制,。具体来说,就是根据神经单元中的权重关系来判断。那么,这个权重的大小是如何确定的呢?神经网络中比较重要的一点就是利用网络自学习算法来确定权重大小。

神经网络的参数确定方法分为有监督学习和无监督学习。本文只提到了监督学习,有监督学习是指,为了确定神经网络的权重和偏置,事先给予数据,这些数据称为学习数据。神经网络根据给定的学习数据确定权重和偏置,称为学习。

注:学习数据也称为训练数据。

那么,神经网络是怎样学习的呢?其实思路极其简单:计算神经网络得出的预测值与正解的误差,确定使得误差总和达到最小的权重和偏置。这在数学上称为模型的最优化(下图)。

关于预测值与正解的误差总和,有各种各样的定义。本文采用的是最古典的定义:针对全部学习数据,计算预测值与正解的误差的平方(称为平方误差),然后再相加。这个误差的总和称为代价函数(cost function),用符号CT 表示(T 是Total 的首字母)。

利用平方误差确定参数的方法在数学上称为最小二乘法,它在统计学中是回归分析的常规手段。

最优化是指确定使得误差总和最小的参数的方法。

想继续学习深度学习的数学知识,可以阅读下面这本书。

本文内容节选自《深度学习的数学》。

一本书掌握深度学习数学基础知识!
  • 结合235幅插图和大量示例

  • 基于Excel实践,直击神经网络根本原理

书中基于丰富的图示和具体示例,通俗地介绍了深度学习相关的数学基础知识。第1章介绍神经网络的概况;第2章介绍理解神经网络所需的数学基础知识;第3章介绍神经网络的最优化;第4章介绍神经网络和误差反向传播法;第5章介绍深度学习和卷积神经网络。

1. 图文直观

穿插235幅插图和大量具体示例讲解,对易错点、重点反复说明,通俗易懂。

2. 结合Excel实践

书中使用Excel进行理论验证,读者可下载随书附带的Excel示例文件,亲自动手操作,直观地体验深度学习。

3. 只需基础的数学知识

适合数学基础薄弱的深度学习初学者阅读,有一定基础的读者也可以通过本书加深理解。

目录

第1章 神经网络的思想

第2章 神经网络的数学基础

第3章 神经网络的最优化

第4章 神经网络和误差反向传播法

第5章 深度学习和卷积神经网络

文末畅聊

人们都说数学好难!

你读过哪些轻松的有趣的数学书吗?

《简单微积分》

《数学女孩》

还是

《程序员的数学》

《普林斯顿微积分读本》

你有哪些想推荐给大家看的

深度学习 / 数学书呢?

......

写出来跟大家分享一下吧!

精选留言中随机挑选3位小伙伴,

赠送

《深度学习的数学》纸质书一本。

活动截止到5月27日14:00。

↓ 查看更多深度学习相关图书

干货!神经网络原来是这样和数学挂钩的相关推荐

  1. 干货!神经网络原来是这样和数学挂钩的 // 深度学习的数学

    https://www.toutiao.com/a6688175496821211662/ 近几年,有几个被媒体大肆报道的事件,如下表所示. 如上所示,深度学习作为人工智能的一种具有代表性的实现方法, ...

  2. 神经网络原来是这样和数学挂钩的

    来源:遇见数学 近几年,有几个被媒体大肆报道的事件,如下表所示. 如上所示,深度学习作为人工智能的一种具有代表性的实现方法,取得了很大的成功.那么,深度学习究竟是什么技术呢?深度学习里的"学 ...

  3. 干货|神经网络及理解反向传播

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 一.人工神经网络简述 下面开始说神经网络.注意,当我们说N层神经网 ...

  4. 什么?神经网络还能求解高级数学方程?

    来源 | 数据派 THU 封图 | CSDN 付费下载于视觉中国 Facebook AI建立了第一个可以使用符号推理解决高级数学方程的AI系统.通过开发一种将复杂数学表达式表示为一种语言的新方法,然后 ...

  5. 干货 | 神经网络原来这么简单,机器学习入门贴送给你

    白交 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你想学机器学习吗?这里有一个入门贴适合你. 什么神经网络.随机森林.计算机视觉通通一网打尽. 这个Facebook软件工程师做了一个入门贴 ...

  6. 拉格朗日中值定理ξ怎么求_【实力干货】!!!高中数学教材之外的常用定理和公式!!!...

    点击上方蓝色字体"高中数学王晖"关注王晖老师,免费获取各种知识干货和学习经验~~~您的点赞转发是对老师的最大鼓舞和支持~~~ 距高考还有22天 本文给同学们总结了在高中教材中未提及 ...

  7. 神经网络建模的基本思想,数学建模神经网络应用

    1.人工神经网络有什么应用条件 人工神经网络(Artificial Neural Network,简称ANN ),以数学模型模拟神经元活动,是基于模仿大脑神经网络结构和功能而建立的一种信息处理系统.人 ...

  8. 干货 | 神经网络与深度学习精选文章汇总

    AI有道 不可错过的AI技术公众号 关注 下面这部分列出了吴恩达深度学习专项课程中关于NN和DNN方面的所有精炼笔记.主要包括:神经网络与深度学习.优化神经网络.构建机器学习项目三块内容. 如果你对我 ...

  9. 深度神经网络的反向传播算法数学推导

    导是在看了这两篇文章之后写的https://www.cnblogs.com/pinard/p/6422831.html https://zhuanlan.zhihu.com/p/24709748 只是 ...

最新文章

  1. Cytoscape: MCODE增强包的网络模块化分析
  2. 聚类效果评估、内部指标(Jaccard系数、FM指数、Rand指数)、外部指标(DB指数、Dunn指数)、轮廓系数(Silhouette Coefficient)
  3. django 的用户验证及登录状态保持
  4. python求两数之和的命令_python实现读取命令行参数的方法
  5. javascript --- 使用语法糖class定义函数
  6. android java 8_四个库,让你在 Android 中启用 Java 8 功能
  7. MinIO Docker 快速入门
  8. Leetcode 30.串联所有单词的子串
  9. 容量规划的一些探讨与实践
  10. 使用lombok注解,在代码编写过程中可以调用到get/set方法,但在编译的时候报错找不到get/set方法
  11. 用python的OCR实现自动拍照搜题
  12. Visio设计产品流程图
  13. 数据库mongodb效率测试
  14. 24_摘录的一些精彩语句1
  15. 短跑enti策略:如何在不破坏软件的情况下改进软件
  16. 精心整理的Java学习顺序流程和学习方法
  17. 移动通信中m序列的Matlab仿真
  18. 点线面的意义_浅析点线面在平面设计中作用与意义.doc
  19. 期货期权的异同(期货期权的异同点)
  20. 浅谈五阶巴特沃斯滤波器硬件设计归一化法

热门文章

  1. mqtt 负载均衡_EMQ百万级MQTT消息服务(分布式集群)
  2. 32位md5解密_用户名与密码前后加密、后台解密实现方案
  3. 【c语言】求n个整数的和
  4. java数组的协变_Java数组协变与范型不变性
  5. jstl 获取 javascript 定义的变量_一个后端开发者前端语言基础:JavaScript
  6. redhat7操作系统安装
  7. 追溯了解Ubuntu之------基本命令操作(叁)
  8. [USACO]奶牛博览会(DP)
  9. You are my brother
  10. 奇怪吸引子---Dadras