Continue Discussion 79 replies
Mar '21

zppet

对比着第一版,阅读了本节,总觉得读起来很“卡”,不如第一版来的自然而易于理解(不仅是文字翻译上的“卡”,整个行文逻辑也不如第一版)。
第一版(3.4. softmax回归)读起来像中国话,第二版看起来像是由英语翻译过来的,特别别扭。
不知道是不是我自己阅读理解的水平问题。 :roll_eyes:

7 replies
Mar '21 ▶ zppet

goldpiggy

Thanks @zppet for your feedback, 由于时间限制,这一版有点仓促。 如果哪些语句可以改进,请发 PR 做 d2l 的 contributor!

3 replies
May '21

whistlenow

建议把3.4.7.2. 的惊讶改为“信息量”,这样更专业,然后熵是一个分布的信息量的期望,描述了分布的不确定性,即混乱程度

2 replies
Jun '21

Renjie_Hu

请问公式3.4.9最后一步是怎么推过来的呀:
貌似Yi直接都等于1了?

1 reply
Jun '21

guo

3.4.7怎么来的,一脸懵逼…

4 replies
Jul '21

pilipala276

喔,这个对熵和交叉熵的形容,有点过于妙了

Aug '21

lhyakn

关于本节中的式(3.4.6)和式(3.4.7)中的数学符号P改成符号L是否更好?因为我相信这里应该强调的是似然\可能性(likelihood)而不是概率(probability),既然我们这里讨论的是最大似然估计。

Aug '21

zppet

3.4.6等式两边同时取log啊,乘法就变加法了

Aug '21

aaronshi2017

问题都挺难的,只做了第一道题,二阶导数是softmax(Oj)+(softmax(Oj))**2

3 replies
Aug '21 ▶ Renjie_Hu

aaronshi2017

Y是独热向量,无论是哪一个Yj,只有Yj=1,其他都是0, 所以最后总和是1

Aug '21

aaronshi2017

关于3.4.8, 不太明白等式右边yj×log(y^j)里面的第一个yj 怎么出来的

2 replies
Sep '21 ▶ aaronshi2017

zzz_jjj

第一个yj 是真实y的独热编码的第j位 不是0 就是1

Nov '21

MatrixLyz0623

老实说,感觉是机器翻译一样。。。
读起来非常生涩,估计是我水平不够= =

Nov '21 ▶ aaronshi2017

crying_cat

softmax(oj) * (1-softmax(oj))

2 replies
Nov '21 ▶ guo

s-charvin

Dec '21

Qiang_Hu

image
报告一个错误,然而“我们”

Dec '21

SupritYoung

请问如何理解“梯度是真是概率和预测概率的区别”这句话?

1 reply
Dec '21

pytorchNoob

3.4.6中的公式log不写底数看起来好奇怪,感觉应该写ln,后面求导直接用的ln

Dec '21 ▶ aaronshi2017

Ethan

大佬,能看看你的过程吗,我不会做哈哈……

Dec '21 ▶ crying_cat

11163

对咱俩的答案一样,没问题?这个还有20的限制吗

Jan '22

shayneliu

3.4.7建议解释下,看的一脸懵逼,下面的回复解释的也不太清晰

Jan '22

xiaodi

这一节分类标签,(鸡,猫,狗),上下文不一致。

Jan '22

haowei_liu

请问“课后联系”的代码在哪里可以下载?或者文档也可以

Jan '22 ▶ goldpiggy

richard001

image

Jan '22 ▶ goldpiggy

richard001

image
这部分不少人读不懂,感觉不是很通透,希望解答下

Feb '22

zxhd863943427

@richard001 @shayneliu @aaronshi2017

@goldpiggy 顺便一提,我能把这个插入到源文件中吗?我觉得目前的解释有点过于精炼了……

5 replies
Feb '22 ▶ zxhd863943427

951822287

好棒!懂了。不过3.4.7中,请问为何image 直接就相等了呀。不理解

1 reply
Feb '22 ▶ 951822287

zxhd863943427

