首页 > 其他分享 >深度学习——神经网络(neural network)详解(二). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络(neural network)详解(二). 带手算步骤,步骤清晰0基础可看

时间:2024-08-09 16:54:36浏览次数:17  
标签:frac network dh neural cdot 步骤 sigma w7 hat

深度学习——神经网络(neural network)详解(二). 手算步骤,步骤清晰0基础可看

前文如下:深度学习——神经网络(neural network)详解(一). 带手算步骤,步骤清晰0基础可看

运用神经网络模型进行房价预测具体手算过程,具体示例

假设我们有一个简单的神经网络,还是之前这个神经网络,输入层2个节点,隐藏层3个节点,输出层1个节点。我们使用以下简化的示例数据:
简单神经网络结构

(一)函数介绍

  1. Sigmoid 函数:我们把Sigmoid 函数作为激活函数,用于数组的映射转换,公式为:
    σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1​

  2. Sigmoid 函数的导数:反向传播中计算梯度所需的导数,公式为:
    σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1 - \sigma(z)) σ′(z)=σ(z)(1−σ(z))

  3. 均方误差(MSE)损失函数:衡量预测值与实际值差异的指标,公式为:
    L = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 L = \frac{1}{n} \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 L=n1​i=1∑n​(yi​−y^​i​)2
    在单样本情况下简化为:
    L = ( y − y ^ ) 2 L = (y - \hat{y})^2 L=(y−y^​)2

  4. 均方误差(MSE)损失函数的导数
    在单样本情况下简化为:
    ∂ L ∂ y ^ = − 2 ( y − y ^ ) \frac{\partial L}{\partial \hat{y}} = -2(y-\hat{y}) ∂y^​∂L​=−2(y−y^​)

4.权重的梯度
涉及到 w 1 w_{1} w1​的公式如下:
L = ( y − y ^ ) 2 L = (y - \hat{y})^2 L=(y−y^​)2
y ^ = σ ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) \hat{y} = \sigma(w_7 h_1 + w_8 h_2 + w_9 h_3) y^​=σ(w7​h1​+w8​h2​+w9​h3​)
h 1 = σ ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) h_1 = \sigma(w_{1}x_1 + b_1+ w_{4}x_2 + b_4) h1​=σ(w1​x1​+b1​+w4​x2​+b4​)

比如对于 w 1 w_{1} w1​,其求梯度公式为:
d L d w 1 = d L d y ^ ⋅ d y ^ d h 1 ⋅ d h 1 d w 1 \frac{dL}{dw_{1}} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{dh_{1}} \cdot \frac{dh_{1}}{dw_{1}} dw1​dL​=dy^​dL​⋅dh1​dy^​​⋅dw1​dh1​​
(1) d L d y ^ = − 2 ( y − y ^ ) \frac{dL}{d\hat{y}}=-2(y-\hat{y}) dy^​dL​=−2(y−y^​)
(2)计算 d y ^ d h 1 \frac{d\hat{y}}{dh_{1}} dh1​dy^​​
令 z = w 7 h 1 + w 8 h 2 + w 9 h 3 z=w_7 h_1 + w_8 h_2 + w_9 h_3 z=w7​h1​+w8​h2​+w9​h3​,
则 y ^ = σ ( z ) = σ ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) \hat{y}=\sigma(z)=\sigma(w_7 h_1 + w_8 h_2 + w_9 h_3) y^​=σ(z)=σ(w7​h1​+w8​h2​+w9​h3​),
而 σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z) = \sigma(z)(1 - \sigma(z)) σ′(z)=σ(z)(1−σ(z))
所以
d y ^ d h 1 = σ ( z ) ⋅ ( 1 − σ ( z ) ) ⋅ d z d h 1 \frac{d\hat{y}}{dh_{1}}=\sigma(z)\cdot(1 - \sigma(z))\cdot\frac{dz}{dh_{1}} dh1​dy^​​=σ(z)⋅(1−σ(z))⋅dh1​dz​
d y ^ d h 1 = ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ⋅ ( 1 − ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ) ⋅ w 7 \frac{d\hat{y}}{dh_{1}}=(w_7 h_1 + w_8 h_2 + w_9 h_3)\cdot(1 - (w_7 h_1 + w_8 h_2 + w_9 h_3))\cdot w_7 dh1​dy^​​=(w7​h1​+w8​h2​+w9​h3​)⋅(1−(w7​h1​+w8​h2​+w9​h3​))⋅w7​

