神经网络与模型训练过程笔记

1.专有名词

ANN

        人工神经网络,一种受生物神经元启发的监督学习算法。输入数据通过网络中的层级函数传递,激活特定神经元。函数复杂度越高,模型对数据的拟合能力越强,预测精度越高。

偏置项

        其中x下表从1开始的是输入变量,\omega下标为0的是偏置项,从1开始的都是权重。

前向传播

        前向传播是神经网络的核心计算过程,指输入数据从输入层逐层传递到输出层的路径。其目的是通过网络的权重和激活函数,计算最终的预测输出。

        如果隐藏层没有非线性激活函数,那么输入和输出是线性关系的。

激活函数

        激活函数是神经网络的核心组件,用于引入非线性,使网络能够拟合复杂的数据模式。如果没有激活函数,神经网络将退化为线性回归模型。

        假如激活函数为Sigmoid函数。

损失值

        损失值是神经网络训练的核心指标,用于衡量模型预测结果与真实值之间的差异。通过最小化损失值,模型逐步优化参数,提升预测精度。

连续变量预测过程中计算损失值

        其中,y_i实际输出,\hat{y}是由神经网络\eta(权重为\theta)得到的预测输出,x_i输入,m为训练的样本数。

        假设上面的图预测的是连续变量。

离散变量预测过程中计算损失值

        二元交叉熵

        分类交叉熵

        

反向传播

  • 反向传播是“反着来”的过程,用于根据损失函数对各个权重进行微调。

  • 关键步骤:

    1. 每次只对网络中每个权重做一点点修改(微调)

    2. 测量在权重变化(\delta W)时,损失值(Loss)的变化(\delta L)情况(偏导数)

    3. 使用学习率 k控制更新步长:

学习率

        是一个控制每次更新步幅的超参数。太大容易发散,太小学习慢。有助于在训练时稳定地下降损失函数,使模型最终达到最优或近似最优的状态。

epoch

        所有数据被重复用于训练若干次,每一次完整地训练整个数据集叫做一个 epoch

梯度下降

        更新权重以减少误差值的整个过程称为梯度下降。

实现向前传播

import numpy as npdef feed_forward(inputs, outputs, weights):# 计算隐藏层的加权输入:inputs 与隐藏层权重 weights[0] 做点积,加上偏置 weights[1]pre_hidden = np.dot(inputs, weights[0]) + weights[1]# 使用 sigmoid 激活函数对隐藏层加权输入进行非线性变换hidden = 1 / (1 + np.exp(-pre_hidden))# 计算输出层的加权输入:隐藏层输出与输出层权重 weights[2] 做点积,加上偏置 weights[3]pred_out = np.dot(hidden, weights[2]) + weights[3]# 计算预测输出与实际输出之间的均方误差(MSE)mean_squared_error = np.mean(np.square(pred_out - outputs))# 返回均方误差作为损失值return mean_squared_error
  • 输入特征 → 加权求和 → 加上偏置

  • 进入隐藏层(激活函数变换)

  • 再次加权 → 输出预测结果

  • 比较预测值和真实值 → 得到损失

实现梯度下降算法

from copy import deepcopy# 更新神经网络的权重
def update_weights(inputs, outputs, weights, lr):"""使用数值梯度下降法更新神经网络的权重。enumerate(),用来在遍历可迭代对象(如列表、元组)时,同时获取元素的索引和值。参数:inputs  —— 输入数据,形状为 (样本数, 输入特征数)outputs —— 真实标签,形状为 (样本数, 输出特征数)weights —— 当前神经网络的权重列表(包含4个部分)lr      —— 学习率(learning rate),控制更新步长返回:updated_weights —— 更新后的权重original_loss   —— 更新前的损失(MSE)"""original_weights = deepcopy(weights)     # 保存原始权重(不修改)temp_weights = deepcopy(weights)         # 用于临时尝试修改某个权重updated_weights = deepcopy(weights)      # 保存最终更新后的权重original_loss = feed_forward(inputs, outputs, original_weights)  # 当前权重下的损失# 遍历每一层的权重(共4个部分:输入到隐藏权重、隐藏偏置、隐藏到输出权重、输出偏置)for i, layer in enumerate(original_weights):# 遍历当前层中的每个元素(权重或偏置)for index, weight in np.ndenumerate(layer):temp_weights = deepcopy(weights)  # 复制当前权重temp_weights[i][index] += 0.0001  # 对当前权重增加一个微小扰动(用于计算导数)_loss_plus = feed_forward(inputs, outputs, temp_weights)  # 计算扰动后新的损失# 使用数值导数公式估计梯度:grad ≈ (L(w+ε) - L(w)) / εgrad = (_loss_plus - original_loss) / (0.0001)# 用梯度下降法更新当前权重:w = w - lr * gradupdated_weights[i][index] -= grad * lrreturn updated_weights, original_loss

