原创 【零基础】理解神经网络中传播函数的内在含义

2019-10-10 13:49 2011 23 3 分类: 机器人/ AI 文集: AI

一、序言

  之前已经写过“单神经元、浅层神经网络、深层神经网络”(感兴趣的可以翻翻),写的有点乱而且很多环节都没有说明白。这里我们尝试通过“感知机”的描述来回答一个问题:“为什么传播函数长这个样子”。

  感知机是一种类似神经网络的预测模型,现在各种功能强大的神经网络正是在感知机的基础上诞生的,看懂感知机,神经网络也就不难了。另外,无论是感知机亦或是早期的神经网络,本质上他们都是用于处理“二分类”问题,本文就从二分类问题开始,反向推导出感知机模型。至于感知机是如何转变为神经网络以及更多的细节就留到以后再讲吧,欢迎关注“零基础爱学习”一起学习人工智能。

二、二分类

  “二分类”只是一种叫法,可以将处理二分类问题的模型想象成一个黑盒子,无论输入什么内容,输出就是1或0(yes or no)。典型的二分类问题如下:

  1)图中是否包含猫

  2)图中是否包含小汽车

  3)图中是否包含人像

  如“图中的猫是什么颜色”这样的问题就不属于二分类了,因为猫可能是白色、黑色、黄色,甚至图中压根就没有猫。

  这里我们考虑一个非常简单的二分类问题:

  “仅有4个像素的图片白不白”

  下面随机生成了一张四个像素的图片(将像素放大了N倍方便观察)

  对应的灰度值是(灰度值范围0-255,0表示全黑、255表示全白):

  X=(240,200,100,10)

  要判断上述图片“白不白”直观上很好处理,我们将各像素的灰度值相加,当灰度值之和大于某个阈值a时我们就认为这是一张白图,小于a时就认为这不是一张白图。伪代码示例如下:

  if (x1+x2+x3+x4)>a:

    return 1

  else:

    return 0

  但这种处理方式有个问题,它没有考虑到各像素不同表现形式对整体感官也是有一定影响的,如下面两张图:

  其实两张图的灰度值之和是一样的,但主观上我们可能认为左边的图整体上较右边的图“白”一点。那我们换一种判断方式,将每一个像素的特征都考虑进来:

  if x1>a1 and x2>a2 and x3>a3 and x4>a4:

    return 1

  else:

    return 0

  这里的a1、a2、a3、a4可以称为各像素的“特征”值,但此判断方法又导致通用性很差,比如我们调换一下各像素的位置,可能又需要新增一套特征值:

 

  if (x1>a1 and x2>a2 and x3>a3 and x4>a4) or (x1>b1 and x2>b2 and x3>b3 and x4>b4):

    return 1

  else:

    return 0

  上面只使用了两套特征值,实际上4个像素的组合最多可能需要6套特征值。如果需要处理的是500x500的图片,那代码的复杂程度就不敢想象了。

  通过前面的举例,我们会发现使用计算机来处理一个非常简单的二分类问题也非常困难,那就没有办法了吗?当然不是,前面无论是使用阈值或是特征值来做“白或不白”的判断,本质上是希望建立一个“确定系统”,然鹅现实世界往往并不是那么明确,“白与不白”的判断其实是个“混沌系统”,它受到了各种各样的因素影响。那么是否有办法将个体与整体相结合呢?聪明的先贤只做了一点微小的调整:

  if x1w1+x2w2+x3w3+x4w4 > a :

    return 1

  else:

    return 0

  这里a依然称为阈值,w1、w2、w3、w4是特征的另一种形式,这里称为权重。输入与权重相乘再累加的方式,即考虑到了“个体”在二分类判断中应有所区别,又考虑到了“整体”在判断中的决定性作用。但具体到每个个体在二分类判断中应当占有多少比重(权重的大小),最终阈值应当设置为多少合适,我们很难直接给出一个确定答案,于是感知机就该上场了。

