深度学习第一课 线性回归

深度学习(Deep Learning, DL)简介 深度学习(Deep Learning, DL)是机器学习的一个子领域,主要使用多层神经网络来处理复杂的数据和任务。深度学习通过模拟人脑的神经网络结构,能够自动提取特征并进行高效的模式识别和预测。 阅读详情

最近在学习李沐的Mxnet/Gluon深度学习的线性回归部分,线性回归是很基本的一种监督学习,分类问题。

以前学习完一遍吴恩达的《machine learning》,并把《机器学习实战》里面的主要代码都实现一遍,现在有点忘记了,正好开始深度学习,开始线性回归查缺补漏,MXnet框架其实比较小众,但这次学习主要是专注于算法的原理,框架只不过是工具。

这次温故而知新,现将需要的要点材料整理如下:

  • 梯度下降可参考:https://www.cnblogs.com/pinard/p/5970503.html,小批量的随机梯度上升(下降)算法是对于整体样本的梯度上升(下降)算法与单个样本的随机梯度上升(下降)算法的折中,兼具了二者的优点。

在机器学习中的无约束优化算法,除了梯度下降以外,还有前面提到的最小二乘法,此外还有牛顿法和拟牛顿法。

    梯度下降法和最小二乘法相比,梯度下降法需要选择步长,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是计算解析解。如果样本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有优势,计算速度很快。但是如果样本量很大,用最小二乘法由于需要求一个超级大的逆矩阵,这时就很难或者很慢才能求解解析解了,使用迭代的梯度下降法比较有优势。

    梯度下降法和牛顿法/拟牛顿法相比,两者都是迭代求解,不过梯度下降法是梯度求解,而牛顿法/拟牛顿法是用二阶的海森矩阵的逆矩阵或伪逆矩阵求解。相对而言,使用牛顿法/拟牛顿法收敛更快。但是每次迭代的时间比梯度下降法长。

线性回归原理比较简单,如同《机器学习实战》中的例子是可以求导到w的数值解,但若对于比较复杂的情况,可能无法求导其数值解,需要进行梯度下降的方法来进行优化,主要分为以下几步,代码为使用MXnet框架下的线性回归手动实现:

  1. 读取数据
  2. 参数初始化
  3. 正向传播(计算yhat,定义loss等)
  4. 反向传播(求解梯度等)
  5. 模型训练(求解所需的w,b值)
  6. 进行预测(对data_test,预测yhat,并与真实值进行比较)
  7. 优化(调节超参数等)
import mxnet.ndarray as nd
from mxnet import autograd
import random 

m = 1000
n = 2

true_w = [2, -3.4]
true_b = 4.2

features = nd.random.normal(scale = 1,shape = (m,n))
labels = true_w[0] * features[:,0] + true_w[1] * features[:,1] +true_b
labels += nd.random.normal(scale = 0.01,shape= labels.shape)

#读取数据
def data_iter(batch_size,features,labels):
    m = len(features)
    indice = list(range(m))
    random.shuffle(indice)    #直接改变indice
    for i in range(0,m,batch_size):
        j = nd.array(indice[i:min(i+batch_size,m)])
        yield nd.take(features,j),nd.take(labels,j)
batch_size = 10
#for X,y in data_iter(batch_size,features,labels):
    #print(X,y)
    #break

#初始化参数
w = nd.random.normal(scale = 0.01,shape= (n,1))
b = nd.zeros(shape = (1,))
#分配求导所需空间
w.attach_grad()
b.attach_grad()
#正向传播与损失函数loss的定义
def net(X,w,b):
    return  nd.dot(X,w) + b
def loss(y_hat,y):
    return (y_hat - y.reshape(y_hat.shape))**2/2
#反向传播求梯度
def sgd(params,lr,batch_size):
    for param in params:
        param[:] = param - lr * param.grad/batch_size
        
        
#模型训练
lr = 1

epochs = 3    #迭代次数


