一文读懂神经网络

作者&投稿:宇文哄 (若有异议请与网页底部的电邮联系)
~

要说近几年最引人注目的技术,无疑的,非人工智能莫属。无论你是否身处科技互联网行业,随处可见人工智能的身影:从 AlphaGo 击败世界围棋冠军,到无人驾驶概念的兴起,再到科技巨头 All in AI,以及各大高校向社会输送海量的人工智能专业的毕业生。以至于人们开始萌生一个想法:新的革命就要来了,我们的世界将再次发生一次巨变;而后开始焦虑:我的工作是否会被机器取代?我该如何才能抓住这次革命?

人工智能背后的核心技术是深度神经网络(Deep Neural Network),大概是一年前这个时候,我正在回老家的高铁上学习 3Blue1Brown 的 Neural Network 系列视频课程,短短 4 集 60 多分钟的时间,就把神经网络从 High Level 到推导细节说得清清楚楚,当时的我除了获得新知的兴奋之外,还有一点新的认知,算是给头脑中的革命性的技术泼了盆冷水:神经网络可以解决一些复杂的、以前很难通过写程序来完成的任务——例如图像、语音识别等,但它的实现机制告诉我,神经网络依然没有达到生物级别的智能,短期内期待它来取代人也是不可能的。

一年后的今天,依然在这个春运的时间点,将我对神经网络的理解写下来,算是对这部分知识的一个学习笔记,运气好的话,还可以让不了解神经网络的同学了解起来。

维基百科这样解释 神经网络 :

这个定义比较宽泛,你甚至还可以用它来定义其它的机器学习算法,例如之前我们一起学习的逻辑回归和 GBDT 决策树。下面我们具体一点,下图是一个逻辑回归的示意图:

其中 x1 和 x2 表示输入,w1 和 w2 是模型的参数,z 是一个线性函数:

接着我们对 z 做一个 sigmod 变换(图中蓝色圆),得到输出 y:

其实,上面的逻辑回归就可以看成是一个只有 1 层 输入层 , 1 层 输出层 的神经网络,图中容纳数字的圈儿被称作 神经元 ;其中,层与层之间的连接 w1、w2 以及 b,是这个 神经网络的参数 ,层之间如果每个神经元之间都保持着连接,这样的层被称为 全连接层 (Full Connection Layer),或 稠密层 (Dense Layer);此外,sigmoid 函数又被称作 激活函数 (Activation Function),除了 sigmoid 外,常用的激活函数还有 ReLU、tanh 函数等,这些函数都起到将线性函数进行非线性变换的作用。我们还剩下一个重要的概念: 隐藏层 ,它需要把 2 个以上的逻辑回归叠加起来加以说明:

如上图所示,除输入层和输出层以外,其他的层都叫做 隐藏层 。如果我们多叠加几层,这个神经网络又可以被称作 深度神经网络 (Deep Neural Network),有同学可能会问多少层才算“深”呢?这个没有绝对的定论,个人认为 3 层以上就算吧:)

以上,便是神经网络,以及神经网络中包含的概念,可见,神经网络并不特别,广义上讲,它就是

可见,神经网络和人脑神经也没有任何关联,如果我们说起它的另一个名字—— 多层感知机(Mutilayer Perceptron) ,就更不会觉得有多么玄乎了,多层感知机创造于 80 年代,可为什么直到 30 年后的今天才爆发呢?你想得没错,因为改了个名字……开个玩笑;实际上深度学习这项技术也经历过很长一段时间的黑暗低谷期,直到人们开始利用 GPU 来极大的提升训练模型的速度,以及几个标志性的事件:如 AlphaGo战胜李世石、Google 开源 TensorFlow 框架等等,感兴趣的同学可以翻一下这里的历史。

就拿上图中的 3 个逻辑回归组成的神经网络作为例子,它和普通的逻辑回归比起来,有什么优势呢?我们先来看下单逻辑回归有什么劣势,对于某些情况来说,逻辑回归可能永远无法使其分类,如下面数据:

这 4 个样本画在坐标系中如下图所示

因为逻辑回归的决策边界(Decision Boundary)是一条直线,所以上图中的两个分类,无论你怎么做,都无法找到一条直线将它们分开,但如果借助神经网络,就可以做到这一点。

由 3 个逻辑回归组成的网络(这里先忽略 bias)如下:

观察整个网络的计算过程,在进入输出层之前,该网络所做的计算实际上是:

即把输入先做了一次线性变换(Linear Transformation),得到 [z1, z2] ,再把 [z1, z2] 做了一个非线性变换(sigmoid),得到 [x1', x2'] ,(线性变换的概念可以参考 这个视频 )。从这里开始,后面的操作就和一个普通的逻辑回归没有任何差别了,所以它们的差异在于: 我们的数据在输入到模型之前,先做了一层特征变换处理(Feature Transformation,有时又叫做特征抽取 Feature Extraction),使之前不可能被分类的数据变得可以分类了

我们继续来看下特征变换的效果,假设 为 ,带入上述公式,算出 4 个样本对应的 [x1', x2'] 如下:

再将变换后的 4 个点绘制在坐标系中:

显然,在做了特征变换之后,这两个分类就可以很容易的被一条决策边界分开了。

所以, 神经网络的优势在于,它可以帮助我们自动的完成特征变换或特征提取 ,尤其对于声音、图像等复杂问题,因为在面对这些问题时,人们很难清晰明确的告诉你,哪些特征是有用的。

在解决特征变换的同时,神经网络也引入了新的问题,就是我们需要设计各式各样的网络结构来针对性的应对不同的场景,例如使用卷积神经网络(CNN)来处理图像、使用长短期记忆网络(LSTM)来处理序列问题、使用生成式对抗网络(GAN)来写诗和作图等,就连去年自然语言处理(NLP)中取得突破性进展的 Transformer/Bert 也是一种特定的网络结构。所以, 学好神经网络,对理解其他更高级的网络结构也是有帮助的

上面说了,神经网络可以看作一个非线性函数,该函数的参数是连接神经元的所有的 Weights 和 Biases,该函数可以简写为 f(W, B) ,以手写数字识别的任务作为例子:识别 MNIST 数据集 中的数字,数据集(MNIST 数据集是深度学习中的 HelloWorld)包含上万张不同的人写的数字图片,共有 0-9 十种数字,每张图片为 28*28=784 个像素,我们设计一个这样的网络来完成该任务:

把该网络函数所具备的属性补齐:

接下来的问题是,这个函数是如何产生的?这个问题本质上问的是这些参数的值是怎么确定的。

在机器学习中,有另一个函数 c 来衡量 f 的好坏,c 的参数是一堆数据集,你输入给 c 一批 Weights 和 Biases,c 输出 Bad 或 Good,当结果是 Bad 时,你需要继续调整 f 的 Weights 和 Biases,再次输入给 c,如此往复,直到 c 给出 Good 为止,这个 c 就是损失函数 Cost Function(或 Loss Function)。在手写数字识别的列子中,c 可以描述如下:

可见,要完成手写数字识别任务,只需要调整这 12730 个参数,让损失函数输出一个足够小的值即可,推而广之,绝大部分神经网络、机器学习的问题,都可以看成是定义损失函数、以及参数调优的问题。

在手写识别任务中,我们既可以使用交叉熵(Cross Entropy)损失函数,也可以使用 MSE(Mean Squared Error)作为损失函数,接下来,就剩下如何调优参数了。

神经网络的参数调优也没有使用特别的技术,依然是大家刚接触机器学习,就学到的梯度下降算法,梯度下降解决了上面迭代过程中的遗留问题——当损失函数给出 Bad 结果时,如何调整参数,能让 Loss 减少得最快。

梯度可以理解为:

把 Loss 对应到 H,12730 个参数对应到 (x,y),则 Loss 对所有参数的梯度可以表示为下面向量,该向量的长度为 12730:
$$

abla L(w,b) = \left[

\frac{\partial L}{\partial w_1},
\frac{\partial L}{\partial w_2},...,
\frac{\partial L}{\partial b_{26}}

ight] ^op
$$
所以,每次迭代过程可以概括为

用梯度来调整参数的式子如下(为了简化,这里省略了 bias):

上式中, 是学习率,意为每次朝下降最快的方向前进一小步,避免优化过头(Overshoot)。

由于神经网络参数繁多,所以需要更高效的计算梯度的算法,于是,反向传播算法(Backpropagation)呼之欲出。

在学习反向传播算法之前,我们先复习一下微积分中的链式法则(Chain Rule):设 g = u(h) , h = f(x) 是两个可导函数,x 的一个很小的变化 △x 会使 h 产生一个很小的变化 △h,从而 g 也产生一个较小的变化 △g,现要求 △g/△x,可以使用链式法则:

有了以上基础,理解反向传播算法就简单了。

假设我们的演示网络只有 2 层,输入输出都只有 2 个神经元,如下图所示:

其中 是输入, 是输出, 是样本的目标值,这里使用的损失函数 L 为 MSE;图中的上标 (1) 或 (2) 分别表示参数属于第 (1) 层或第 (2) 层,下标 1 或 2 分别表示该层的第 1 或 第 2 个神经元。

