excel手撕神经网络(只需高中数学基础)

神经网络最基础部分是由神经元组成,一个神经元相当于是一个一次函数,y=ax+b
即在已知x,和y情况下,怎么使用神经网络求解a和b

如下是使用excel求解的神经网络,可以方便理解神经网络运行原理
excel玩具神经网络下载地址
百度网盘链接: https://pan.baidu.com/s/15DJ_NQS9W7A5glkVABltJQ?pwd=jwf4 提取码: jwf4

0 excel数据及任务

  • 构造了如下数据,x0,x1,x2和y_true。其中x0,x1,x2对应真实wTrue(w0,w1,w2)如表格所示(表格数据都可以修改,公式已经编辑好),
    即 y=x0 * wt0 + x1 * wt1 + x2 * wt2
  • 任务;需要使用神经网络计算出真实的w

1 神经网络求解步骤:

已知 x 和y

  • 1 随机初始化wi
    初始化w全为0, w00=0,w01=0,w02=0 (为了简化,只考虑w,不考虑b)
  • 2 将x带入 a和b参数函数,得到y的预测值y_pred
    y_pred=x0w00+x1w01+x2*w02
  • 3 将预测y_pred与真实值y进行对比,构建损失函数(刚开始,随机的w误差肯定很大)
    loss= ( y _ p r e d − y _ t r u e ) 2 (y\_pred-y\_true)^2 (y_predy_true)2
  • 4 对损失函数求导,使用梯度下降更新参数w.
    导数
    w00导数:dy_dw00: 2*(y_pred-y_true)x0
    w01导数:dy_dw01: 2
    (y_pred-y_true)x1
    w02导数:dy_dw02: 2
    (y_pred-y_true)*x2
    步长:lr=0.001
    新的 w00= w00-lr * dy_dw00
    新的 w01= w01-lr * dy_dw01
    新的 w02= w02-lr * dy_dw01
  • 5 循环上面2~4步,直到收敛

2 反向传播公式推导

上面第3步,损失函数为loss= ( y _ p r e d − y _ t r u e ) 2 (y\_pred-y\_true)^2 (y_predy_true)2
其中w00,w01,w02倒数如下。导数公式证明见2.1或者2.2小节,其中用到了 x 2 x^2 x2 的导数为2x, x 2 x^2 x2的倒数证明见第4小节。
在这里插入图片描述

2.1 根据链式法则求导

若链式法则求导无法理解见 2.2节直接求导
loss= ( y _ p r e d − y _ t r u e ) 2 (y\_pred-y\_true)^2 (y_predy_true)2 对w的导数为
∂ ( y _ p r e d − y _ t r u e ) 2 ∂ w 0 = 2 ( y _ p r e d − y _ t r u e ) ∗ x 0 \frac{\partial(y\_pred-y\_true)^2}{\partial w0}=2(y\_pred-y\_true)*x0 w0(y_predy_true)2=2(y_predy_true)x0
∂ ( y _ p r e d − y _ t r u e ) 2 ∂ w 1 = 2 ( y _ p r e d − y _ t r u e ) ∗ x 1 \frac{\partial(y\_pred-y\_true)^2}{\partial w1}=2(y\_pred-y\_true)*x1 w1(y_predy_true)2=2(y_predy_true)x1
∂ ( y _ p r e d − y _ t r u e ) 2 ∂ w 2 = 2 ( y _ p r e d − y _ t r u e ) ∗ x 2 \frac{\partial(y\_pred-y\_true)^2}{\partial w2}=2(y\_pred-y\_true)*x2 w2(y_predy_true)2=2(y_predy_true)x2

2.2 直接求导

