Linear Regression 线性回归 & Softmax 分类模型 & 多层感知机

本文介绍了线性回归的概念,包括全连接层的权重和偏置参数形状;深入讲解了Softmax回归,阐述了softmax函数的作用及小批量样本的计算过程,以及交叉熵损失函数的运用;最后探讨了多层感知机(MLP),解释了隐藏层、ReLU激活函数以及如何从零开始实现MLP模型。
摘要由CSDN通过智能技术生成

线性回归课后题

  1. 全连接层和输入输出形状

假如你正在实现一个全连接层,全连接层的输入形状是7×8,输出形状是7×1,其中7是批量大小,则权重参数w和偏置参数b的形状分别是____和____

  • 输入为 X ∈ R 7 × 8 X∈R^{7×8} XR7×8,输出为 Y ∈ R 7 × 1 Y∈R^{7×1} YR7×1,权重参数为 w ∈ R 8 × 1 w∈R^8×1 wR8×1,则 X w ∈ R 7 × 1 X_w∈R^{7×1} XwR7×1
  • X w X_w Xw中的每个元素加上的偏置是一样的,所以偏置参数 b ∈ R 1 × 1 b∈R^{1×1} bR1×1。(参数的形状与批量大小没有关系)
  1. broadcasting semantics
    这里是引用
  • 计算:
# y为nx1
>>> y=torch.randn(4)
>>> y
tensor([-1.4736, -0.7209,  0.6472,  1.0759])
>>> y_hat.view(-1).shape # A选项正确
torch.Size([4]) 

# y_hat为1xn
>>> y_hat=torch.randn(4,1)
>>> y_hat
tensor([[1.2142],
        [1.7063],
        [0.4449],
        [0.9576]])
>>> y.view(-1).shape # B选项错误:前者是4x1,后者是1x4
torch.Size([4])
>>> y.view(y_hat.shape).shape # C选项正确
torch.Size([4, 1])
>>> y.view(-1, 1).shape # D选项正确
torch.Size([4, 1])
  • tensor的.shape/.size 都是返回形状
# .shape和.size()方法返回值一致
x=torch.randn(4)
>>> x
tensor([-0.0233, -0.4144, -0.5163, -0.8312])
>>> x.shape
torch.Size([4])
>>> x.size()
torch.Size([4])
  1. 在线性回归模型中,对于某个大小为3的批量,标签的预测值和真实值如下表所示:
y ^ \hat{y} y^ y y y
2.33 3.14
1.07 0.98
1.23 1.32
  • 该批量的损失函数的平均值为:0.112
# 用教程里的函数计算一下
>>> import torch
>>> y=torch.tensor([3.14, 0.98, 1.32])
>>> y_hat=torch.tensor([2.33, 1.07, 1.23])
>>> def squared_loss(y_hat, y):
...     return (y_hat - y.view(y_hat.size())) ** 2 / 2
... 
>>> loss=squared_loss(y_hat, y)
>>> loss
tensor([0.3281, 0.0041, 0.0041])
>>> loss.mean()
tensor(0.1121)

Softmax回归的基本概念

Softmax单层神经网络
softmax是一个单层神经网络,输出层也是一个全连接层:
每个输出 o 1 , o 2 , o 3 o_1, o_2, o_3 o1,o2,o3的计算都要依赖于所有的输入 x 1 , x 2 , x 3 , x 4 x_1, x_2, x_3, x_4 x1,x2,x3,x4

将输出值变换成值为正且和为1的概率分布:
softmax ( o ) = exp ⁡ ( o ) ∑ i exp ⁡ ( o i ) \text{softmax}(o) = \frac{ \exp(o)}{\sum_i \exp(o_i)} softmax(o)=iexp(oi)exp(o)

