热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习理论学习_02

在介绍了有关机器学习的一些理论之后,我在入门时比较关心的研究重点就在于深度学习的理论和一些实现性代码。第2章深度学习是什么1.神经网络是什么要谈

        在介绍了有关机器学习的一些理论之后,我在入门时比较关心的研究重点就在于深度学习的理论和一些实现性代码。

第2章 深度学习是什么

1.神经网络是什么

        要谈深度学习(deep learning),就必须要先了解神经网络,或者称为人工神经网络(artifcial neural network,ANN)。神经网络是一种人类由于受到生物神经细胞结构启发而研究出的一种算法体系。

1.1 神经元

        神经网络让人觉得难以亲近的地方就在于他的实现原理,至少不如以前接触到的各种基于统计的算法那么直观,例如数据结构和基础算法中一些由加减乘除、比较、循环、分支、数据读写等基础操作组成的复杂算法。而神经网络和这种方式的感觉还是不一样的。

        所以先把神经网络中的一个最小单元——神经元拿出来谈谈。

        

        这就是一个最简单的神经元了,有一个输入,一个输出,所以它表达的含义和一个普通的函数没有什么区别。不过,通常一个神经元由“线性模型”和“激励函数”两个部分组成。

        假设神经元的函数表达为f(x)=x+1,则当输入为x=1时,输出为f(x)=2;输入为x=100时,输出为f(x)=101……很好理解

        那么接下来


        x既然可以是一个一维向量,那其实也可以是多维的。按照一维向量的处理方式,我们可以建立一个有n个输入项的神经元f(x),把它展开写就是f(x1,x2,x3...xn),然后函数的输出值output=f(x),将函数f(x)写成f(x)=wx+b

        这种方式也是神经元最核心的部分对x所做的线性处理,其中x是一个1*n的矩阵,而w是一个n*1权重矩阵,b是一个偏置项。直观来看,一个神经元的工作就是讲w和x作内积,加上b后产生一个线性输出。单个神经元工作起来基本就是这样,只不过后面还有一个激励函数而已(后面介绍)

        那么问题就来了,在神经元中,这个权重w是谁来定的?

        在第一章中所说的机器学习中,其实就已经有一种计算方法了。没错,利用机器学习的回归功能中所谈到的Loss函数来描述拟合和真观测的差异,即残差。


1.2 激励函数

        激励函数(actvation function)也是神经元中重要的组成部分。激励函数在一个神经元当中跟随在f(x)=wx+b之后,用来加入一些非线性因素。(找图贴图挺不妨方便的,这里就不贴各种激励函数的表达式和图像了,有需要可以百度下)

        Sigmoid函数:表达式

 或者写成 

        Tanh函数:双曲正切函数,表达式


        ReLU函数:ReLU函数是目前大多数卷积神经网络CNN(convolutional neural networks)中喜欢使用的激励函数,全名rectified linear units。这个函数的形式是,在原点左侧部分斜率为0,原点右侧是一条斜率为1的直线。它具有很多优秀的特性,所以很多网络中都会用到。

1.3 神经网络

        一旦多个神经元首尾相接形成一个类似网络的结构来工作的时候,那就可以被称为神经网络了。一般也没有人会规定网络必须有多少层,每层有多少个神经元节点,符合要求的网络设计说穿了都是根据需求、经验和相关理论试出来的。


        这是一个比较简单的神经网络结构。在一个神经网络中通常会分这样几层:输入层(input layer)、隐藏层(hidden layer,也叫隐含层)、输出层(output layer)。

        输入层在整个网络的最前端部分,直接接受输入的向量,它是不对数据作任何处理的,所以通常这一层是不计入层数的。

        隐藏层可以有一层或者多层,50甚至上百层的网络也有存在。

        输出层是最后一层,用来输出整个网络处理的值,这个值可能是一个分类向量值,也可能是一个类似线性回归那样产生的连续的值,也可能是别的复杂类型的值或者向量,根据不用的需求输出层的构造也不尽相同。

        有一点必须注意,在学习神经网络(深度学习)的过程中你会不断发现不同形式的网络,但是你极少能发现在这些网络的诞生过程中有完整的、严谨的、普适的、毋庸置疑的推导过程。“深度学习越学越像老中医:年轻的时候不敢轻易开方子,等熬成了老中医的时候才发现里面门道太深,深到研究了一辈子也没办法总结出完整的、可以精确推导的公式或定理,大部分情况只能通过自己的经验和实现结果调整药方。”

        了解到这里我心里一凉,哎,我一个理性的工科生竟然在研究生选了条最玄学的研究方向,下半辈子特么怕是要gg啊

2.深度神经网络

        深度神经网络(deep neural networks,DNN)的学习过程也就是我们常说的深度学习Deep Learning,这个Deep指的是神经网络的深度,也就是层数比较多。在传统的机器学习中,人们输入给模型的学习样本都是要经过高度提炼处理的向量内容,而不能像深度学习一样直接把一张图、一段语音、一段视频的多媒体资料给机器去学习,因此深度学习的“深度”,应该也意味着其能够学习到一些较直观的数据而言更加深层次的东西。

        在这里强调一下,在很多初学者中有一些误区,很多人会认为深度学习在任何情况下都优于传统的机器学习,但实际上并不是的。机器学习的指标描述更直观,运算数据量更小,具有良好的解释特性;而一些特征提取比较困难、数据量大、而且没法用线性关系或者统计概率关系直接描述的信息,则用深度学习处理会显得更合适。

3.深度学习为什么这么强

        神经网络,尤其是深度神经网络之所以这么吸引人,主要是因为它能够通过大量的线性分类器和非线性关系的组合来完成平时非常棘手的线性不可分的问题。

        (1)不用再提取特征:以往使用的朴素贝叶斯、决策树、支持向量机SVM这些分类器模型中,提取特征是一个非常重要的前置工作,需要清晰而干净的数据。而神经网络中,由于巨量的线性分类器的堆叠以及卷积网络的使用,它对噪声的忍耐力、对多通道数据上投射出来的不同特征偏向的敏感程度会自动重视或忽略,这样训练的样本就不需要人为处理了。

        (2)处理线性不可分:神经网络可以通过大量的线性分类器的堆叠使得整个模型可以将线性不可分的问题变得可分。神经网络的神经元可以有很多层,每层可以有很多个神经元,整个网络的规模可以有几千甚至几万个神经元,那么在这种情况下几乎可以描绘出任意的线性不可分的模型了,所以传统分类模型中无法通过简单的线性分类器和非线性分类器处理的复杂学习场景就能够通过海量的分类器的叠加来实现。

4.小结

        深度学习是一种前景非常好的应用领域,它几乎在任何一个细分领域都可以有比较好的应用,并且能够产生大量的剩余价值,发展生产力。而且随着计算机计算性能的不断提升,深度学习的应用也将积累更快,落地更廉价。我们有充分的理由相信,深度学习的发展将是未来几十年内世界科技发展的最为重要的领域之一。



本文的大量内容摘录自高扬所著《白话深度学习与TensorFlow》,仅作为本人学习过程中的摘录和心得记录,更多细节请购买此书


推荐阅读
author-avatar
十分风格的功夫_723
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有