易燃物汇聚 YouTube 有声书与书评
人工智能算法(卷3):深度学习和神经网络 封面

人工智能算法(卷3):深度学习和神经网络

杰弗瑞·希顿

954人在读
15.3万字总字数
¥57.54定价

内容简介

自早期以来,神经网络就一直是人工智能的支柱。现在,令人兴奋的新技术(例如深度学习和卷积)正在将神经网络带入一个全新的方向。在本书中,我们将演示各种现实世界任务中的神经网络,例如图像识别和数据科学。我们研究了当前的神经网络技术,包括ReLU激活、随机梯度下降、交叉熵、正则化、Dropout及可视化等。

读者书评

★★★★★

《人工智能算法(卷3):深度学习和神经网络》|杰弗瑞·希顿 一句话概括 这是一本系统梳理神经网络模型、训练算法和工程实践的技术书,从经典自组织网络、霍普菲尔德网络和前馈网络讲到深度学习、CNN、RNN、正则化、模型选择与可视化。 核心逻辑 全书沿着“模型结构—训练方法—深度架构—泛化控制—工程建模”展开: 1. 从神经元、网络层和激活函数建立基础模型。2. 介绍自组织映射、霍普菲尔德网络、玻尔兹曼机等经典结构。3. 深入讲解前馈网络、反向传播及其他优化算法。4. 进入深度学习、卷积神经网络和循环神经网络。5. 通过剪枝、正则化、Dropout和超参数选择控制泛化能力。6. 利用混淆矩阵、t-SNE等工具评估并理解模型。7. 最终把各环节整合为面向真实数据的建模流程。 核心思想是:神经网络不是简单堆叠更多层,而是数据表示、网络结构、目标函数、优化方法和泛化控制共同组成的系统。 核心内容 1. 神经网络的基本计算单元 人工神经元接收多个输入,为每个输入分配权重,再加上偏置并经过激活函数产生输出。 网络通常由三类层组成: - 输入层接收特征。- 隐藏层对信息进行逐级转换。- 输出层根据任务产生类别概率或预测数值。 激活函数为网络引入非线性。如果没有非线性,多层网络仍只能完成线性变换。 书中重点介绍ReLU。它在正数区间保留输入、负数区间输出零,计算简单,并有助于缓解深层网络中的梯度问题。 2. 不同网络结构解决不同问题 全书不仅介绍现代深度网络,也回顾多种经典结构: - 自组织映射通过竞争学习,把高维样本投射到低维空间,同时尽量保留邻近关系,适合聚类和数据探索。- 霍普菲尔德网络是一种循环联想记忆模型,可根据不完整信息恢复已存储模式。- 玻尔兹曼机利用随机单元和能量函数学习数据分布。- 前馈神经网络让信息从输入层逐层流向输出层,适合分类和回归。- 径向基函数网络通过样本与中心点之间的距离构造非线性响应。- RNN利用循环连接保存序列历史,适合时间序列等有顺序的数据。 这些模型反映了神经网络发展的不同思路:竞争、联想记忆、概率建模、函数逼近和序列状态建模。 3. 数据处理与权重初始化影响训练起点 输入特征的取值范围差异过大,会让优化过程变得困难,因此通常需要标准化或归一化。 权重也不能全部初始化为相同数值,否则同层神经元会不断学习相同特征。合理的随机初始化能够打破对称性,同时避免网络信号过早放大或衰减。 训练前需要明确: - 输入和输出的编码方式。- 特征是否需要规范化。- 分类与回归应使用什么输出结构。- 激活函数与初始化方法是否匹配。- 数据如何划分为训练集、验证集和测试集。 模型的问题有时并不来自算法本身,而是来自数据表达和训练起点。 4. 反向传播让网络学会调整参数 前向传播根据当前参数产生预测,损失函数衡量预测与真实目标之间的差距。 反向传播利用链式法则,从输出层向前计算损失对每个权重和偏置的梯度。优化器再根据梯度更新参数,使损失逐步下降。 训练过程可以概括为: 1. 输入一个批次的数据。2. 完成前向传播。3. 计算损失。4. 反向传播梯度。5. 更新参数。6. 在多个批次和训练轮次中重复。 深度学习的基础并没有脱离这一闭环,只是在网络结构、数据规模、计算能力和优化策略上更加复杂。 5. 优化算法决定学习方式 书中除反向传播外,还介绍模拟退火、弹性传播RPROP和莱文伯格—马夸特算法等方法。 - 模拟退火通过一定程度的随机探索,尝试跳出局部最优。- RPROP主要依据梯度符号调节每个参数的更新步长,降低梯度大小差异带来的影响。- LMA结合梯度下降与二阶近似思想,适合部分中小规模非线性最小二乘问题。- 随机梯度下降使用小批数据频繁更新参数,更适合大规模深度学习。 不存在适合所有任务的优化器。数据规模、模型大小、内存成本、收敛速度和泛化效果都会影响选择。 6. 深度学习依赖结构与工程条件的共同成熟 深度学习的发展不仅因为网络层数增加,也因为多项技术同时进步: - ReLU改善深层网络的梯度传播。- 随机梯度下降和小批训练提高可扩展性。- Dropout和正则化降低过拟合。- GPU显著提高矩阵和卷积计算速度。- 大规模数据为复杂模型提供训练基础。- 成熟工具降低了模型构建和实验成本。 深度网络能够逐层学习表示:前层识别基础模式,后层再将这些模式组合成更复杂的特征。 7. CNN利用图像的空间结构 全连接网络把每个像素分别连接到下一层,不仅参数很多,也忽略了图像的局部结构。 CNN通过三个关键机制改善这一问题: - 局部连接:卷积核只观察图像的一小片区域。- 权重共享:同一个卷积核在不同位置重复使用。- 池化:压缩特征图,保留较重要的局部响应。 书中以LeNet-5和MNIST手写数字识别为例,展示卷积层、最大池化层和稠密层如何组成完整的分类网络。 卷积层负责提取局部特征,池化层降低空间尺寸,稠密层根据高级表示完成最终分类。 8. 模型不仅要拟合训练数据,还要泛化 训练误差很低,并不代表模型能够处理新样本。网络过大、数据过少或训练时间过长,都可能导致过拟合。 书中介绍多种控制方法: - L1正则化鼓励更多参数趋近于零,可能产生较稀疏的模型。- L2正则化惩罚过大的权重,使参数分布更平滑。- Dropout在训练时随机屏蔽部分神经元,减少对特定连接的依赖。- 剪枝删除贡献较小的连接或单元,压缩模型复杂度。- 验证集和交叉验证用于比较模型及超参数。- 提前停止可以避免模型继续记忆训练集噪声。 模型选择的目标不是找到训练集上最复杂的网络,而是在预测能力、稳定性和计算成本之间取得平衡。 9. RNN为时间序列保留历史状态 普通前馈网络把样本视为相互独立,但时间序列中的当前值往往受到此前信息影响。 简单RNN把前一时刻的隐藏状态传递到当前时刻,使模型拥有一定的短期记忆。应用前还要设计合适的时间序列编码方式,例如: - 使用过去若干时间点预测未来。- 将连续序列切分成训练窗口。- 处理输入和输出之间的时间对应关系。- 避免把未来信息泄漏进训练特征。 简单RNN在长期依赖上存在梯度消失或爆炸问题,但它建立了序列神经网络的基本思想。 10. 评估与可视化帮助理解模型 分类任务可以使用混淆矩阵观察每个类别被正确识别或错误混淆的情况。相比单一准确率,它能暴露模型具体错在哪里。 回归任务则需要根据预测误差、异常值敏感性和实际业务代价选择评价指标。 t-SNE可以把高维数据或中间特征映射到二维空间,帮助观察样本是否形成聚类、类别是否重叠。但它主要是一种探索性工具,二维图上的距离和结构需要谨慎解释。 可视化的意义不是让模型自动变得可解释,而是为发现数据、特征和预测中的异常提供线索。 11. 完整建模是一套迭代流程 书中通过Kaggle等场景,将神经网络建模概括为一个反复迭代的过程: 1. 明确问题及评价指标。2. 清洗、规范化并划分数据。3. 建立简单基准模型。4. 选择网络结构和训练参数。5. 观察训练与验证表现。6. 调整正则化、网络规模和超参数。7. 分析错误样本和可视化结果。8. 在独立测试数据上做最终评估。 一个有效模型不仅要分数高,还需要能够复现、部署和应对新数据。 本书最值得关注的核心观点 神经网络建模最关键的能力,不是记住更多网络名称,而是理解“结构、优化和泛化”之间的相互制约。 网络结构决定模型能够表达什么;训练算法决定参数能否找到有效解;正则化、数据划分和模型选择决定这种解能否推广到未知样本。 因此,遇到模型效果不佳时,不能只靠增加层数。还应依次检查数据质量、输入表达、损失函数、梯度传播、学习率、过拟合程度和评价指标。深度学习是完整的实验系统,而不是单一算法。 一段话总结 《人工智能算法(卷3):深度学习和神经网络》从人工神经元、网络层、激活函数和前馈计算讲起,系统介绍自组织映射、霍普菲尔德网络、玻尔兹曼机、径向基函数网络,以及反向传播、RPROP、莱文伯格—马夸特等训练方法;随后进入由ReLU、小批训练、GPU和正则化共同推动的深度学习,重点拆解LeNet-5、卷积层、池化层、稠密层和MNIST图像分类,并进一步讨论剪枝、L1/L2正则化、Dropout、时间序列、简单RNN、模型选择、混淆矩阵与t-SNE可视化。全书最核心的启发是:神经网络的性能来自数据表示、模型结构、优化方法、泛化控制和评估流程的协同,真正可靠的深度学习实践不是盲目增加模型复杂度,而是通过可验证、可复现的迭代不断寻找表达能力与泛化能力之间的平衡。

