全连接神经网络单层模型原理

  • 前言
  • 单层MLP
    • 1. 前向传播
    • 2. 激活函数
      • 2.1 Sigmoid函数
      • 2.2 tanh函数
      • 2.3 ReLu函数
      • 2.4 Leaky ReLu函数
    • 3. 损失函数
    • 4. 梯度下降

前言

  深度学习是学习样本数据的内在规律和表示层次,在学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。全连接神经网络(MLP)便是基础的网络类型的之一,充分体现深度学习方法相比于传统机器学习算法的特点,即大数据驱动、公式推导、自我迭代更新、黑匣子训练等。

单层MLP

  单层神经网络训练依据是找到一组感知器的权重,使得这组感知器的输出与期望输出之间的误差最小。实现步骤如下:

  ※第一步:初始化一个随机权重矩阵
  ※第二步:输入特征数据计算感知器的输出,即前向传播
  ※第三步:计算感知器输出向量与样本期望输出之间的误差,即损失函数
  ※第四步:根据计算的误差,计算权重矩阵的更新梯度,即梯度下降
  ※第五步:用更新梯度,更新权重矩阵。
  ※第六步:从第二步反复执行,直到训练结束(训练次数根据经验自由确定)

1. 前向传播

  给每一个输入向量分配权值,计算出一个结果向量 。一般为了使神经网络具有非线性特点,引入激活函数来处理线性变换得到的数值。

  线性变换(加权和偏置):z=wTx+bz = w^T x + bz=wTx+b

  非线性变换(激活函数sigmoid): δ(x)=11+e−z\delta (x) = \frac{1}{{1 + e^{ - z} }}δ(x)=1+e−z1​

  上式中www为权值,bbb为偏置,xxx为输入值,zzz 为线性输出值,δ\deltaδ为非线性输出值。

2. 激活函数

  那么为什么要引入激活函数呢?

  答:如果网络中缺少了激活函数,神经网络会变成一个线性分类器,且当层次数增多越靠后的神经元获得的值会非常大,如果这个数远远大于前面神经元的值,前面神经元将对整个网络的表达显得毫无意义。因此,需要在每创建一层网络时就要对 进行一次约束。

  下面是几种常见的激活函数。

2.1 Sigmoid函数

S(x)=11+e−xS(x) = \frac{1}{{1 + e^{ - x} }}S(x)=1+e−x1​

  Sigmoid函数在输入值大于5的时候,其输出接近1,在输入值小于-5的时候,其输出接近0,输入的值会被压缩到(0,1)之间。
  特点:输出大于0,且不是中心对称

2.2 tanh函数

  tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。
tanh⁡x=sinh⁡xcosh⁡x=ex−e−xex+e−x\tanh x = \frac{{\sinh x}}{{\cosh x}} = \frac{{e^x - e^{ - x} }}{{e^x + e^{ - x} }}tanhx=coshxsinhx​=ex+e−xex−e−x​

  tanh函数在输入值大于2.5的时候,其输出接近1,在输入值小于-2.5的时候,其输出接近-1,输入的值会被压缩到(-1,1)之间。
  特点:输出有正有负,且中心对称

2.3 ReLu函数

  通常意义下,ReLu函数指代数学中的斜坡函数,即
f(x)=max⁡(0,x)f(x) = \max (0,x)f(x)=max(0,x)

  ReLu函数在输入值大于0的时候,其输出原值,在输入值小于0的时候,其输出为0

  而在神经网络中,定义该神经元在线性变换之后的非线性输出结果。换言之,对于进入神经元的来自上一层神经网络的输入向量,使用ReLu激活函数的神经元会输出至下一层神经元或作为整个神经网络的输出(取决现神经元在网络结构中所处位置)。
max⁡(0,wTx+b)\max (0,w^T x + b)max(0,wTx+b)

