当前位置: 首页 > news >正文

深度学习进阶:自然语言处理的推荐点评

斋藤康毅的书籍

点评0

本书及其前作《深度学习入门:基于Python的理论与实现》是最好的深度学习入门书。深度学习技术并不艰深,跟着作者齐藤康毅直接从底层源代码造轮子反而是最高效的学习方式。正如物理学家Feynman所说,凡我不能创造的,我就不能理解。对于理工科毕业生,具备基本的线性代数和微积分,会些python和numpy,这两本书应该一两个月就能学完(这次二刷用了一周时间)。数学和物理难在概念太过抽象在现实中难以对应,实验设备稀缺使得没有条件去动手形成直观的理解和记忆。而大语言模型前的深度学习技术,代码数据开源,几万元的电脑就能反复实验,学会不难。
作者从word2vec、RNN、LSTM、Seq2seq到Attention技术层层改进,一砖一瓦的搭出一个可用的语言模型。作者对算法代码、网络结构图以及正向传播和反向传播的计算图的讲解都十分详细,对数组的维度和大小,数据传递等细节也有很好的说明。看完本书对调包看懂文档也是有帮助的。对于理解RNN和LSTM,比其他教程清晰很多。例如,RNN中虽然截断反向传播算法使得反向传播会被截断,但正向传播的隐状态是不截断可以一直往后传的,所以RNN的mini-batch数据准备不能随机打乱,而要保持时序顺序输入。书中也给出了完整的数据准备代码。这点在其他书中没有看到过。
强烈推荐!

点评1

我是在《深度学习的数学》之后读的这本《深度学习的进阶:自然语言处理》。前者介绍了人工神经网络的基础原理和相关的数学知识:线性代数和微积分。后者则讲了用于时序数据处理(尤其是自然语言处理)的RNN(循环神经网络)的原理和实现方法,以及对于RNN的改进(重点包括LSTM和Attention)。此外,前者侧重讲解基本原理,后者除了原理还有算法的编码实现。
词嵌入(word embedding)是指用密集向量来表示单词,从而能用于人工神经网络计算。CBOW(continuous bag-of-word)是一种生生词向量的人工神经网络方法。它是用推理的方法取代了按n-gram计数法来计算词向量。
RNN的主要思路是用当前时刻的输入和网络在前一时刻的输出一起计算当前时刻的输出,所以任何时刻的输出都包括了之前所有时刻的信息。
不过,在反向误差传播过程中会存在梯度爆炸(梯度指数级增加)和梯度消失(梯度指数级减小)的问题,使得其实际运行效果不佳:不能很好地学习长时序的数据。可以使用梯度裁剪(gradients clipping)解决梯度爆炸的问题。LSTM(Long Short-Term Memory)则是解决梯度消失的主要方法。LSTM是在普通RNN中增加一个内部记忆层,循环计算时一直传递该向量,与前一时刻的输出向量、当前时刻的输入一起参与计算当前时刻的输出,同时也更新当前时刻的记忆向量。
Attention是对LTSM的进一步改进,它给记忆层叠加一个权重向量,以突出其中的重要元素,进一步改进了网络学习长时序数据的能力。
RNN(LSTM)的另一个问题是只能按时序计算,不同时间段不能并行。Transformer是关于如何去除RNN的研究结果,其核心就是Attention。
当下,我们学习这些内容觉得是条理清晰和理所当然的,但是如书中所说:“第一个想到是很难的”。作者梳理这些知识肯定也不容易。

点评2