★★★★★

用深度学习建模 为了不超出本书的范围,我们将根据我们的条目展示Kaggle竞赛的一个解决方案。由于GBM超出了本书的主题范围,因此我们将聚焦于使用深度神经网络。为了介绍集成学习,我们将使用装袋(bagging)的方法,将10个经过训练的神经网络组合在一起。像装袋这样的集成方法,通常会使10个神经网络的集成得分高于单个神经网络。 [插图] 16.2.1 神经网络结构 对于这个神经网络,我们使用了由稠密层和Dropout层组成的深度学习结构。由于这个结构不是图像神经网络,因此我们没有使用卷积层或最大池层。这些层类型要求紧邻的输入神经元彼此具有一定的相关性。但是,构成数据集的93个输入可能不相关。图16-6展示了该深度神经网络的结构。 [插图] 图16-6 参加挑战赛的深度神经网络的结构 如你所见,神经网络的输入层有93个神经元,它们对应数据集中的93个输入列。3个稠密层分别具有256、128和64个神经元。此外,两个Dropout层分别有256个和128个神经元,Dropout概率为20%。输出是一个Softmax层,对9个输出组进行了分类。我们将神经网络的输入数据归一化,以获取其[插图]分数。 我们的策略是分别在两个稠密层之间使用一个Dropout层。我们为第一个稠密层选择的神经元数量为2的幂,在这个例子中,我们使用2的8次幂(256)。然后,我们每次将其除以2,依次得到接下来的两个稠密层。这个过程分别得到256、128,最后是64。对第一个稠密层使用数量为2的幂的神经元,加上另外两个依次除以2的稠密层,这种模式效果很好。随着实验的继续,我们在第一个稠密层尝试了2的其他次幂。 我们用SGD训练了神经网络。该程序将训练数据分为验证集和训练集。SGD训练仅使用训练数据集,但它监视验证集的误差。我们进行训练,直到验证集的误差在200次迭代中都没有得到改善为止。至此,训练停止了,程序在200次迭代中选择了训练最好的神经网络。我们将这个过程称为尽早停止,这有助于减少过拟合。当神经网络不再提高验证集的得分时,可能会发生过拟合。

★☆☆☆☆

4.5.2写到:S型、ReLU和Softmax激活函数使用0~1的范围,而双曲正切激活函数使用−1~1的范围。 ReLu的输出范围,真的是0-1吗?!

★☆☆☆☆

谷歌翻译的都比这本书翻译的更好

书籍信息

作者杰弗瑞·希顿
译者王海鹏
出版社人民邮电出版社
出版时间2021-03-01
ISBN9787115552310
分类计算机-人工智能
格式EPUB
完结状态连载中
章节数114