本内容暂时供自己学习使用,内容是关于《动手学深度学习》书籍,作用是简要介绍这个内容。
写这个东西的原因是,前边的内容记不住,现在想起来要记下来有哪些内容。不求都看明白,要知道里边都有什么内容。
按照书本的顺序分别阐述。
每节都按照格式内容记录,这节讲什么,它有什么用。
3多层感知机
3.8 数值稳定性和模型初始化
初始化方案的选择在神经网络学习中起着非常重要的作用,它对保持数值稳定性至关重要。
糟糕的初始化选择方案会引起梯度爆炸或梯度消失,
本节讨论,模型初始化方法,梯度爆炸,梯度消失这些主题,以及一些启发式的方法。
该式表达梯度,从梯度的表达式入手说明梯度爆炸和梯度消失问题
其中产生的现象有两种,爆炸,模型不收敛;消失,模型不更新。
导致梯度消失的原因
看sigmoid函数,导数有它的特征,在离0比较远的地方,导数很小,很多层网络时,很容易就会出现某层梯度为0,切断梯度计算。
由于这种特征,RELU函数就适用性更大一些。
梯度爆炸简单说了下。
从梯度爆炸和梯度消失开始,引入‘打破对称性’的概念,
神经网络设计中的另一个问题是其参数化所固有的对称性。就是隐藏单元之间的排列对称性。
当参数初始化相同时,在迭代中各单元参数会取相同的值,这样就无法实现网络表达能力。这时候有doupout这个方法。
仔细初始化方法可以解决或减轻上边这些问题。其中注意和适当的正则化可以进一步提高稳定性。
介绍两种方法
1 默认初始化方法,正态分布
2 Xavier初始化方法
当然还有更多的启发式方法。
最后把书里边的小结粘上来
总结下,这节介绍了梯度爆炸,梯度消失现象,介绍了简单的初始化方法,强调了随机初始化的重要性。
3.9 环境和分布偏移
问题,数据最初从什么地方来,计划如何处理模型的输出。
问题,通过将基于模型的决策引入环境,可能会破坏模型。
不太理解,我看了的总结是,不能不考虑模型和数据集之间的关系。
分布偏移,来源于训练数据和测试数据间可能存在分布上的不同,既分布间存在偏差。
要考虑这种偏差,以提高分类器的准确性
有协变量偏移,
标签偏移
概念偏移
除了第一个猫狗测试的协方差偏移稍微理解了,后两个没理解。
写到这里有点不知道怎么写了。不如我看一章,就把一个知识点写下来吧。
3.9.2 分布偏移示例
医学诊断:病人的客观条件不一样,不能以偏概全
自动驾驶汽车:学习到了非目标特征
非平稳分布
3.9.3 分布偏移纠正
训练损失,经验风险最小化
协变量偏移纠正:根据数据来自正确分布与来自错误分布的概率之比来重新衡量每个数据样本的权重。
标签偏移纠正:
概念偏移纠正:
3.9.4 学习问题的分类法
批量学习
在线学习:循环更新
老虎机:有限行动
控制:算法模型与环境的相互影响
强化学习:强调如何基于环境而行动,以取得最大化的预期利益
3.9.5 机器学习中的公平、责任和透明度
要考虑到实际应用过程中,会产生哪些变化,在算法模型上,会酝酿出什么东西,
也就是说,要考虑到社会。
3.9.6 小结
3.10 实战kaggle比赛:预测房价
这、、、、、
4 深度学习计算
在本章中,我们开始深度探索深度学习计算的关键组件,即模型构建、参数访问与初始化、设计自定义层和块、将模型读写到磁盘,以及利用GPU实现显著的加速。
4.1层和块
从单个神经原拓展到,利用矢量化算法来描述整层神经元。层1接受一组输入层2生成相应的输出,层3由一组可调整参数描述。
在复杂网络中,用神经网络块的概念,来描述单个层、多个层组成的组件或者整个模型本身。
块由类表示
4.1.1 自定义块
提供自己定义的一个块的实例。
4.1.2 顺序块
更仔细描述sequential类是如何工作的,
没看明白
4.1.3 在正向传播函数中执行代码
展示如何将任意代码集成到神经网络计算的流程中
4.1.4 效率问题
4.2参数管理
介绍访问参数,用于调试、诊断和可视化,
参数初始化
在不同模型组件间共享参数
4.2.1 参数访问
sequential 类定义模型时,可以通过索引来访问模型的任意层。
目标参数
要对参数执行任何操作,首先我们需要访问底层的数值。
一次性访问所有参数
从嵌套块收集参数
4.2.2参数初始化
深度学习框架提供了最常见的规则,也允许创建自定义初始化方法。默认情况下,MXNet通过初始化权重参数的方法是从均匀分布U(−0.07, 0.07)中随机采样权重,并将偏置参数设置为0。MXNet的init模块提供了多种预置初始化方法。
内置初始化
自定义初始化
4.2.3参数绑定
在多隔层间共享参数
4.2.4小结
• 我们有几种方法可以访问、初始化和绑定模型参数。
• 我们可以使用自定义初始化方法。