神经网络与深度学习(邱锡鹏)编程练习 2 题目解析
实验1:线性回归的参数优化-最小二乘法
1 最小二乘法原理
基于均方误差最小化进行模型求解。
线性回归中,试图找到一条直线,使所有样本到直线的欧氏距离之和最小。(西瓜书P54)
图源:NNDL P34
2 最小二乘法优化公式
(参考书中第二章 2.3中的公式),在main()中利用训练集训练模型的参数w,并且返回模型。
NNDL P34
3 最小二乘法实现
在numpy中可以使用numpy.linalg.pinv
求伪逆
python之numpy之伪逆numpy.linalg.pinv_千行百行的博客-CSDN博客_numpy pinv
伪逆矩阵(广义逆矩阵) - 简书 (jianshu.com)
实验2:线性回归的参数优化-梯度下降法
梯度下降法优化 (参考书中第二章 2.3中的公式),在main()中利用训练集训练模型的参数w,并且返回模型。
NNDL P35
def gradient(phi_grad, y, w_init, lr=0.001, step_num=10): # lr 学习率; step_num 迭代次数
w_train = w_init
for i in range(step_num):
grad = phi_grad.T.dot(phi_grad.dot(w_train) - y) * 2.0 / len(phi_grad) # 计算梯度
w_train = w_train - lr * grad # 更新 w
print("循环次数:", i, "参数 w_train = ", w_train)
return w_train
实验3:基函数回归(最小二乘法优化)
- 多项式基函数 multinomial_basis(x, feature_num=10)
- 高斯基函数 gaussian_basis x, feature_num=10)
通过基函数对元素数据进行交换,从而将变量间的线性回归模型转换为非线性回归模型。
- 最小二乘法 + 多项式基函数
- 最小二乘法 + 高斯基函数
六、Sklearn线性回归 - 走看看 (zoukankan.com)
实验4:基函数回归(梯度下降法优化)
- 多项式基函数 multinomial_basis(x, feature_num=10)
- 高斯基函数 gaussian_basis x, feature_num=10)
通过基函数对元素数据进行交换,从而将变量间的线性回归模型转换为非线性回归模型。
- 梯度下降法 + 多项式基函数
- 梯度下降法 + 高斯基函数
六、Sklearn线性回归 - 走看看 (zoukankan.com)
实验5:使用深度学习框架
邱锡鹏老师使用的是 TensorFlow
本实验用 pytorch 实现
数据集:
- train.txt
- test.txt
函数:
- 载入数据:load_data(filename)
- 基函数: identity_basis(x) multinomial_basis(x, feature_num=10) gaussian_basis x, feature_num=10)
- 训练模型:main(x_train, y_train) 返回从x到y的映射
- 评估模型:evaluate(ys, ys_pred)
主程序:
# 载入数据
# 使用线性回归训练模型,返回一个函数f()使得y = f(x)
# 计算预测的输出值
# 使用测试集评估模型
# 显示结果
知识点:基函数
From:PRML