深度学习——全连接层(Fully connected dence layers)原理解析

一、简介

  • 全连接层有多个神经元,是一个列向量(单个样本)。在计算机视觉领域正常用于深度神经网络的后面几层,用于图像分类任务。
  • 全连接层算法包括两部分:前向传播(Forward)和反向传播(Backward)

二、 算法解析

前向传播(Forward)

  • 上图主要有5个变量,x,a,W,b,σx, a,W,b,\sigmax,a,W,b,σ,上图是单层的全连接层,只有一个神经元。
  • xxx: 代表一个样本输入的特征的向量,上图xxx是第L[0]L^{[0]}L[0]层输入,维度为(12287,1)
  • www: 代表第1层全连接层的权重,维度为(12287,1)
  • bbb: 代表偏置,维度为(1,1)
  • zzz: 代表神经元的线性计算 z=WTx+bz = W^{T}x + bz=WTx+b,维度(1,1)
  • σ\sigmaσ: a=σ(z)a =\sigma(z)a=σ(z) 激活函数
  • LLL: 交叉熵
  • JJJ: 损失函数
    图中公式(1)(2)(3)(4)就是前向传播过程,Loss Function 为交叉熵。

反向传播

  • 这里也讲解单层的全连接层的反传。反向传播算法是上世纪Hinton发表在nature上一对深度学习影响巨大的算法。读者需要具备点微积分的知识,主要用到链式法则(chain rule)。
  • 假设输入数据有m个样本,激活函数为sigmoidσ(x)=11+e−x,σ(x)′=σ(x)(1−σ(x))sigmoid \quad \sigma(x)= \frac{1}{1+e^{-x}}, \sigma(x)' = \sigma(x)(1-\sigma(x))sigmoidσ(x)=1+e−x1​,σ(x)′=σ(x)(1−σ(x)),算法流程
    ——————————————————————————————————
    J=0,dW=0,db=0,dz=0J = 0, dW = 0,db =0,dz = 0J=0,dW=0,db=0,dz=0
    foriinm:for \quad i \quad in \quad m:foriinm:
    \quad// Forward coumpute
    zi=WTxi+b\quad z_i = W^{T}x^{i} + bzi​=WTxi+b
    ai=σ(zi)\quad a_i= \sigma(z_i)ai​=σ(zi​)
    J+=−(yilog(ai)+(1−yi)log(1−ai))\quad J += -(y_ilog(a_i) + (1-y_i)log(1-a_i))J+=−(yi​log(ai​)+(1−yi​)log(1−ai​))
    \quad// Backward
    dA=yiai−1−yi1−ai\quad dA = \frac{y_i}{a_i} - \frac{1-y_i}{1-a_i}dA=ai​yi​​−1−ai​1−yi​​
    dZ=dA∗σ(z)′=ai−yi\quad dZ = dA*\sigma(z)'=a _i- y_idZ=dA∗σ(z)′=ai​−yi​
    dW+=xidZ\quad dW += x_idZdW+=xi​dZ
    db+=dZ\quad db += dZdb+=dZ
    J=−1mJ,dW=1mdW,db=1mdbJ = \frac{-1}{m}J,dW = \frac{1}{m}dW, db=\frac{1}{m}dbJ=m−1​J,dW=m1​dW,db=m1​db
    ——————————————————————————————————
  • dA=∂J∂aidA = \frac{\partial{J}}{\partial{a_i}}dA=∂ai​∂J​
  • dZ=∂J∂ai∂ai∂zidZ = \frac{\partial{J}}{\partial{a_i}} \frac{\partial{a_i}}{\partial{z_i}}dZ=∂ai​∂J​∂zi​∂ai​​
  • dW=∂J∂zi∂zi∂WdW =\frac{\partial{J}}{\partial{z_i}} \frac{\partial{z_i}}{\partial{W}}dW=∂zi​∂J​∂W∂zi​​
  • db=∂J∂ai∂ai∂bdb = \frac{\partial{J}}{\partial{a_i}} \frac{\partial{a_i}}{\partial{b}}db=∂ai​∂J​∂b∂ai​​
    在实际编程中需要注意变量的维度。
  • 可以看得出上面算法有个for循环,所以可以用矩阵把它优化,变为下面公式
  • dZ=∂J∂A∂A∂z=A−YdZ = \frac{\partial{J}}{\partial{A}} \frac{\partial{A}}{\partial{z}} =A-YdZ=∂A∂J​∂z∂A​=A−Y
  • dW=∂J∂z∂z∂W=1mdZXTdW =\frac{\partial{J}}{\partial{z}} \frac{\partial{z}}{\partial{W}}=\frac{1}{m}dZX^{T}dW=∂z∂J​∂W∂z​=m1​dZXT
  • db=∂J∂a∂a∂b=1mnp.sum(dZ,axis=1,keepdims=True)db = \frac{\partial{J}}{\partial{a}} \frac{\partial{a}}{\partial{b}}=\frac{1}{m}np.sum(dZ,axis=1,keepdims=True)db=∂a∂J​∂b∂a​=m1​np.sum(dZ,axis=1,keepdims=True)

