易燃物汇聚 YouTube 有声书与书评
深度学习进阶:自然语言处理 封面

深度学习进阶:自然语言处理

斋藤康毅

1.4万人在读
20.4万字总字数
¥51定价

有声书与视频解读 YouTube视频解读 9

内容简介

《深度学习进阶:自然语言处理》是《深度学习入门:基于Python的理论与实现》的续作,围绕自然语言处理和时序数据处理,介绍深度学习中的重要技术,包括word2vec、RNN、LSTM、GRU、seq2seq和Attention等。本书语言平实,结合大量示意图和Python代码,按照“提出问题”“思考解决问题的新方法”“加以改善”的流程,基于深度学习解决自然语言处理相关的各种问题,使读者在此过程中更深入地理解深度学习中的重要技术。

读者书评

★★★★★

在飞机上浏览完了《深度学习进阶:自然语言处理》最后一章。如果要了解NLP,这本书无疑是非常好的选择。最近语言大模型(LLM)很火,为了进一步理解chatGPT,又重新捡起本书。去年初,简单浏览了这本书,当时确实没怎么细看,就想看看相关概念,这次比较详细地过了一遍,相关概念更清晰了。 作者还有另一本书,《深度学习人门:基于Python的理论与实现》,写得也很好,包括了深度神经网络的基本知识介绍和如何用代码实现,非常棒。 近年来,日本人写的技术书,确实质量非常高,值得我们尊重和学习。 本书沿袭了作者一贯风格,不依赖现成的库,全是直白的代码,以及相关原理的介绍,作为入门的书,是非常棒的,因为不需要去再额外构建其他知识。反而这样的书就是背景知识,是进阶的基础。 我从本书了解了NLP的几个核心概念: 1,单词的分布式表示。 2,构建单词分布式表示的两类方法:计数法,基于神经网络的推理法。 3,基于神经网络构建的embeding层。看到embeding数据,知道是啥意思了,为啥能简化计算。 4,如何降维数据,稀疏矩阵到稠密矩阵的转换,比如用SVD。 5,表达自然语言序列的RNN模型,以及优化的LSMT。 6,时序到时序的转换机制。 7,RNN在时序转时序的缺陷,以及引入注意力机制。 8,对Transformer的简单介绍。 本书对注意力机制的介绍非常浅,特别是自注意力机制,内容基本上不具有参考价值,文中提到了17年的论文《Attention Is All You Need》,就是有名的Transformer,可惜,没有讲清楚,一笔带过。这可能是作者写完了本书,要出版的时候,突然发现了Transformer风口的到来。这本书日本版是18年出版的,可以想象当时作者加入注意力机制是多么仓促。 作者在18年出版本书的时候,GPT和BERT还没有发放异彩,但,作者能已经预判到注意力机制的广阔前景,算是有很好的前瞻性了,因此紧急在书中加入注意力机制。 当然,这本书的这一点缺陷不能掩盖整本书的价值。 今天讲注意力机制的书和论文非常多了,包括BERT、GPT,都是在Transformer基础上构建起来的,引领了大模型的新时代。在NLP中,大模型已经发挥了超强力量,未来,大模型在视频领域必然会带来新的创新和更好的效果,拭目以待。 这本书中有很多NLP基础概念和机制的介绍,让我对NLP的概念理解更深刻,举例如下: 1,单词分布式表示构建的原理。创新单词的共现矩阵,然后转换为PPMI矩阵,再对PPMI矩阵做降维,用降维后的向量表达每个单词,单词的向量表示就是单词的分布式表示。 2,单词向量表示。用向量表示单词,可以更好地利用包括深度神经网络在内的算法,因此这种表示方法非常流行。本书介绍了两种方法,一种是基于计数,第二章重点介绍了这种方法,另一种是基于推理,就是本章开始介绍的方法,利用神经网络模型来做推理。 3.,NLP中的推理方法。其实就是基于周围的单词推测中心词的过程,这就是一种完形填空,只是用了神经网络的机制。 4,RNN。RNN是为了表达自然语言的序列。而word2vec是为了表达单词的分布,也就是word2vec本质上是为了构建每个单词的向量表达。单词向量表达通常作为作为RNN的输入。 5,时序数据。在现实世界中有很多,包括文本、音频、视频等。构建时序数据的任务也有很多,包括翻译、识别、模拟人行为等。 6,编码器。通常将时序数据转换成隐藏状态,这种隐藏状态就是编码后的一种向量,通常这个向量是固定长度。也就是,编码可以把任意长度的时序数据转换成固定长度的向量。 7,RNN,LSTM的缺陷。最大的问题就是在输入序列太长的时候会发生向量溢出。也就是,采用固定长度的向量,信息表达一定会存在一个限量,超过这个向量就会丢失信息,让编码的准确度受损。注意力机制成为更有选择! 强烈推荐!

★★★★★

这是一本非常好的技术专业书籍,主要介绍深度学习技术在自然语言处理领域的相关知识,对于我这个技术小白来说着实难啃。虽然啃得十分艰难,但也收获不少,通过自己对关键概念的理解,把重点总结下(总结的过程也很痛苦,肯定有不少理解错误): 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 模型。

★★★★★