(3)同理计算 d h 1 d w 1 \frac{dh_{1}}{dw_{1}} dw1​dh1​​
h 1 = σ ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) h_1 = \sigma(w_{1}x_1 + b_1+ w_{4}x_2 + b_4) h1​=σ(w1​x1​+b1​+w4​x2​+b4​)
d h 1 d w 1 = ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ⋅ ( 1 − ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ) ⋅ x 1 \frac{dh_{1}}{dw_{1}}=(w_{1}x_1 + b_1+ w_{4}x_2 + b_4)\cdot(1 - (w_{1}x_1 + b_1+ w_{4}x_2 + b_4))\cdot x_1 dw1​dh1​​=(w1​x1​+b1​+w4​x2​+b4​)⋅(1−(w1​x1​+b1​+w4​x2​+b4​))⋅x1​

所以
d L d w 1 = d L d y ^ ⋅ d y ^ d h 1 ⋅ d h 1 d w 1 = − 2 ( y − y ^ ) ⋅ ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ( 1 − ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ) w 7 ⋅ ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ( 1 − ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ) x 1 \frac{dL}{dw_{1}} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{dh_{1}} \cdot \frac{dh_{1}}{dw_{1}}=-2(y-\hat{y}) \cdot (w_7 h_1 + w_8 h_2 + w_9 h_3) (1 - (w_7 h_1 + w_8 h_2 + w_9 h_3)) w_7 \cdot (w_{1}x_1 + b_1+ w_{4}x_2 + b_4) (1 - (w_{1}x_1 + b_1+ w_{4}x_2 + b_4)) x_1 dw1​dL​=dy^​dL​⋅dh1​dy^​​⋅dw1​dh1​​=−2(y−y^​)⋅(w7​h1​+w8​h2​+w9​h3​)(1−(w7​h1​+w8​h2​+w9​h3​))w7​⋅(w1​x1​+b1​+w4​x2​+b4​)(1−(w1​x1​+b1​+w4​x2​+b4​))x1​

(二)参数更新过程

1.输入数据(样本)
  • 输入特征: X = [ 120 , 1 ] X = [120, 1] X=[120,1](面积120平方米,市中心位置)
  • 目标值: y = 300 , 000 y = 300,000 y=300,000(房价300,000元)
2.输入到隐藏层的权重和偏置随机初始化
  • 权重 W h = [ w 1 , w 2 , w 3 , w 4 , w 5 , w 6 ] = [ 0.2 , 0.3 , 0.4 , 0.5 , 0.6 , 0.7 ] W_h = [w_1, w_2, w_3, w_4, w_5, w_6] = [0.2, 0.3, 0.4, 0.5, 0.6, 0.7] Wh​=[w1​,w2​,w3​,w4​,w5​,w6​]=[0.2,0.3,0.4,0.5,0.6,0.7]
  • 偏置 b h = [ b 1 , b 2 , b 3 , b 4 , b 5 , b 6 , b 7 , b 8 , b 9 ] = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] b_h = [b_1, b_2, b_3,b_4, b_5, b_6,b_7, b_8, b_9] = [0, 0, 0,0, 0, 0,0, 0, 0] bh​=[b1​,b2​,b3​,b4​,b5​,b6​,b7​,b8​,b9​]=[0,0,0,0,0,0,0,0,0](假设偏置为0)
3.激活函数输出

