神经网络与深度学习(邱锡鹏)编程练习 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)

通过基函数对元素数据进行交换,从而将变量间的线性回归模型转换为非线性回归模型

  1. 最小二乘法 + 多项式基函数
  2. 最小二乘法 + 高斯基函数

 六、Sklearn线性回归 - 走看看 (zoukankan.com)

 

实验4:基函数回归(梯度下降法优化)

  • 多项式基函数 multinomial_basis(x, feature_num=10)
  • 高斯基函数 gaussian_basis x, feature_num=10)

通过基函数对元素数据进行交换,从而将变量间的线性回归模型转换为非线性回归模型。

  1. 梯度下降法 + 多项式基函数
  2. 梯度下降法 + 高斯基函数

 六、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)

 

主程序:

  1. # 载入数据
  2. # 使用线性回归训练模型,返回一个函数f()使得y = f(x)
  3. # 计算预测的输出值
  4. # 使用测试集评估模型
  5. # 显示结果

 知识点:基函数

From:PRML

posted on 2022-05-30 11:20  HBU_DAVID  阅读(471)  评论(0编辑  收藏  举报

导航