for epoch in range(epochs):
    for X,y in data_iter(batch_size,features,labels):
        with autograd.record():
            l = loss(net(X,w,b),y)
        l.backward()
        sgd([w,b],lr,batch_size)   #通过几次迭代,得到最终的[w,b]的预测值
    train_l = loss(net(features,w,b),labels)#将上一步的到的预测值w,b代入公式中计算对于整体样本的loss
    print('epoch %d , loss %f'%(epoch + 1 ,train_l.mean().asnumpy()))
print(true_w,w)
print(true_b,b)

 

 这里记录几个模块函数:

1)MXnet中的求导功能autograd(),举个例子:

import mxnet.ndarray as nd
import mxnet.autograd as ag
x = nd.array([[2]])
z = nd.array([[4]])
x.attach_grad()
z.attach_grad()
with ag.record():
    y = x ** 2 + z**3
y.backward()
print(x.grad,z.grad)

结果为:

2)random.shuffle():

 3)nd.take():

    其用法同np.take():

4)yield:

    同return近似,但每次迭代从上个位置开始继续。

5)_, figs = plt.subplots(1, n, figsize=(15, 15))中的‘_’就是一个单纯的下划线,表示一个figure对象

 

【人工智能学习】第一课-人工智能简介 1. 人工智能简介2. 人工智能的主要分支3. 第一个例子:线性回归4. 开始动手5. 结语定义:人工智能是计算机科学的一个分支,它旨在创建能够执行通常需要人类智能才能完成的任务的机器。这些任务包括但不限于学习、判断、推理、感知、理解自然语言等。发展历程1956年,人工智能作为学科在达特茅斯会议上首次被提出。从那时起,AI 经历了几次“冬天”和复兴期,技术和理论都取得了巨大进展。近年来,随着计算能力的提高和数据量的爆炸式增长,AI 进入了一个快速发展期,特别是在机器学习和深度学习领域。 阅读详情

相关推荐

Python语言在工业控制中的简单应用

在工业控制中,经常需要对采集到的数据进行分析和处理,Python的这些库可以简化这一过程。传统的工业控制系统多依赖于专用的控制硬件和软件,但随着技术的发展,开放性和灵活性成为了新的需求焦点。还有,Python社区活跃,提供了大量的开源代码和模块,这对于工业控制领域来说是一个巨大的资产。Python作为一种高级编程语言,因其简洁的语法、强大的库支持和广泛的社区资源而在工业界获得了快速的发展和广泛的应用。在工业控制领域,Python的应用日益增多,这得益于其跨平台性、脚本语言的灵活性以及与硬件设备交互的能力。

2303_78014702的博客 1722

1-- 线性神经网络(线性回归)

线性回归

garbage回收中心 958

STM32超声波避障小车硬件设计与实时测距实现

超声波测距是嵌入式系统中经典的环境感知技术,其原理基于声波在空气中的传播时间与距离的线性关系,通过精确计时实现非接触式距离测量。该技术具备成本低、抗光干扰强、算法简洁等优势,广泛应用于智能小车、机器人避障、液位监测等场景。工程落地的关键在于硬件信号完整性(如5V/3.3V电平匹配)、微秒级定时精度(依赖高稳定外部晶振与输入捕获模式)以及强干扰环境下的数据鲁棒性(需软硬协同滤波)。本文以STM32F103C8T6为平台,深入解析HC-SR04模块的时序闭环控制、TIM3输入捕获双沿测量、L298N电机状态机驱

weixin_42578963的博客 297

动手学深度学习(tensorflow)---学习笔记整理(二、线性回归篇)

(有关公式、基本理论等内容摘自《动手学深度学习》(TF2.0版)) 首先说一下线性回归是什么? 个人理解:线性回归利用某种方法来确定两种或两种以上变量间相互依赖的定量关系的一种分析方法。简单点说,现在有一些随机点,通过某种方法找出来他所符合的线性方程。用途嘛~例如,我们有房价和决定因素的相关数据,可以找到它符合的线性函数,然后对房价进行预测~ 线性回归的基本要素 简单点说就是自变量们和因变量。用一个例子来说,以一个房屋价格预测为例,这个应用的目标是预测一栋房子的售出价格(元)。我们知道这个价格取决于