现在我们来计算 和 ,掌握了这 2 个参数的偏导数计算之后,整个梯度的计算就掌握了。

所谓反向传播算法,指的是从右向左来计算每个参数的偏导数,先计算 ,根据链式法则

对左边项用链式法则展开

又 是输出值, 可以直接通过 MSE 的导数算出:

而 ,则 就是 sigmoid 函数的导数在 处的值,即

于是 就算出来了:

再来看 这一项,因为

所以

注意:上面式子对于所有的 和 都成立,且结果非常直观,即 对 的偏导为左边的输入 的大小;同时,这里还隐含着另一层意思:需要调整哪个 来影响 ,才能使 Loss 下降得最快,从该式子可以看出,当然是先调整较大的 值所对应的 ,效果才最显著 。

于是,最后一层参数 的偏导数就算出来了

我们再来算上一层的 ,根据链式法则 :

继续展开左边这一项

你发现没有,这几乎和计算最后一层一摸一样,但需要注意的是,这里的 对 Loss 造成的影响有多条路径,于是对于只有 2 个输出的本例来说:

上式中, 都已经在最后一层算出,下面我们来看下 ,因为

于是

同理

注意:这里也引申出梯度下降的调参直觉:即要使 Loss 下降得最快,优先调整 weight 值比较大的 weight。

至此, 也算出来了

观察上式, 所谓每个参数的偏导数,通过反向传播算法,都可以转换成线性加权(Weighted Sum)计算 ,归纳如下:

式子中 n 代表分类数,(l) 表示第 l 层,i 表示第 l 层的第 i 个神经元。 既然反向传播就是一个线性加权,那整个神经网络就可以借助于 GPU 的矩阵并行计算了

最后,当你明白了神经网络的原理,是不是越发的认为,它就是在做一堆的微积分运算,当然,作为能证明一个人是否学过微积分,神经网络还是值得学一下的。Just kidding ..

本文我们通过

这四点,全面的学习了神经网络这个知识点,希望本文能给你带来帮助。

参考:




人工智能专业学什么课程
学好高等数学也是学习人工智能的必备条件之一,学习目的在于,理解数学知识体系在深度学习中的应用,可以读懂深度学习中常用的数学函数公式,能够用Python编程实现常用的数学算法。深度学习理论部分 深度学习理论部分是课程中最多也最重要的部分,包括CNN卷积神经网络、RNN循环神经网络、注意力机制等等技术。人工...

电脑之父是谁
六岁时他能心算做八位数乘除法,八岁时掌握微积分,十二岁就读懂领会了波莱尔的大作《函数论》要义。 微积分的实质是对无穷小量进行数学分析。人类探索有限...当然,随着人工智能和神经网络计算机的发展,诺依曼机一统天下的格局已经被打破,但是,冯·诺依曼对发展电脑作出的巨大功绩,永远也不会因此而泯灭其光辉! 本...

地球物理勘探知识
其中油藏描述中圈闭描述、地层沉积描述、储集体描述、油气储量计算技术在不断发展和深化,水平分辨率和垂直分辨率区分地质特征的识别能力也在不断提高,地震层析成像技术初步运用,人工神经网络技术也在酝酿发展。三维可视化技术的利用等方面的知识都应了解或掌握。四维地震就是在三维地震的基础上加上时间推移,用于监测油气开采...

如何构思一篇论文
沦文的可读性 请看一下《Nature》在投稿指南第二条上对可读性是如何解释的:来稿应写得清楚.简练,以便让其他领域的读者和母语为非英语的读者能能够读懂....建立模型:经验统计模型;有物理基础的模型;模糊数学模型;系统动力学模型;灰色系统模型;分形模型;人工神经网络模型等.在资料分析的基础上,提出新概念,新方法,...

山芋害人的结尾,能引用什么名言名句呢?
生写的《读懂母亲》,开头直接引用丰子恺文中的妙句:“母亲啊,您是参天耸立的大树,我是树下一朵弱不禁风的小花,心中的雨点来了,除了您,谁是我在无遮拦天空下的绿阴?”名句为全文定下抒情的基调,同时开门见山,给文章镶嵌了一个美丽的“凤头”.又如江苏省盐城的一位考生写的《做一匹靠自己的黑马》一文,开头引...

高中生怎样提高成绩?
集中力量突击难度中等和中等偏上题目的分数,放弃难度高题目的分数。5、越怕的题型就越要注意,不要将其忽视。解决这一类题型可分为以下步骤①理解概念。这样可以让你读懂题意,懂得题目要考察的知识点②做专题。由易到难做。③重视题目答案解析,体会出题人想考你什么。