若不知道x^2的倒数,见第4小节

  • loss展开
    y_pred=x0w00+x1w01+x2*w02
    ( y _ p r e d − y _ t r u e ) 2 = ( x 0 ∗ w 00 + x 1 ∗ w 01 + x 2 ∗ w 02 − y _ t r u e ) 2 (y\_pred-y\_true)^2=(x0*w00+x1*w01+x2*w02-y\_true)^2 (y_predy_true)2=(x0w00+x1w01+x2w02y_true)2
  • 如上,如果对w00求导,则其他项可以看成常数
    ( y _ p r e d − y _ t r u e ) 2 = ( x 0 ∗ w 00 ) 2 + 2 ( x 0 ∗ w 00 ) ∗ ( x 1 ∗ w 01 + x 2 ∗ w 02 − y _ t r u e ) + ( x 1 ∗ w 01 + x 2 ∗ w 02 − y _ t r u e ) 2 (y\_pred-y\_true)^2=(x0*w00)^2+2(x0*w00)*(x1*w01+x2*w02-y\_true)+(x1*w01+x2*w02-y\_true)^2 (y_predy_true)2=(x0w00)2+2(x0w00)(x1w01+x2w02y_true)+(x1w01+x2w02y_true)2
  • 则对w00的倒数为
    2 ∗ x 0 2 ∗ w 00 + 2 x 0 ∗ ( x 1 ∗ w 01 + x 2 ∗ w 02 − y _ t r u e ) 2*x0^2*w00+2x0*(x1*w01+x2*w02-y\_true) 2x02w00+2x0(x1w01+x2w02y_true)
    = 2 ∗ x 0 ∗ ( x 0 ∗ w 00 + x 1 ∗ w 01 + x 2 ∗ w 02 − y _ t r u e ) 2*x0*(x0*w00+x1*w01+x2*w02-y\_true) 2x0(x0w00+x1w01+x2w02y_true)
    = 2 ∗ x 0 ∗ ( y _ p r e d − y _ t r u e ) 2*x0*(y\_pred-y\_true) 2x0(y_predy_true)
  • 同理w01,w02的倒数都可以求出
    分别为
    2 ∗ x 1 ∗ ( y _ p r e d − y _ t r u e ) 2*x1*(y\_pred-y\_true) 2x1(y_predy_true)
    2 ∗ x 2 ∗ ( y _ p r e d − y _ t r u e ) 2*x2*(y\_pred-y\_true) 2x2(y_predy_true)

直接求导与链式求导结果一样

3 结果展示

如下所示,数据在进行了两轮更新(共计20步)后,已从初始值0,0,0逐步收敛到真实值wTrue.
excel下载地址
百度网盘链接: https://pan.baidu.com/s/15DJ_NQS9W7A5glkVABltJQ?pwd=jwf4 提取码: jwf4

在这里插入图片描述

4 x^2导数公式推导

  • x^2倒数证明如下
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯专题-真题版含答案-【排序法 - 改良的选择排序】【插补搜寻法】【稀疏矩阵】【欧拉与鸡蛋】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

centos8stream 升级 sqlite3 ,解决 SQLite 3.27 or later is required (found 3.26.0).

服务器环境是centos8stream, 默认的sqlite是 3.26 ,因此,需要升级。 sqlite官网:SQLite Download Page 1.从官网下载最新源码包 cd /opt/ wget https://www.sqlite.org/2023/sqlite-autoconf-3440200.tar.gz tar xvf sqlite-autoconf-344020…

【webstrom】【idea】修改git历史提交记录

webstrom修改git历史提交记录 历史记录中有3条提交记录 此时2中的提交记录需要更新,我们可以在2中右击,选择“从这里执行交互式变基” 在弹框中选择需要修改提交记录2右击,然后选择“停止以编辑” 启动变基 更改2中内容 提交对2的更改 …

机器学习 高维数据可视化:t-SNE 降维算法

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

Flink中的时间和窗口

在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 所谓的“窗口”,一般就是划定的一段时…

CentOS 7系统加固详细方案SSH FTP MYSQL加固

一、删除后门账户 修改强口令 1、修改改密码长度需要编译login.defs文件 vi /etc/login.defs PASS_MIN_LEN 82、注释掉不需要的用户和用户组 或者 检查是否存在除root之外UID为0的用户 使用如下代码,对passwd文件进行检索: awk -F : ($30){print $1) …