任萌新的小生活 990

VirusTotal API密钥获取与Python实战:从注册到自动化威胁分析

在网络安全和自动化运维领域,API(应用程序编程接口)是实现系统间数据交互与功能集成的核心技术。其工作原理是通过预定义的协议和端点,允许程序化访问特定服务的数据与功能。对于安全工程师和威胁分析师而言,API的价值在于能够将手动、重复的安全操作(如文件扫描、情报查询)转化为自动化工作流,从而极大提升威胁检测与响应的效率。一个典型的应用场景是集成第三方威胁情报平台,以实现对可疑文件、URL或哈希值的批量与实时分析。本文聚焦于全球知名的威胁情报服务VirusTotal,详细解析其API密钥的注册流程、安全配置要点

weixin_28707739的博客 421

计算机视觉:暗通道去雾算法的原理及python实现

在绝大多数非天空的局部区域中,某些像素总会至少有一个颜色通道的值很低。对于一幅图像J(x),其暗通道的数学定义表示如下:其中,Ω(x)表示以x为中心的局部区域,上标c表示RGB三个通道。该公式的意义用代码表达也很简单,首先求出每个像素RGB分量中的最小值,存入一副和原始图像大小相同的灰度图中,然后再对这幅灰度图进行最小值滤波,滤波的半径由窗口大小决定。

weixin_51998427的博客 1万+

动手学深度学习打卡(一)

1、优化函数的有以下两个步骤: (i)初始化模型参数,一般来说使用随机初始化; (ii)我们在数据上迭代多次,通过在负梯度方向移动参数来更新每个参数。 2、矢量计算 #矢量计算 ''' 向量相加的一种方法是,将这两个向量按元素逐一做标量加法。 向量相加的另一种方法是,将这两个向量直接做矢量加法。 ''' import torch import time #初始化ab n = 1000 ...

ai_XZP_master 302

芒果YOLOv5改进05:损失函数IoU 篇之Repulsion Loss:原创改进损失函数 Repulsion:解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点

YOLOv5改进代码实践|结合Repulsion 解决目标遮挡场景下检测🚀

包括YOLOv5、YOLOv7、YOLOv8等模型改进 4566

深度学习与神经网络学习笔记(四)---线性回归

关于深度学习与神经网络的一些学习笔记

GodWeiJia的博客 1193

【深度学习新浪潮】Harness Engineering 入门实战必看|6个从零可跑开源项目,新手快速上手垂域AI工程落地

很多同学入门 AI Agent、做大模型垂域落地时,都会卡在同一个痛点:只会调用模型、写简单Prompt,却不懂如何做约束管控、流程护栏、任务编排、多智能体边界隔离。而这正是的核心价值。不同于纯理论概念,Harness Engineering 更偏向工程实战,新手不用啃复杂论文,从开源项目动手实操是最高效的学习方式。本文从零基础易上手、可本地一键部署、支持二次改造做实战项目。

专注:太空算力、AI infra、异构调度、大模型成本工程 233

SAP公司间STO业务解析(包含主数据解析、后台配置解析、前台业务演示)

SAP公司间STO业务解析

ww114784的博客 1020

线性回归的从零开始实现

import torch from IPython import display from matplotlib import pyplot as plt import numpy as np import random # 1、生成数据集 # 训练数据集样本数为1000,输入个数(特征数)为2 # 线性回归模型真实权重 w=[2,−3.4] 和偏差 b=4.2 num_inputs = 2 num_examples = 1000 true_w = [2,-3.4] true_b = 4.2 # 生成的数

赵小白的博客 610

YOLOv8 Neck改进:BiFPN双向特征金字塔网络解析与实践

本文详细介绍了如何在YOLOv8中集成BiFPN双向特征金字塔网络,包括原理解析、代码实现、配置文件修改和性能分析。BiFPN通过双向特征融合和加权特征机制,显著提升了多尺度目标检测的性能。希望通过本文的讲解,大家能够深入理解BiFPN的工作原理,并成功将其应用到自己的目标检测项目中。如果你有任何问题或建议,欢迎在评论区留言讨论!在下一篇文章中,我们将探讨YOLOv8的其他改进技术,包括注意力机制、新的损失函数等,敬请期待!

