易燃物汇聚 YouTube 有声书与书评
深度学习入门:基于Python的理论与实现 封面

深度学习入门:基于Python的理论与实现

[日]斋藤康毅

2.2万人在读
15.3万字总字数
¥29.99定价

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

内容简介

本书是深度学习的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,以及为什么加深层可以提高识别精度等疑难的问题。 本书适合深度学习初学者阅读,也可作为高校教材使用。

读者书评

★★★★★

千问帮忙对比这本书和《Python神经网络编程》: 你已经读完了《Python神经网络编程》,所以: 斋藤康毅这本书,你真正需要读的章节只有这些: ┌──────────┬───────────────────────┬─────────────────────────────────────┐ │ 章节 │ 理由 │ 跳过原因 │ ├──────────┼───────────────────────┼─────────────────────────────────────┤ │ 第2章 │ 感知机是理解神经网络 │ 你已经懂神经网络基本结构,当复习 │ │ 感知机 │ 的起点,但速读 │ │ ├──────────┼───────────────────────┼─────────────────────────────────────┤ │ 第4章 │ 核心:损失函数→数值微 │ 《Python神经网络编程》只给了朴素版 │ │ 神经网络 │ 分→梯度→SGD │ 本,这里有系统化的数学框架 │ │ 的学习 │ │ │ ├──────────┼───────────────────────┼─────────────────────────────────────┤ │ 第5章 │ 最有价值的部分——斋藤 │ 《Python神经网络编程》第1章的BP是简 │ │ 误差反向 │ 用计算图来直观解释BP │ 化版,这里的BP才是工程上真正用的 │ │ 传播法 │ │ │ ├──────────┼───────────────────────┼─────────────────────────────────────┤ │ 第6章 │ BatchNorm、权重复习、 │ │ │ 与学习相 │ 超参数验证 │ 《Python神经网络编程》完全没提这些 │ │ 关的技巧 │ │ │ ├──────────┼───────────────────────┼─────────────────────────────────────┤ │ 第7章 │ CNN结构、卷积层、池化 │ 这是《Python神经网络编程》没有的内 │ │ 卷积神经 │ 层、可视化 │ 容 │ │ 网络 │ │ │ └──────────┴───────────────────────┴─────────────────────────────────────┘ 你应该跳过的章节: - 第1章 Python入门 → 你有Python基础 - 第3章 神经网络 → 基本上是第2章的延伸,你已经有直觉 - 第8章 深度学习 → 历史和展望,不是工程实践 - 附录A → 计算图细节,第二次阅读时再看 读第5章的正确方式 第5章(误差反向传播法)是这本书的精华。斋藤用计算图来拆解BP——这是《Python神经 网络编程》完全没有涉及的部分。具体说: 《Python神经网络编程》的BP: 误差 → 反向传 → 逐层算梯度 → 更新权重 (你得到的:直觉上的理解) 斋藤的BP(计算图视角): 每一步前向计算 → 画成图 → 每个节点反向传导数 → 局部梯度×上游梯度 (你得到:工程实现能力) 读这一章的建议:边读边在纸上画计算图,不要只看。斋藤的书最价值的地方就是"用计 算图把反向传播拆成一块一块的"——读完之后你能从零手写一个带BatchNorm的MLP。 --- 一句话总结 《Python神经网络编程》给你的是直觉和项目感;斋藤的书给你的是数学框架和工程拆解 能力。你已经有了直觉,这本书的真正价值在于第5章的计算图 + 第6章的训练技巧——这两章是《Python神经网络编程》完全没有的内容。

★★★★★

