简单又复杂的人工神经网络
为什么80%的码农都做不了架构师?>>>
最近正在看吴军博士的一本书《数学之美》,受到了很多启发,恶补了几天线性代数和高等数学,趁着自己思路清晰,把自己对人工神经网络的想法记录下来,顺便推导一下公式。
一场人工智能狂潮正在悄悄的到来,也许要不了多久,各种智能产品将会环绕再我们的周围,坐在智能汽车里,告诉它要去的地方,自动驾驶技术就可以把你带到目的地,电视机也有智能芯片,它能懂你的爱好和习惯,自动播放你想要看的节目,诸如此类的场景,正在慢慢的到来。促使这场革命的恰恰是深度学习的发展和计算机硬件水平的提升。
深度学习本质上就是多层人工神经网络,废话不多说,我们来看看人工神经网络。
“人工神经网络”这个名字充满了科技感,那么它是用来做什么的呢?定义出这样一个网络是为了解决什么问题?其实它就是来解决分类问题的。人每天都在做分类问题,如红绿灯路口,走还是不走;今天下雨了,上班是骑车还是坐公交;晚上是吃火锅还是吃面条……这样一看,分类问题构成了我们日常生活的全部。计算机学会做分类问题,就能拥有一些智能了。
看下面一张图片,我随便手写了几个数字。
人识别这些数字一眼看过去就知道了,计算机怎么识别这些数字呢?把每个数字的图切块,转化为一个个N维向量,可以看做是N维空间中的点,这些点就散落在其中。我们用三维空间来模拟一下:
我们在需要在这个立方体上画出一个特殊的“分界线”就能区分这些数字了,为了说明这个问题,我们简化一下,区分两个数字0和1,这时候就说到神经网络了,神经网络本质上是一个带权重的有向图。我们来怎么解决这个问题。
假设图片0被向量化成二维向量,用(x1,x2)表示,我们用AC、AD、BC、BD、CE、CF、DE、DF表示连接节点间的权重。
加权计算之后:
C点的值Yc=x1*AC+x2*BC
D点的值Yd=x1*AD+x2*BD
E的值Ye=Yc*CE+Yd*DE
F的值Yf=Yc*CF+Yd*DF
如果Ye和0的误差比Yf和1的误差小,那么图片就被识别为了0,识别正确,实际上,不可能权重不可能一次就准确,那么这时候就需要误差反向传播,来调整权重了。
在调整权重之前,我们还是看看上面的权重计算都是线性的,在空间中画的分界线都是线性的,那么要分类复杂的模型,我们需要非线性的运算,这时候我们需要激活函数了。常用的激活函数有sigmoid 和tanh
1、sigmoid :
2、tanh
加上了激活函数后,E、F的输出值分别就变成了:
Ye=f[ f(Yc)*CE+f(Yd)*DE]
Yf=f[ f(Yc)*CF+f(Yd)*DF]
Ye和0、Yf和1需要有计算误差的方法,我们定义它损失函数,通常用平方差函数作为损失函数,平方差函数如下:
公式中a表示Ye或者Yf,y表示0或者1
好了,现在我们知道计算值Ye、Yf和目标值0、1之间的误差了,我们怎么能最快减小这个误差呢?这个误差我们可以想象成山脚到山顶的距离,我们走上山顶需要一个步长,这个步长可以起个名字,叫学习速率,learning rate。
那么问题来了,怎么快速走到山顶,用梯度下降法,走最陡的地方。怎么找最陡的地方,把山当成一个曲面,求曲率最大的点。
接下来,求出几个偏导数,就找到了曲率了。
误差C对CE求偏导数,我们记为:
那么C点和E点的权重应该更新为:
类推:C对CF、C对DE、C对DF、C对AC、C对AD、C对BC、C对BD求偏导数,就可以更新所有权重了,这里会有复合函数,那么需要用到链式法则了。
好了,这就是整个BP神经网络的构建和训练过程,有足够的训练数据,就可以训练一个可以分类的神经网络了,语音识别、图像识别、自然语言处理中的文本分类等等都是这个原理。
快乐源于分享。
此博客乃作者原创, 转载请注明出处
转载于:https://my.oschina.net/u/1778239/blog/1583182
简单又复杂的人工神经网络相关推荐
- 人工神经网络_人工神经网络实践
人工神经网络(Artificial Neural Network,ANN) 使一种受人脑生物神经网络信息处理方式启发而诞生的一种计算模型,得益于语音识别.计算机视觉和文本处理方面的许多突破性成果,人工 ...
- 人工神经网络的发展前景,人工神经网络及其应用
人工神经网络是哪一年由谁提出来的 人工神经网络是1943年,心理学家W.S.McCulloch和数理逻辑学家W.Pitts提出来. 他们通过MP模型提出了神经元的形式化数学描述和网络结构方法,证明了单 ...
- 人工神经网络研究综述,人工神经网络分析方法
1.人工神经网络的发展趋势 人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉,如模式.语音识别.非结构化信息处理方面的缺陷,使之在神经专家系统.模式识别.智能控制.组合优化. ...
- 什么是通过人工神经网络,深谈人工神经网络技术
人工神经网络的特点有哪些 人工神经网络的特点和优越性,主要表现在三个方面:第一,具有自学习功能. 例如实现图像识别时,只在先把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习 ...
- 机器学习基础(一)——人工神经网络与简单的感知器
机器学习基础(一)--人工神经网络与简单的感知器 (2012-07-04 19:57:20) 转载▼ 标签: 杂谈 分类: machineのlearning 从最开始做数据挖掘而接触人工智能的知识开始 ...
- 人工神经网络的应用实例,人工神经网络简单例题
什么是神经网络,举例说明神经网络的应用 我想这可能是你想要的神经网络吧! 什么是神经网络:人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs) ...
- 利用python实现简单的人工神经网络识别手写数字
利用 Python 搭建起了一个简单的神经网络模型,并完成识别手写数字. 1.前置工作 1.1 环境配置 这里使用scikit-learn库内建的手写数字字符集作为本文的数据集.scikit-lear ...
- 基于MATLAB实现简单人工神经网络
资源下载地址:https://download.csdn.net/download/sheziqiong/85979688 资源下载地址:https://download.csdn.net/downl ...
- 基于C++的简单深度学习ANN(人工神经网络)模型
使用C++实现的简单ANN(人工神经网络) github地址 使用C++实现的最简单的人工神经网络,包含梯度下降的反向传播算法(BP).内有部分注释,适合初学学习.至于为什么不用python?还是觉得 ...
最新文章
- celery源码分析:multi命令分析
- 剑桥大学国际学生事务部网站
- 时频分析:短时傅里叶实现(3)
- POJ2402 Palindrome Numbers 回文数
- python多线程下载器_用 python 实现一个多线程网页下载器
- 程序员吐槽:组里新来一个“加班狂”,可把大家害惨了
- python从入门到放弃-Python数据分析从入门到放弃(十五)爬虫(番外)基金选取实例...
- STM32开发环境搭建
- 16个PLC入门基础知识,大学生学PLC就跟玩一样
- 01费曼技巧 - 助你快速掌握软件测试知识
- 如何搭建CA(向CA申请证书)
- SATA学习笔记 13 ---SATA NCQ
- 机械结构_day12
- 1.Windows环境配置
- java ssh 服务器文件传输_java使用SFTP上传文件到资源服务器
- Js--根据身份证号计算年龄、性别、出生年月日
- 将xlsx内容转成json
- Android最新版支付宝钱包的实例源码
- 全国计算机等级考试桑葚,高负荷学习眼睛干涩疲劳?省考试院推荐6大营养果蔬护眼有方!附食谱...
- iphone拍照的历史顽固问题-鬼影
热门文章
- java项目流程_Java项目开发全流程实践
- java session使用_Java互联网架构-高负载集群架构如何解决session一致性问题
- 单调有界定理适用于函数吗_第二百零二夜:导数与三角函数
- Mysql 面试常问5 让你根据业务写出比较复杂的SQL,往往和 Group BY 与 Having 相关
- 工程师软技能6:理财人生精神
- js调用app方法并传承参
- css3 flex属性flex-grow、flex-shrink、flex-basis学习笔记
- shell写入文件,后面会覆盖前面
- 封装直传阿里云存储文件上传控件
- Go 官方未来会不会支持循环引用?