单样本与小批量softmax矩阵运算

  • 计算表达式: o ( i ) = x ( i ) W + b , y ^ ( i ) = softmax ( o ( i ) ) . \begin{aligned} \boldsymbol{o}^{(i)} &= \boldsymbol{x}^{(i)} \boldsymbol{W} + \boldsymbol{b},\\ \boldsymbol{\hat{y}}^{(i)} &= \text{softmax}(\boldsymbol{o}^{(i)}). \end{aligned} o(i)y^(i)=x(i)W+b,=softmax(o(i)).
  • 权重、偏差参数:
    W = [ w 11 w 12 w 13 w 21 w 22 w 23
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 线性回归是一种统计学方法,可用于预测数值型变量之间的关系,如房价和房屋尺寸之间的关系。在这个场景下,我们考虑通过线性回归来建立一种模型,在已知的房屋尺寸的基础上,预测相应的房价。 假设我们有一个包含有房价和房屋尺寸的数据集,我们可以使用数据探索的工具,如散点图,来初步探索两个变量之间的关系。然后,我们可以使用线性回归模型来拟合这些数据点,并且预测新的房屋尺寸的房价。 接下来,我们将绘制一个图形来展示我们的线性回归模型如何拟合数据点和预测房价。在这张图中,我们将在横轴上表示房屋尺寸,纵轴上表示房价,并绘制出我们的线性回归模型所拟合的直线。这张图将使我们更容易地理解房价和房屋尺寸之间的关系,并且可以用于后续的数据分析以及预测。 在绘制完这张图后,我们可以检查线性回归模型的拟合精度。如果线性回归模型在数据集中存在显著的偏差,就需要重新考虑预测模型,或者增加更多的特征变量,这样可以使预测的结果更准确。此外,在应用线性回归模型之前,我们还应该注意一些其他的影响因素,如噪声或异常值,这样可以避免模型的偏差以及其他的预测错误。 ### 回答2: 线性回归是一种常用的机器学习算法,可以用于预测房价等连续值的问题。具体地说,线性回归就是通过找到一条直线(或者超平面,在高维空间中)来尽可能地拟合已知数据,然后利用这条直线进行预测。 在房价预测的问题中,我们可以使用线性回归算法来构建一个模型。首先,我们需要收集一些房价相关的数据,例如房屋面积、地理位置、年龄等等。然后,我们可以使用这些数据来训练线性回归模型,找到一个最优的线性函数,使得它最好地拟合已有的数据。 训练模型之后,我们就可以利用这个模型来进行预测。比如,我们输入某个房屋的面积、位置等信息,就可以利用模型预测这个房屋的价格了。 为了更加直观地理解线性回归算法,我们可以绘制出数据点和拟合直线的图像。在这个图像中,我们可以看到每一个数据点的位置,以及拟合直线的位置,这样可以更加方便地理解线性回归算法的表现。 总之,线性回归是一种非常实用的机器学习算法,它可以帮助我们解决很多连续值预测的问题,例如房价预测等。同时,在理解线性回归算法的时候,我们可以通过绘制图像来更好地理解模型的表现。 ### 回答3: 线性回归是一种广泛用于预测连续数值的统计学方法,常用于房价预测。我们可以通过已知的房屋面积、房龄等特征,拟合出一个数学函数,进而计算出未知房屋的价格。下面我将简单介绍如何使用Python中的scikit-learn库进行线性回归分析,以及如何绘制预测结果的图像。 首先,我们需要加载数据并探索数据的基本特征。数据可以从Kaggle等网站下载得到。以Boston House Price数据集为例,我们可以通过Pandas库读入数据并查看前几行数据的情况: ``` import pandas as pd df = pd.read_csv('train.csv') print(df.head()) ``` 接下来,我们需要针对数据的特征选择适当的模型进行拟合。这里我们选取最简单的线性回归模型。通过scikit-learn库中的LinearRegression模块,可以方便地进行模型训练。 ``` from sklearn.linear_model import LinearRegression X = df[['RM', 'LSTAT', 'PTRATIO']] # 我们选择房间数量、低收入人群比例以及学生与教师之比三个特征来预测房价 y = df['MEDV'] lr = LinearRegression() lr.fit(X, y) # 模型拟合 ``` 至此,我们已经拟合出了一个模型,可以使用测试数据集进行预测并计算模型的评估指标,例如均方误差(Mean Squared Error,MSE)等。同时,我们还可以通过matplotlib库绘制出预测结果的图像: ``` import matplotlib.pyplot as plt import numpy as np import seaborn as sns sns.set(style='whitegrid', context='notebook') pred_y = lr.predict(X) plt.scatter(y, pred_y) plt.plot([0, 50], [0, 50], '--k') plt.xlabel('True value') plt.ylabel('Predicted value') ``` 在图像中,横坐标代表真实房价,纵坐标代表预测房价。可以看到,预测结果与真实情况的差异较小,说明模型的拟合效果较好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值