用一个只有一个隐藏层的小神经网络(输入 → 隐藏 → 输出)

为啥偏置也要微调

使用链式法则实现反向传播

网络损失值:

Loss_{MSE}\left(C\right)=(y-\hat{y})^2

预测输出值\hat{y}

\hat{y}=a_{11}*w_{31}+a_{12}*w_{32}+a_{13}*w_{33}

隐藏层激活值;

a_{11}=\frac{1}{1+e^{-h_{11}}}

隐藏层值:

h_{11}=x_1*w_{11}+x_2*w_{21}

计算损失值C的变化相对权重w_{11}的变化:

\frac{\partial C}{\partial w_{11}}=\frac{\partial C}{\partial\hat{y}}*\frac{\partial\hat{y}}{\partial a_{11}}*\frac{\partial a_{11}}{\partial h_{11}}*\frac{\partial h_{11}}{\partial w_{11}}

\frac{\partial C}{\partial w_{11}}=-2*(y-\hat{y})*w_{31}*a_{11}*(1-a_{11})*x_1

更新权重值:

updated_weight=original_weight-lr*gradient_of_loss

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

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

相关文章

【计算机网络 | 第二篇】常见的通信协议(一)

HTTP和HTTPS有什么区别? 端口号:HTTP默认是80端口,HTTPS默认是443。 URL前缀:HTTPHTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。 安全性和资源消耗:HTTP协议运行在TCP上,都是明…

【python实用小脚本系列】用 Python 自己手搓一个给视频“静音”的小脚本,批量处理,轻松高效制作“无声电影”!

嘿,小伙伴们!今天我来给大家介绍一个超实用的 Python 小工具——一个能给视频“静音”的“声音消除器”!是不是听起来很酷?想象一下,你可以把任何有声视频变成无声视频,是不是很有趣?接下来&…

【gpt生成-总览】怎样才算开发了一门编程语言,需要通过什么测试

开发一门真正的编程语言需要经历完整的设计、实现和验证过程,并通过系统的测试体系验证其完备性。以下是分阶段开发标准及测试方法: 一、语言开发核心阶段 1. 语言规范设计(ISO/IEC 标准级别) ​​语法规范​​:BNF/…

leetcode222 完全二叉树的节点个数

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(从第 0 层开始),则该层…

若依集成BladeX单点登录的令牌管理与api请求流程

目录 概述系统架构单点登录流程令牌管理机制接口调用流程关键代码实现数据结构安全性考虑常见问题与解决 概述 本文档详细说明若依系统如何实现与BladeX的单点登录集成,包括令牌管理和接口调用的完整流程。整个集成采用基于OAuth2的授权码流程,允许用…

《AI大模型应知应会100篇》第27篇:模型温度参数调节:控制创造性与确定性

第27篇:模型温度参数调节:控制创造性与确定性 摘要 在大语言模型的使用中,“温度”(Temperature)是一个关键参数,它决定了模型输出的创造性和确定性之间的平衡。通过调整温度参数,您可以根据任…

爱普生SG2520VGN差分晶振5G基站的时钟解决方案

在 5G 通信时代,数据流量呈爆发式增长,5G 基站作为信号的核心中转枢纽,承载着前所未有的数据传输与处理重任。从海量的物联网设备连接,到高速移动用户的数据交互,每一个环节都对基站的性能提出了严苛要求。而精准稳定的…

GitHub SSH连接终极解决方案

GitHub SSH连接终极解决方案:443端口修改多场景故障排查指南 一、问题现象速查 当开发者执行以下命令时出现连接异常: ssh -T gitgithub.com常见报错类型: 经典端口阻塞ssh: connect to host github.com port 22: Connection refused密钥验…

面向新一代扩展现实(XR)应用的物联网框架