很早就想系统学一遍深度学习的底层原理,却总被各种公式和框架劝退。直到翻开这本被很多人推荐的“鱼书”,才真正感受到:原来深度学习也可以这么好懂。 整本书最打动我的一点,就是不跳步、不炫技、对新手极度友好。作者没有一上来就堆理论、甩公式,而是从最基础的 Python 和 NumPy 开始,一步一步带着你手写神经网络,把每一个概念都讲得清清楚楚。 读完最大的收获,是终于搞懂了: 神经网络到底在“学习”什么? 前向传播和反向传播到底在做什么? 梯度下降为什么能让模型越来越准? CNN 又是凭什么在图像任务里这么强。 没有复杂框架,不用 PyTorch / TensorFlow,只用最朴素的代码,把黑盒子拆开给你看。每看懂一段,就跟着敲一段代码,这种从原理到实现的踏实感,是只调包、跑别人代码比不了的。 书里的逻辑非常顺畅: 从感知机,到神经网络结构,再到损失函数、梯度、反向传播,最后落地到 MNIST 手写数字识别和 CNN。 跟着走一遍,整个深度学习基础框架就在脑子里立起来了。 如果你和我一样: - 想入门深度学习,但数学一般、基础一般 - 只会调库,对底层原理一知半解 - 希望扎扎实实打牢基础,而不是浅尝辄止 那这本书真的非常适合你。 它不会让你立刻变成算法大神,但会让你真正入门、真正理解、真正敢动手。 把基础打牢之后,再去学框架、看论文、做项目,都会轻松很多。 一本温柔、扎实、诚意满满的入门好书,推荐给所有想认真学好深度学习的人。  

★★★★★

终于把这本书看完了。把深奥的东西讲简单,是最难的事情,但作者做到了。由于我离开开发十多年了,对数学中微积分,统计学,以及概率的功力也不够,所以刚开始读起来并不容易。但是有两样东西对我帮助特别大。一样是搭建Python 代码的运行环境,一样是打开ChatGPT。 对于任何难以理解的概念,或者某些公式的推导过程不理解,都可以简单的通过截图,扔给ChatGPT来询问解决。同时把书中的代码,或者ChatGPT生成的代码,在Python环境下运行一遍。这样的方法,让我离开开发十几年的中年人,完全也可以通过自学,基本了解了深度学习的各种概念,以及背后的运行机理。

★★★★★

我是看过了吴恩达的课以后,闲来无事读的动物书。书讲的很简洁,有基础再读反而能理解作者的编排和每句话的意思。 但作为入门书,作者这本书有时不起眼的一句话却含量很大,反而容易成为障碍。 这本书整理内容很细,每个人的思维路径也不太一样。所以我说的障碍之处很可能是个人谬误。 还是强烈推荐入门的人来学习这本书,原因也是因为作者讲的很细,面面俱到。有些开始不太理解的地方,适合回头再读。尤其是代码,有时候就理解当前的片面即可,作者就是为了解释当前的概念而已,并无太多延展,文字中也说的很仔细,如果需要理解全貌,读到书后面可以回头再集合起来看。

★★★★★

What I cannot create, I do not understand.”只有创造一个东西,才算真正弄懂了一个问题。 怎么才能更深入地理解深度学习呢?在笔者看来,最好的办法就是亲自实现。从零开始编写可实际运行的程序,一边看源代码,一边思考。 在光看数学式和理论说明无法理解的情况下,可以尝试阅读源代码并运行,很多时候思路都会变得清晰起来。对数学式感到困惑时,就阅读源代码来理解技术的流程。 学习新知识时,只听别人讲解的话,有时会无法理解,或者会立刻忘记。正如“不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之”,在学习新东西时,没有什么比实践更重要了。 神经网络的学习所说的“学习”是指从训练数据中自动获取最优权重参数的过程。

★★★★★

同样被推荐为机器学习入门书籍,李航的《统计学习方法》和周志华的西瓜书🍉《机器学习》范围会广很多,对读者还是有概率论、线性代数等最基本要求的。 而这本书不涉及任何框架,舍弃其他机器学习方法,直接聚焦近几年最火热的深度学习方法,对读者的要求也很低,非常适合零基础的小白,还有一本续作同样很推荐《深度学习进阶:自然语言处理》!

★★★★★

