不要一听到神经网络就感觉很高深的样子,其实不是。只是它的工作方式不是很直观。我们的思想往往是根据现有条件进行判断,比如大小的比较、收益的判断等等,根据这些判断再决定下一步怎么走,类似与下棋。而神经网络和这种方式感觉上还真是有那么点不一样,我们先来看看神经元是个什么东西。
这就是一个最简单的神经元了,有一个输入x,一个输出y,所以它所表达的含义跟一个普通的函数没有什么区别。假设这个神经元的函数表达为:
那么这就是一个普通的一次函数。也就是说,当输入为x=1时,输出端的y=2*1+1=3;当输入为x=100时,输出端的y=2*100+1=201。怎么样,是不是很简单。没错,你刚刚看到的就是最为简单的神经元工作的原理,和普通的函数真的看不出什么太大的区别。也许你要说,这和神经元有什么关系,我们再看下一个例子。
图中的x是4维的(当然也可以是100维或更多)。按照前面一维向量的处理方式,这个神经元可以写成如下的公式:
我们解释一下:
如果你觉得w或者x只能代表一个数值,那就错了!建议回到高中再看看课本。这里,w表示为一个1*4的矩阵,x表示为一个4*1的矩阵。
w和x矩阵相乘的方式其实是这样的:
这就是所谓的矩阵相乘。
这种方式也是神经元最核心部分,通过矩阵w对输入矩阵x做线性处理,而一直没有提及的那个b叫做偏置项,可以看作是一个数值。这种写法很简洁,但是也会感到糊涂,w和x还有b在一起做了啥呢?那么我们通过例子讲解一下。
假设x代表了一个样本的描述,这个样本可能表示的是客户的个人体型,分别表示:
x的4维属性分别代表“性别”、“身高”、“体重”、“腰围”。是一个4行*1列的矩阵。下一个用户可能又是别的值。
而w是一个1行*4列的矩阵,它表示的是权重的概念,例如:
[3 0.2 1.2 0.8]
它们分别表示:
[性别权重 身高权重 体重权重 腰围权重]
还有偏置项b,它是一个实数值,或者你把它视作一个1*1的矩阵也可以。b的值比如是-8.8。
那么,y=f(x)=wx+b就变成了:
y=f(x)=0*3+164*0.2+50*1.2+70*0.8+(-8.8)=140.0
这个函数值很有可能是某个服装电商企业用来推荐客户尺码所使用的评价函数,那么如果再有一个样本(客户信息),譬如:
y=f(x)=1*3+172*0.2+80*1.2+102*0.8+(-8.8)=206.2
在这样的一种尺码推荐评价体系下,第二位客户要比第一位客户的分数高很多。
服装电商企业可以利用这个函数对客户的体型进行评分,并进相应的产品推荐等进一步的工作了。这就是一个神经元工作时最直观的感觉,权重项w和输入项x求内积,加偏置项b产生一个线性结果输出。单个的神经元工作起来,基本就是这个样子。
好,我们明白了单个神经元的工作方式,接着下来的问题是,这个权重w是谁规定的?
参考文献
高扬, 卫峥. 白话深度学习与TensorFlow. 北京: 机械工业出版社, 2017.
领取专属 10元无门槛券
私享最新 技术干货