文章目录

  • 一、一个最简单的神经网络
    • (一)实例引入——利用神经网络预测房价
    • (二)神经网络输入层,中间层和输出层的理解
  • 二、神经网络中机器学习的三要素
  • 三、神经网络的模型
    • (一)神经网络模型直观上的理解
    • (二)神经网络模型各元素的含义
      • 1、模型含义
      • 2、公式含义
  • 四、神经网络的策略——代价函数
    • (一)神经网络的策略是什么
    • (二)代价函数
    • (三)代价函数含义理解
      • 1、代价函数结构
      • 2、代价函数的意义(看视频在理解一下)
  • 五、神经网络的算法——梯度下降法
    • (一)梯度下降的基本思想
    • (二)什么是梯度
    • (三)梯度下降的公式
  • 六、BP神经网络——梯度下降在神经网络中的改进应用
    • (一)什么是BP神经网络
    • (二)BP神经网络改进的地方

一、一个最简单的神经网络

(一)实例引入——利用神经网络预测房价

现在我们拿到一批关于房价和房屋面积的数据,我们想要利用这批数据来预测房价,我们会如何做?

在传统的统计学方法中,通常的做法是利用线性模型去拟合房价与房屋面积之间的关系,从而得到一个房价的预测模型,但是在现实生活中,房价是不会为负的,因此,我们会把直线弯曲一下,让它最终在0处结束。
这个线性模型就可以看做是一个最简单的神经网络,这个神经网络的输入层,中间层和输出层只有一个神经元,这个神经网络实现了利用房屋面积预测房价的功能。
在这个神经网络中,起到关键作用的即为中间层的神经元,它可以看做线性函数z(a)=wa+bz(a)=wa+bz(a)=wa+b和激活函数σ(z)\sigma(z)σ(z)的组合。
激活函数这个概念经常会在神经网络相关文章中出现,激活函数的作用就是给线性函数加上一个非线性变换,这种非线性使得我们能够学习到输入与输出之间任意复杂的变换关系,而这里我们所使用的激活函数作叫做ReLU 激活函数,它的全称是 Rectified Linear Unit。

(二)神经网络输入层,中间层和输出层的理解

上面我们所讲的是一个单神经元网络结构,以后不管神经网络的规模大小,神经网络都是由这样一个一个单神经元网络堆叠起来的,把这些神经元想象成单独的乐高积木,你就通过搭积木来完成一个更大的神经网络。
我们现在从刚刚的例子出发,想象一下现实生活中,房价和什么因素有关。

  • 我们需要房子能容纳我们家庭的人数,因此不仅仅需要考虑房屋面积,还需要房间的个数。
  • 我们还需要考虑房子附近的教育水平,因此需要考虑附近学校的个数,还有教育质量,这其实就是我们经常讨论的“学区房”。
  • 另外,我们还需要考虑房子周边的地铁和公交站数量,这直接决定我们出行是否方便。


我们拿到这些数据以后,就能得到一个更大的神经网络,这个网络和输入层还和之前的一样,表示我们的数据特征,只不过因为特征多了,输入层的神经元个数也增多了,每个神经元对应一个特征,输出层就代表房价,这个没有变化。
但是此时中间层在用一个神经元已经有些不合适了,因为此时我们特征变多了,特征的组合代表的含义也不尽相同,用一个神经元去表示这些特征有点太过粗糙,因此中间层的神经元也需要增多,以表示从原始特征中学到的更为细致的特征,比如房屋面积和房间数量能表示容纳家庭人数,学校数量和学校质量表示教育质量。但是这些特征只是帮助我们去理解神经网络学习的直观解释,实际上神经网络学习的什么,我们也不知道(神经网络为什么是个黑盒?)
到此时,我们应该对神经网络的基本结构和大致含义有了一个初步的认知,现在总结一下神经网络各部分的具体含义:

从这个例子我们可以看出,神经网络是属于监督学习。

二、神经网络中机器学习的三要素

