神经网络是什么?

神经网络最重要的用途是分类,为了让大家对分类有个直观的认识,咱们先看几个例子:
· 垃圾邮件识别:现在有一封电子邮件,把出现在里面的所有词汇提取出来,送进一个机器里,机器需要判断这封邮件是否是垃圾邮件。
· 疾病判断:病人到医院去做了一大堆肝功、尿检测验,把测验结果送进一个机器里,机器需要判断这个病人是否得病,得的什么病。
· 猫狗分类:有一大堆猫、狗照片,把每一张照片送进一个机器里,机器需要判断这幅照片里的东西是猫还是狗。

操作方法

  • 01

    这种能自动对输入的东西进行分类的机器,就叫做分类器。 分类器的输入是一个数值向量,叫做特征(向量)。在第一个例子里,分类器的输入是一堆0、1值,表示字典里的每一个词是否在邮件中出现,比如向量(1,1,0,0,0......)就表示这封邮件里只出现了两个词abandon和abnormal;第二个例子里,分类器的输入是一堆化验指标;第三个例子里,分类器的输入是照片,假如每一张照片都是320*240像素的红绿蓝三通道彩色照片,那么分类器的输入就是一个长度为320*240*3=230400的向量。 分类器的输出也是数值。第一个例子中,输出1表示邮件是垃圾邮件,输出0则说明邮件是正常邮件;第二个例子中,输出0表示健康,输出1表示有甲肝,输出2表示有乙肝,输出3表示有饼干等等;第三个例子中,输出0表示图片中是狗,输出1表示是猫。 分类器的目标就是让正确分类的比例尽可能高。一般我们需要首先收集一些样本,人为标记上正确分类结果,然后用这些标记好的数据训练分类器,训练好的分类器就可以在新来的特征向量上工作了。

  • 02

    1. 神经元咱们假设分类器的输入是通过某种途径获得的两个值,输出是0和1,比如分别代表猫和狗。现在有一些样本: <img src="https://pic3.zhimg.com/50/6ecf14a96fc508a0ce2c8c9f77a89662_b.jpg" data-rawwidth="420" data-rawheight="315" width="420">大家想想,最简单地把这两组特征向量分开的方法是啥?当然是在两组数据中间画一条竖直线,直线左边是狗,右边是猫,分类器就完成了。以后来了新的向量,凡是落在直线左边的都是狗,落在右边的都是猫。

  • 03

    一条直线把平面一分为二,一个平面把三维空间一分为二,一个n-1维超平面把n维空间一分为二,两边分属不同的两类,这种分类器就叫做神经元。 大家都知道平面上的直线方程是,等式左边大于零和小于零分别表示点在直线的一侧还是另一侧,把这个式子推广到n维空间里,直线的高维形式称为超平面,它的方程是:神经元就是当h大于0时输出1,h小于0时输出0这么一个模型,它的实质就是把特征空间一切两半,认为两瓣分别属两个类。你恐怕再也想不到比这更简单的分类器了,它是McCulloch和Pitts在1943年想出来了。 这个模型有点像人脑中的神经元:从多个感受器接受电信号,进行处理(加权相加再偏移一点,即判断输入是否在某条直线的一侧),发出电信号(在正确的那侧发出1,否则不发信号,可以认为是发出0),这就是它叫神经元的原因。

