当前位置: 首页 > news >正文

AI基础 -- 练手之预测耗时方案

预测耗时的方案

1. 初始化权重

计算初始权重 w w w
w = a 2 − a 1 1 w = \frac{a2 - a1}{1} w=1a2a1

2. 预测值

使用权重和实际值 a 2 a2 a2 来计算预测值 y 3 y3 y3
y 3 = w ⋅ 1 + a 2 y3 = w \cdot 1 + a2 y3=w1+a2

3. 损失函数

计算预测值 y 3 y3 y3 与实际值 a 3 a3 a3 之间的损失:

常见的损失函数为均方误差(MSE),即:
MSE = ( y 3 − a 3 ) 2 \text{MSE} = (y3 - a3)^2 MSE=(y3a3)2

4. 更新权重

4.1 损失函数对权重的偏导数

首先,对损失函数 MSE \text{MSE} MSE 关于权重 w w w 的偏导数进行求解:

MSE = ( y 3 − a 3 ) 2 \text{MSE} = (y3 - a3)^2 MSE=(y3a3)2

计算 y 3 y3 y3 w w w 的导数:

y 3 = w ⋅ 1 + a 2 y3 = w \cdot 1 + a2 y3=w1+a2

∂ y 3 ∂ w = 1 \frac{\partial y3}{\partial w} = 1 wy3=1

使用链式法则计算均方误差损失函数对权重的偏导数:

∂ MSE ∂ w = 2 ⋅ ( y 3 − a 3 ) ⋅ ∂ y 3 ∂ w \frac{\partial \text{MSE}}{\partial w} = 2 \cdot (y3 - a3) \cdot \frac{\partial y3}{\partial w} wMSE=2(y3a3)wy3

代入 ∂ y 3 ∂ w = 1 \frac{\partial y3}{\partial w} = 1 wy3=1

∂ MSE ∂ w = 2 ⋅ ( y 3 − a 3 ) ⋅ 1 \frac{\partial \text{MSE}}{\partial w} = 2 \cdot (y3 - a3) \cdot 1 wMSE=2(y3a3)1

∂ MSE ∂ w = 2 ⋅ ( y 3 − a 3 ) \frac{\partial \text{MSE}}{\partial w} = 2 \cdot (y3 - a3) wMSE=2(y3a3)

4.2 更新权重

使用梯度下降法更新权重 w w w

w = w − η ⋅ ∂ MSE ∂ w w = w - \eta \cdot \frac{\partial \text{MSE}}{\partial w} w=wηwMSE

代入偏导数:

w = w − η ⋅ ( 2 ⋅ ( y 3 − a 3 ) ) w = w - \eta \cdot (2 \cdot (y3 - a3)) w=wη(2(y3a3))

其中 η \eta η 是学习率。

4.3 学习率的选取

学习率 η \eta η 是控制每次权重更新幅度的超参数。选择合适的学习率非常重要:

  • 过小的学习率:收敛速度慢,可能导致训练时间过长。
  • 过大的学习率:可能导致训练不稳定,甚至发散。

选择学习率的一些建议:

  • 实验法:从一个较小的值开始(如 0.01 或 0.001),然后逐步增加,观察损失函数的变化。
  • 学习率调度:可以使用学习率衰减策略,在训练过程中逐渐减小学习率,以提高训练稳定性和收敛效果。

4.4 评估学习效果

学习过程完成的标志包括:

  • 损失函数收敛:损失函数值趋于稳定,变化幅度变小。可以设置一个阈值(如损失值变化小于 0.001)来判断收敛。
  • 预测精度:预测值与实际值的差异变小。可以使用均方误差(MSE)或其他评价指标来评估预测精度。
  • 验证集表现:如果使用了验证集,则验证集上的损失函数值趋于稳定,且不再显著下降,说明模型的学习效果良好。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vllm 推理qwen gguf模型使用案例;openai接口调用、requests调用
  • ploarDNctf靶场[CRYPTO]你知道M型栅栏密码吗?、一闪一闪亮星星、interesting
  • JavaScript ES6+ 新特性
  • 《费曼学习法》
  • Android 12系统源码_输入系统(二)InputManagerService服务
  • Kubernetes存储Volume
  • 【STM32】时钟体系
  • 凌鸥学园电机控制学习盛宴,诚邀您的加入
  • 若依后端添加子模块swagger分区
  • MySQL中的事物详解
  • Electron程序逆向(asar归档解包)
  • YoloV8实战:使用YoloV8实现OBB框检测
  • 数据结构---单链表(常见的复杂操作)
  • OpenAI 神秘模型「草莓」预计今秋推出,ChatGPT 将迎重大升级|TodayAI
  • Flutter 自动化测试 -appium-flutter-driver
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 《剑指offer》分解让复杂问题更简单
  • 2017 年终总结 —— 在路上
  • C++11: atomic 头文件
  • Golang-长连接-状态推送
  • JS笔记四:作用域、变量(函数)提升
  • laravel 用artisan创建自己的模板
  • LeetCode18.四数之和 JavaScript
  • Spring Cloud Feign的两种使用姿势
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 京东美团研发面经
  • 如何编写一个可升级的智能合约
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 通信类
  • 我的zsh配置, 2019最新方案
  • 如何在招聘中考核.NET架构师
  • ​Java并发新构件之Exchanger
  • ​ubuntu下安装kvm虚拟机
  • ​低代码平台的核心价值与优势
  • #QT(一种朴素的计算器实现方法)
  • #window11设置系统变量#
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (Forward) Music Player: From UI Proposal to Code
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • .htaccess配置常用技巧
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core中Emit的使用
  • .NET8使用VS2022打包Docker镜像
  • .NET企业级应用架构设计系列之应用服务器
  • .NET轻量级ORM组件Dapper葵花宝典
  • //解决validator验证插件多个name相同只验证第一的问题
  • ??在JSP中,java和JavaScript如何交互?
  • @test注解_Spring 自定义注解你了解过吗?
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)
  • [AHK V2]鼠标悬停展开窗口,鼠标离开折叠窗口
  • [Android]Android开发入门之HelloWorld
  • [bug总结]: Feign调用GET请求找不到请求体实体类