QQ_778132974的博客 992

线性回归:深度学习的骨架与第一课

线性回归是深度学习的基础模型,其核心机制包括前向传播、损失函数、梯度下降和参数更新。通过梯度下降优化均方误差,线性回归能有效解决回归问题,并为复杂神经网络奠定训练流程基础。理解线性回归的数学原理和代码实现,有助于掌握深度学习的通用训练方法,避免常见陷阱如学习率过大和特征未归一化。应用场景包括房价预测等,是入门深度学习的必经之路。

weixin_29038537的博客 227

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

机器深度学习历史与未来及第一课线性回归

深度学习之线性回归 在上个学期,我参加了老师的兴趣学习小组,对Python进行了一定程度的学习,以及上手了深度学习。 在了解完SVM(支持向量机)以后,就渐渐开始了深度学习的入门。 关于深度学习的历史已经很久了。 第一次兴起: 是1943年的神经科学家麦卡洛克提出建立神经网络和数学模型,称为MCP模型。1958年计算机科学家罗森布拉特第一次将mcp模型用于机器学习分类。1962年该方法被证明能收敛...

qq_44807642的博客 791

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

从零手写线性回归:深度学习入门的第一课

线性回归是机器学习中最基础的回归算法,也是理解深度学习的最佳起点。它通过最小化均方误差损失函数,利用梯度下降更新参数,使模型拟合数据规律。尽管形式简单,但涵盖了模型训练的核心流程:前向传播、损失计算、参数更新,这些在神经网络中同样适用。从手写Python代码到使用sklearn工具,线性回归帮助初学者直观理解学习率、过拟合、特征标准化等关键概念。掌握线性回归,等于为深度学习打下坚实的地基,让后续学习如神经网络、逻辑回归等更加顺畅。

weixin_31715171的博客 186

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

动手学深度学习第一课:线性回归

DAY1 线性回归线性回归模型模型简述数据集损失函数优化函数-随机梯度下降法线性回归的代码实现线性回归从零开始实现线性回归模型的PyTorch实现构建多层网络的三种方法 线性回归模型 模型简述 以预测房价为例,影响房价的只有两个因素:面积(平方米)以及房龄(年)。这里影响房价的因素称为特征(feature),真实的房价称为标签(label)。假设房价与特征之间呈线性相关,我们就可以构建一个线性回归...

weixin_42098609的博客 401

从零实现线性回归:深度学习入门的第一课与完整训练流程

线性回归是机器学习和深度学习的基石,其核心在于通过梯度下降优化均方误差来拟合数据。理解前向传播、损失函数和反向传播等机制,是掌握更复杂神经网络模型的前提。在实际应用中,线性回归广泛用于房价预测、销量估计等场景。本文以PyTorch为例,手把手带你从零实现线性回归,涵盖数据构造、标准化、训练循环及常见问题排查,助你夯实深度学习基础。

weixin_29048775的博客 273

深度学习入门第一课:线性回归为什么是最小可运行单元

线性回归是机器学习和深度学习中最基础的模型,其核心是通过梯度下降迭代优化参数,使预测值与真实值之间的平方误差最小化。理解线性回归的前向计算、损失函数、梯度推导和参数更新流程,就掌握了深度学习训练框架的最小可运行单元。在实际应用中,房价预测等回归任务常以线性模型作为基线方案,而小批量随机梯度下降则是工程实践中最常用的优化策略。掌握线性回归的完整训练流程与常见问题排查方法,能为后续学习卷积网络和Transformer等复杂模型打下扎实的工程基础。

weixin_29054399的博客 252

手写线性回归模型:用NumPy从零实现深度学习第一课

