Dive into deeplearning(d2l) 学习笔记

Dive into deeplearning (d2l)学习笔记

第三章 线性模型

Summary

1.对于线性模型,可以用点积的形式来简洁的表达 \(\hat{\mathrm {y}}= \mathrm {X}\mathrm{w}  ^{T} + b \),其本质是对输入feature的仿射变换

2.对于线性模型优劣程度的度量(线性模型的损失函数(loss function)  \(L(w,b)=\frac{1}{n} \sum_{i=1}^{n}\frac{1}{2} \sqrt{\mathrm {X}\mathrm{w}  ^{T}-y^{(i)} } \)

3.对于线性模型而言其最优解存在解析解,但对于绝大多数深度学习问题并非如此

4.小批量随机梯度下降(minibathc stochastic gradient descent)的数学表达式是:\( (\mathrm{w} ,b) \gets  (\mathrm{w} ,b)-\frac{\eta }{\left | \mathfrak{B } \right | } \partial _{(\mathrm{w} ,b)}l^{i} (\mathrm{w } ,b) \),其中\(\eta \)为学习率 ,\( \left |\mathfrak{ B } \right |  \)为每个minibatch中的样本数量

5.类似学习率或batch size这样可以调整但不在训练过程中被更新的参数被称为超参数(hyperparameter)

6.当label间没有自然顺序时,可采用独热编码(one-hot encoding)

7.softmax层通常为了解决分类问题,因此需要保证1.输出为正2.输出概率和为1 ,因此  做变换 \( \mathrm{Y} = softmax(\mathrm{O} \) 其中 \( \hat y_{j} =  \frac{exp (o_{j})}{ {\textstyle \sum_{k}^{}}exp( o_{k})} \) , 最终softmax层的向量形式为$$\mathrm{O} = \mathrm{XW} + b$$ $$\mathrm{Y = softmax(O)} $$

question

1.Q: 3.1.1.1.一节中提到 ” 即使确信特征与标签的潜在关系是线性的, 我们也会加入一个噪声项来考虑观测误差带来的影响。“  噪声项的引入体现在模型的什么地方?

A:引入噪声后的线性模型为\(\hat{\mathrm {y}}= \mathrm {X}\mathrm{w}  ^{T} + b + \epsilon \),其中\(\epsilon \in \mathcal{N} \)

2.Q:假设数据不符合独立同分布对训练会产生什么影响

A:这取决于情况 4.4中讨论了这一问题

 第四章 多层感知机

Summary

1.如果不引入激活函数\( \sigma  \) ,多层感知机将变得毫无益处,因为单层的全连接层已经可以表达所有的仿射函数,因此为了提高模型非线性能力,引入激活函数\( \sigma \)

2.三个激活函数Relu:\( f(x)=max(0,x) \)  可以减轻梯度消失的问题

       Sigmoid:\( f(x)=\frac{1}{1+e^{-x}}  \)

       tanh:\( f(x)=\frac{1-e^{-2x} }{1+e^{-2x} }  \)

3.正则化(regularization)的方式可以对抗过拟合(over fitting)

4.k折交叉验证可以有效地解决在数据量较小时划分数据集的问题(将数据分为K个子集,训练k轮,每次选择k-1个子集作为训练集,剩下的子集选为测试集)

5.过拟合的三种常见原因:1.模型过于复杂(可调整的参数量过大(自由度过大)),2.模型内参数可调整范围过大3.数据量太小

6.权重衰减在损失函数上增加正则项来抑制函数复杂度的增加

7.协变量偏移---->解决方法:训练分类器分类输入属于哪个分布,并乘以权重。、

 标签偏移------>解决方法

    概念偏移------>利用现有新数据训练模型

d2l附加材料补充

1.收敛定理

2.感知机不能拟合XOR函数

Question

1.Q:"在哲学上,这与波普尔的科学理论的可证伪性标准密切相关: 如果一个理论能拟合数据,且有具体的测试可以用来证明它是错误的,那么它就是好的。 这一点很重要,因为所有的统计估计都是事后归纳。"的意思

2.Q:L2正则化函数描述了函数的复杂程度,但对于模型而言,并非越简单越好,如何保证添加正则化函数的正确性。

3.pytorch dropout何时不进行(似乎要自己设置,尝试结果,没找到可参考资料)

第六章 卷积神经网络

1.一个h * w的输入在经过一 size为n * m ,padding 为 (a,b) 步幅为c  d的卷积操作后输出形状为

  [(h - n + a + c)/c, (w - m + b + d)/d]

2. 1*1的卷积核的作用在于连接不同通道间的信息

3.池化层的作用:降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。

第七章 现代神经网络

1.Alexnet:机器提取特征

 

 

全篇

summary

1.超参数有:隐藏层的大小,epochs, 隐藏层数目, 激活函数, batch-szie, optimizer, 

python库

1.enumerate(sequence, [start=0])
给出idx, object

pytorch库

1.torch.cat 拼接两个tensor  参数 torch.cat(tensor , dim)

2.torch.clamp 将输入限制在一个限定范围 参数torch.clamp(input, min, max)

3.torch之中的乘法 torch.mul --> 点乘 ;torch.mm---->矩阵乘法

4.net.state_dict 返回网络各层名称和参数值。

5.torch.save 和 torch.load可以保存/读入单个tensor

6.torch.save(net.state_dict(), 'filename')可以用来保存模型参数

7.net.load_state_dict(torch.load('filename'))可以载入保存在filename中的参数

8.torch.stack将多个tensor沿着新的维度堆叠

 

posted @ 2022-05-14 11:08  rbrq  阅读(220)  评论(0)    收藏  举报