h 1 = σ ( w 1 ⋅ x 1 + w 4 ⋅ x 2 ) h_1 = \sigma(w_1 \cdot x_1 + w_4 \cdot x_2) h1​=σ(w1​⋅x1​+w4​⋅x2​)
h 2 = σ ( w 2 ⋅ x 1 + w 5 ⋅ x 2 ) h_2 = \sigma(w_2 \cdot x_1 + w_5 \cdot x_2) h2​=σ(w2​⋅x1​+w5​⋅x2​)
h 3 = σ ( w 3 ⋅ x 1 + w 6 ⋅ x 2 ) h_3 = \sigma(w_3 \cdot x_1 + w_6 \cdot x_2) h3​=σ(w3​⋅x1​+w6​⋅x2​)

4.具体计算

h 1 = σ ( 0.2 × 120 + 0.5 × 1 ) = σ ( 24.2 ) h_1 = \sigma(0.2 \times 120 + 0.5 \times 1)=\sigma(24.2) h1​=σ(0.2×120+0.5×1)=σ(24.2)
h 2 = σ ( 0.3 × 120 + 0.6 × 1 ) = σ ( 37.8 ) h_2 = \sigma(0.3 \times 120 + 0.6 \times 1)=\sigma(37.8) h2​=σ(0.3×120+0.6×1)=σ(37.8)
h 3 = σ ( 0.4 × 120 − 0.7 × 1 ) = σ ( 46.3 ) h_3 = \sigma(0.4 \times 120 - 0.7 \times 1)=\sigma(46.3) h3​=σ(0.4×120−0.7×1)=σ(46.3)

假设 σ ( 24.2 ) ≈ 0.99 \sigma(24.2) \approx 0.99 σ(24.2)≈0.99, σ ( 37.8 ) ≈ 0.998 \sigma(37.8) \approx 0.998 σ(37.8)≈0.998, σ ( 46.3 ) ≈ 0.999 \sigma(46.3) \approx 0.999 σ(46.3)≈0.999(这里取Sigmoid函数的近似值)

5.隐藏到输出层的权重
  • 权重 W o = [ w 7 , w 8 , w 9 ] = [ 0.1 , 0.2 , 0.3 ] W_o = [w_7, w_8, w_9] = [0.1, 0.2, 0.3] Wo​=[w7​,w8​,w9​]=[0.1,0.2,0.3]
6.输出层预测值

y ^ = σ ( w 7 ⋅ h 1 + w 8 ⋅ h 2 + w 9 ⋅ h 3 ) ≈ 0.6452 \hat{y} = \sigma(w_7 \cdot h_1 + w_8 \cdot h_2 + w_9 \cdot h_3)\approx 0.6452 y^​=σ(w7​⋅h1​+w8​⋅h2​+w9​⋅h3​)≈0.6452

7.损失计算

L = ( 300 , 000 − y ^ ) 2 ≈ ( 300 , 000 − 0.6452 ) 2 ≈ 89 , 999 , 810 , 000 L = (300,000 - \hat{y})^2 \approx (300,000 - 0.6452 )^2 \approx 89,999,810,000 L=(300,000−y^​)2≈(300,000−0.6452)2≈89,999,810,000(这里取 y ^ \hat{y} y^​ 的近似值进行计算,这个损失也太大了)

8.梯度计算

(1) d L d y ^ = − 2 ( y − y ^ ) = − 2 ( 300 , 000 − 0.6452 ) ≈ − 599 , 998.7096 \frac{dL}{d\hat{y}}=-2(y-\hat{y})=−2(300,000−0.6452)\approx −599,998.7096 dy^​dL​=−2(y−y^​)=−2(300,000−0.6452)≈−599,998.7096

(2) d y ^ d h 1 / d h 2 / d h 3 \frac{d\hat{y}}{dh_{1}/dh_{2}/dh_{3}} dh1​/dh2​/dh3​dy^​​

