闲谈神经网络--写给初学者(一)

  写在前面的话:保持一贯的风格,正式开始写之前,先啰嗦一番。介绍神经网络的书籍和文章简直太多了,所以我也不准备用太洋气的话去讲,尽量写的土一点,大家看完文章后,能够对神经网络有一个整体的认识,有所体会,我便达到了目的。接下来再根据自己的问题,去看看大块头的书,练习练习,就好了。如果能够跟自己的学习工作中的问题相结合,应用起来,那便是极好的。

==============正式开始写========

一、神经网络整体认识

到底什么是神经网络呢?在陷入各种各样概念、名词、理论之前,请务必提醒自己,只有从整体上理解到底什么是神经网络,之后的深入学习才不至于迷失方向。

 请看下面三张图:

    

    图一                  图二                图三

这三幅图跟就能很好的对神经网络进行一个整体的描述:神经网络就是一个黑箱,和人脑一样。

(1)我们给这个黑箱一些输入和输出,这个黑箱就能够自动去寻找这些输入和输出之前的关系,等以后我们再输入一些东西时,他们便能给出我们一些输出。就跟人脑一样,我们不停的输入一些人,输出对应性别,等脑子慢慢学习和长大,以后再看到一些人,就能分辨他们的性别了。

(2)对于有些输入,不一定就会有输出,而是能够找到这些输入之间的关系。就跟人脑一样,我们看人,输入各种各样的人,随着我们人脑的不停学习和训练,会自动把他们分为美、普通、丑等关系。

因此,叫做神经网络,还是很贴切的。接下来是其他几点类比:

(1)人脑有聪明的,也有笨的,所以我们以后构造的神经网络也有聪明和笨之分,只有不断的训练,不断调整合适的参数,才能让我们设计的神经网络越来越聪明。

(2)人脑都有自己适合做的事情,比如有些人适合学理科,有些人适合学文科;有些人适合搞经济,有些人适合搞政治。。同样,各种各种的神经网络模型,也有自己适合做的事情,只有搞懂神经网络的基本原理,才能够根据自己的实际需要,选择合适的网络。(突然想起前几天一个小时候的同学说的一句话:“TMD过了这么多年,我发现一点:我就根本不适合上学”)。

(3)人脑也有误判的时候,因此用神经网络,是无法做到100%准确的,因此对于要求有百分之百准确度的事情,不能用神经网络,需要建立精确的数学模型和公式来计算才行。

总之,就一句话,“神经网络就是一个神奇的黑箱”。接下来,我们就一起去打开这个黑箱,看看他里面到底是怎么回事。

二、打开黑箱

  刚刚打开黑箱,你可能惊呆了,里面都是一些什么乱七八糟的东西,完全不懂啊。不用慌张,我们一点点的去分析。

  神奇的造物主创造了人脑,于是有些人也试图去创造神经网络去模拟人脑。假如是你要设计一个神经网络,你会怎么做呢?如果你百思不得其解,那么好吧,我们一起来看看前辈门是怎么设计的吧。这里的前辈们有很多,为了使大家既能理解神经网络原理,又能够实践操作,我把前辈们分成了两类:数学家和程序员。其中数学家设计了整体的思想,而程序员用程序实现了数学家所说的功能(以Matlab为例进行演示)。

   我们看看前辈们是怎么设计的。

  我们发现这个黑箱里面有很多小圆球,如下图所示:

  这些小圆球还有一个很好听的名字,叫做“神经元”,刚开始看你可能觉得这些小圆球乱七八糟排列,实际上如果你仔细看的话,他们之间的排列是有规则的,根据他们排列规则不同,神经网络结构大概分成如下几种:

(1)前馈型

这些小圆球一个接一个的排列,input表示输入信号,从前到后,一直到output输出,神经元和神经元之间没有信号的传输。其中第一层是输入单元,第二层称为隐含层,第三层称为输出层(输入单元不是神经元,因此图中有2层神经元)。

例如BP神经网络和感知器神经网就是这么排列的。

(2)反馈型