阅读完的第一感受与收获总结: 🧠感受 对基础一般,理解力不是很好(暂且称为领悟力有些迟钝、滞后)的学习者较友好(关键是得耐得住性子读🉐下去,如何耐得住性子读下去呢?个人觉得最好带着很多“为什么”去读,边读边查阅自己不理解的知识点,最后用第一性原理进行理解会更容易记住)基本上也尽可能遵循了第一性原理方式将一些劝退人的数学公式、符号转换为方便理解的语言符号。 多读书的意义还可以是:通过从开始学习到现阶段时刻的不断积累之上,未来的某一个时刻的某一瞬间因为某一个触发点的触动,就会对之前某个阶段上怎么都不是很理解的那个点忽然醍醐灌顶(或许这就是大家所说的——教育的回旋镖?滞后性?)。这里,我觉得还是用杨绛老师的经典话解释最合适:“年轻的时候以为不读书不足以了解人生,直到后来才发现如果不了解人生,其实是读不懂书的。” 📖✍总结 如何耐得住性子读下去呢?带着“为什么”去读,边读边查阅自己不理解的知识点,最好用第一性原理(如何从根本出发推导复杂现象,第一性原理是“通向本质的路径)进行理解会更容易记住 比如,第一层面上的“LSTM(Long Short-Term Memory)层”直译为中文“长短期记忆”吗?再翻译一下“长时间维持短期记忆”->那什么叫“长时间维持短期记忆”?书中先指出传统RNN梯度在时间方向上反复相乘容易指数级衰减或爆炸,导致网络只能记住很短的历史信息,导致“短期记忆”无法延续这一问题的提出,接下来从LSTM内部结构通俗易懂方式的解释进行论证: (下面内容是AI进行总结) LSTM 在 RNN 的基础上引入“记忆单元”ct 以及三个门(遗忘门、输入门、输出门)。其中遗忘门 f 通过逐元素乘法 f⊙ct-1,有选择地保留或抹除记忆;输入门 g 则把新信息加到记忆单元上;输出门 o 控制记忆单元对隐藏状态 ht 的贡献。这样的设计让信息在记忆单元中以“线性组合+门控”的方式流动,而不是简单相乘。 因为记忆单元的更新和输出都通过门控线性变换,梯度在时间反向传播时不会被连续相乘的非线性激活削弱,从而可以在数百个时间步内保持不衰减。作者用“×”节点的梯度分析和“简略图示法”说明:被遗忘门标记为“保留”的记忆元素,其梯度几乎完整地回流到前面的时间步;相反,被标记为“忘记”的元素梯度被抑制。这种机制使得 LSTM 能够“长”时间(相对于传统 RNN)维持对短期记忆的准确保存与访问,即实现了“长时间维持短期记忆”。

★★★★★

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

★★★★★

这是我读过的关于自然语言处理最通俗易懂,理论和实践结合最好的深度学习图书,本书有如下特点: 简明易懂:本书内容精炼,聚焦深度学习视角下的自然语言处理,延续前作的行文风格,采用通俗的语言和大量直观的示意图详细讲解,帮助读者加深对深度学习技术的理解,轻松入门自然语言处理。 侧重原理:不依赖外部库,使用Python 3从零开始创建深度学习程序,通过亲自创建程序并运行,读者可透彻掌握word2vec、RNN、LSTM、GRU、seq2seq和Attention等技术背后的运行原理。 学习曲线平缓:按照“文字介绍一代码实现一分析结果一发现问题一进行改善”的流程,逐步深入,读者只需具备基础的神经网络和Python知识,即可轻松读懂。

★★★★★

靠着三本日本人写的深度学习的书勉强入门了,另两本是《深度学习的数学》和《深度学习入门》,这三本书将学习曲线拉到非常平缓,以至于我都能看懂[旺柴]。这几本书深得吾辈小白之心,基本每一个初学者觉得困惑的问题都给出了形象的解答。略有不足的地方是后两章质量略有下降,有些地方一笔带过解释得不够清晰,比如attention中的权重a为什么可以由单词向量hs和状态向量h点积求得,也许作者觉得读者读到这里应该掌握了自行求解的能力。不管怎么说,强烈推荐!

★★★★★

读后感:word2vec 提出了基于神经网络来构建单词分布式表示(向量)的方法,包含模型 CBOW 和 skip-gram,后续还通过引入 embedding 层和负采样技术改进模型。 RNN 网络用于处理时序数据,会在时序数据串行处理之间传递并维护内部隐藏状态。 LSTM 网络改进了普通 RNN,通过门控机制解决梯度消失问题,增加了输入门、内部记忆单元、遗忘门和输出门。 seq2seq 模型用于将一种时序数据转换成另一种时序数据,包含编码器和解码器。通过引入 Attention 层来“选择”重要的信息用于解码器生成下一个词。

★★★★★

分享一些个人看法: 1. 这本书写的比较简单,适合拿来复习或者对入门者比较友好。不过只能给你一个overall picture。 2. 需要深究的同学,适合和deep learning(Ian那本)。好像微信读书上面有上架那本 3. 前面的基础概念解释的还是很清晰明了的,如果还有疑问,推荐一个人的频道:  Statquest。一个北卡的大牛,可视化了很多统计学概念 Good good study, day day up^_^

★★★☆☆

大概浏览了一下,都是比较古早的技术,现在看就像考古,不推荐作为NLP入门书了。RNN好懂,可以看看;LSTM太复杂略过,没必要去深究,有这精力还不如去看rwkv和mamba。而由于成书较早,重量级的transformer也只是提了一下。

★★★★★

同样是走马观花看完了大概原理,跟着代码实操一遍会有更好的理解。印象比较深的首先一个就是单词的分布式表示。然后从RNN,LSTM,到Attention,基本上是为了解决现实中的突出问题,比如处理长时序,反复提到的梯度消失梯度爆炸,并行计算提高训练效率等。

书籍信息

作者斋藤康毅
译者陆宇杰
出版社人民邮电出版社
出版时间2020-10-14
ISBN9787115547644
分类计算机-人工智能
格式EPUB
完结状态连载中
章节数78