神经网络设计是什么(神经网络设计是什么专业学的)
大家好!今天让创意岭的小编来大家介绍下关于神经网络设计是什么的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。
开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等
只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端
创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008
本文目录:
一、一文读懂神经网络
要说近几年最引人注目的技术,无疑的,非人工智能莫属。无论你是否身处科技互联网行业,随处可见人工智能的身影:从 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:
$$
nabla L(w,b) = left[
frac{partial L}{partial w_1},
frac{partial L}{partial w_2},...,
frac{partial L}{partial b_{26}}
right] ^top
$$
所以,每次迭代过程可以概括为
用梯度来调整参数的式子如下(为了简化,这里省略了 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 ..
本文我们通过
这四点,全面的学习了神经网络这个知识点,希望本文能给你带来帮助。
参考:
二、神经网络设计的基本信息
英文名: Neural Network Design
作者: [美] 哈根等
译者: 戴葵等
定价: 49.00
三、神经网络设计网络结构设计 为什么用深层
你说的是深度学习吧?深度学习的深层是用来提取特征用的。而普通的神经网络其实只需要一层隐藏层,就可以到达任意的效果。
四、神经网络从何而来?
【嵌牛导读】神经网络从何而来?这里说的『从何而来』,并不仅仅是从技术上去介绍一个方法的创造或发展,而更想探讨方法背后所蕴含的思想基础与演变之路。
【嵌牛鼻子】神经网络、深度学习
【嵌牛提问】神经网络的由来?
【嵌牛正文】深度学习与神经网络是近几年来计算机与人工智能领域最炙手可热的话题了。为了蹭这波热度,博主也打算分享一些自己的经验与思考。第一篇文章想探讨一个非常基础的问题:神经网络从何而来?这里说的『从何而来』,并不仅仅是从技术上去介绍一个方法的创造或发展,而更想探讨方法背后所蕴含的思想基础与演变之路。
首先,需要为『神经网络』正一下名。在人工智能领域,我们通常所说的神经网络(Neural Networks)全称是人工神经网络(Artificial Neural Network),与之对应的是我们用肉长成的生物神经网络(Biology Neural Network)。众所周知,人工神经网络受生物神经网络的启发而产生,并在几十年间不断进步演化。可要论人类对人工智能的探索历史,却远远长于这几十年。为了深刻了解神经网络出现的背景,我们有必要从更早的历史开始说起。
简单说,人工智能想做的事情就是去总结和提炼人类思考的过程,使之能够机械化、可重复。从各种神话、传说来看,我们的祖先在几千年前就对这件事儿充满了好奇与遐想。到两千多年前,一大批伟大的哲学家在希腊、中国和印度相继诞生,并将人类对这一问题的认识推向了新的高度。为避免本文成为枯燥的哲学史,这里不想举太多的例子。伟大的希腊哲学家亚里士多德在他的《前分析篇》中提出了著名的三段论(sollygism),类似于:
所有希腊人是人
所有人终有一死
因此所有希腊人终有一死
虽然这是我们现在已经无比熟悉的推理模式,但是要在2000年前从无到有系统总结出一系列这样的命题与推理模式,却着实不易。有了『三段论』这种的武器,人们对问题的认识与决策就能从感性真正走向理性,做到可以重复。此外,我们熟悉的欧式几何也是当时这种逻辑推理学派的代表。欧式几何以一系列的公理为基础,基于一套严密的逻辑推理体系,最终得到结论的证明,现在仍然是每个学生需要反复训练的思维体操。
随着时间的演进,认知哲学与逻辑学也在不断的发展。在17世纪时,以笛卡尔、莱布尼茨为代表的哲学家进一步提出通过数学的方式对逻辑推演进行标准化,这也是对人脑推理与思考的再次抽象,为后续以后基于数字电路的人工智能打下了基础。之后,数理逻辑进一步发展,而到了20世纪中期,数理逻辑又一次取得了巨大的突破,哥德尔不完备理论、图灵机模型等的相继提出,科学家们既认识到了数理逻辑的局限性,也看到了将推理机械化的无限可能性,一种新的计算方式呼之欲出。
在图灵机的思想指导下,第一台电子计算机很快被设计出来,为人工智能的真正实现提供了物质上的基础。其实回望人工智能历史上的历次重大飞跃,硬件技术的发展无不扮演者重要的作用。很多看似有效的算法都苦于没有足够强大的计算平台支持无疾而终,而计算能力的提升也可以促进科学家们们摆脱束缚,在算法的研究道路上天马行空。深度学习这些年的迅猛发展,很大程度就是得益于大规模集群和图形处理器等技术的成熟,使得用复杂模型快速处理大规模数据成为可能。
1956年达特茅斯会议上,斯坦福大学科学家约翰·麦卡锡(John McCarthy)正式提出了『人工智能』这一概念, 标志着一个学科的正式诞生,也标志着人工智能的发展开始进入了快车道。如果说逻辑符号操作是对人类思维的本质的抽象,那么利用电子计算机技术来模拟人类的符号推理计算也是一个自然而然的想法。在艾伦·纽威尔(Alan Newell)和赫伯特·西蒙(Herbert A.Simon)等大师的推动下,以逻辑推演为核心符号主义(symbolicism)流派很快占据了人工智能领域的重要地位。符号主义在很多领域取得了成功,比如在80年代风靡一时的专家系统,通过知识库和基于知识库的推理系统模拟专家进行决策,得到了广泛的应用。而本世纪初热炒的语义网络以及当下最流行的知识图谱,也可以看做这一流派的延续与发展。
符号主义最大的特点是知识的表示直观,推理的过程清晰,但是也存在着许多局限性。除去在计算能力方面的困扰,一个很大的问题就在于虽然我们可以通过逻辑推理解决一些复杂的问题,但是对一些看似简单的问题,比如人脸识别,却无能为力。当看到一张人脸的照片,我们可以毫不费力的识别出这个人是谁,可这个过程并不需要做什么复杂的推理,它在我们的大脑中瞬间完成,以至于我们对这个过程的细节却一无所知。看起来想通过挖掘一系列严密的推理规则解决这类问题是相对困难的,这也促使很多人去探索与人脑工作更加贴合的解决方案。实际上在符号主义出现的同时,人工智能的另一重要学派联结主义(Connectionism)也开始蓬勃发展,本文的『主角』神经网络终于可以登场了。
在文章的一开始就提到,我们现在所说的人工神经网络是受生物神经网络启发而设计出来的。在1890年,实验心理学先驱William James在他的巨著《心理学原理》中第一次详细论述人脑结构及功能。其中提到神经细胞受到刺激激活后可以把刺激传播到另一个神经细胞,并且神经细胞激活是细胞所有输入叠加的结果。这一后来得到验证的假说也成为了人工神经网络设计的生物学基础。基于这一假说,一系列模拟人脑神经计算的模型被相继提出,具有代表性的有Hebbian Learning Rule, Oja's Rule和MCP Neural Model等,他们与现在通用的神经网络模型已经非常相似,例如在Hebbian Learning模型中,已经可以支持神经元之间权重的自动学习。而在1958年,Rosenblatt将这些模型付诸于实施,利用电子设备构建了真正意义上的第一个神经网络模型:感知机(Perceptron)。Rosenblatt现场演示了其学习识别简单图像的过程,在当时的社会引起了轰动,并带来了神经网络的第一次大繁荣。此后的几十年里,神经网络又经历了数次起起伏伏,既有春风得意一统天下的岁月,也有被打入冷宫无人问津的日子,当然,这些都是后话了。
本文更想讨论这样一个问题:神经网络产生的动机仅仅是对生物学中对神经机制的模仿吗?在神经网络产生的背后,还蕴含着一代代科学家怎么样的思想与情怀呢?事实上,在神经网络为代表的一类方法在人工智能中又被称为联结主义(Connectionism)。关于联结主义的历史,一般的文献介绍按照惯例会追溯到希腊时期哲学家们对关联性的定义与研究,例如我们的老朋友亚里士多德等等。然而当时哲学家研究的关联其实并不特指神经元之间的这种关联,比如前文提到的符号推理本身也是一种形式关联,在希腊哲学中并没有对这两者进行专门的区分。所以硬要把这些说成是连接主义的思想起源略微有一些牵强。
前文提到,在数理逻辑发展过程中,17世纪的欧陆理性主义起到了重要的作用。以笛卡尔、莱布尼茨等为代表的哲学家,主张在理性中存在着天赋观念,以此为原则并严格按照逻辑必然性进行推理就可以得到普遍必然的知识。与此同时,以洛克、休谟等哲学家为代表的英国经验主义,则强调人类的知识来自于对感知和经验归纳。这一定程度上是对绝对的真理的一种否定,人类的认识是存在主观的,随经验而变化的部分的。如果在这个思想的指导下,我们与其去寻找一套普世且完备的推理系统,不如去构造一套虽不完美但能够随着经验积累不断完善的学习系统。而休谟甚至提出了放弃揭示自然界的因果联系和必然规律,而是依据“习惯性联想”去描绘一连串的感觉印象。这其实和神经网络设计的初衷是非常类似的:重视经验的获得与归纳(通过样本进行学习),但对模型本身的严谨性与可解释行则没有那么关注,正如有时候我们愿意把神经网络模型看做是一个『黑箱』。
然而单单一个『黑箱』是不能成为经验的学习与整理的系统的,我们还需要去寻找构建『黑箱』的一种方法论。现代哲学发展到20世纪初期时,在维特根斯坦和罗素等哲学家的倡导下,产生了逻辑经验主义学派。依托当时逻辑学的迅猛发展,这一主义既强调经验的作用,也重视通过严密的逻辑推理来得到结论,而非简单的归纳。在数理逻辑领域颇有建树的罗素有一位大名鼎鼎的学生诺伯特·维纳,他创立的控制论与系统论、信息论一道,为信息科学的发展提供了坚实的理论基础。而神经网络模型的创立也深受这『三论』的影响。前文提到MCP神经元模型的两位创始人分别是罗素和维纳的学生。作为一个系统,神经网络接受外部的输入,得到输出,并根据环境进行反馈,对系统进行更新,直到达到稳定状态。这个过程,同样也是神经网络对环境信息传递的接受和重新编码的过程。如果如果把神经网络当做一个『黑盒』,那么我们首先关心该是这个黑盒的输入与输出,以及如何根据环境给黑盒一个合理的反馈,使之能够进行调整。而黑盒内部的结构,则更多的成为了形式的问题。我们借鉴生物神经网络构造这个黑盒,恰好是一个好的解决方案,但这未必是唯一的解决方案或者说与人类大脑的神经元结构存在必然的联系。比如在统计学习领域中最著名的支持向量机(Support Vector Machines),最终是作为一种特殊的神经网络而提出的。可当其羽翼丰满之后,则和神经网络逐渐脱离关系,开启了机器学习的另一个门派。不同的模型形式之间可以互相转化,但是重视经验(样本),强调反馈的思想却一直保留下来。
前面说了这些,到底神经网络从何而来呢?总结下来就是三个方面吧:1.对理性逻辑的追求,对样本实证的重视,为神经网络的诞生提供了思想的基础。2.生物学与神经科学的发展为神经网络形式的出现提供了启发。3.计算机硬件的发展与计算能力的提升使神经网络从理想变成了现实。而这三方面的发展也催生着神经网络的进一步发展与深度学习的成熟:更大规模的数据,更完善的优化算法使网络能够学习到更多更准确的信息;对人脑的认识的提升启发设计出层次更深,结构更高效的网络结构;硬件存储与计算能力提升使海量数据的高效训练成为可能。而未来神经网络给我们带来的更多惊喜,也很大可能源自于这三个方面,让我们不妨多一些期待吧。
以上就是关于神经网络设计是什么相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。
推荐阅读: