【深度学习】线性回归

Linear Regression

  • 一个例子
  • 线性回归
  • 机器学习中的表达
  • 评价函数好坏的度量:损失(Loss)
  • 损失函数(Loss function)
    • 哪个数据集的均方误差 (MSE) 高
  • 如何找出最优b和w?
  • 寻找最优b和w
  • 如何降低损失 (Reducing Loss)
  • 梯度下降法
    • 梯度
    • 计算梯度f^'^(x)i
    • 梯度下降法(gradient descent)
    • 学习速率(Learning rate)
    • 金发女孩原则(Goldilocks principle)
  • 如何训练模型
  • 习题

一个例子

相比凉爽的天气,蟋蟀在较为炎热的天气里鸣叫更频繁。
现有数据如下图,请预测鸣叫声与温度的关系。
在这里插入图片描述

线性回归

如图这种由点确定线的过程叫回归,既找出因变量和自变量之间的关系

y = mx + b

y指的是温度(摄氏度),即我们试图预测的值
m指的是直线的斜率
x指的是每分钟的鸣叫声次数,即输入特征的值
b指的是y轴截距

机器学习中的表达

y=𝑤𝑥+𝑏

x 特征(feature)
y 预测值(target)
w 权重(weight)
b 偏差(bias)

在这里插入图片描述
样本(samples) (x,y)

在这里插入图片描述

如何找出最优的函数 , 即找出一组最佳的w和b?
首先需要对函数的好坏进行评价

评价函数好坏的度量:损失(Loss)

反应模型预测(prediction)的准确程度。

如果模型(model)的预测完全准确,则损失为零
训练模型的目标是从所有样本中找到一组平均损失 “较小” 的权重和偏差。

在这里插入图片描述

显然,相较于左侧曲线图中的蓝线,右侧曲线图中的蓝线代表的是预测效果更好的模型

损失函数(Loss function)

损失函数是指汇总各样本损失的数学函数。

· 平方损失(又称为 L2 损失)
· 单个样本的平方损失= ( observation - prediction(x) )2 = ( y - y’ )2
· 均方误差 (mean-square error, MSE) 指的是样本的平均平方损失

在这里插入图片描述

哪个数据集的均方误差 (MSE) 高

以下两幅图显示的两个数据集,哪个数据集的均方误差 (MSE) 较高?

在这里插入图片描述

B图线上的 8 个样本产生的总损失为 0。不过,尽管只有两个点在线外,但这两个点的离线距离依然是左图中离群点的 2 倍。平方损失进一步加大差异,因此两个点的偏移量产生的损失是一个点的 4 倍。
· 根据损失函数的定义
· 对于A:MSE = (02 + 12 + 02 + 12 + 02 + 12 + 02 + 12 + 02 + 02)/10 = 0.4
· 对于B:MSE = (02 + 02 + 02 + 22 + 02 + 02 + 02 + 22 + 02 + 02)/10 = 0.8

→因此B的MSE较高。

如何找出最优b和w?

定义了损失函数,我们就可以评价任一函数的好坏,下一步如何找出最优b和w?
靠猜~
在这里插入图片描述

像猜价格游戏,参与者给出初始价钱,通过“高了”或“低了”的提示,逐渐接近正确的价格。
在这里插入图片描述

寻找最优b和w

1. 首先随机给出一组参数b=1,w=1 
2. 评价这组参数的好坏,例如用MSE 
3. 改变w和b的值
4. 转到步骤2,直到总体损失不再变化或变化极其缓慢为止,该模型已收敛

在这里插入图片描述

最后一个问题:如何改变w、b ???

如何降低损失 (Reducing Loss)

简化问题,以只有一个参数w为例,所产生的损失Loss与 w 的图形是凸形(convex)。如下所示:

在这里插入图片描述

只有一个最低点 → 即只存在一个斜率正好为 0 的位置。
损失函数取到最小值的地方。

但是,如何找到这一点呢?

  1. 为w选择一个起点↓ 这里选择了一个稍大于 0 的起点
    在这里插入图片描述

梯度下降法

梯度

· 梯度是偏导数的矢量;有方向和大小。

· 梯度即是某一点最大的方向导数,沿梯度方向函数有最大的变化率
(沿梯度方向函数增加,负梯度方向函数减少)

· 损失Loss相对于单个权重的梯度大小就等于导数f(x)i

二元函数的梯度:
在这里插入图片描述

计算梯度f(x)i

求导数,即切线的斜率,在这个例子中,是负的,因此负梯度是w的正方向。

在这里插入图片描述

梯度下降法(gradient descent)

w=w-lr*w_grad

lr (learning rate,学习速率)

在这里插入图片描述

然后,重复此过程,逐渐接近最低点。
在这里插入图片描述
⭐负梯度指向损失函数下降的方向

学习速率(Learning rate)

通常梯度下降法用梯度乘以学习速率(步长),以确定下一个点的位置:

w=w-lr*w_grad

例如,如果学习速率为 0.01,梯度大小为 2.5,则:
w=w-0.01*2.5

学习速率是机器学习算法中人为引入的,是用于调整机器学习算法的旋钮,这种称为超参数。
在这里插入图片描述

金发女孩原则(Goldilocks principle)

每个回归问题都存在一个“Goldilocks principle”学习速率,该值与损失函数的平坦程度相关。 例如,如果损失函数的梯度较小,则可以采用更大的学习速率,以补偿较小的梯度并获得更大的步长。

(西方有一个儿童故事叫 “ The Three Bears(金发女孩与三只小熊)”,迷路了的金发姑娘未经允许就进入了熊的房子,她尝了三只碗里的粥,试了三把椅子,又在三张床上躺了躺。最后发现不烫不冷的粥最可口,不大不小的椅子坐着最舒服,不高不矮的床上躺着最惬意。道理很简单,刚刚好就是最适合的,just the right amount,这样做选择的原则被称为 Goldilocks principle(金发女孩原则)。)

采取恰当学习速率,可以高效的到达最低点,如下图所示:

在这里插入图片描述
降低损失:优化学习速率-模拟动图

如何训练模型

  1. 定义一个函数的集合
  2. 给出评价函数好坏的方法
  3. 利用梯度下降法找到最佳函数

在这里插入图片描述

习题

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as pltdef gradient_descent(x, y, theta, learning_rate, epochs):ws = []bs = []for i in range(epochs):y_pred = x.dot(theta)diff = y_pred - yloss = 0.5 * np.mean(diff ** 2)g = x.T.dot(diff)theta -= learning_rate * gws.append(theta[0][0])bs.append(theta[1][0])learning_rate = learning_rate_shedule(i + 1)print(f'第{i + 1}次梯度下降后,损失为{round(loss, 5)},w为{round(theta[0][0], 5)},b为{round(theta[1][0], 5)}')if loss < 0.001:breakreturn ws, bsdef learning_rate_shedule(t):return t0 / (t + t1)if __name__ == '__main__':xdata = np.array([8, 3, 9, 7, 16, 5, 3, 10, 4, 6])ydata = np.array([30, 21, 35, 27, 42, 24, 10, 38, 22, 25])x_data = np.array(xdata).reshape(-1, 1)y_data = np.array(ydata).reshape(-1, 1)X = np.concatenate([x_data, np.full_like(x_data, fill_value=1)], axis=1)theta = np.random.randn(2, 1)t0 = 1.5t1 = 1000ws, bs = gradient_descent(X, y_data, theta, learning_rate_shedule(0), 10000)ax = plt.subplot(3, 2, 1)bx = plt.subplot(3, 2, 2)cx = plt.subplot(3, 1, (2, 3))# 散点+预测线ax.scatter(x_data, y_data)x = np.linspace(x_data.min() - 1, x_data.max() + 1, 100)y = ws[-1] * x + bs[-1]ax.plot(x, y, color='red')ax.set_xlabel('x')ax.set_ylabel('y')#w,b变化x = np.arange(1, len(ws) + 1)bx.plot(x, ws, label='w')bx.plot(x, bs, label='b')bx.set_xlabel('epoch')bx.set_ylabel('change')bx.legend()#等高线def get_loss(w, b):return 0.5 * np.mean((y_data - (w * x_data + b)) ** 2)b_range = np.linspace(-100, 100, 100)w_range = np.linspace(-10, 10, 100)losses = np.zeros((len(b_range), len(w_range)))for i in range(len(b_range)):for j in range (len(w_range)):losses[i, j] = get_loss(w_range[j], b_range[i])cx.contour(b_range, w_range, losses, cmap='summer')cx.contourf(b_range, w_range, losses)cx.set_xlabel('b')cx.set_ylabel('w')plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/276331.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue首屏优化方案

在Vue项目中&#xff0c;引入到工程中的所有js、css文件&#xff0c;编译时都会被打包进vendor.js&#xff0c;浏览器在加载该文件之后才能开始显示首屏。若是引入的库众多&#xff0c;那么vendor.js文件体积将会相当的大&#xff0c;影响首屏的体验。可以看个例子&#xff1a;…

Elasticsearch使用Kibana进行基础操作

一、Restful接口 Elasticsearch通过RESTful接口提供与其进行交互的方式。在ES中&#xff0c;提供了功能丰富的RESTful API的操作&#xff0c;包括CRUD、创建索引、删除索引等操作。你可以用你最喜爱的 web 客户端访问 Elasticsearch 。事实上&#xff0c;你甚至可以使用 curl …

java SSM在线学习网站系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM在线学习网站系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

COX回归影响因素分析的基本过程与方法

在科学研究中&#xff0c;经常遇到分类的结局&#xff0c;主要是二分类结局&#xff08;阴性/阳性&#xff1b;生存/死亡&#xff09;&#xff0c;研究者可以通过logistic回归来探讨影响结局的因素&#xff0c;但很多时候logistic回归方法无法使用。如比较两种手段治疗新冠肺炎…

AOP-面向切面编程

文章目录 AOP应用背景AOP介绍AOP七大术语切点表达式 AOP应用背景 一天&#xff0c;项目经理突然跟我说&#xff1a;官网后端管理系统需要增加“用户操作流水功能”&#xff01;啥&#xff0c;用户操作流水&#xff1f;对&#xff0c;记录后台管理用户的所有增删改查的操作&…

mac删除带锁标识的app

一 、我们这里要删除FortiClient.app 带锁 常规方式删除不掉带锁的 app【如下图】 二、删除命令&#xff0c;依次执行即可。 /bin/ls -dleO /Applications/FortiClient.app sudo /usr/bin/chflags -R noschg /Applications/FortiClient.app /bin/ls -dleO /Applications/Forti…

QT信号与槽实现方式

1、第一种实现方式 在QT开发工具UI界面先拖入按钮&#xff0c;然后鼠标右键拖入按钮&#xff0c;点击选中槽&#xff0c;在页面选着需要的信号&#xff0c;然后OK&#xff0c;随即将会跳转到类的.cpp文件&#xff0c;&#xff08;这种UI代码结合的方式&#xff0c;会自动去绑定…

【洛谷 P8637】[蓝桥杯 2016 省 B] 交换瓶子 题解(贪心算法)

[蓝桥杯 2016 省 B] 交换瓶子 题目描述 有 N N N 个瓶子&#xff0c;编号 1 ∼ N 1 \sim N 1∼N&#xff0c;放在架子上。 比如有 5 5 5 个瓶子&#xff1a; 2 , 1 , 3 , 5 , 4 2,1,3,5,4 2,1,3,5,4 要求每次拿起 2 2 2 个瓶子&#xff0c;交换它们的位置。 经过若干次…

AIGC笔记--关节点6D位姿按比例融合

1--核心代码 6D位姿一般指平移向量和旋转向量&#xff0c;Maya软件中关节点的6D位姿指的是相对平移向量和欧拉旋转向量&#xff1b; 为了按比例融合两个Pose&#xff0c;首先需要将欧拉旋转向量转换为旋转矩阵&#xff0c;在将旋转矩阵转换为四元数&#xff0c;利用球面线性插值…

react native常用插件

react-native-async-storage/async-storage 说明&#xff1a;AsyncStorage 是一个在 react-native 中轻量存储的库&#xff1b;跟 localStorage 类似&#xff0c;API 也几乎一样&#xff1b;存储的时候需要将存储内容转成字符串存储。 react-navigation/material-bottom-tabs …

如何在WordPress网站上设置多语言展示

在今天的全球化世界中&#xff0c;拥有多语言网站对于吸引更广泛的受众至关重要。前不就我们遇到Hostease的客户咨询我们的在线客服&#xff0c;他想要对他的wordpress网站支持多语言。我们提供给客户可以尝试以下的插件来支持多语言。 在本教程中&#xff0c;我们将逐步介绍如…

教你三指针拿捏链表翻转

类似上图&#xff0c;其实步骤很简单&#xff0c;用三个指针pre&#xff0c;cur&#xff0c;temp&#xff0c;看英文也知道具体含义&#xff0c;前向&#xff0c;当前&#xff0c;和用于保存剩余的链表 &#xff0c;具体看下图&#xff0c;很清晰 class Solution { public:List…

AI-逻辑回归模型

&#x1f606;&#x1f606;&#x1f606;感谢大家的支持~&#x1f606;&#x1f606;&#x1f606; 逻辑回归的应用场景 逻辑回归&#xff08;Logistic Regression&#xff09;是机器学习中的 一种分类模型 &#xff0c;逻辑回归是一种分类算法&#xff0c;虽然名字中带有回…

Java代码基础算法练习---2024.3.14

其实这就是从我学校的资源&#xff0c;都比较基础的算法题&#xff0c;先尽量每天都做1-2题&#xff0c;练手感。毕竟离我真正去尝试入职好的公司&#xff08;我指的就是中大厂&#xff0c;但是任重道远啊&#xff09;&#xff0c;仍有一定的时间&#xff0c;至少要等我升本之后…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

机器硬件命令

一、查看机器核数 有以下几种方法 1、lscpu命令 lscpu命令可以显示关于CPU的信息&#xff0c;包括核数、线程数等。在终端中输入以下命令即可查看CPU核数&#xff1a;该命令会输出CPU每个物理插槽的核数。 lscpu | grep "Core(s) per socket" | awk {print $NF} …

[iOS]高版本MacOS运行低版本Xcode

Xcode 版本支持文档 目的&#xff1a; 在MacOS Sonoma 系统上安装 Xcode14.3.1 第一步 先在Xcode下载一个Xcode14.3.1的压缩包 第二步 本地解压Xcode&#xff0c;将外层目录名变更为Xcode_14.3.1&#xff0c;将文件拷贝到 /Applications目录下。 第三步 变更xcode-sel…

案例分析篇06:数据库设计相关28个考点(17~22)(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

中国金融统计年鉴、中国保险统计年鉴、中国人口与就业统计年鉴、国民经济和社会发展公报、中国劳动统计年鉴

数据下载链接&#xff1a;百度云下载链接 统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年…

案例分析篇01:软件架构设计考点架构风格及质量属性(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…