三、感知机

  一个简单的感知机模型如下图:

 

  数学式为:

  x1w1+x2w2 <= a  则y=0(no)

  x1w1+x2w2 > a    则y=1(yes)

  x1、x2是输入,w1、w2是输入对应的权重,a是阈值,y是输出。

  为便于使用,我们可以将a挪到式子的左边并用b=-a来代替,则数学式变为:

  x1w1+x2w2+b <= 0    则y=0(no)

     x1w1+x2w2+b > 0   则y=1(yes)

  然后我们将前面提出的二分类问题“仅有4个像素的图片白不白”套用到数学式中:

  x1w1+x2w2+x3w3+x4w4+b <= 0  则y=0(no)

  x1w1+x2w2+x3w3+x4w4+b > 0    则y=1(yes)

  现在我们成功将一个二分类问题转变成了数学问题,回答二分类问题的答案就是找到一个恰当的w和b,寻找w、b的过程我们称为训练。这里需要注意的是,我们永远只能找到一个“凑合”的w和b值,即最终的感知机模型并不会完美契合所有训练数据。

  现在我们再看一下神经网络中的传播函数:

  是不是没那么难理解了?

  这里我们就不实现一个完整的感知机了,实际上代码与单神经元类似,整个过程也是向前传播、损失计算、反向优化,最终得到w、b值。

四、总结

  本文尝试从二分类问题的角度来理解传播函数,但其真实的数学含义还是没有搞清楚,留到以后再说吧。

  请关注公众号“零基础爱学习”一起AI学习。

作者: 布兰姥爷, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3887969.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

curton 2019-10-10 22:31

学习
相关推荐阅读
布兰姥爷 2023-04-21 23:07
跟姥爷深度学习4 从数学计算看神经网络
一、前言我们前面简单的做了一个气温预测,经过反复调试,效果还不错。实际上在这个方向上我们还可以更进一步优化,但因为我们是学习嘛,主要还是看广度而不是深度。考虑到后面要开始学习卷积网络,我们必须把更基础...
布兰姥爷 2023-04-21 23:04
跟姥爷深度学习3 神经网络的调试实操
一、前言前面我们做了一次天气预测的模型,训练的结果都还好,网络好歹是“拟合”了,但预测数据不合预期让我一直耿耿于怀。所以我又花了很长时间来研究为什么,我的理论依据明明没有问题(今日平均温度与近一周平均...
布兰姥爷 2023-04-21 23:02
跟姥爷深度学习2 TensorFlow的基本用法
一、前言前面我们浅用TensorFlow做了个天气预测,虽然效果不咋样,但算是将整个流程跑通了。这一篇我们在之前基础上对TensorFlow的一些参数进行简单介绍,在接口文件的基础上了解各参数的简单含...
布兰姥爷 2023-04-11 22:22
跟姥爷深度学习1,浅用tensorflow做个天气预测
一、前言最近人工智能、深度学习又火了,我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架,三年后感觉各种框架都成熟了,现成的教程也丰富了,所以我继续边学边写。原教程链接:https://ww...
布兰姥爷 2023-03-29 12:41
AI为啥要用显卡
一、前言GPT的发布让AI再次热了起来,与上次阿尔法狗不同的是,现在人人都可以跟聊上几句,给它出出难题,还能调戏下。同期英伟达发布了针对AI领域的全新GPU H100,有的童鞋会疑惑,这个英伟达不是做...
布兰姥爷 2019-11-04 21:09
【零基础】使用Tensorflow实现神经网络
一、序言  前面已经逐步从单神经元慢慢“爬”到了神经网络并把常见的优化都逐个解析了,再往前走就是一些实际应用问题,所以在开始实际应用之前还得把“框架”翻出来,因为后面要做的工作需要我们将精力集中在业务...
我要评论
1
23
关闭 站长推荐上一条 /2 下一条