也是一本好书,作者的三本书都非常优秀。从零开始介绍如何搭建一个深度学习的框架。对于入门深度学习和掌握一些编程技巧非常有用,学习还是必须要掌握原理,虽然开源框架肯定比我们自己搭建的框架好。我可以不用自己写的框架,但我不能不会,否则不就真是个调参工程师了,和一直做CRUD也没什么区别了。顺便说下我的学习路径: 1.深度学习入门1,入门+先检测下自己是不是真的感兴趣 2.深度学习入门2,从编程的角度深入掌握深度学习 3.花书,深度学习的理论圣经,没什么可说的,必须学 4.动手学深度学习pytorch版,学一下框架 1和2我是按顺序学的,书不厚,学习曲线也非常平缓,基本上一周就能看完两本。 3和4是目前在学习中,路上看3,公司看4。 本书面向的读者:有一定python基础,但不了解深度学习的人; 不适合阅读的群体:已经很熟悉深度学习或者对深度学习的编程实现不感兴趣的读者;

★★★★★

读完打卡,作为医疗+LLM应用的学生算是半路跨学科来学习AI领域的知识,看这本书是为了更好地从底层入门知识来夯实深度学习基础。距离本书问世已经十年过去了,很多提到的技术和工具已经更新换代了,但好在仍能通过了解“初代机”的设计思路来明白新工具是如何迭代升级的。最后一章让人很感慨,十年前展望未来的应用和现在遥相呼应:一些设想方法现在看来一部分已经过时了,但是它们的思路在如今都有了验证,技术在范式和架构上演进,实现了从有无到好坏再到通用的自然升级。

★★★★★

- 《深度学习入门: 基于Python的理论与实现》 - `从神经网络学习权重思维`, 读书时也要把握住有助于当下理解的重点, 对核心章节赋予更高的权重 - `感知机/神经网络/反向传播等章节对理解LLM很有价值`, 当然书中也有一些过时的章节, 降低它们的权重 - Python, 数据科学领域, 深度学习框架, Anaconda发行版, 包含了侧重数据分析的很多外部库 - NumPy数值计算/数学算法/数组(矩阵)操作, Matplotlib画图的库, 数据结果可视化 - 感知机perceptron算法, 理解神经网络的重要入门思想 - 接收两个输入信号的感知机的例子, 输入信号, $x_1, x_2$, 权重, $w_1, w_2$ - $w_1x_1 + w_2x_2 > \theta$(阈值), 输出1, 否则输出0 - 令$b = -\theta$, 命名为偏置 - 权重是控制输入信号重要性的参数, 偏置是调整神经元被激活的容易程度的参数 - 单层感知机可以实现与门/与非门/或门等简单逻辑电路, 但却难以实现异或门, 因为它是线性空间 - 可以通过叠加层来实现多层感知机, 可以划分非线性空间 - 通过感知机可以实现与门/或门, 然后实现半加器和全加器, 接着实现算数逻辑单元(ALU), 最后实现CPU - 神经网络, 输入层/隐藏层(中间层)/输出层, 自动从数据中学习到合适的权重参数 - 激活函数(activation function), 阶跃函数(感知机使用的) - sigmoid函数, $s=1/(1+e^(-z))$, ReLU函数, 小于等于0时输出0, 大于0时直接输出该值 - 当激活函数为线性时, 加深网络并不会增加表达能力, 多层会退化为单层, 只有引入非线性激活, 多层网络才有意义 - 如果用线性激活函数$h(x)=cx$, 三层网络$y(x)=h(h(h(x)))$ - 可以用一层神经元$y(x)=ax, (其中a=c^3)$来代替, `多层退化为单层` - 神经网络学习的目标, 是找到使损失函数达到最小的权重参数, 损失函数是学习的标尺(评价指标) - 数据是机器学习的命根子, 数据集分为训练数据和测试数据 - 用训练数据学习, 用测试数据评价模型泛化能力(面对未见过的数据时的表现), 注意避免过拟合 - 学习机制是梯度法, 以损失函数为指标, 更新权重参数, 使损失函数的值不断减小, 更新的方向由函数斜率(梯度)决定 - 计算图把计算可视化, 可以直观把握计算过程 - 节点由局部计算构成, 每个节点只依赖自己的输入, 可保存中间结果, 局部计算的组合构成全局计算 - 正向传播, 从前往后计算得到损失(及各中间值), 反向传播, 从后往前计算得到各参数的更新梯度值 - 链式法则, 复合函数的导数=各组成函数导数的乘积, 反向传播能在计算图上逐节点传递梯度的数学基础 - 层的模块化, 将神经网络的组成元素实现为"层", 每层提供forward(正向)与backward(反向)方法 - 模块化的收益, 自由组装层, 即可轻松构建自己想要的网络结构

