**深度学习基础——线性回归**
自动求梯度
要求变量x的梯度, 首先调用attach_grad函数来申请存储梯度所需要的内存。
x.attach_grad()
定义有关变量的函数,调用record函数来记录求梯度的计算。
with autograd.record():
y = 2 * nd.dot(x.T, x)
调用backward函数自动求梯度, y是一个标量,如果不是, 如果y不是一个标量,将默认先对y中元素求和得到新的变量,再求该变量有关x的梯度。
y.backward()
线性回归
线性回归输出一个连续值,适用于回归问题。
softmax回归输出的是一个离散值, 适用于分类问题。
线性回归的基本要素
1.模型.
例子房价预测模型 房屋面积x1, 房子年龄x2, 售出价格y。
2.模型训练
通过数据来寻找特定的模型参数参数值,使得模型在数据上的误差尽可能小。
在这个数据上面寻找模型参数来使模型的预测价格与真实价格的误差最小。在机器学习术语里,该数据集被称为训练数据集(training data set)或训练集(training set),一栋房屋被称为一个样本(sample),其真实售出价格叫作标签(label),用来预测标签的两个因素叫作特征(feature)。特征用来表征样本的特点。
3.损失函数
预测值与真实值之间的误差。通常选取一个非负数作为误差,常用的误差函数是均方误差。
4.优化算法
模型和损失函数形式较为简单时,误差最小化问题的解可以直接用公式表达出来。这类解叫作解析解。
大多数深度学习模型并没有解析解,只能通过优化算法有限次迭代模型参数来尽可能降低损失函数的值。这类解叫作数值解(numerical solution)。
小批量随机梯度下降算法
先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch)B,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
|B| B每个小批量中的样本个数(批量大小,batch size),η学习率(learning rate)并取正数。需要强调的是,这里的批量大小和学习率的值是人为设定的,并不是通过模型训练学出的,因此叫作超参数(hyperparameter)。我们通常所说的“调参”指的正是调节超参数,例如通过反复试错来找到超参数合适的值。
5.模型预测
模型训练完后,使用模型来预测训练集以外的数据集合。
线性回归与神经网络
线性回归是一个单层神经网络
矢量计算表达式
当对两个形状不同的NDArray按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个NDArray形状相同后再按元素运算。
重点
链式法则