中文标题: 面向新一代扩展现实(XR)应用的物联网框架 英文标题: Towards an IoT Framework for the New Generation of XR Applications 作者信息 Joo A. Dias,UNIDCOM - IADE,欧洲大学,里斯本&…

Qt unknown module(s) in qt:serialport解决方法

在Ubuntu和CentOS系统中,若使用Qt时遇到Unknown module(s) in QT: serialport错误,通常是由于未正确安装Qt的串口模块(QSerialPort)或项目配置不当导致。以下是针对两种系统的解决方案: 一、安装Qt串口模块 1. Ubuntu/Debian系列 安装开发包: 执行以下命令安装Qt5串口模…

阀门轴承电动车工件一键精修软件

若需定制开发“ComfyUI意见精修软件” 技术栈建议: 前端:React/Vue Figma插件API(直接读取设计稿)。 后端:Node.js/Python NLP库(spaCy/NLTK)。 数据库:MongoDB(存储…

chapter32_SpringMVC与DispatcherServlet

一、简介 从本章节开始进入SpringMVC的学习,SpringMVC最重要的类就是DispatcherServlet DispatcherServlet的本质是一个Servlet,回顾一下Servlet JavaWeb就是基于Servlet的Servlet接口有5个方法Servlet实现类是HttpServlet,自定义的Servle…

《Learning Langchain》阅读笔记3-基于 Gemini 的 Langchain如何从LLMs中获取特定格式

纯文本输出是有用的,但在某些情况下,我们需要 LLM 生成结构化输出,即以机器可读格式(如 JSON、XML 或 CSV)或甚至以编程语言(如 Python 或 JavaScript)生成的输出。当我们打算将该输出传递给其他…

中间件--ClickHouse-12--案例-1-日志分析和监控

1、案例背景 一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志,以快速发现潜在问题并优化系统性能。 2、需求分析 目标:实时分析日志数据,快速发现问题并优化系统性能。数据来源: 服务器日志:如 Ng…

多道程序和多任务操作系统区别

多道程序 vs. 多道任务:对比分析 ✅ 共同点 方面共同特征核心机制都依赖于进程/任务切换执行需求实现多个程序或任务"并发"执行系统支持都需要操作系统的支持(如调度算法、内存管理)本质目标提高资源利用率(CPU不空转…

齐次坐标变换+Unity矩阵变换

矩阵变换 变换(transform):指的是我们把一些数据,如点,方向向量甚至是颜色,通过某种方式(矩阵运算),进行转换的过程。 变换类型 线性变换:保留矢量加和标量乘的计算 f(x)…

闲来无事,用HTML+CSS+JS打造一个84键机械键盘模拟器

今天闲来无聊,突发奇想要用前端技术模拟一个机械键盘。说干就干,花了点时间搞出来了这么一个有模有样的84键机械键盘模拟器。来看看效果吧! 升级版的模拟器 屏幕录制 2025-04-18 155308 是不是挺像那么回事的?哈哈! 它…

智慧城市:如同为城市装上智能大脑,开启智慧生活

智慧城市的概念随着信息技术的飞速发展而逐渐兴起,它通过集成物联网、大数据、人工智能和数字孪生等先进技术,为城市管理和居民生活带来了前所未有的智能化变革。本文将深入探讨这些核心技术及其在智慧城市的典型应用场景,展示智慧城市如何提…

科技快讯 | 智谱开源最新GLM模型系列;“AI 洗头店”现身广州;ChatGPT上线图库功能

智谱开源最新GLM模型系列,启用全球域名“Z.ai” 4月15日,智谱开源最新GLM模型系列,包括32B和9B尺寸,涵盖基座、推理、沉思三类模型,全部遵循MIT开源许可协议。推理模型GLM-Z1-32B-0414实测推理速度达200 tokens/秒&…

第32讲:卫星遥感与深度学习融合 —— 让地球“读懂”算法的语言

目录 🔍 一、讲讲“遥感+深度学习”到底是干啥的? ✅ 能解决什么问题? 🧠 二、基础原理串讲:深度学习如何“看懂”遥感图? 🛰 遥感图像数据类型: 🧠 CNN的基本思路: 🧪 三、实战案例:用CNN对遥感图像做地类分类 📦 所需R包: 🗂️ 步骤一:构建训…