这是一种简略的写法,实际上是新定义了一个函数,也就是图片 ,使其等于图片

1 reply
Feb '22

Stanley

请问我应该如何发“PR”呢?页面上好像没有找到这个选项,谢谢!

1 reply
Mar '22 ▶ Stanley

zxhd863943427

应该在github的界面上发,这里是没有的

Mar '22

Fox

我尝试做了一下第一题和第三题,也不知道对不对,我把这一章其它题目自己做的过程放在我的知乎里了《动手学深度学习》第三章,本人水平有限,做题过程也许有错,但是希望对大家有些许帮助~

3 replies
Mar '22 ▶ Fox

Fox

Mar '22

HeartSea15

###########################################################################

3.4.9公式的第二行到第三行中,为什么yj的求和在第一项中去掉了,在第二项中保存下来了?????

2 replies
Apr '22 ▶ HeartSea15

skbao

第一项后面是k,所以可以直接加了,加起来是1,所以省略

Apr '22

asdgre12

能否用神经网络去拟合pytorch中内置的损失函数BCELOSS,如果能网络结构应该是怎么样的》?

Apr '22

Little_Blue

请问3.4.6.2损失函数求梯度为什么是对o_j求导,而不是对参数求导呢?

1 reply
May '22

zgpeace

pytorch里有错别字,然而我妈 → 然而我们

May '22

tiejiankudan

3.4.7到3.4.8的推导:输入[x1, x2, …, xd]到网络中得到输出[y’1, y’2, …, y’q],注意这里的每个输出y^i都是已经使用softmax归一化的概率。这时我们样本的标签对应为[0, 0, …, 1, …],就假设第i类为1好了,即yi=1,那么这时 p(y=i | X) = y’i。那么我们如何写成一个一般化的式子表示p(y=i | X)的概率呢?不妨这样表示 p(y = i | X) = (y’1 * y1) * (y’2 * y2) * … (y’i * yi) …(y’q * yq)。这样的话我们就可以得出极大似然估计的表达式了,即3.4.7 和 3.4.8。(‾◡◝)

Sep '22

syc

AttributeError: module ‘torch’ has no attribute ‘synthetic_data’
AttributeError: module ‘torch’ has no attribute ‘set_figsize’
我在运行代码时出现这样报错有大佬可以帮我解析一下吗?抱歉我是个编程小白

Nov '22

Yike_Tan

楼上很多对3.4.7怎么推到3.4.8的讨论,我个人一开始没理解用极大似然怎么推出这个条件概率值的表达式,但是看了一下@zxhd863943427的推导也理解了:
极大似然是通过改变模型的参数θ,使得观测的事件发生的概率最大,这里θ就是估计的y的概率分布,所以要改变y的分布的值(特指yj情况下的y*)来使得发生事件(指这里的一个个样本,相互对立假设下概率值直接相乘)的概率最大,上述概率都是指给定x下的条件概率。
我就补充这个理解吧,具体计算再去看@zxhd863943427写的回答应该能看得更懂一些。(有错请指正我,概统已经是一年前学的了)

Jan '23

geniuszxd

关于线性层和非线性层,不知道我理解的对不对,请大家批评指正。
这个模型包含了一个全连接层(线性)和一个softmax层(非线性)。
深度学习中只有线性层的情况下是无法作用于复杂问题的,而有了softmax层作为非线性层,就可以不加relu或者sigmoid层,也可以跑出正确的结果。

Jan '23 ▶ zxhd863943427

BYSuccess

2 replies
Feb '23 ▶ BYSuccess

KuXingRen

我的理解是,P(y’i | x’i) 描述的是一个概率,它的结果是一个标量而不是向量,所以 log P(y’i | x’i) 与 y_hat 'i 之前是无法划等号的。
根据 3.4.1 中的内容可知,每种类别对应的独热编码是唯一的,即第 n 个分量为 1 的 y 只有一个。或者说,独热向量 y 描述的是一个事件A,若 y 的第 n 个分量为 1 ,则事件 A 表示输入的 x 为第 n 类。
所以,假设 向量 y’i 的第 n 个分量为 1 ,它的概率应该为 P(y’i | x’i) = P(y_n | x) = y_hat_n
希望对你有帮助