神经网络最大的优点就是,只要给它输入X,就能得到Y,它可以自己计算所有的中间过程,那么神经网络是如何计算的?这就不得不提到神经网络的三要素。

三、神经网络的模型

(一)神经网络模型直观上的理解

(二)神经网络模型各元素的含义

1、模型含义

(1)模型整体结构

  • 输入:输入层每个神经元对应一个变量特征,输入层的神经元相当于装有数字的容器
  • 输出:输出层,回归问题为一个神经元,分类问题为多个神经元
  • 参数:网络中所有的参数,即中间层神经元的权重和偏置

神经网络的学习过程即为学习参数的过程
(2)权重
表示激活值加权和中的权重,有点像连接的强弱,可以理解为通过权重的大小和正负来学习特征
(3)偏置
用来控制神经元是否激活,即告诉你加权有多大,才能让神经元的激发变得有意义,例如房价例子中,前面的加权和大于1000,但是仍然不想让神经元被激活,因为该地区的房价均是大于1000的,这时在后面加一个-1000的偏置就可以了,这里的解释仍然是直观的解释,并不是神经网络学习时实际代表的意义。
(4)激活函数
激活函数的作用就是给线性函数加上一个非线性变换,这种非线性使得我们能够学习到输入与输出之间任意复杂的变换关系,不同的激活函数有不同的意义,例如上文提到的ReLU 激活函数,它可以使激活值大于等于0。(激活函数的介绍)

2、公式含义

(1)单个神经元
σ(w1a1+w2a2+⋅⋅⋅+wnan+b)\sigma(w_1a_1+w_2a_2+···+w_na_n+b)σ(w1​a1​+w2​a2​+⋅⋅⋅+wn​an​+b)

  • 输入:ana_nan​表示输入值,
  • 权重:wnw_nwn​表示权重
  • 偏差:bkb_kbk​,和神经元的个数一致,一个神经元有一个偏置值

注意点:每个神经元都与前一层的激活值相连接,利用权重的大小来表示连接的强弱

(2)对于中间层所有的神经元
σ([w0,0w0,1⋯w0,nw1,0w1,1⋯w1,n⋮⋮⋱⋮wk,0wk,1⋯wk,n][a0(0)a1(0)⋮an(0)]+[b0b1⋮bk])\sigma(\begin{bmatrix} w_{0,0}\ w_{0,1} & \cdots &w_{0,n} \\ w_{1,0}\ w_{1,1} & \cdots & w_{1,n} \\ \vdots\quad\vdots& \ddots & \vdots \\ w_{k,0}\ w_{k,1} & \cdots & w_{k,n} \end{bmatrix} \begin{bmatrix}a_0^{(0)} \\a_1^{(0)} \\\vdots\\a_n^{(0)} \end{bmatrix}+ \begin{bmatrix}b_0 \\b_1\\\vdots\\b_k \end{bmatrix})σ(⎣⎢⎢⎢⎡​w0,0​ w0,1​w1,0​ w1,1​⋮⋮wk,0​ wk,1​​⋯⋯⋱⋯​w0,n​w1,n​⋮wk,n​​⎦⎥⎥⎥⎤​⎣⎢⎢⎢⎢⎡​a0(0)​a1(0)​⋮an(0)​​⎦⎥⎥⎥⎥⎤​+⎣⎢⎢⎢⎡​b0​b1​⋮bk​​⎦⎥⎥⎥⎤​)

  • 输入:an(i)a_n^{(i)}an(i)​表示输入值,iii表示第几层的输入值,i=0i=0i=0表示原始输入,i=1i=1i=1表示第一层网络的激活值,nnn在第一层表示输入的特征数,在中间层表示神经元个数,在输出层表示分类个数。
  • 权重:wk,nw_{k,n}wk,n​,kkk表示中间层神经元的个数,nnn和输入的数量保持一致
  • 偏差:bkb_kbk​,和中间层神经元的个数一致,一个神经元有一个偏置值

