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

深度学习:(八)深层神经网络参数与流程

深层神经网络

符号规定

  • L L L :表示神经网络的层数;
  • l l l :表示第几层;
  • n [   l   ] n^{[~l~]} n[ l ] :表示第 l l l 层的节点数;
  • a [   l   ] a^{[~l~]} a[ l ] :表示第 l l l 层中的激活函数(泛指);
  • a [   l   ] = g [   l   ] ( z [   l   ] ) a^{[~l~]}=g^{[~l~]}(z^{[~l~]}) a[ l ]=g[ l ](z[ l ]) :表示第 l l l 层中的激活函数(泛指);
  • W [   l   ] W^{[~l~]} W[ l ] :表示第 l l l 层的参数 w w w 的集合;
  • b [   l   ] b^{[~l~]} b[ l ] :表示第 l l l 层的参数 b b b 的集合。

前向传播和反向传播都类似之前的笔记。

流程图

在这里插入图片描述

前向传播有输入数据 x x x ,反向传播的输入数据是 d a [   L   ] da^{[~L~]} da[ L ] ,即输出层(第 L L L 层)的输出,在向量化代码中,直接展示出来的结果是损失函数 L ( y ^ , y ) L(\widehat{y},y) L(y ,y)

因为 d a [   L   ] = − y a + 1 − y 1 − a da^{[~L~]}=-\frac{y}{a}+\frac{1-y}{1-a} da[ L ]=ay+1a1y ,而 L ( y ^ , y ) L(\widehat{y},y) L(y ,y) y ^ \widehat{y} y a a a)的导数,正好等于这个结果。因此将损失函数对 y ^ \widehat{y} y a a a)求导,可得出 d a [   L   ] da^{[~L~]} da[ L ] ,然后代入反向传播链的输入,开始迭代,如上图所示。

向量化时 d a [   L   ] da^{[~L~]} da[ L ] 需改为 d A [   L   ] dA^{[~L~]} dA[ L ] d A [   L   ] = ( d a [   1   ] , d a [   2   ] , . . . , d a [   m   ] ) dA^{[~L~]}=(da^{[~1~]},da^{[~2~]},...,da^{[~m~]}) dA[ L ]=(da[ 1 ],da[ 2 ],...,da[ m ])

为何 z [   l   ] z^{[~l~]} z[ l ]是反向传播的一个输入参数

∵ a [   l   ] = σ ( z [   l   ] ) = σ ( W [   l   ] a [   l − 1   ] + b [   l   ] ) ∵ d L d a [   l − 1   ] = d L d a [   l   ] ⋅ d a [   l   ] d a [   l − 1   ] = d a [   l   ] ⋅ σ ′ ( W [   l   ] a [   l − 1   ] + b [   l   ] ) W [   l   ] ⋅ d a [   l − 1   ] ∴ d a [   l − 1   ] = d a [   l   ] ⋅ σ ′ ( z [   l   ] ) W [   l   ] ⋅ d a [   l − 1   ] \begin{align*} ∵a^{[~l~]}=\sigma&(z^{[~l~]})=\sigma(W^{[~l~]}a^{[~l-1~]}+b^{[~l~]})\\ ∵\frac{dL}{da^{[~l-1~]}}&=\frac{dL}{da^{[~l~]}}·\frac{da^{[~l~]}}{da^{[~l-1~]}}\\ &=da^{[~l~]}·\sigma^{'}(W^{[~l~]}a^{[~l-1~]}+b^{[~l~]})W^{[~l~]}·da^{[~l-1~]}\\ ∴da^{[~l-1~]}&=da^{[~l~]}·\sigma^{'}(z^{[~l~]})W^{[~l~]}·da^{[~l-1~]} \end{align*} a[ l ]=σda[ l1 ]dLda[ l1 ](z[ l ])=σ(W[ l ]a[ l1 ]+b[ l ])=da[ l ]dLda[ l1 ]da[ l ]=da[ l ]σ(W[ l ]a[ l1 ]+b[ l ])W[ l ]da[ l1 ]=da[ l ]σ(z[ l ])W[ l ]da[ l1 ]

核对矩阵的维度