线性模型是深度学习的基础起点,理解线性回归有助于掌握前向传播、损失函数、梯度下降等核心概念。本文通过纯Python和NumPy手写实现线性回归,不依赖深度学习框架,清晰展示从数据构造、模型定义、梯度推导到参数更新的完整训练流程。这种实践方法既能帮助初学者建立对模型训练的直观认识,也能让框架使用者理解底层原理。文章还讨论了学习率、特征归一化、参数初始化等工程调优问题,为后续学习神经网络打下坚实基础。通过手写线性模型,读者可以在普通电脑上快速完成机器学习实战入门,自然过渡到深度学习领域。

weixin_29061531的博客 164

深度学习第一课:线性回归的双重演练——从底层逻辑到高阶 API 实践

本文对比了线性回归的两种实现方式:从零开始的手动实现和使用PyTorch框架的简洁实现。手动方式通过定义线性模型、损失函数和SGD优化器,完整展现了梯度下降的底层原理;而框架方式利用nn.Linear、DataLoader和optim.SGD等组件,大幅简化了开发流程。文章特别强调了梯度清零(zero_grad)的重要性,解释了向量求导需要sum()的原因,并对比了两种实现中损失函数处理的差异(手动实现需除以batch_size而框架自动处理)。通过代码示例和Q&A,清晰呈现了线性回归从理论到实践的

czs234299的博客 350

机器学习的第一课

机器学习基础:线性回归与梯度下降 本文梳理了机器学习中的线性回归基础概念和优化方法。主要内容包括: 线性回归基础:介绍了线性回归的矩阵表示和基本术语(训练集、特征、目标值等),解释了模型从输入到预测的完整流程。 线性回归方程:详细说明了单样本和多样本情况下的线性模型表示,引入平方误差(MSE)作为损失函数,并阐述了参数优化的目标。 解析解:展示了如何通过矩阵运算直接求解最优参数,包括将偏置项融入权重矩阵的数学推导过程。 梯度下降:作为无法获得解析解时的替代方案,解释了梯度下降的基本原理和更新规则,强调了学习

Tangtangli_的博客 702

05- 线性回归算法 (LinearRegression) (算法)

线性回归算法(LinearRegression)存在一定的误差符合正太分布求这个正太分布的最小均值和方差求误差的极小值。

March_A的博客 7162

Scikit-learn Python机器学习 - 回归分析算法 - 线性回归 (LinearRegression & SGDRegressor)

Scikit-learn Python机器学习 - 回归分析算法 - 线性回归 ( (LinearRegression & SGDRegressor))

java1234的博客 1410

线性回归(LinearRegression)原理整理+代码实现

线性回归(LinearRegression)原理+代码实现1. 线性回归原理1.1 五个前提假设1.2 定义及公式 1. 线性回归原理 1.1 五个前提假设 (1)线性性 & 可加性 假设因变量为Y,自变量为X1,X2,则回归分析的默认假设为Y=b+a1X1+a2X2+ε。 线性性:X1每变动一个单位,Y相应变动a1个单位,与X1的绝对数值大小无关。 可加性:X1对Y的影响是独立于其他自变量(如X2)的。 (2)误差项(ε)之间应相互独立。 若不满足这一特性,我们称模型具有自相关性(Autoc

ttt123456uuu的博客 9062

第L2周:机器学习|线性回归模型 LinearRegression:1. 简单线性回归模型

回归之所以能预测,是因为它通过大量的花瓣长度与宽度数据,“弄懂了”花瓣长度与宽度之间的线性关系,在这个基础之上就可以通过花瓣长度预测花瓣宽度了。通过鸢尾花的花瓣长度与宽度的线性关系来预测花瓣宽度,通过杯子里水的体积就可以知道(预测)水的重量。但是也并非所有“越…”都是线性的,比如“弹簧的弹力与位移的关系”。回归的目的是为了预测,比如在通过鸢尾花花瓣长度预测花瓣宽度。○①若不填或者填0,每次生成的数据都是随机,可能不一样。●“汉堡”买的越多,花的“钱”就越多。●杯子里的“水”越多,“重量”就越大。

lihuhelihu的博客 1040
上一篇: Mxnet/Gluon,window7,Anaconda3,环境下的配置安装
下一篇: 深度学习第二课 Softmax回归
Halo_Linch
博客等级 码龄11年 11粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值