线性神经网络(1)-线性回归的实现
原理
对于特征集合 $\pmb X$ ,预测值 $\hat y$ ,可用矩阵向量乘法表示为:
$$
\hat{y}=\pmb Xw+b
$$
其中 $X$ 的每一行代表一条数据。
定义损失函数为:
$$
l^{(i)}(w,b)=\frac{1}{2}(\hat y^{(i)}-y^{(i)})^2
$$
为了降低损失,定义平均损失函数为:
$$
L(w,b)=\frac{1}{n}\sum l^{(i)}(w,b)=\frac{1}{n}\sum \frac{1}{2}(w^\mathrm Tx^{(i)}+b-y^{(i)})^2
$$
要求的即是:
$$
w^\ast,b^\ast=\arg \mathop{\min}\limits_{w,b} L(w,b)
$$
求解时利用随机梯度下降法解出 $w,b$ :
$$
w\leftarrow w-\frac{\eta}{|\beta|}\sum\partial_{w}l^{(i)}(w,b)=w-\frac{\eta}{|\beta|}\sum x^{(i)}(w^\mathrm Tx^{(i)}+b-y^{(i)})
$$ { }
$$
b\leftarrow b-\frac{\eta}{|\beta|}\sum\partial_bl^{(i)}(w,b)=w-\frac{\eta}{|\beta|}\sum (w^\mathrm Tx^{(i)}+b-y^{(i)})
$$
$\beta$ 是选择的一个小样本,所有的 $i$ 都是来自 $\beta$ 。
线性回归的实现(TensorFlow的高级API)
- 生成、读取数据集;
- 定义模型;
- 定义损失函数、优化器;
- 设置超参数进行训练
生成数据集
1 | import numpy as np |
读取数据集
1 | def load_array(data_arrays, batch_size, is_train=True): |
生成模型及操作
1 | ###定义net为一个Sequential类的实例 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Arn01d's planet!