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

机器学习算法模型系列——Adam算法

Adam是一种自适应学习率的优化算法,结合了动量和自适应学习率的特性。

主要思想是根据参数的梯度来动态调整每个参数的学习率。

核心原理包括:

  1. 动量(Momentum):Adam算法引入了动量项,以平滑梯度更新的方向。这有助于加速收敛并减少震荡。

  2. 自适应学习率:Adam算法计算每个参数的自适应学习率,允许不同参数具有不同的学习速度。

  3. 偏差修正(Bias Correction):Adam算法在初期迭代中可能受到偏差的影响,因此它使用偏差修正来纠正这个问题。

Adam相关公式

初始化:

  • 参数:eq?%5Cbeta

  • 学习率:eq?%5Calpha

  • 梯度估计的移动平均(一阶矩):eq?m%3D0

  • 梯度平方的移动平均(二阶矩):eq?v%3D0

  • 时间步数:eq?t%3D0

每个迭代步骤:

  1. eq?t%3Dt+1
  2. 计算梯度:eq?g_%7Bt%7D%20%3D%5Cbigtriangledown%20f%20_%7Bt%7D%28%5Ctheta%20_%7Bt%7D%29

  3. 更新一阶矩:eq?m_%7Bt%7D%20%3D%5Cbeta_%7B1%7D%5Ccdot%20m_%7Bt-1%7D+%281-%5Cbeta_%7B1%7D%29%5Ccdot%20g_%7Bt%7D

  4. 更新二阶矩:eq?v_%7Bt%7D%20%3D%5Cbeta_%7B2%7D%5Ccdot%20v_%7Bt-1%7D+%281-%5Cbeta_%7B2%7D%29%5Ccdot%20g_%7Bt%7D%5E%7B2%7D

  5. 修正偏差(Bias Correction): eq?%5Chat%7Bm%7D_%7Bt%7D%20%3D%5Cfrac%7Bm_%7Bt%7D%7D%7B%281-%5Cbeta_%7B1%7D%5E%7Bt%7D%29%7D和 eq?%5Chat%7Bv%7D_%7Bt%7D%20%3D%5Cfrac%7Bv%7Bt%7D%7D%7B%281-%5Cbeta_%7B2%7D%5E%7Bt%7D%29%7D

  6. 更新参数:eq?%7B%5Ctheta%7D_%7Bt+1%7D%20%3D%7B%5Ctheta%7D_%7Bt%7D%20-%5Calpha%20%5Ccdot%20%5Cfrac%7B%5Chat%7Bm%7D%7Bt%7D%7D%7B%28%5Csqrt%7Bv_%7Bt%7D%7D-%5Cvarepsilon%20%29%7D,其中 eq?%5Cvarepsilon 是一个小的常数,以防分母为零。

项目:基于Adam优化算法的神经网络训练

在这个项目中,我们将使用Adam优化算法来训练一个简单的神经网络,以解决二分类问题。我们将深入讨论Adam算法的原理和公式,并展示如何在Python中实施它。最后,我们将绘制学习曲线,以可视化模型的训练进展。

项目:基于Adam优化算法的神经网络训练

在这个项目中,我们将使用Adam优化算法来训练一个简单的神经网络,以解决二分类问题。我们将深入讨论Adam算法的原理和公式,并展示如何在Python中实施它。最后,我们将绘制学习曲线,以可视化模型的训练进展。

模型训练

使用Python代码实现Adam算法来训练一个二分类的神经网络。

使用Python中的NumPy库来进行计算,并使用一个合成的数据集来演示。