Mar '23 ▶ zppet

wangweizaibeijing

我也有这个感觉,为什么第一版读起来很流畅

Apr '23 ▶ BYSuccess

Emma-1123

同样的疑惑,看到这块内容,感觉这里的公式表述不是很严谨,容易让人理解成一个向量。

Apr '23 ▶ crying_cat

harry_more

我推出来也是这个答案,看起来大家应该都差不多

Apr '23 ▶ Fox

L2DO

兄弟写的很详细,我想的是如果把你第一题第二问中的o换成y会不会简洁一些,而且题干中要求使用二阶导数表示。还有第一题第一问,为什么前面对oj求二次导,后面又对oi求导了?没看明白

Apr '23 ▶ Fox

L2DO

在兄弟贴中补充一下第二题我的浅薄理解:第一问将概率编码为二进制,特别是概率相等情况下,由于存在小数二进制编码问题从而存在精度问题,对于1/3无法用二进制编码精确表示,那么为了保证概率之和为一,编码后的概率将不再相等。第二问,使用哈夫曼编码两个独立的观测数据会发生什么?联合编码n个观测值呢?我觉得哈夫曼编码虽然能解决无损问题,但对于多个观测值需要建立庞大的编码表。这个问题关键应该在于独立性和联合性,我猜测这种编码同时存在无损概率表示,且满足独立可乘性质。然而这种编码是什么已经超出我的知识范围了。。。

1 reply
May '23 ▶ whistlenow

sun_quan

我恰恰认为用惊讶很好啊,非常通俗易懂啊。。。

Jul '23

Stephen_Tao

想问一下,为什么要对 O_i 求导呢?有什么意义

Jul '23

Sijie_Shuai

公式(3.4.6)的补充:

Aug '23 ▶ zxhd863943427

yesh

这个理解其实还是有比较大的偏差的……其实在英文版评论里已经有人解答了。


简洁版:“概率频率”(概率的频率次方)是有明确意义的,不需要假定只有一个分量为 1。
更详细一点的话:

Sep '23 ▶ Little_Blue

123yonghu

应该是因为链式法则的缘故。求梯度最终是要对参数求导的,但是对参数求导的过程中必定要经历损失函数对o_j求导,然后o_j再对参数求导的过程。

Sep '23 ▶ HeartSea15

123yonghu

因为q维向量y是一个单位向量,所以y的元素y_j的取值要么是0要么是1且只有一个1,所以y_j的求和是1

Oct '23

V0idk

3.4.8这个跳跃我觉得挺逆天的, 生怕别人看得懂还是咋地

Nov '23 ▶ zppet

Alden_Z

确实 我都得对着英文原版看,翻译水平真的好差,

Nov '23

jiangzhaojie22

我还以为只有我看得蛋疼原来大家都蛋疼 :rofl:
中文版文字表达前面看得还好,现在越看越像机翻
内容总有莫名其妙的跳脱,对基本功和推理能力要求太高,有时看着看着得停下来消化半天

Nov '23

xueAI

从新看了一下第一版这一章节,第二版确实没有第一版清晰

Dec '23 ▶ zxhd863943427

kernelleaven

这样的公式推导应该是个特例,本质上应该是单个样本的信息量等于交叉熵

Mar '24 ▶ zxhd863943427

caiyizhang

滥用n,看得一头雾水,滥用n,看得一头雾水

Mar '24

Lollins7


这里应该是$\mathbf{b}\in \mathcal{R}^{n\times p}$

May '24 ▶ zppet

SongZihui-sudo

的确,第一版读的顺畅,内容过度也更自然。

May '24

t11

关于3.4.7,在3.4.6中,因为概率向量是一个(0,1,0)的向量,因此发生y_j的概率P就是标签乘以预测值即y_i×y_hat,比如类别2,预测(0.1,0.2,0.7),那么准确预测的概率就是1×0.2,带入3.4.7的中间部分就可以得到信息熵公式