宾县18027654806: 啥子是神经网络? -
凌从强腰: 神经网络概述神经网络是: 思维学普遍认为,人类大脑的思维分为抽象(逻辑)思维、形象(直观)思维和灵感(顿悟)思维三种基本方式. 逻辑性的思维是指根据逻辑规则进行推理的过程;它先将信息化成概念,并用符号表示,然后,...

宾县18027654806: 谁能告诉我神经网络是怎么一回事
凌从强腰: 不知道你说的是哪个神经网络,如果是人体的,那么就是人体内包括大脑,小脑,脑干,脊髓,神经纤维,等组成的人体神经调控系统,如果不是人体的,那么就是一种模拟人体神经网络的一种高级算法,一般通过计算机来实现,现在这种神经网络算法应用很广泛,但主要用于高科技领域. 你可以在百度或Google上用神经网络模型为关键词搜索下,会有不少收获,呵呵!好运!

宾县18027654806: 什么是神经网络计算机? -
凌从强腰: 神经网络计算机具有模仿人的大脑判断能力和适应能力,可并行处理多种数据功能的神经网络计算机,可以判断对象的性质与状态,并能采取相应的行动,而且可同时并行处理实时变化的大量数据,并引出结论.以往的信息处理系统只能处理条...

宾县18027654806: 神经网络原理怎么样 -
凌从强腰: 神经网络不仅是现在的思维模式,计算机的将来计算模式,还是简单的细胞的运算模式.他们没有真正的思考,而是计算.计算是机器也能够做到的,因此不管人是否理解或者机器是否知道,都可以从容应对.而不知道的事物如此之多,因此不必担心他们会自动的进入圈套.他们不仅是可以识别计策的,还是具有分辨计策的能力的,因此必须留心别进入他们的世界,以免变得面目全非.神经的联系来源于突触,但是这是复杂的,因此不要把他们变的简单化,因为这将把神经变的难以显现.没有这些就没有自己.神经不仅是可以从一点出发,到达任何一点的,还是可以从一个神经进入另一个神经的,因此必须小心不要到达不可及之地.那里是隐私的储藏地点.那里充满着机关算计以及绝杀的危险之地.

宾县18027654806: 神经网络模型的介绍 -
凌从强腰: 神经网络(Neural Networks,NN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统.神经网络具有大规模并行、分布式存储和处理...

宾县18027654806: 什么是神经网络计算机?
凌从强腰: 人工神经网络(Artificial Neural Networks, ANN),一种模范动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.由大量处理单元互联组成的非线性、自适应信息处理系统.它是在现代神经科学研究成果的基础上提出的,试图通过模拟大脑神经网络处理、记忆信息的方式进行信息处理. 刚好有学人工智能~~~

宾县18027654806: 数据挖掘中的神经网络和模糊逻辑的概念是啥? -
凌从强腰: 【神经网络】 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.这种网络依靠系统的...

宾县18027654806: 神经网络算法是什么? -
凌从强腰: Introduction --------------------------------------------------------------------------------神经网络是新技术领域中的一个时尚词汇.很多人听过这个词,但很少人真正明白它是什么.本文的目的是介绍所有关于神经网络的基本包括它的功能、一般结构、相关术语...

宾县18027654806: 前向神经是什么类型的神经网络?是前反馈神经网络吗? -
凌从强腰: 神经网络有前馈神经网络和反馈神经网络,前向神经网络也就是前馈神经网络. 前馈型网络各神经元接收前一层的输入,并输出给下一层,没有反馈.节点分为两类,即输入节点和计算节点,每一个计算节点可有多个输入,但只有一个输出,通常前馈型网络可分为不同的层,第i层的输入只与第i-1层的输出相连,输入与输出节点与外界相连,而其他中间层则称为隐层. 反馈型网络所有节点都是计算节点,同时可接收输入,并向外界输出.常见的前馈神经网络有BP网络,RBF网络等.

宾县18027654806: Matlab里的神经网络是什么意思啊,我是新手,谁能简单通俗地解释下啊?谢谢了!!! -
凌从强腰: 所谓神经网络算法顾名思义是模拟生物神经网络而产生的一种算法,首先需要用一些已知的数据输入到神经网络中,使它知道什么样的数据属于哪一类(训练),然后将未知的数据输入进去,神经网络通过已知的数据对其进行判断来完成分类(分类).可以用来进行图像识别、分类;数据预测;曲线拟合等.推荐找本机器学习,人工智能方面的书看.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网