import numpy as np
import matplotlib.pyplot as plt# 定义模型和数据
np.random.seed(42)
X = np.random.rand(100, 2)  # 特征数据
y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 二分类标签# 定义神经网络模型
def sigmoid(x):return 1 / (1 + np.exp(-x))def predict(X, weights):return sigmoid(np.dot(X, weights))# 初始化参数和超参数
theta = np.random.rand(2)  # 参数初始化
alpha = 0.1  # 学习率
beta1 = 0.9  # 一阶矩衰减因子
beta2 = 0.999  # 二阶矩衰减因子
epsilon = 1e-8  # 用于防止分母为零# 初始化Adam算法所需的中间变量
m = np.zeros(2)
v = np.zeros(2)
t = 0# 训练模型
num_epochs = 100
for epoch in range(num_epochs):for i in range(len(X)):t += 1gradient = (predict(X[i], theta) - y[i]) * X[i]m = beta1 * m + (1 - beta1) * gradientv = beta2 * v + (1 - beta2) * gradient**2m_hat = m / (1 - beta1**t)v_hat = v / (1 - beta2**t)theta -= alpha * m_hat / (np.sqrt(v_hat) + epsilon)# 输出训练后的参数
print("训练完成后的参数:", theta)# 定义损失函数
def loss(X, y, weights):y_pred = predict(X, weights)return -np.mean(y * np.log(y_pred) + (1 - y) * np.log(1 - y_pred))# 记录损失值
loss_history = []
for i in range(len(X)):loss_history.append(loss(X[i], y[i], theta))# 绘制损失函数曲线
plt.plot(range(len(X)), loss_history)
plt.xlabel("Iteration")
plt.ylabel("Loss Function Value")
plt.title("Change in Loss Function Over Time")
plt.show()

这个图形将显示损失函数值随着迭代次数的减小而减小,这表明Adam优化算法成功地训练了模型。

 

0c28a34bb095b6c7dd66ad815c82823e.png

 

 

相关文章:

机器学习算法模型系列——Adam算法

Adam是一种自适应学习率的优化算法,结合了动量和自适应学习率的特性。 主要思想是根据参数的梯度来动态调整每个参数的学习率。 核心原理包括: 动量(Momentum):Adam算法引入了动量项,以平滑梯度更新的方向…...

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…...

基于xr-frame实现微信小程序的手部、手势识别3D模型叠加和石头剪刀布游戏功能

前言 xr-frame是一套小程序官方提供的XR/3D应用解决方案,基于混合方案实现,性能逼近原生、效果好、易用、强扩展、渐进式、遵循小程序开发标准。xr-frame在基础库v2.32.0开始基本稳定,发布为正式版,但仍有一些功能还在开发&#…...

基于Kafka2.1解读Consumer原理

文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了,今天来讲讲Consumer的原理。 其实源码早就读了部分了,但是最近工作比较忙&#x…...

深度学习:ResNet每一层的输出形状