顾名思义,最后的输入信号不仅输出就完事了,还会把输出信号反馈回去,因此叫做反馈型神经网络。

例如:回归BP网络就属于这一种。

(3)层内有互相结合的

前面的结构,同一层神经元之间没有联系,而层内有互相结合的结构,层内神经元会互相有信息传输。

怎么样,是不是很赞赏前辈们,竟然能够想到这么个办法,这些小球(神经元)互相连接,就能干很多很多复杂的事情,可是这些小球到底是个什么东西呢,接下来,就进入本文的重点,让我们深入小球内部看看是怎么个回事。

三、打开小圆球(神经元)

每一个神经元的结构,如下图所示:(请注意,接下来就要有各种公式符号等等,始终记住,神经网络是一个黑箱,里面有很多小球(神经元)连接,他们一层一层的排列,有了各种各样的结构方式)

上面一个图就是神经元的内部结构图,虽然它不是一个球,但是你可以想象它外部是有一层圆圆的外壳,包裹着它就好。我们一点点看看他都有那些东西。

(1)输入:inputs表示的x1,x2,...,xm表示的是输入信号,这些输入信号输入进各个神经元的∑函数进行一个求和,我们看到他们并是直接相加的,而是每个输入都乘以了一个系数W之后再相加的,这些W称为权重,或者叫权值,或者叫做Weight。

(2)bias:我们看到进入∑符号的不仅有输入乘以Weight,还有一个Bias,他的输入是1,权值是W0,所以也可以看成是一个固定输入为1,权重为W0的一个输入信号。在其他一些书里面,bias的值会有bi符号表示,或者别的,总之是一个意思。还要注意的是,这个bias有很多名字,什么阈值、threshold,偏置等等都是一个意思。

(3)激活函数:前面的输入和bias经过∑求和之后,就会通过一个函数进行处理,进而输出结果,这个函数就叫做激活函数,也就Activation Function,也叫传递函数,也就Transfer Function,也叫TF,总之这些名称都是一回事。

怎么样,就是这么一个一个的神经元,就组成了一个神奇的神经网络,这个魔法的黑箱,就能干很多事情。

那么问题来了,我们可以改变那些东西,进而完成我们各种各样的问题解决呢?

我们能改动的,无非是下面几个东西:

(0)输入输出的格式和质量

(1)各个神经元的权重值W

(2)偏置bias,这个改变从广义上说,也算是改变权重W0

(3)激活函数

(4)神经网络层数

(5)每一层神经元个数

(6)神经网络的结构

那么问题又来了,这些参数怎么改变呢?

这篇太长了,留着下篇继续讲解吧,争取再讲一个例子。

============================

最近帮朋友弄了微信公众号,每天早上6点30分,发送一个60秒的语音,有兴趣的朋友不妨关注一下。

微信号:歪理邪说(wailixs)

二维码:

时间: 2024-11-08 21:27:40

闲谈神经网络--写给初学者(一)的相关文章

闲谈神经网络--写给初学者(二)

