机器学习
2 预备知识
2.1. 数据操作
我们介绍n维数组,也称为张量(tensor)


创建数组

访问元素
可以按照自己的需求任意访问


张量表示一个由数值组成的数组,这个数组可能有多个维度。 具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix);
具有两个轴以上的张量没有特殊的数学名称。
可以通过张量的shape属性来访问张量(沿每个轴的长度)的形状
。要想改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数。虽然张量的形状发生了改变,但其元素值并没有变。
注意,通过改变张量的形状,张量的大小不会改变。
对于任意具有相同形状的张量,常⻅的标准算术运算符(+、-、*、/和**(**运算符是求幂运算))都可以被升级为按元素运算。我们可以在同⼀形状的任意两个张量上调⽤按元素操作。
在某些情况下,即使形状不同,我们仍然可以通过调⽤⼴播机制(broadcasting mechanism)来执⾏按元素操作。这种机制的⼯作⽅式如下:
- 通过适当复制元素来扩展⼀个或两个数组,以便在转换之后,两个张量具有相同的形状;
- 对⽣成的数组执⾏按元素操作。
2.2. 数据预处理
为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。
对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。
1 | inputs = inputs.fillna(inputs.mean()) #将数值类型用平均值填充 |


2.3. 线性代数











2.4 矩阵计算









2.5 自动求导







3. 线性神经网络
3.1 线性回归



优化方法


学习率与批量都应当适当,不能太大或太小
在机器学习的上下文
中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
3.4. softmax回归
softmax回归和线性回归一样也是将输入特征与权重做线性叠加,但是softmax回归的输出值个数等于标签中的类别数






4. 多层感知机
4.1. 多层感知机












4.4. 模型选择、欠拟合和过拟合
训练误差:模型在训练数据上的误差
泛化误差:模型在新数据上的误差


训练数据集:训练模型参数
验证数据集:选择模型超参数
非大数据集上通常使用k折交叉验证




模型容量应当在泛化误差最低点是最好的
时序序列应保证时间连续性,不能从中间切开
4.5. 权重衰减



4.6. 暂退法(Dropout)


Dropout和正则化都是为了防止过拟合。
4.8. 数值稳定性和模型初始化






**激活函数(Activation Function)**是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容,
通常是用在隐藏层中。
6. 卷积神经网络

i,j是输出的宽高维度,k , l是输入的宽高维度;对下标做一定的变化,k = i + a , l = j + b ,v是w的重新索引v , 这里的索引a和b覆盖了正偏移和负偏移,对于隐藏表示中任意给定位置(i,j)处的像素值[H]{i,j} ,通过对x中以(i,j)为中心的像素进行加权求和得到,权重为v{i,j,a,b} ;


原则一:x的变换,会引起v的变化,故解决方案是把(i,j)去掉,只剩a、b纬度
卷积操作





6.3. 填充和步幅








6.4. 多输入多输出通道






6.5. 汇聚层(池化层)

与卷积层类似,汇聚层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为
汇聚窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,汇聚层不包含参数。
相反,池运算是确定性的,我们通常计算汇聚窗口中所有元素的最大值或平均值。这些操作分别称为最大汇聚层(maximum pooling)和
平均汇聚层(average pooling)。



6.6. 卷积神经网络(LeNet)

7. 现代卷积神经网络
7.1. 深度卷积神经网络(AlexNet)

7.2. 使用块的网络(VGG)

更大、更深,将卷积层封装成块

7.3. 网络中的网络(NiN)




7.4. 含并行连结的网络(GoogLeNet)


蓝色用来提取空间信息,白色获取通道信息
7.5. 批量规范化




7.6. 残差网络(ResNet)



13. 计算机视觉
13.1. 图像增广

左右翻转可以,但上下翻转并不总是可行的。

13.2. 微调
将以训练好的模型采用另一个数据集重新训练,这时因为有了先验经验,故只需要将参数微调。





13.3. 目标检测和边界框


基于锚框预测真实的范围,而锚框的提出则是被预先提出的,会出现很多。





13.8. 区域卷积神经网络(R-CNN)系列




Faster R-CNN:先进行预检测,随后再精检测



13.9. 语义分割和数据集

13.10. 转置卷积








13.11. 全卷积网络

8. 循环神经网络
8.1. 序列模型





8.3. 语言模型和数据集



8.4. 循环神经网络
不建议使用RNN


Whh存储的就是隐变量的权重值,从而预测下一个的值




9. 现代循环神经网络
9.1. 门控循环单元(GRU)


使用sigmoid作为隐藏函数进行计算,通过该方法控制是否记忆,记忆多长时间的隐状态



9.2. 长短期记忆网络(LSTM)






LSTM的状态包含两个,分别表示长期记忆和短期记忆,两者互相独立。
9.3. 深度循环神经网络

9.4. 双向循环神经网络




有两个隐藏层,向前向后两个隐藏层,然后计算完合并,两个方向的含义同时出现。
主要作用是对句子进行操作。例如结合上下文翻译、识别语句等等,但是不能用来预测未来。
9.6. 编码器-解码器架构


编码:提取特征
解码:输出结果

9.7. 序列到序列学习(seq2seq)




9.8. 束搜索



10. 注意力机制
10.6. 自注意力和位置编码




10.7. Transformer





等价于全连接层。




11. 优化算法


但最好的还是全局最小。凸优化则是一个特例。






随机梯度是一种近似,可以极大地减少梯度的运算,减小开销。

随机采样子集,用一批子集的平均值作为梯度的平均值,减少运算量。

用冲量代替梯度。