注意点:每一层的激活函数都是相同的,不同层之间的激活函数可以不同

四、神经网络的策略——代价函数

(一)神经网络的策略是什么

神经网络的策略表示神经网络学习的准则,即评定神经网络学习结果的好坏,这里我们用代价函数来定义。

(二)代价函数

代价函数,也称作损失函数,用来度量预测错误的程度,是预测值f(X)f(X)f(X)和真实值YYY差值的非负值函数。

例如均方误差代价函数:

C(w,b)=12N∑1N(a(L)−y)2C(w,b)=\frac{1}{2N}\sum_{1}^N (a^{(L)}-y)^2C(w,b)=2N1​∑1N​(a(L)−y)2

其中,a(L)a^{(L)}a(L)表示神经网络输出层的值,即为预测值,yyy表示真实值

注意点:这里我们说的损失函数其实为经验风险损失,这里是简称为损失函数
详细见监督算法的三要素

(三)代价函数含义理解

1、代价函数结构

  • 输入:网络中所有的参数,即所有的权重www和偏置bbb
  • 输出:预测值f(X)f(X)f(X)和真实值YYY之间的差值,为一个数字,称为代价
  • 参数:所有的训练样本

注意点:和神经网络模型的结构对比学习

2、代价函数的意义(看视频在理解一下)

代价函数取决于所有训练数据的综合表现,因为代价函数取了整个训练集的平均值,所以最小化的意思是,对所有的样本得到的总体结果都会好一些。

五、神经网络的算法——梯度下降法

(一)梯度下降的基本思想

梯度下降法是求解无约束最优化问题的一种最常用的方法,其基本思想为沿着负梯度的方法找到函数的最小值。注意,这里的最小值为初始值附近的局部最小值,不是全局最小值。

(二)什么是梯度

假设f(x)f(x)f(x)是Rn\mathbf{R}^nRn上具有一阶连续偏导的函数,梯度就是分别对每个变量进行微分,然后用逗号分割开,在用<>括起来的一个向量。

例如:
f(Θ)=0.57−(11θ1−7θ2+13θ3)f(\boldsymbol{\Theta})=0.57-(11\theta_1-7\theta_2+13\theta_3)f(Θ)=0.57−(11θ1​−7θ2​+13θ3​)
则:
梯度∇f(Θ)=⟨∂f∂θ1,∂f∂θ2,∂f∂θ3⟩=⟨11,−7,13⟩\nabla f(\boldsymbol{\Theta})=\left \langle \frac{\partial f}{\partial\theta_1} ,\frac{\partial f}{\partial\theta_2},\frac{\partial f}{\partial\theta_3}\right \rangle=\left \langle 11,-7,13 \right \rangle∇f(Θ)=⟨∂θ1​∂f​,∂θ2​∂f​,∂θ3​∂f​⟩=⟨11,−7,13⟩

(三)梯度下降的公式

Θ1=Θ0−α∇f(Θ)\boldsymbol{\Theta}^1=\boldsymbol{\Theta}^0-\alpha \nabla f(\boldsymbol{\Theta})Θ1=Θ0−α∇f(Θ),其中Θ0\boldsymbol{\Theta}^0Θ0为给定的值

注意点:
1、初始的参数值是给定的
2、梯度下降是沿着负梯度的方向
3、学习率α\alphaα是为了控制梯度下降的步长,以免在下降的过程中错过局部最小值。

六、BP神经网络——梯度下降在神经网络中的改进应用

(一)什么是BP神经网络

BP神经网络是一种多层的前馈神经网络,其基本特点是:信号是前向传播的,而误差是反向传播的。

(二)BP神经网络改进的地方

BP神经网络改进了梯度下降算法不能对隐藏层参数求导的问题,BP神经网络利用链式求导法则,反向求出每一个参数的梯度,从而更新权重矩阵。
反向传播的目的就是为了求出代价函数对每一个参数的梯度。