这是一本非常好的技术专业书籍,主要介绍深度学习技术在自然语言处理领域的相关知识,对于我这个技术小白来说着实难啃。虽然啃得十分艰难,但也收获不少,通过自己对关键概念的理解,把重点总结下(总结的过程也很痛苦,肯定有不少理解错误):
1、费曼:What I cannot create, I do not understand. 凡我不能创造的,我就不能理解。这句话总结的非常好,尤其是对以应用为核心的技术,想要弄清楚,就需要躬行实现,从零开始构建,理解结构和原理是关键。
2、神经网络:神经网络就是一个函数,主要的处理是:学习和推理,先学习,再利用学习好的参数进行推理。学习任务就是找函数的最优参数,推理任务就是完成问答,神经网络的学习目标就是找到损失最小的参数。
3、学习和推理:推理(预测)的过程,输入层->输出层,就是正向传播,即前馈神经网络。学习(反思)的过程,输出层->输入层,就是反向传播,传播数据(梯度)。
4、损失与降低损失:神经网络学习效果的指标是损失 loss,也是性能指标。损失即问题,即预测数据与正确数据之间的误差,通过“预测->产生误差->减小误差”(提出假设->发现问题->解决问题)的闭环来进行学习和迭代。降低损失:用“梯度下降算法 gradient descent”降低损失 ,梯度指向当前权重参数所处位置中损失增加最多的方向,通过将参数向该梯度的反方向更新,可以降低损失。将向量各个元素的导数罗列在一起,就得到了梯度 gradient 。向量、导数、张量的导数称为梯度。
5、单词向量化:通过测量单词的向量表示的相似度来表示词义的相似度,让计算机能理解我们的自然语言。常用方法:余弦相似度 cosine similarity 。余弦相似度表示:两个向量在多大程度上指向同一方向。相同方向,余弦相似度为1;方向完全相反,余弦相似度为-1 。
6、向量表示:基于计数和基于推理两种方法,两种方法都基于分布式假设:单词含义由上下文决定,这个假设非常重要。基于计数:一次性处理全部学习数据,基于推理:使用部分学习数据逐步学习。
7、语言模型、生成式与马尔可夫性:语言模型 language model 给出了单词序列发生的概率。生成式的根本是联合概率(多个事件一起发生的概率),联合概率可以由后验概率的乘积表示。马尔可夫性是指未来的状态仅依存于当前状态,当某个事件的概率仅取决于其前面的N个事件时,成为 N 阶马尔科夫链。
8、RNN循环神经网络:前馈 feedforward 是指网络的传播方向是单向的,前馈网络不能很好处理时间序列数据,于是 RNN 循环神经网络应运而生。RNN 循环即反复并持续,让数据有了回路,RNN一边记住过去的数据,一边更新到最新的数据。RNN 不擅长学习时间序列数据的长期依赖关系,因为BPTT(backpropagation through time 基于时间的反向传播)会发生梯度消失和梯度爆炸。
9、LSTM:LSTM Long short-term memory(长短期记忆),可以长时间维持短期记忆。梯度裁剪对解决梯度爆炸有小,LSTM等Gated RNN 对解决梯度消失有效。
10、seq2seq :seq2seq 是一个时序数据转换成另一个时序数据。RNN能生成文本,组合两个 RNN 就能实现 seq2seq,有两个模块:Encoder编码器+Decoder解码器,编码器 = embedding + LSTM,解码器=embedding + LSTM,替换编码器中的 LSTM 为 CNN 循环神经网络,则能实现图像识别。
11、Attention 机制:注意力机制 Attention mechanism ,预计该机制,机器能像人一样,将“注意力”集中在必要的信息上。seq2seq 中使用编码器对时序数据进行编码,然后将编码信息(固定长度的向量)传递给解码器,固定长度就是最大瓶颈。Attention技术的引入,核心是改造编码器和解码器,能很好的解决这个问题。
12、Transformer 模型: Transformer 是在“Attention is all you need”论文中提出的,Transformer 不用 RNN ,而用 Attention 进行处理。Transformer 是基于 Attention 构成的,其中使用了 Self-Attention 技巧。OpenAI 打造的 GPT 模型,最核心的就是 Transformer 模型。

http://www.lryc.cn/news/578609.html

相关文章:

  • (LeetCode 面试经典 150 题) 42. 接雨水 (单调栈)
  • Gartner《Choosing Event Brokers to Support Event-DrivenArchitecture》心得
  • 振荡电路Multisim电路仿真实验汇总——硬件工程师笔记
  • .NET跨平台开发工具Rider v2025.1——支持.NET 10、C# 14
  • K8s Pod调度基础——2
  • Langgraph 学习教程
  • 位运算经典题解
  • python+uniapp基于微信小程序的流浪动物救助领养系统nodejs+java
  • 用 YOLOv8 + DeepSORT 实现目标检测、追踪与速度估算
  • SeaTunnel 社区 2 项目中选“开源之夏 2025”,探索高阶数据集成能力!
  • 华为设备 QoS 流分类与流标记深度解析及实验脚本
  • flv.js视频/直播流测试demo
  • 欢乐熊大话蓝牙知识24:LE Secure Connections 是 BLE 的安全升级术
  • 视频内存太大怎么压缩变小一点?视频压缩的常用方法
  • Nginx重定向协议冲突解决方案:The plain HTTP request was sent to HTTPS port
  • Apache HTTP Server部署全攻略
  • 第八十六篇 大数据排序算法:从厨房整理到分布式排序的智慧
  • DBA 命令全面指南:核心操作、语法与最佳实践
  • 爱回收平台接口开发指南
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(七)
  • 打造 AI 产品的前端架构:响应式、流式、智能交互三合一
  • 基于SSM万华城市货运服务系统的设计与实现
  • OpenCV CUDA模块设备层-----反向二值化阈值处理函数thresh_binary_inv_func()
  • Python学习Day48
  • golang generic 2022-04-13
  • 技术学习_人工智能_1_神经网络是如何实现的?
  • IDE全家桶专用快捷键----------个人独家分享!!
  • 02.SpringBoot常用Utils工具类详解
  • pytorch学习—7.处理多维特征的输入
  • 通达信【极弱强势指标与股道波段交易系统】幅图