其中 /**在输出通道数为64、步幅为2的7 7卷积层后,接步幅为2的3 3的最大汇聚层,与GoogLeNet区别是每个卷积层后增加了批量规范层**/ b1 nn.Sequential(nn.Conv2d(1, 64, kernel_size7, stride2, padding3),nn.BatchNorm2d(64), nn.ReLU(),nn.MaxPool2d(kernel_s…...

国内几大网络安全公司介绍 - 网络安全

Posted by zhaol under 安全 , 电信 , 评论 , 中国 中国国内的安全市场进入“战国时期”,启明星辰、绿盟、天融信、安氏、亿阳、联想网御、华为等战国七雄拥有雄厚的客户资源和资金基础,帐前皆有勇猛善战之士,渐渐开始统领国内安全市场的潮流…...

修改Android Studio项目配置JDK路径和项目Gradle路径的GUI工具

概述 本工具提供了一个基于Python Tkinter的图形用户界面(GUI),用于帮助用户搜索并更新Android Studio项目中的config.properties文件里的java.home路径,以及workspace.xml文件中的last_opened_file_path路径。该工具旨在简化手动…...

✅DAY30 贪心算法 | 452. 用最少数量的箭引爆气球 | 435. 无重叠区间 | 763.划分字母区间

452. 用最少数量的箭引爆气球 解题思路:首先把原数组按左边界进行排序。然后比较[i-1]的右边界和[i]的左边界是否重叠,如果重叠,更新当前右边界为最小右边界和[i1]的左边界判断是重叠。 class Solution:def findMinArrowShots(self, points:…...

关于Redis单线程模型以及IO多路复用的理解

IO多路复用 -> redis主线程 -> 事件队列 -> 事件处理器 1.IO多路复用机制的作用: 操作系统的多路复用机制(如 epoll、select)负责监听多个文件描述符(如客户端连接)上的事件。 当某个文件描述符上的事件就绪…...

学习ASP.NET Core的身份认证(基于Cookie的身份认证1)

B/S架构程序可通过Cookie、Session、JWT、证书等多种方式认证用户身份,虽然之前测试过用户登录代码,也学习过开源项目中的登录认证,但其实还是对身份认证疑惑甚多,就比如登录验证后用户信息如何保存、客户端下次连接时如何获取用户…...

奇门遁甲中看债务时用神该怎么取?

奇门遁甲中看债务的用神 一、值符 值符在债务关系中可代表债权人(放贷人)。例如在预测放贷时,以值符为放贷人,如果值符克天乙(借贷人)或者天乙生值符,这种情况下可以放贷;反之&#…...

Redis 集群主要有以下几种类型

Redis 集群主要有以下几种类型: 主从复制模式: 这种模式包含一个主数据库实例(master)与一个或多个从数据库实例(slave)。客户端可以对主数据库进行读写操作,对从数据库进行读操作,主…...

使用 Axios 拦截器优化 HTTP 请求与响应的实践

目录 前言1. Axios 简介与拦截器概念1.1 Axios 的特点1.2 什么是拦截器 2. 请求拦截器的应用与实践2.1 请求拦截器的作用2.2 请求拦截器实现 3. 响应拦截器的应用与实践3.1 响应拦截器的作用3.2 响应拦截器实现 4. 综合实例:一个完整的 Axios 配置5. 使用拦截器的好…...

mini-lsm通关笔记Week2Day5

项目地址:https://github.com/skyzh/mini-lsm 个人实现地址:https://gitee.com/cnyuyang/mini-lsm Summary 在本章中,您将: 实现manifest文件的编解码。系统重启时从manifest文件中恢复。 要将测试用例复制到启动器代码中并运行…...

mybatis的动态sql用法之排序

概括 在最近的开发任务中,涉及到了一些页面的排序,其中最为常见的就是时间的降序和升序。这个有的前端控件就可以完成,但是对于一些无法用前端控件的,只能通过后端来进行解决。 后端的解决方法就是使用mybatis的动态sql拼接。 …...

OneToMany 和 ManyToOne

在使用 ORM(如 TypeORM)进行实体关系设计时,OneToMany 和 ManyToOne 是非常重要的注解,常用来表示两个实体之间的一对多关系。下面通过例子详细说明它们的使用场景和工作方式。 OneToMany 和 ManyToOne 的基本概念 ManyToOne 表示…...

《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人

课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 我们希望你创建一个定制的服务机器人。 您可以想出任何您希望机器人执行的任务,例如,一个可以解决简单的数学问题的机器人0 一个机器人&#xff0c…...

反转链表、链表内指定区间反转

反转链表 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 如当输入链表{1,2,3}时,经反转后,原链表变…...

Debezium系列之:Debezium3版本使用快照过程中的指标

Debezium系列之:Debezium3版本使用快照过程中的指标 一、背景二、技术原理三、增量快照四、阻塞快照指标一、背景 使用快照技术的过程中可以观察指标,从而确定快照的进度二、技术原理 Debezium系列之:Debezium 中的增量快照Debezium系列之:Incremental snapshotting设计原理…...

第一讲,Opencv计算机视觉基础之计算机视觉概述

深度剖析计算机视觉:定义、任务及未来发展趋势 引言 计算机视觉(Computer Vision)是人工智能的重要分支之一,旨在让机器通过视觉感知和理解环境。随着深度学习的快速发展,计算机视觉在自动驾驶、安防监控、医疗影像等…...

数据结构(双向链表——c语言实现)

双向链表相比于单向链表的优势: 1. 双向遍历的灵活性 双向链表:由于每个节点都包含指向前一个节点和下一个节点的指针,因此可以从头节点遍历到尾节点,也可以从尾节点遍历到头节点。这种双向遍历的灵活性使得在某些算法和操作中&a…...

【新人系列】Python 入门(十一):控制结构

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…...

群核科技首次公开“双核技术引擎”,发布多模态CAD大模型

11月20日,群核科技在杭州举办了第九届酷科技峰会。现场,群核科技首次正式介绍其技术底层核心:基于GPU高性能计算的物理世界模拟器。并对外公开了两大技术引擎:群核启真(渲染)引擎和群核矩阵(CAD…...

【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势

文章目录 每日一句正能量前言流程与模式介绍【传统软件开发 VS AI参与的软件开发】一、传统软件开发流程与模式二、AI参与的软件开发流程与模式三、AI带来的不同之处 结论 AI在软件开发流程中的优势、挑战及应对策略AI在软件开发流程中的优势面临的挑战及应对策略 结论 后记 每…...

linux 常用命令指南(存储分区、存储挂载、docker迁移)

前言:由于目前机器存储空间不够,所以‘斥巨资’加了一块2T的机械硬盘,下面是对linux扩容的一系列操作,包含了磁盘空间的创建、删除;存储挂载;docker迁移;anaconda3迁移等。 一、存储分区 1.1 …...

用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错

首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO:SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…...

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性

Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性 过期删除策略内存淘汰机制怎么保证redis双写的一致性?更新策略先删除缓存后更新数据库先更新数据库后删除缓存如何选择?如何保证先更新数据库后删除缓存的线程安全问题? 过期删除策略 为了…...

异常处理:import cv2时候报错No module named ‘numpy.core.multiarray‘

问题描述 执行一个将视频变成二值视频输出时候,报错。No module named numpy.core.multiarray,因为应安装过了numpy,所以比较不解。试了卸载numpy和重新安装numpy多次操作,也进行了numpy升级的操作,但是都没有用。 解…...

C++手写PCD文件

前言 一般pcd读写只需要调pcl库接口,直接用pcl的结构写就好了 这里是不依赖pcl库的写入方法 主要是开头写一个header 注意字段大小,类型不要写错     结构定义 写入点需要与header中定义一致 这里用的RoboSense的结构写demo 加了个1字节对齐 stru…...

优选算法(双指针)

1.双指针介绍 双指针算法是一种常用的算法思想,特别适用于处理涉及阵列、链表或字符串等线性数据结构的问题。通过操作两个一个指针来进行导航或操作数据结构,双指针可以最大程度优化解决方案的效率。提高效率并减少空间复杂度。 在Java中使用双指针的核…...

wordpress 重置密码链接/百度信息流怎么投放

前言 花了几天功夫做了一个YOLOv5的PyQT可视化程序,主要针对多幅图片训练、自动标注和检测展示。涉及正在进行的项目,暂时不开源。在开发过程中,踩了不少坑,这里简单做一些记录。 项目使用到的开源代码: YOLOv5(5.06…...

乌鲁木齐企业网站建设公司/中国国家人才培训网官网

写在前面mysql在开发过程中使用率比较高的数据库,linux下安装也挺简单,主要是一些配置容易忽略,文件权限比较复杂,下面例子使用超级用户(root)安装mysql5.6。默认mysql安装的权限是mysql用户组的mysql用户,不需要手动去…...

体育网站建设/佛山网络公司 乐云seo

《8.用计算机做科学实验.ppt》由会员分享,可在线阅读,更多相关《8.用计算机做科学实验.ppt(15页珍藏版)》请在人人文库网上搜索。1、计算机系统的组成,一. 计算机系统的组成,我们常用的微型计算机一般由主机、输入设备和输出设备组成。,主机箱内,一. 计算…...

家政公司网站模板/百度竞价点击价格公式

Python使用pip命令安装时,默认使用的源是国外的网站,而国内访问比较慢,此时要换源,以下两种方法换源。 方法一(解决一次安装): 阿里源 pip install 要安装的包名 -i http://mirrors.aliyun.com/pypi/simple/ --trust…...

网站改版的方式/如何制作小程序

最近工作需要从Oracle迁移大量数据到MySql,由于涉及不深,便网上学习了很多的方法,现总结Oracle迁移大量数据到MySql如下:一,牛人编写的Oracle到MySQL的数据迁移工具从Oracle迁移数据到MySQL的小程序,ora2mysql下载地址…...

做网站后端/明星百度指数排行

平常开发过程中,如果涉及到RPC调用,对于服务调用方和服务提供方,都是可以设置接口超时时间的。以调用方为例,调用方需要调用远程的一个接口,为了保证服务的质量,一般会设置调用接口的超时时间,比…...