神经网络的基本结构介绍相关推荐

  1. 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。

    在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...

  2. ICML2020 | 神经网络的图结构如何影响其预测性能?

    作者 | 董靖鑫 审稿 | 程玉 今天给大家介绍的是来自斯坦福大学的Jure Leskovec课题组发表在ICML2020上的文章" Graph Structure of Neural Ne ...

  3. 微软熊辰炎:如何利用图神经网络解决半结构化数据问题?

    对于许多信息检索和知识图谱研究者来说,究竟应该使用抽象的结构化信息进行表示学习还是使用海量的文本信息始终是一个富有争议的话题.在本届智源大会上,来自微软研究院的高级研究员熊辰炎博士带来了题为" ...

  4. NeuralFinder:集成人工生命和遗传算法自动发现神经网络最优结构

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ 张俊林 黄通文 马柏樟  薛会萍                一.为什么要做神经网络结构自动发现 从16年年中开始,我们开始 ...

  5. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

  6. linux服务器都有注册表吗,NT服务器的注册表结构介绍

    NT服务器的注册表结构介绍 HKEY_CLASSES_ROOT:它包括与OLE和文件关联有关的信息.设置这一项的目的是提供和目前的Windows 3.x相兼容. HKEY_CURRENT_USER:它 ...

  7. 六十一、分析Springboot中的项目结构介绍

    @Author:Runsen 来源:尚硅谷 下面建议读者学习尚硅谷的B站的SpringBoot视频,我是学雷丰阳视频入门的. 具体链接如下:B站尚硅谷SpringBoot教程 文章目录 spring项 ...

  8. 【笔记】spring的注解回顾,springboot-restful项目结构介绍 springboot-freemarker ⼯程配置详解

    注解 学Spring boot有一阵子了,总结一下它的注解. @Controller :修饰class,⽤来创建处理http请求的对象 @RestController :Spring4之后加⼊的注解, ...

  9. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

最新文章

  1. 提高建模效率,改变手工作坊式生产,AutoML的技术研究与应用进展如何了?
  2. linux LyX中文编辑环境安装配置指南-TeX可视化工具
  3. 程序员去交友网站找女友,没想到找到了这个...
  4. FAQ宝典之Rancher Server
  5. spark Application report for application_1498032012194_0036 (state: FAILED)
  6. 方言 —— 各地方言
  7. linux常用命令(21)tar命令
  8. php自动盖章,印章自动生成器?
  9. 对联广告代码效果大全
  10. 计算机毕业设计情况进展记录表,南京理工大学泰州科技学院毕业设计(论文)进展情况记录表.doc...
  11. OkHttp Events事件
  12. 智能陈桥五笔输入法 for linux,解决在Linux下安装陈桥五笔输入法的方法
  13. 解析Google地图的Search接口返回的f.txt文件数据(其他类似)
  14. 黑苹果EFI引导启动文件,技嘉Z77P-D3+E3-1230 V2+蓝宝石RX560D+Macos10.15.x(5)
  15. 深度学习之美(张玉宏)——第三章 机器学习三重门
  16. 运用遗传算法求解函数极值(fortran)
  17. SSM框架实现不同用户登陆进入不同页面
  18. 一文读懂什么是物联网!
  19. 致烟民早日摆脱烟瘾的困扰
  20. MySQL查询时间戳

热门文章

  1. 【华为机试真题 Python实现】藏宝图
  2. 企业与个人是如何跨越战略转折点 - 读《只有偏执狂才能生存》
  3. 数字示波器CAN节点标定
  4. [转载]命令行也强大之下载迅雷资源的方法
  5. php 列表全选,php处理全选与全不选的实例代码
  6. 央行降息楼市应声而动:购房者出现恐慌苗头
  7. 滑动轨迹 曲线 python_python——自动轨迹绘制
  8. 服务器网站搭建入门教程
  9. 使用PHPstudy在Windows服务器下部署PHP系统
  10. matplotlib之pyplot模块——填充多边形(fill)