向量化前的单个样本
  • 前向传播:

    W [   l   ] W^{[~l~]} W[ l ] :维度为 ( n [   l   ] , n [   l − 1   ] ) (n^{[~l~]},n^{[~l-1~]}) (n[ l ],n[ l1 ])

    z [   l   ] z^{[~l~]} z[ l ] :维度为 ( n [   l   ] , 1 ) (n^{[~l~]},1) (n[ l ],1)

    a [   l   ] a^{[~l~]} a[ l ] :维度为 ( n [   l   ] , 1 ) (n^{[~l~]},1) (n[ l ],1)

    b [   l   ] b^{[~l~]} b[ l ] :维度为 ( n [   l   ] , 1 ) (n^{[~l~]},1) (n[ l ],1)

  • 反向传播:

    d W [   l   ] dW^{[~l~]} dW[ l ] W [   l   ] W^{[~l~]} W[ l ] 同维度;

    d b [   l   ] db^{[~l~]} db[ l ] b [   l   ] b^{[~l~]} b[ l ] 同维度。

向量化后的整个训练集
  • 前向传播:

    X ( A [   0   ] ) X(A^{[~0~]}) X(A[ 0 ]) :维度为 ( n [   0   ] , m ) (n^{[~0~]},m) (n[ 0 ],m)

    W [   l   ] W^{[~l~]} W[ l ] :维度为 ( n [   l   ] , n [   l − 1   ] ) (n^{[~l~]},n^{[~l-1~]}) (n[ l ],n[ l1 ])

    b [   l   ] b^{[~l~]} b[ l ] :维度为 ( n [   l   ] , 1 ) (n^{[~l~]},1) (n[ l ],1) ;# 要广播

    Z [   l   ] Z^{[~l~]} Z[ l ] :维度为 ( n [   l   ] , m ) (n^{[~l~]},m) (n[ l ],m)

    A [   l   ] A^{[~l~]} A[ l ] :维度为 ( n [   l   ] , m ) (n^{[~l~]},m) (n[ l ],m)

  • 反向传播:

    d W [   l   ] dW^{[~l~]} dW[ l ] W [   l   ] W^{[~l~]} W[ l ] 同维度;

    d b [   l   ] db^{[~l~]} db[ l ] b [   l   ] b^{[~l~]} b[ l ] 同维度;

    d Z [   l   ] dZ^{[~l~]} dZ[ l ] Z [   l   ] Z^{[~l~]} Z[ l ] 同维度;

    d A [   l   ] dA^{[~l~]} dA[ l ] A [   l   ] A^{[~l~]} A[ l ] 同维度。

超参数:

能控制参数 w w w b b b 的参数,需人为设置。

  • 学习率 α \alpha α
  • 梯度下降法循环次数;
  • 隐层数 L L L
  • 隐藏层的单元(节点)数;
  • 激活函数类型。

这些参数需要不断测试,实时评估损失函数(横坐标越大,纵坐标越小)。


http://www.kler.cn/a/329045.html

相关文章:

  • 探究IOC容器刷新环节初始化前的预处理
  • 聚焦 NLP 和生成式 AI 的创新与未来 基础前置知识点
  • macbook外接2k/1080p显示器调试经验
  • Android CPU核分配关联进程
  • C 语言Day 01 学习总结
  • Spring Security 核心组件
  • Win10系统插入带有麦克风的耳机_麦克风不起作用_解决方法_亲测成功---Windows运维工作笔记054
  • 面试题1-fail-safe机制与fail-fast 机制
  • 以太网开发基础-MAC和PHY
  • js设计模式(26)
  • GeoShp:shapefile转geojson支持nodejs和浏览器
  • 消息队列(MQ)深度探索:架构精髓、卓越优势与广泛应用
  • UE5 项目缓存文件删除、版本控制说明(工程目录结构)
  • 解决DHCP服务异常导致设备无法获取IP地址的方法
  • Thinkphp/Laravel基于vue的少数民族民歌网络图书馆管理系统
  • STM32低功耗实验学习日记
  • GO语言环境搭建和字符说明
  • 【Linux系统编程】第二十六弹---彻底掌握文件I/O:C/C++文件接口与Linux系统调用实践
  • 中国身份证号码校验
  • python和r语言的区别是什么
  • alpine安装docker踩坑记
  • git初级使用学习(图文)
  • uniapp微信小程序使用ucharts遮挡自定义tabbar的最佳解决方案
  • Windows 11 的 24H2 更新將帶來全新 Copilot+ AI PC 功能
  • linux文本三剑客
  • 【SQLite】sqlite | insert插入存在即更新