继续上篇来写.为了使这个神经网络满足我们需要,我们能够改变的东西有: (0)输入输出的格式和质量 (1)各个神经元的权重值W (2)偏置bias,这个改变从广义上说,也算是改变权重W0 (3)激活函数 (4)神经网络层数 (5)每一层神经元个数 (6)神经网络的结构 那么问题又来了,这些参数怎么改变呢?我们一部分一部分的进行讲解. 一.激活函数的选取 下面列出几个激活函数数学定义以及Matlab中的相应函数,大家可以在matlab中用函数画一下,看看他们到底是怎么一个函数. (1) 线性函数 (

闲谈神经网络--写给初学者(三)

接上篇. 前面两篇讲解了神经网络就是一个黑箱,里面有一个一个的小圆球(神经元)连接而成,通过改变神经元的连接方式及各个参数,就可以实现一个符合要求的神经网络.接下来我们来举一个BP神经网络的例子,以加深理解. 在讲解这个例子之前,大概说一下一个神经网络解决问题的思路: 1.对要解决的问题进行理解,找到输入输出数据. 2.把已知的输入输出数据分为两部分:一部分用来训练网络:另外一部分来验证训练的网络到底好不好用. 3.对输入数据进行预处理及归一化处理. 4.创建合适的网络,如BP.感知器.RBF.

一个LINUX高手写给初学者的话(转)

http://www.linuxdiyf.com/viewarticle.php?id=168606 现在好多的人开始接触电脑的时候,见到的应该是Windows98 说实话,98 已经是一个很人性化,封装的很好的一个系统了 一个对电脑一窍不通的人都能很快的使用它.这样很多人对 "电脑"的印象和那些和我一样一开始接触的是DOS人是绝然不 同的.在DOS时代,如果你对电脑的基础知识不懂的话是玩不 动它的,不像现在好多人CPU是什么都不知道,却能够是Flash 高手,倾倒MM无数.如果你是这

写给初学者css优先级问题

首先需要搞清楚几个基本概念 1.内嵌样式: 写在元素标签内的例如:<div style="background-color:red"> </div> 2.内联样式: 写在head的style例如:<head> <style> div{ background-color:red; } </style> </head> 3.外部样式: link标签引入进来的例如:<link rel="styleshee

PCA (主成分分析)详解 (写给初学者) 结合matlab(转载)

一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题,在一个几万或者几百万甚至更大的数据库中查询一幅相近的图像.这时,我们通常的方法是对图像库中的图片提取响应的特征,如颜色,纹理,sift,surf,vlad等等特征,然后将其保存,建立响应的数据索引,然后对要查询的图像提取相应的特征,与数据库中的图像特征对比,找出与之最近的图片.这里,如果我们为了提

[叩响C#之门]写给初学者:多线程系列(七)——互锁(Interlocked类)

前言:我第一次接触“线程”的概念时,觉得它深奥难懂,看了好多本书,花了很长时间才领悟到它的真谛.现在我就以一个初学者的心态,把我所理解的“多线程”描述给大家.这一次是系列文章,比较完整的展示与线程相关的基本概念.希望对初学者有所帮助.语言比较精炼,有些地方需要反复阅读. 目录(欲看前面的章节,请点击下面的链接 ) 第21章 多 线 程 21.1 线程的概念 21.2 Thread类 21.3 线程的优先级 21.4 线程的插入 21.5 线程的状态 21.6 线程的同步 21.6.1 线程同步的

写给初学者的话---linux使用说明

2018年noip上海赛区可以使用window操作系统的美梦终究还是破灭了!!!!上海大部分noip选手都陆陆续续开始改linux........好吧,那我们今天来看看linux操作系统中,noip选手都应该掌握哪些知识-----------------------------------------------------------------------------------------------------------------------------------------Lin

MIT 18.03 写给初学者的微积分校对活动 | ApacheCN

整体进度:https://github.com/apachecn/calc4b-zh/issues/1 贡献指南:https://github.com/apachecn/uiuc-cs241-notes-zh/blob/master/CONTRIBUTING.md 项目仓库:https://github.com/apachecn/uiuc-cs241-notes-zh 贡献指南 请您勇敢地去翻译和改进翻译.虽然我们追求卓越,但我们并不要求您做到十全十美,因此请不要担心因为翻译上犯错--在大部分情

【原创】连“霍金”都想学习的“人工智能”---【自己动手写神经网络】小白入门连载开始了(1)

欢迎关注[自己动手写神经网络]的博客连载!!! 第1章 神经网络简介 神经网络这个词,相信大家都不陌生.就在你打开本书,并试图了解神经网络时,你已经在使用一个世界上最复杂的神经网络——你的大脑,一个由大约1000亿个神经元(每个单元拥有约1万个连接)构成的复杂系统.但人的大脑太过复杂,以至于科学家们到目前为止仍然无法准确解释大脑的工作原理和方式.但有幸的是,生物神经网络的最最基本的元素已经能够被识别,而这就构成了本书想为你介绍的人工神经网络(Artificial Neural Network).