★★★★★

现在回头看本科生读的书,确实有点丢脸。 不过别怕,丢脸的事情我没少干。 书写得很不错,这是肯定的。连我这种白痴都能看懂,作者为了写好一本简单易懂的书,是下了功夫的。 第一章Python入门,没什么好说的了,是真基础入门了。 第二章感知机,作者要从感知机来引入神经网络。这里说一下,p31的例子说是使用曲线可以分开圆圈和三角形,我觉得这个说明不好。其实,多画几条线,或者说画折线,也可以分开那样的圆圈和三角形。事实上,神经网络还是在画的直线,只是画得特别多,形成了一个边数很大的多边形,以直代曲的话,也勉强可以说是曲线了。正是因为画的还是直线,所以关联的课程名称叫作线性代数。 第三章神经网络,正式引入了神经网络基本概念和书中将用来举例的项目——手写数字识别。 第四章神经网络的学习,介绍了数值微分和朴素的随机梯度下降算法。这里要注意,手写数字识别的例子,在没有GPU的机器上,运行这样的朴素的算法很耗时间。可以将项目更改一下,比如改成判断二维坐标系下各个点归属于哪个点的集合。自己生成数据,平面上随机生成距离较大的几个中心点(4-10个都可以),在中心点周围生成距离较小的点集(若干个,几千几万个),在这里面自己选择部分训练数据,训练出权重,然后进行全量测试,这样每次训练和测试都更快。(比起每个图片28*28个输入参数,这个只有x,y坐标两个输入参数。) 第五章误差反向传播法,这个当然是重点了,书上举了双层网络实现的例子,这个必须自己写代码实现一下了。熟悉高等数学中求偏导数的读者应该很容易理解这个方法。其中梯度可以理解为,为了最快下降,各个方向维度应该下降的对应比例。所以,如果只有一个变量,梯度是没有意义的。(每次下降也都是要乘以学习率的。) 第六章与学习相关的技巧,这里当然是假定你的神经网络已经会学习了,因为这里都是讲各种优化技巧。如果你自己写的代码连20%准确率也没有(手写数字识别瞎猜应该是10%的准确率,有20%说明至少不是瞎猜的),那还是继续第一到第五章,或者直接换本书吧。 第七章卷积神经网络,其实这一章内容很好理解(但是很不好写代码),不过感觉对于初学者,还是要看看视频或者问问AI具体的理解,尤其不要对多个滤波器多个通道时的情况有误解。这章内容只要不误解了,就很容易懂。其中还有一个21层的深度神经网络,训练非常耗事件,建议有GPU的读者尝试(或者晚上睡觉时跑程序)。 第八章深度学习,可以说作者是在聊天,也可以说是在介绍更深入内容的方向。 总之,这确实是我AI学习入门的第一本书,我算是读完了,也基本读懂了。 其中的双层网络我手写了C++代码运行,能达到96%接近97%的准确率(运行很快的)。第七章的21层的深度神经网络我本来想手写C++代码的,结果发现要完全C++手写,几乎要实现一个张量库,还是经过优化的张量库,只能放弃了。不过我运行了别人写的python代码,运行了一个晚上,第二天起来看到确实是大于99%的准确率。 等我把这个作者《深度学习入门》(1-5)一套书五本,加上《动手学深度学习》和<Build A Large Language Model (From Scratch)>共七本书看完看懂,我就应该真的算是入门了深度学习了吧。

书籍信息

作者[日]斋藤康毅
译者陆宇杰
出版社人民邮电出版社有限公司
出版时间2018-07-01
ISBN9787115485588
分类计算机-计算机综合
格式EPUB
完结状态连载中
章节数73