深度学习——全连接层(Fully connected dence layers)原理解析相关推荐

  1. CNN(卷积层convolutional layer,激励层activating layer,池化层pooling,全连接层fully connected)

    CNN产生的原因:当使用全连接的神经网络时,因为相邻两层之间的神经元都是有边相连的,当输入层的特征纬度非常高时(譬如图片),全连接网络需要被训练的参数就会非常多(参数太多,训练缓慢),CNN可以通过训 ...

  2. 神经网络的全连接层_深度神经网络全连接层

    一.概念 全连接层一般在网络的最后部分做分类输出,全连接层的有m个输入和n个输出,每一个输出都和所有的输入相连,相连的权重w都是不一样的,同时每一个输出还有一个bias. 二.前向全连接 假设输入是4 ...

  3. 计算机视觉与深度学习-全连接神经网络

    以下内容是自己学习北京邮电大学鲁鹏副教授计算机视觉与深度学习课程(A02)的一些笔记, 笔者能力有限,如有错误还望各位大佬在评论区批评指正 . 先贴一下课程官网:CV-XUEBA 篇3地址:计算机视觉 ...

  4. 深度学习--简述卷积层如何检测物体边缘原理

    对计算机视觉与深度学习有所了解的同学应该知道图像卷积可以识别出物体,在神经网络的前几层,识别出物体最基础的例如垂直或是水平的边缘.在之后的隐藏层慢慢可以识别出物体的部分,直到最后几层可以识别出完整的物 ...

  5. 关于全连接层 fully connect

    看到过别人在加载模型的时候,会有丢掉后面的fully connect层的做法. 总结下fully conncet 的解释和用法: 这是网上的一种解释: https://stats.stackexcha ...

  6. 网络骨架:Backbone(神经网络基本组成——BN层、全连接层)

    BN层 为了追求更高的性能,卷积网络被设计得越来越深,然而网络却变得难以训练收敛与调参.原因在于,浅层参数的微弱变化经过多层线性变化与激活函数后会被放大,改变了每一层的输入分布,造成深层的网络需要不断 ...

  7. 卷积层和全连接层的区别_卷积神经网络中全连接层作用理解总结

    前言 一般来说,卷积神经网络会有三种类型的隐藏层--卷积层.池化层.全连接层.卷积层和池化层比较好理解,主要很多教程也会解释. •  卷积层(Convolutional layer)主要是用一个采样器 ...

  8. 全连接层的作用是什么?

    回答一: 概述 全连接层 Fully Connected Layer 一般位于整个卷积神经网络的最后,负责将卷积输出的二维特征图转化成一维的一个向量,由此实现了端到端的学习过程(即:输入一张图像或一段 ...

  9. 全连接层的作用是什么?(nn.Linear())

    回答一: 概述 全连接层 Fully Connected Layer 一般位于整个卷积神经网络的最后,负责将卷积输出的二维特征图转化成一维的一个向量,由此实现了端到端的学习过程(即:输入一张图像或一段 ...

最新文章

  1. MySQL中MyISAM 与innoDB的区别(转)
  2. LoRa 之一 旧版驱动(sx12xxDrivers-V2.1.0)移植及驱动架构详解
  3. 2-快速排序C递归实现(递增递减的简单转换)
  4. SqlSugar最容易使用的ORM
  5. 从.Net到Java学习第四篇——spring boot+redis
  6. 《计算机组成与体系结构:性能设计》读后小记 6、外部存储器
  7. java 调用 go_实践总结:在 Java 中调用 Go 代码
  8. 【原创】我所理解的自动更新-外网web服务器配置
  9. 【云栖号案例 | 教育与科研机构】科研机构上云提供更加精准分析检测服务
  10. dbv mysql_MariaDB与MySQL对比 --- 对分布式事务的支持
  11. 横跨7个版本的OpenStack无感知热升级在360的落地与实践
  12. LintCode_514 Paint Fence
  13. layout components pages及基本操作
  14. Oracle数据库性能优化的艺术pdf
  15. 【虚幻4】从U3D到UE4的转型之路
  16. Android数据持久化存储(一)
  17. 【游戏程序设计】Direct 3D 三维地形系统
  18. PDF生成技巧:怎么把其他格式转换成PDF文件?
  19. 将标准时间转成时间戳
  20. 微信公众号运营策划方案书之公众号基础知识

热门文章

  1. 关于Debug模式和Release模式
  2. 能感知功耗的Linux调度器(EAS)
  3. nginx查看配置文件
  4. 清华OJ重名剔除(Deduplicate)
  5. 服务器文件备份拓扑图,云服务器拓扑图
  6. TP-link在命令行模式下的一些基本设置
  7. python爬虫学习(第三爬)
  8. 【技巧】ZIP文件的分卷压缩如何设置 ?
  9. 软考高项-系统架构师(论文)-架构风格
  10. 2020_9_25_数字和列表