D2L: Weight Decay & Dropout
Weight Decay & DropoutConcept and Principle
权重衰退权重衰退可以控制模型复杂度,使其复杂度不会太大,从而一定程度上避免过拟合
使用均方范数作为硬性限制通过限制参数的取值范围来控制模型容量,具体有如下例子在限制参数向量范数的情况下优化损失函数,一般不会使用这种正则方式
使用均方范数作为柔性限制上述硬性限制有一个等价方案,具体如下,这就是一般的正则化方法,其作用同样也是使得参数被限制在一个较小的范围下面是正则项对最优解影响的一个演示坐标轴分别是w的各个分量,圆线是等高线。正则项给了另外一个梯度,把原始的损失函数算出的最优解往原点拉,必然会导致W的取值范围变小从而使模型复杂度降低,也就减小了过拟合。另外一种理解,正则项加入后优化目标就不再全局最优点了,所以肯定会减小训练集拟合程度,也就减小了过拟合考虑为什么λ控制了正则项的重要程度,因为求偏导时λ会变成梯度前的常数项
参数更新带正则项后参数更新过程如下,这也说明了为什么这种方法叫权重衰退:更新前先把权重减小,然后继续更新梯度
注意权重衰减也只在训练过程中使用,用来限制训练过程中的参数,在最终 ...
D2L: Modle Selection
Modle SelectionConcept and Principle
训练误差和泛化误差
训练误差:模型在训练数据上的误差(不太关心)
泛化误差:模型在新数据上的误差(很关心)
验证数据集和测试数据集
验证数据集用于在训练过程中评估模型好坏的数据集,一般从训练集中划分出一部分,验证数据集不能作为训练集让模型训练,用来动态调整模型超参数
测试数据集模型最终训练完毕后,使用测试集测试模型泛化能力,不能使用测试集来调整模型超参数,大多数情况下不会被打上标签
K-折交叉验证通常情况下,我们都没有足够富裕的数据去从训练集中划分验证集,这是使用K-折交叉验证能较简单的解决问题
思想:一般情况将K折交叉验证用于模型调优,找到使得模型泛化性能最优的超参值。找到后,在全部训练集上重新训练模型,并使用独立验证集对模型性能做出最终评价。
算法:K折就将训练集分为K块,训练代价为原来的K倍
将原始数据集划分为相等的K部分(“折”)
将第i部分作为验证集,其余作为训练集
训练模型,计算模型在验证集上的准确率
每次用不同的部分i作为验证集,重复步骤2和3 K次
将平均准确率作为使用当前超参时的模型 ...
D2L: Perceptron
PerceptronConcept and Principle
感知机
模型感知机只比线性分类多了一个激活函数,激活函数为单层感知机带来了分类能力,为多层感知机带来了非线性因素
训练训练感知机等价于批量大小为1的梯度下降,按顺序逐个取样本,与随机梯度下降不同
单层感知机无法解决异或问题,他只能产生线性分割面,这导致了第一次AI寒冬
多层感知机
多层感知机由多个感知机组成,分为输入层、隐藏层、输出层,层内不连接,层间全连接
每个感知机输出后要经过一个非线性的激活函数,否则多层感知机等价于单层感知机
常用激活函数:Sigmoiod、Tanh、ReLU,性能都没太大区别,ReLU计算更容易,如果没有特别的想法,用ReLU就行
Implementation
从零实现
1234567891011121314151617181920212223242526272829303132333435363738from torch import nn,optimtrain_iter,_=LoadData(256)num_in,num_out,num_h=784,10,256# 隐层参数w1 ...
D2L: Softmax Regression
Softmax RegressionConcept and Principle
softmax操作子将输出变为一个概率分布(保证非负性与归一性)
交叉熵损失用于衡量两个概率分布的区别,将softmax输出的分布与one-hot形式的标签作为两个分布
Implementation
数据集
1234567891011121314151617181920212223242526import torchimport torchvisionfrom torch.utils import datafrom torchvision import transformsdef LoadData(batch_size,resize=None): # 用于把图片转为Tensor,会自动归一化 trans=[transforms.ToTensor()] if resize: trans.insert(0,transforms.Resize(resize)) trans=transforms.Compose(trans) train_data=torchv ...
D2L: Linear Regression
Linear RegressionConcept and Principle
线性模型
基本的线性模型可抽象为如下表示,其可以看作一个单层单神经元的神经网络
线性模型有显示解
优化
梯度下降需要注意的是梯度是t-1时刻得来的,而且梯度是t-1时刻样本点、标签值以及W参数值对应的梯度,因为他们都是损失函数中的因变量
成批计算梯度batch_size不能太大也不能太小。太小:并行计算难以发挥效果;太大:内存消耗增加、易陷入局部最优。batch_size是另一个重要的超参数。
Implementation
从零实现
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283import randomimport torchfrom torch.utils.data.dataloader import DataLoadertr ...