2.4 Leaky ReLu函数

  在输入值为负的时候,Leaky ReLU的梯度为一个常数,而不是0。在输入值为正的时候,Leaky ReLU函数和普通斜坡函数保持一致。即f(x)={xifx>0λxifx≤0f(x) = \left\{ \begin{array}{l} x~~~~~~~ifx > 0 \\ \\ \lambda x~~~~ifx \le 0 \\ \end{array} \right.f(x)=⎩⎨⎧​x       ifx>0λx    ifx≤0​

  Leaky ReLu函数相较于ReLu函数,其在输入值小于0时,并不使输出值直接为0 ,而是把输入值缩小10倍。

3. 损失函数

  损失函数(loss function)是用来评测模型的计算值 与真实值 的相似程度,损失函数越小,就代表模型的鲁棒性越好。当然其核心是对参数 和 进行优化,另外损失函数的选择需要具体问题具体分析,以下为几种常见损失函数计算公式。

   ◎L2损失函数:L(y′,y)=∑i=1n(yi′−yi)2L(y'^~,y) = \sum\limits_{i = 1}^n {(y' _i - y_i )^2 }L(y′ ,y)=i=1∑n​(yi′​−yi​)2

  ◎均方差损失函数:{L(y′,y)=12n∑i=1n(yi′−yi)2多样本L(y′,y)=12(yi′−yi)2单样本\left\{ \begin{array}{l} L(y'^~ ,y) = \frac{1}{{2n}}\sum\limits_{i = 1}^n {(y' _i - y_i )^2 } ~~~~~多样本\\ \\ L(y'^~ ,y) = \frac{1}{2}(y' _i - y_i )^2 ~~~~~~~~~~~~单样本 \\ \end{array} \right.⎩⎪⎪⎨⎪⎪⎧​L(y′ ,y)=2n1​i=1∑n​(yi′​−yi​)2     多样本L(y′ ,y)=21​(yi′​−yi​)2            单样本​

  ◎交叉熵函数:L(y′,y)=[ylog⁡y′+(1−y)log⁡(1−y′)]L(y'^~,y) = [y\log y'^ ~ + (1 -y)\log (1 - y')]L(y′ ,y)=[ylogy′ +(1−y)log(1−y′)]

  上式中y′y'y′是计算值,yyy是真实值

4. 梯度下降

  梯度下降是一种前反馈计算方法,反映的是一种“以误差来修正误差”的思想,亦是神经网络进行迭代更新的核心过程。
  ◎迭代更新w1=w0−ηdL(w)dwb1=b0−ηdL(b)db\begin{array}{l} w_1 = w_0 - \eta \frac{{dL(w)}}{{dw}} \\ \\ b_1 = b_0 - \eta \frac{{dL(b)}}{{db}} \\ \end{array}w1​=w0​−ηdwdL(w)​b1​=b0​−ηdbdL(b)​​
  其中w0w_0w0​和b0b_0b0​是我们目前的实际值,−η- \eta−η是步长(一定的值),当LLL取极值www时,w1w_1w1​是梯度下降求出的值

  ◎ 当对损失函数梯度下降时需要链式法则求解
dL(a,y)dw=dL(a,y)da⋅dadz⋅dzdw\frac{{dL(a,y)}}{{dw}} = \frac{{dL(a,y)}}{{da}} \cdot \frac{{da}}{{dz}} \cdot \frac{{dz}}{{dw}}dwdL(a,y)​=dadL(a,y)​⋅dzda​⋅dwdz​
  以上是对单层神经网络的介绍,后续会不断更新完善~~~

全连接神经网络单层模型原理相关推荐

  1. 深度学习原理-----全连接神经网络

    系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...

  2. 深度之眼Pytorch打卡(十三):Pytorch全连接神经网络部件——线性层、非线性激活层与Dropout层(即全连接层、常用激活函数与失活 )

    前言   无论是做分类还是做回归,都主要包括数据.模型.损失函数和优化器四个部分.数据部分在上一篇笔记中已经基本完结,从这篇笔记开始,将学习深度学习模型.全连接网络MLP是最简单.最好理解的神经网络, ...

  3. 深蓝学院第二章:基于全连接神经网络(FCNN)的手写数字识别

    如何用全连接神经网络去做手写识别??? 使用的是jupyter notebook这个插件进行代码演示.(首先先装一个Anaconda的虚拟环境,然后自己构建一个自己的虚拟环境,然后在虚拟环境中安装ju ...

  4. 深度学习——神经网络之DNN全连接神经网络、BP算法原理

    深度学习--神经网络之DNN全连接神经网络.BP算法原理 深度学习--神经网络之DNN全连接神经网络.BP算法原理 1.啥是人工神经网络 2.神经网络的应用 3.神经网络的组成 3.1.神经元 3.2 ...

  5. 使用 全连接神经网络 训练MNIST数据分类模型

    (一) 实验目的 使用简单的全连接层神经网络对MNIST手写数字图片进行分类.通过本次实验,可以掌握如下知识点: 学习 TensorFlow2 神经网络模型构建方式: 学习 tf.keras.laye ...

  6. 全连接神经网络_【模型解读】从“局部连接”回到“全连接”的Non-Local神经网络...

    文章首发于<有三AI> [模型解读]从"局部连接"回到"全连接"的神经网络​mp.weixin.qq.com 这是深度学习模型解读第9篇,本篇我们简 ...

  7. Pytorch 实现全连接神经网络/卷积神经网络训练MNIST数据集,并将训练好的模型在制作自己的手写图片数据集上测试

    使用教程 代码下载地址:点我下载 模型在训练过程中会自动显示训练进度,如果您的pytorch是CPU版本的,代码会自动选择CPU训练,如果有cuda,则会选择GPU训练. 项目目录说明: CNN文件夹 ...

  8. 计算机机器视觉原理之全连接神经网络1

    计算机机器视觉原理之全连接神经网络1 一图像表示 二.分类器设置 1.多层感知器 2.激活函数 三.网络结构设计 1.用不用隐层,用一个还是用几个隐层?(深度设计) 2.每隐层设置多少个神经元比较合适 ...

  9. 人工神经网络连接方式,全连接神经网络作用

    人工神经元网络的拓扑结构主要有哪几种?谢谢大侠~~~ 神经网络的拓扑结构包括网络层数.各层神经元数量以及各神经元之间相互连接的方式.人工神经网络的模型从其拓扑结构角度去看,可分为层次型和互连型. 层次 ...

最新文章

  1. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66
  2. 匿名内部类创建线程的三种方式
  3. mysql与mangodb多租户_MongoDB多租户(Java):如何使用MongoClient在运行时切换具有不同数据库凭据的MongoDB数据库?...
  4. 服务器换完主板后无盘进不了系统,更换主板后主板认不出硬盘无法进入系统的办法 – 手机爱问...
  5. Jartto: 如何成为一名合格的技术面试官?
  6. 聊聊为什么 IDL 只能扩展字段而非修改
  7. Java从零开始学三(public class和class)
  8. 为什么Spring MVC能自动转换json/xml,你研究过它背后的原理吗?
  9. java多线程及线程安全详解
  10. java导出下载文件_java导出excel及下载的实现-java下载文件
  11. 不足40M的WPS极限精简版,便携性拉满,老电脑福音
  12. 程式CMS V4黑色炫酷DJ音乐门户网站源码模板
  13. 小米商城网页制作(附源码)
  14. 在网页标题前添加一个小图标
  15. [系统安全] 逆向工程进阶篇之对抗逆向分析
  16. 向flume发送消息出现Client sent event exceeding the maximum length
  17. OpenGL学习笔记:矩阵变换
  18. 使用Google时区API显示任何城市的实时本地时间
  19. adb命令:WIFI连接设备
  20. appollo-二次规划ST速度优化

热门文章

  1. 关于大学计算机相关专业学习路线的见解与分析
  2. 单片机C语言制作ESR表,超级ESR表 - 〓仪表工具专区〓 - 矿石收音机论坛 - Powered by Discuz!...
  3. Leetcode May Challenge - 05/07: Cousins in Binary Tree(Python)
  4. IBM CRL实习感受
  5. Elasticsearch7.x.x开启X-pack鉴权,按步骤执行就能成功!
  6. Android Studio SSL peer shut down incorrectly
  7. 三次函数求近似解(牛顿迭代法/二分法)
  8. 4.2.7 文字编辑
  9. android读取主板数据恢复,技术大招!只剩主板的坏手机也能数据恢复
  10. 从0单排:学风侏儒——小样本学习11-18年