一元线性回归及loss优化问题小的理解

一.loss优化问题
如果一个损失函数不是凸函数的话,它是无法优化的。就拿mse来说,这个loss函数一出来,它的函数值在所有区间的定义域上就为一个凸函数。所以,在自定义loss函数的时候,要想明白这个问题。
二.西瓜书一元线性回归的求解公式
西瓜书上的一元线性回归的求解是利用我们以前的另偏导直接为0解的,跟我们的高等数学求解方法是一样的。
三.利用梯度优化问题求解一元线性回归(最普通的梯度下降法)
在上面在定义损失函数的时候,已经把,loss函数定义为凸函数,所以它可以利用梯度优化方法来进行优化。其中,需要注意的是我们在优化的时候会像梯度的反方向进行优化。这主要是因为由于梯度定义问题,梯度是由所有的变量所在的坐标轴的方向来定的,由于loss函数是一个凸函数,再加上求完偏导与坐标轴正向的双重条件,以及一个向量可以用坐标轴的基向量进行表示,可以得到凸函数的梯度梯度方向是指向在当前某一点的函数值增长最快的方向,而不是指向loss函数的最小值方向。因此,在进行梯度函数的最小值优化的时候,要往梯度相反的方向进行优化。
四.平面向量可以用二维坐标基向量进行表示(可以往更高维度进行扩展)
普通的基向量只要为两个非共线的非零向量即可,在梯度下降中,基向量的方向为坐标轴,大小为坐标轴所求取的偏导大小。
要注意的根据平行四边形法则,基向量是斜边,而不是直角边。在这里插入图片描述

MindSpore 是由华为 Mind Studio 开发的一款基于 Python深度学习框架,它专注于高效能和便捷的 AI 开发。一元线性回归是一种基础的机器学习算法,用于预测一个数值型目标变量(因变量),给定一个独立变量(自变量)。在 MindSpore 中,你可以通过以下步骤创建和训练一个简单的一元线性回归模型: 1. 导入所需的库:首先,你需要导入 `mindspore.nn` 和 `mindspore.common` 模块,它们包含了构建神经网络所需的基本组件。 ```python from mindspore import nn from mindspore import Tensor ``` 2. 定义模型:创建一个 `LinearRegression` 类,它继承自 `nn.Cell`,并包含一个权重参数和偏置项。 ```python class LinearRegression(nn.Cell): def __init__(self, input_dim): super(LinearRegression, self).__init__() self.linear = nn.Dense(input_dim, 1) def construct(self, x): return self.linear(x) ``` 3. 准备数据:假设你有输入特征 `x_data` 和对应的标签 `y_data`,然后将数据转换为张量。 ```python x_data = Tensor(x_data) y_data = Tensor(y_data) ``` 4. 初始化模型并设置优化器:创建模型实例,选择合适的损失函数(如均方误差)和优化器(如 SGD 或 Adam)。 ```python model = LinearRegression(len(x_data[0])) optimizer = nn.SGD(model.trainable_params(), learning_rate=0.01) loss_fn = nn.MSELoss() ``` 5. 训练模型:通过循环迭代数据,并计算损失,更新模型参数。 ```python for epoch in range(num_epochs): prediction = model(x_data) loss = loss_fn(prediction, y_data) optimizer.update(loss, model.trainable_params()) ``` 6. 预测:训练完成后,可以使用模型对新的输入数据进行一元线性回归预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值