网站首页 > 文章精选 正文
深度学习近年来取得了前所未有的突破,2017年5月,谷歌用深度学习算法击败世界围棋冠军引起了全世界对人工智能的关注。在与谷歌开发的围棋程序的对弈中,柯洁以0︰3完败。这个胜利的背后是包括谷歌在内的科技巨头近年来在深度学习领域的大力投入,由此掀起了人工智能新一轮的发展热潮。深度学习本质上就是用深度神经网络处理海量数据。深度神经网络有卷积神经网络(Convolutional Neural Networks,CNN)和循环神经网络(Recurrent Neural Networks,RNN)两种典型的结构。
神经网络始于20世纪40年代,其构想来源于对人类大脑的理解,它试图模仿人类大脑神经元之间的传递来处理信息。早期的浅层神经网络很难刻画出数据之间的复杂关系,20世纪80年代兴起的深度神经网络又由于各种原因一直无法对数据进行有效训练。直到2006年,Geottrey Hinton等人给出了训练深度神经网络的新思路,之后的短短几年时间,深度学习颠覆了语音识别、图像识别、文本理解等众多领域的算法设计思路。再加上用于训练神经网络的芯片性能得到了极大提升以及互联网时代爆炸的数据量,才有了深度神经网络在训练效果上的极大提升,深度学习技术才有如今被大规模商业化的可能。
深度神经网络
传统的机器学习方法通常是先将数据进行预处理以形成各种特征,之后对这些特征进行分类,而分类效果在很大程度上取决于特征选取的优劣,所以人们会把大量时间耗费在寻找合适的特征上。与之不同的是,深度学习是把大量数据输入到一个极为复杂的模型中,使模型自行去探索有意义的中间表达形式。深度学习的突出优势在于能够让神经网络自主学习如何抓取特征,因而可以将其视作一个特征学习工具。需要特别注意的是,深度学习需要海量的数据来“喂养”,倘若训练数据较少,那么深度学习的性能未必会比传统的机器学习方法出色。
我们应当了解到,深度学习的核心组成部分是多层神经网络。现在先来深入认识一下神经网络。实际上,神经网络并非如想象中那般高深莫测,从本质而言,它属于机器学习的一种模型。首先,我们来说一下逻辑回归模型。逻辑回归模型是将输入变量依据一定的权重进行线性组合求和,接着对所得的值施加一个名为 Sigmoid 的函数变换,即 g(z)=1/(1+e-z)。
如上图,其中 x1、x2、x3 是输入变量,同时也是我们数据集中的特征。将它们进行线性组合可得到一个数值,再对这个数值进行 Sigmoid 函数变换,进而得到 yhat,如此便能够对实际的 y 进行预测。
逻辑回归模型在本质上属于浅层神经网络,其仅有输入层和输出层。输入层的数据经过线性组合后,施加一个被称为激活函数的函数,进而得到输出层的结果,可暂时将其称为“简单结构”。而当在输入层和输出层之间加入中间层时,一个严格意义上的神经网络便得以形成。
在输入层与输出层之间新增了一个隐藏层(Hidden Layer),此隐藏层包含三个神经元。在结构图中,这些神经元以节点形式呈现,并与前一层(输入层)的节点(x1、x2、x3)通过有向线段进行两两连接。如果我们把中间三个神经元分开看,每一个神经元的形式与逻辑回归模型图的形式完全相同。
x1、x2、x3 依据特定的权重比例进行线性组合,从而生成一个新的数值。接着,这个新数值会被施加一个激活函数,进而得到一个输出值。尽管图中未呈现施加函数的过程,但实际上该过程确实存在。中间层是由三个“简单结构”并行运行所产生的结果,并且将这三个结果存储于中间层神经元中,随后作为新的输入变量传递给下一层。这里的三个“简单结构”并行运行并非重复一个过程三次。虽然数据变量相同,但每个结构中线性组合的权重(即参数)并不一定相同。三个神经元的数值各不相同。将得到的三个数值作为输入变量传递给下一层后,在第二层中,将中间层计算所得的结果当作输入变量,再次进行“线性组合+激活函数”的操作,最终获得输出值。至此,这样一个两层的神经网络的计算过程便完成了。
神经网络具备多个隐藏层,构建深度神经网络即使用更多的层数,实际应用中可能会用到几十个甚至几百个隐藏层。经验表明,网络深度增加确实能提升模型准确率,几百层的结构通常比简单几层网络表现更出色。再来分析深度神经网络的结构,每个隐藏层的神经元数量可任意设定,可大于、小于或等于输入层变量个数,一般至少为 2 个,且每层数量可不相等。神经网络由神经元、网状结构和激活函数组成,通过网状结构将每一层信息传递给下一层,信息传递方式为通过线性组合生成新的神经元形式。看似复杂的神经网络,简单来说主要做三件事:一是对输入变量进行线性组合;二是套用激活函数;三是重复前两步。
“线性组合”与“激活函数”堪称神经网络的两大关键要素。不少人往往将神经网络视作一个神秘的黑匣子,觉得从输入到输出历经了极为复杂的计算程序。然而,一旦洞悉了这个计算过程,就会发现整个流程其实并不复杂,主要就是不断重复“线性组合”和“激活”这两个步骤。从输入端的 x1、x2 等数据到输出端生成 y 的这个计算过程被称为正向传播(Forward Propagation)。上述所描述的步骤正是正向传播的具体步骤。在已知各层权重参数的情况下,我们能够借助正向传播,依据已知的 x 来计算出 y。至此,我们清楚地了解了神经网络是怎样从输入逐步计算得出输出的。
神经网络的关键核心在于激活函数。激活函数能够使神经网络从线性转变为非线性状态。一旦不采用激活函数或者仅仅运用线性激活函数,便无法实现深度学习的目标,原因在于线性组合的线性组合依旧是原变量的线性组合。常见的激活函数包括 ReLU、Sigmoid、Tanh 等。当读者缺乏具体思路时,可以尝试选用以上几种主流的激活函数,尤其是 ReLU。该函数虽然较为简单,然而随着时间的发展,人们逐渐发现这个激活函数不但能在运算方面带来便利,而且在众多实际问题中的效果也是最为出色的。早期一些学者的论文里使用 Sigmoid 以及其他激活函数的部分,在如今的应用中大多都被替换成了 ReLU。
深度学习的优势
深度学习的一大突出优势在于整合了特征提取过程,能够自动学习数据集特征。特征工程在机器学习中至关重要,需在使用机器学习模型前构建合适特征集。然而,复杂多层的神经网络具备自主学习原始特征并进行特征工程的能力,在一定情况下可省去手动特征工程步骤。此结果极具吸引力,因人工进行特征工程耗时费力,需用统计方法研究特征分布和相关性等进行构建、筛选、整合及重组。追求良好特征集可显著提升模型表现,但完美特征集难以求得,因特征集选取可能性众多甚至无限。为获“最优”特征集,常需经历特征选择→模型评估→重新选择特征的反复循环过程。深度学习能从原始数据中学习特征,其背后原理大致为模仿生物学神经元传递过程,与人脑工作原理十分相似。
- 上一篇: 一文明白超参数的定义及其各种类型
- 下一篇: 改善图像处理效果的五大生成对抗网络
猜你喜欢
- 2025-01-15 从0开始实现目标检测——基于YOLOv5
- 2025-01-15 【人工智能】简单理解CNN卷积神经网络并python实现(带源码)
- 2025-01-15 Richard Sutton 直言卷积反向传播已经落后,AI 突破要有新思路:持续反向传播
- 2025-01-15 深入理解机器学习中的最大熵原理与Softmax函数
- 2025-01-15 技术干货!LLM工程师必读量化指南,可视化揭秘大模型如何压缩
- 2025-01-15 神经网络中的全连接层是什么?
- 2025-01-15 揭秘PyTorch神器:巧妙使用torch.nn.Linear提升深度学习模型
- 2025-01-15 深度学习:正向传播、反向传播
- 2025-01-15 Attention之SENet
- 2025-01-15 神经网络背后的数学原理:反向传播过程及公式推导
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)