d y ^ d h 1 = ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ⋅ ( 1 − ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ) ⋅ w 7 ) ≈ 0.024 \frac{d\hat{y}}{dh_{1}}=(w_7 h_1 + w_8 h_2 + w_9 h_3)\cdot(1 - (w_7 h_1 + w_8 h_2 + w_9 h_3))\cdot w_7)\approx0.024 dh1​dy^​​=(w7​h1​+w8​h2​+w9​h3​)⋅(1−(w7​h1​+w8​h2​+w9​h3​))⋅w7​)≈0.024

d y ^ d h 2 = ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ⋅ ( 1 − ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ) ⋅ w 8 ) ≈ 0.048 \frac{d\hat{y}}{dh_{2}}=(w_7 h_1 + w_8 h_2 + w_9 h_3)\cdot(1 - (w_7 h_1 + w_8 h_2 + w_9 h_3))\cdot w_8)\approx0.048 dh2​dy^​​=(w7​h1​+w8​h2​+w9​h3​)⋅(1−(w7​h1​+w8​h2​+w9​h3​))⋅w8​)≈0.048

d y ^ d h 3 = ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ⋅ ( 1 − ( w 7 h 1 + w 8 h 2 + w 9 h 3 ) ) ⋅ w 9 ) ≈ 0.07 \frac{d\hat{y}}{dh_{3}}=(w_7 h_1 + w_8 h_2 + w_9 h_3)\cdot(1 - (w_7 h_1 + w_8 h_2 + w_9 h_3))\cdot w_9)\approx0.07 dh3​dy^​​=(w7​h1​+w8​h2​+w9​h3​)⋅(1−(w7​h1​+w8​h2​+w9​h3​))⋅w9​)≈0.07

(3) d h 1 d w 1 \frac{dh_{1}}{dw_{1}} dw1​dh1​​
d h 1 d w 1 = ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ⋅ ( 1 − ( w 1 x 1 + b 1 + w 4 x 2 + b 4 ) ) ⋅ x 1 = − 69090 \frac{dh_{1}}{dw_{1}}=(w_{1}x_1 + b_1+ w_{4}x_2 + b_4)\cdot(1 - (w_{1}x_1 + b_1+ w_{4}x_2 + b_4))\cdot x_1=−69090 dw1​dh1​​=(w1​x1​+b1​+w4​x2​+b4​)⋅(1−(w1​x1​+b1​+w4​x2​+b4​))⋅x1​=−69090

d L d w 1 = d L d y ^ ⋅ d y ^ d h 1 ⋅ d h 1 d w 1 = − 599 , 998.7096 × 0.024 × ( − 69090 ) = 994893860 \frac{dL}{dw_{1}} = \frac{dL}{d\hat{y}} \cdot \frac{d\hat{y}}{dh_{1}} \cdot \frac{dh_{1}}{dw_{1}}=−599,998.7096\times 0.024\times(−69090)=994893860 dw1​dL​=dy^​dL​⋅dh1​dy^​​⋅dw1​dh1​​=−599,998.7096×0.024×(−69090)=994893860

8.梯度更新

这里我们将学习率 α \alpha α设置为0.001。
w 1 n e w = α ⋅ ∂ L ∂ w 1 o l d = 0.001 × 994893860 = 94893.86 w_{1} ^{new}= \alpha \cdot \frac{\partial L}{\partial w_{1}^{old}} =0.001\times994893860 =94893.86 w1new​=α⋅∂w1old​∂L​=0.001×994893860=94893.86

到此为止,我们利用一个样本 [ x 1 , x 2 ] = [ 120 , 1 ] [{x_{1},x_{2}}]=[{120,1}] [x1​,x2​]=[120,1]和这个简单的神经网络对参数 w 1 w_{1} w1​的更新已经完成。

后续步骤就是按照更新 w 1 w_{1} w1​的方法对其他参数进行更新,当所有参数都更新完一次后,被称作一次迭代(iteration)。当你拥有的数据集中的所有数据都输入模型被训练一次,被称作一轮(epoch)。我们的模型训练好需要多个轮次,几百轮或者上千轮。

一个简单的神经网络的迭代过程演示到这里就结束了。