方法/步骤2

  • 01

    当然,上面那幅图我们是开了上帝视角才知道“一条竖直线能分开两类”,在实际训练神经元时,我们并不知道特征是怎么抱团的。神经元模型的一种学习方法称为Hebb算法: 先随机选一条直线/平面/超平面,然后把样本一个个拿过来,如果这条直线分错了,说明这个点分错边了,就稍微把直线移动一点,让它靠近这个样本,争取跨过这个样本,让它跑到直线正确的一侧;如果直线分对了,它就暂时停下不动。因此训练神经元的过程就是这条直线不断在跳舞,最终跳到两个类之间的竖直线位置。

  • 02

    2. 神经网络MP神经元有几个显著缺点。首先它把直线一侧变为0,另一侧变为1,这东西不可微,不利于数学分析。人们用一个和0-1阶跃函数类似但是更平滑的函数Sigmoid函数来代替它(Sigmoid函数自带一个尺度参数,可以控制神经元对离超平面距离不同的点的响应,这里忽略它),从此神经网络的训练就可以用梯度下降法来构造了,这就是有名的反向传播算法。 神经元的另一个缺点是:它只能切一刀!你给我说说一刀怎么能把下面这两类分开吧。 <img src="https://pic3.zhimg.com/50/28cd0de61975718f36ae5b9f80de4e4a_b.jpg" data-rawwidth="420" data-rawheight="315" width="420">解决办法是多层神经网络,底层神经元的输出是高层神经元的输入。我们可以在中间横着砍一刀,竖着砍一刀,然后把左上和右下的部分合在一起,与右上的左下部分分开;也可以围着左上角的边沿砍10刀把这一部分先挖出来,然后和右下角合并。

  • 03

    3. 大型神经网络 我们不禁要想了,假如我们的这个网络有10层神经元,第8层第2015个神经元,它有什么含义呢?我们知道它把第七层的一大堆神经元的输出作为输入,第七层的神经元又是以第六层的一大堆神经元做为输入,那么这个特殊第八层的神经元,它会不会代表了某种抽象的概念? 就好比你的大脑里有一大堆负责处理声音、视觉、触觉信号的神经元,它们对于不同的信息会发出不同的信号,那么会不会有这么一个神经元(或者神经元小集团),它收集这些信号,分析其是否符合某个抽象的概念,和其他负责更具体和更抽象概念的神经元进行交互。

    方法/步骤3

    • 01

      这里面的概念并不是整个网络的输出,是网络中间层神经元的偏好,它们为后面的神经元服务。虽然每一个神经元都傻不拉几的(只会切一刀),但是65万个神经元能学到的东西还真是深邃呢。

    (0)

    相关推荐

    • matlab如何调出神经网络工具箱

      当我们使用MATLAB功能的时候:往往需要建立神经网络模型,那么我们该怎么,找到这个工具箱呢,下面小编给出一二. 操作方法 01 打开MATLAB软件,如图所示 02 单击,界面中做小脚的" ...

    • 使用MATLAB R2012b中的神经网络工具箱进行拟合

      利用MATLAB中提供的神经网络工具箱进行数据拟合.数据是MATLAB软件自身提供的样本数据. 操作方法 01 单击Apps,在搜索框中输入neu,下方出现了所有神经网络工具箱.neural net ...

    • 怎样操作matlab神经网络工具箱?

      matlab是一个很强大的计算软件,自带神经网络工具箱还是挺不错的,这里讲解一下matlab自带神经网络工具箱的基本用法. 操作方法 01 打开matlab,点击"app",图示& ...

    • SPSS modeler [教程] 人工神经网络建模

      神经网络算法经常用于预测和分类,这里介绍一下用SPSS modeler实现该法的基本步骤. 操作方法 01 首先导入样本数据,这里数据是存储在excel表中的,具体方法见前面的介绍 02 然后选择类型 ...

    • matlab中BP神经网络的使用方法和实例

      有时候在使用matlab进行数据分析和计算的时候,想使用BP神经网络算法,怎么使用呢,下面来分享一下方法 操作方法 01 第一步我们首先需要了解BP神经网络是一种多层前馈网络,可以进行学习和存储输入输 ...

    • MATLAB 中BP神经网络算法的实现

      BP神经网络算法提供了一种普遍并且实用的方法从样例中学习值为实数.离散值或者向量的函数,这里就简单介绍一下如何用MATLAB编程实现该算法. 操作方法 01 这里以一个普遍实用的简单案例为例子进行编程 ...

    • Matlab神经网络(一)--神经网络的6个基本问题

      Matlab神经网络(一)--神经网络的6个基本问题 步骤/方法 01 Matlab神经网络(一)--神经网络的6个基本问题

    • 配置Sendmail服务器以防治垃圾邮件

      本文介绍了一些在Linux中广泛使用的防垃圾邮件技术,同时也介绍了通过配置邮件传送代理服务器Sendmail来抑制垃圾邮件的具体方法。 随着Internet的发展,电子邮件作为 一种通信方式逐渐普及。 ...

    • tts是什么意思以及tts有什么功能作用?

      tts是什么意思,tts有什么功能作用? TTS的全称为Text To Speech,即“从文本到语音”。它是同时运用语言学和心理学的杰出之作,在内置芯片的支持之下,通过神经网络的设计,把文字智能地转 ...