May '24

mp91

感觉这一小节的顺序有点凌乱,从3.4.7到3.4.8那一步转变很生涩。
通读下来,其实应当是先要介绍信息熵的概念,然后再来介绍 softmax 的损失函数,这样的顺序会更加让人读懂一些。当然,如果能顺带着讲一下 KL散度 的定义(其实信息熵那一小节已经简单介绍了这个概念),让后讲一下 softmax 和 logistic 损失函数的关系就更好了。

Jun '24 ▶ guo

nocanstillbb

1.两边取对数,把“积乘”变成积分, abc取对数后变成 log (a+b+c)
2.最大似然估计,需要让值尽可能大,确定最优的x,两边都*-1后,变成需要让值尽可能的小,确定最优的x

Jun '24 ▶ aaronshi2017

nocanstillbb

one-hot 向量 所有概率总和为1, 不是0就是1,把通过softmax函数后预测值\hat_y为底数,指数为0的项 \hat_y^0 = 1 指数为1的项 \hat_y^1= \hat_y 所有指数项相乘 ,所有项相乘结果为y, 这是预测y概率分布向量, 取对数后, Log \hat_y ^ y 把真数提取出来
y Log \hat_y, (就如同 log 100 = 2 * log 10 = 2*1 = 2)

Jun '24 ▶ zppet

tracy_david

读完之后,再来看评论,发现有相似感受的读者。的确,这版的表达别扭!

Jul '24 ▶ aaronshi2017

g_tan

就是求完导数之后去凑softmax(oj)就行,就是注意那个求和里只需要对exp(oj)那一个量进行求导,不要漏了

Sep '24 ▶ guo

kh_h

Nov '24 ▶ zxhd863943427

zcxxj

请问这里(也就是3.4.7式的第二个等于号)确实是定义的意思吗,书上定义的等号有些地方不写def真的让人难懂

Jan '25 ▶ SupritYoung

Austin

真是的结果 和 模型生成的结果,是相似的,但是不完全一样,那么损失函数就会有梯度,就是有差异,才会有梯度,要不然梯度就是0了

Jan '25 ▶ L2DO

ButuSun

补充一下,哈夫曼编码可以简单理解为一颗二叉树,从树根开始,向左走记0,向右走记1,走到叶子的时候记录叶子结点的编码。
下面这个树中,从左到右的编码依次为00,01,1.


但这里是错的,为什么?
需要来考虑一下哈夫曼树的构造过程,每次选择两个概率最小的节点,然后建立它们的父节点,将父节点替换到原先的节点集合中,重复以上过程直到集合中只有一个节点(即根节点)。
所以,就回答了同样都为1/3的三个节点,没法使用哈夫曼编码来构造。

Jan '25

pizzacrystal

1 reply
Jan '25 ▶ pizzacrystal

pizzacrystal

Jan '25 ▶ goldpiggy

v-xiacli


我感觉这里y^{(i)},y^{(i)}{j}, y{j},\hat{y},\hat{y}_{j} 虽然形式相似,但实际上是完全不同的东西。能否在公式前面把整个变量的定义重新声明一下。

May '25

ninuozhiyu

关于解释softmax中交叉熵损失函数的由来,
预测概率之所以可以被看成当前值在已知数据下的概率,应该是与极大似然的思想有关

Jun '25 ▶ zppet

PenguinZZH

同感,第二版读起来很别扭,甚至有些分散我的注意力 :sleeping:

Nov '25 ▶ zppet

geekchuang

这书看了一会,有点看不下去了,全是公式和推导,很容易陷入到复杂的细节中。真正的关注点应该是思想,比如softmax的核心是分类,有哪些优势等

11 Jan ▶ whistlenow

Adam8en

我觉得不用改,惊讶的比喻非常妙,恰恰反映出了作者的独特见解。“信息量”这个翻译专业却又古板,跟我们我们本科信息论的说法一致,学的时候就味同嚼蜡,不如惊讶好理解。