标签:frac,network,dh,neural,cdot,步骤,sigma,w7,hat
From: https://blog.csdn.net/m0_52889787/article/details/141065648

相关文章

  • nlp基础-序列填充+嵌入表示的具体步骤
    词嵌入(WordEmbedding)是将离散的词语转换为连续的向量表示,以便模型可以处理这些向量。词嵌入的目的是将词语映射到一个低维的实数向量空间中,使得词与词之间的语义关系在这个空间中得到体现。词嵌入的具体步骤1.准备词汇表构建词汇表:从训练数据中提取所有唯一的词汇,并为每个......
  • 不拉黑不删除隐藏好友方法的三个步骤
    在微信的复杂社交生态中,巧妙地平衡工作与个人生活的界限,有时需要对特定好友进行“隐藏”处理,以维护隐私与专注度。尽管微信官方并未直接提供一键隐藏好友的功能,但我们可以通过一种高级且策略性的方法来间接达到这一目的,即利用微信的“密友”或类似功能的变通策略(需注意,这里的“......
  • ADB安装apk包到所有andriod设备步骤详解
    背景:使用adb工具,用数据线连接电脑与机器,电脑安装apk包后,使用命令直接安装到机器上,省去其他下载等繁琐流程一、电脑安装adb工具1、下载adb压缩包地址:--Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip2、配置环境变量a.右击此电脑......
  • 计算机毕设流程步骤
    计算机毕设流程步骤:......
  • 使用QNetworkAccessManager实现FTP上传下载功能
    自己写了一份FTP的代码,可以上传下载单文件,上传下载多文件,上传目录所有文件,但是下载目录的功能有问题,接口里代码规范也没做(如果有大佬提供修改方案就更好了),代码直接复制可用,留给有需要的人。#pragmaonce#include<QObject>#include<QNetworkReply>#include<QNetworkAcce......
  • uni-app步骤条steps源码解析(十八)
    【背景】在显示中许多任务都不是一步执行完成的,需要分好多步进行;例如:网上购买一个商品需要先在网上下单-->当地物流人员取件-->中间物流转送--->目的地物流接收--->配送到买家手中;因此监控每个步骤的状态显的尤为重要。本期将为大家介绍步骤条控件steps。先看效果图:   ......
  • 升级 Windows AD 域控制器的基本步骤和注意事项,帮助你顺利进行升级并减少潜在的中断风
    简单的初级教程大纲,帮助你理解如何升级WindowsAD域控制器:1. 准备阶段评估当前环境确认当前域控制器的操作系统版本和硬件配置。确保域控制器上的所有关键服务和应用程序支持升级后的操作系统版本。备份使用系统备份工具(如WindowsServerBackup)备份当前域控制器......
  • cudart64_90.dll缺失?一文详解CUDA运行时环境修复步骤
    cudart64_90.dll是一个与NVIDIACUDA(ComputeUnifiedDeviceArchitecture)框架相关的动态链接库(DynamicLinkLibrary,简称DLL)。CUDA是NVIDIA开发的一种并行计算平台和编程模型,它允许开发者利用NVIDIAGPU的并行处理能力来进行高性能计算。cudart64_90.dll是CUDA运行时库的一部......
  • 设置帝国cms栏目需以下步骤
    帝国CMS是一款功能强大的内容管理系统,允许用户轻松创建和管理网站内容。设置栏目是组织网站内容至关重要的一步。步骤1:登录帝国CMS后台打开帝国CMS后台登录页面。输入您的用户名和密码。点击“登录”按钮。步骤2:导航到栏目管理在后台主菜单中,点击“栏目管理”。然后点......
  • VannaAI(带有 Ollama 和 ChromaDB)示例程序在训练模型步骤失败
    我开始测试VannaAI,并且我正在运行一个基于使用Ollama、ChromaDB为Postgres生成SQL的示例程序:fromvanna.ollamaimportOllamafromvanna.chromadbimportChromaDB_VectorStoreclassMyVanna(ChromaDB_VectorStore,Ollama):def__init__(self,confi......