(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析

个人主页:Lei宝啊 愿所有美好如期而遇 说明 博主是x86平台,所以下面的结果是28;x64平台下是40,size_t变了,由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组,…

极坐标下的牛拉法潮流计算57节点MATLAB程序

微❤关注“电气仔推送”获得资料(专享优惠) 潮流计算: 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。通常给定的运行条件有系统中各电源和负荷点的功率、枢纽…

大模型时代-大模型开发入门

一、 学习大模型的入门知识 深度学习基础知识:了解深度学习中的基本概念、算法和模型,包括神经网络、卷积神经网络、循环神经网络等。 编程能力:掌握至少一种编程语言,如Python、C等,熟悉常用的深度学习框架&#xff…

解锁数据探索新时代,JetBrains DataGrip 2023 Mac/win中文版下载

JetBrains DataGrip 2023 Mac/win,作为一款全新的数据库管理和开发工具,为数据工程师、分析师和开发人员提供了强大的功能和工具,帮助他们更高效地处理和分析数据。无论你是使用Mac还是Windows系统,都能够通过这款软件轻松驾驭数据…

【halcon深度学习】目标检测的数据准备过程中的一个库函数determine_dl_model_detection_param

determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议使用这一过程来优化训练和推断性能。 过程签名 determine_dl_model_detection…

【JAVA日志框架】JUL,JDK原生日志框架详解。

前言 Java日志体系混乱?Java日志框架系列,清晰简洁整理好整个Java的日志框架体系。第一篇,JDK原生日志框架——JUL。 目录 1.概述 2.日志级别 3.配置 4.继承关系 1.概述 日志框架的核心问题: 日志是用来记录应用的一些运行…

听GPT 讲Rust源代码--src/tools(13)

File: rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs 在Rust源代码中,路径为rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs的文件是为了处理Rust代码中的不一致实现问题而存在的。…

蓝桥杯专题-真题版含答案-【骑士走棋盘】【阿姆斯壮数】【Shell 排序法 - 改良的插入排序】【合并排序法】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

自定义时间选择器

自定义时间选择器 文章目录 自定义时间选择器第一章 效果演示第01节 效果图第02节 主要文件 第二章 案例代码第01节 核心文件 WheelPicker第02节 实体类 WheelBean第03节 接口类 IWheelPicker第04节 原子时间类 DateTimePickerView第05节 原子时间类 PickerYear第06节 原子时间…

网络(七)路由协议以及相关配置

目录 一、路由器的工作原理 二、路由表的形成 2.1 直连网段 2.2 非直连网 2.3 路由表解析 2.3.1 查看路由表 2.3.2 解析 三、静态路由和默认路由 1. 静态路由 1.1 定义 1.2 特点 2. 默认路由 2.1 定义 2.2 特点 四、静态路由和默认路由的配置 1. 静态路由配置…

maui中实现加载更多 RefreshView跟ListView(1)

效果如图: MainPage.xaml.cs: using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using Microsoft.Maui.Controls; using Microsoft.Maui.Controls.Xaml; using System.ComponentModel; using System.Runtime.CompilerServices…

visual stdio code运行js没有输出

visual code运行js没有输出 先Debug file 然后右键直接run code就会输出了 插件的安装 visual stdio code插件安装 c qt wordle游戏实现

知识图谱之关键实体数据爬取

目录 爬取实体概览 爬取技术介绍 requests_html Selenium 两者比较 学习路径 代码结构 高可用爬取策略 基于文件记录位点 请求失败指数退避重试 爬取代码 品牌数据 车系数据 车型数据 车型配置数据 代码地址 爬取实体概览 一个品牌有多个车系,一个车系有多个…

C语言:猜数字游戏

#include<stdio.h> #include<time.h> #include<stdlib.h> void menu() {printf("********************************\n");printf("****** 1.开始 2.退出 ******\n");printf("********************************\n"); } voi…