天天看点

机器学习之神经网络(1)机器学习之神经网络(1)

机器学习之神经网络(1)

机器学习之神经网络(1)机器学习之神经网络(1)

第一次听到神经网络这个词的时候第一感觉:好高大上。其实神经网络技术的灵感来自人体内的神经结构。

人体内,神经网络由神经元组成,人体内的神经元是由细胞体和突起组成,突起分为树突和轴突,信号由树突传入,信号在细胞核汇总,然后往轴突方向传(图1),一个神经元有多个树突,只有一个轴突,轴突又和其他神经元的树突相连,最终大量的神经元相连组成人体神经网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFS8HnsU-1611220678994)(D:\博客\神经元.jpg)]

机器学习之神经网络(1)机器学习之神经网络(1)

​ 图1

从人体神经元获得的灵感,我们可以自己人工创建一个“神经元”——感知器。感知机是二分类模型,输入为特征向量,输出为实例的类别。

单层感知器

首先,类似人体神经元的研究方法,我们先从最基本最简单的结构开始研究——单层感知器。

机器学习之神经网络(1)机器学习之神经网络(1)

其结构与我们刚刚看到的神经元结构类似。其中X1,X2,X3是三个输入信号,相当于“树突”接收的信号。输出y相当于神经元轴突输出的信号。W1,W2,W3是输入信号的权重,可以这样理解权值的存在:每个信号在传入的时候都会受到阻碍有损失,不同信号受到的阻力不同,将这个阻碍量化为数值即为这里的权重、b是偏置因子(偏置因子相当于“细胞核”内本就存在的“电信号”)。激活函数采用的是符号函数sign(x),当自变量是非负数,函数值为1;当自变量为负数,函数值为-1.

举个例子:假设我们取所有的权值均为0.5,偏置因子为-0.6,则不同的输入X对应的输出为:

X1 X2 X3 y
-1
1 -1
1 -1
1 1 1
1 -1
1 1 1
1 1 1
1 1 1 1

现在,为了方便后续计算,我们将偏置因子假设为另一输入信号的形式:

机器学习之神经网络(1)机器学习之神经网络(1)

感知器的学习规则

感知器我们已经定义好了,那么在它的学习规则是怎么样的呢?

机器学习之神经网络(1)机器学习之神经网络(1)

我们再回到人体神经元的部分。人类的思考方式往往是倒过来推,也就是由结果去推一般情况。比如当我们知道两斤苹果要20块钱,那么自然就推出一斤苹果十块钱。而计算机的“思考”并不是这样的。它会先确定一个数,比如一斤苹果是6块,然后算两斤苹果发现是12块,猜少了;再猜一斤苹果是12块,发现两斤苹果是24块,又多了;再少猜一点,一斤苹果8块,又少了,再多猜一点…直到算到两斤苹果正好是20块钱,就猜对了。

机器学习之神经网络(1)机器学习之神经网络(1)

感知机的学习规则就是这样的一个过程。也就是说感知机的目标是找到 一个将样本正确划分的超平面,那用什么来作为衡量超平面正确性的标准呢?这里采用的是损失函数。学习策略就是定义损失函数,并将损失函数最小化,损失函数从宏观意义来讲可以具体化为误分类点到超平面的距离之和。根据空间中的点到超平面的 距离公式,我们最终确定的感知机学习的经验风险函数(损失函数)为L(ω,b)=﹣

机器学习之神经网络(1)机器学习之神经网络(1)

所谓学习规则就是感知机修改权值以及偏置值来极小化目标函数值的方法以及过程。学习的目的是为了训练感知机模型,来符合特定场景的工作要求。

那么如何调整权值呢?(我们上面已经将偏置因子看成了新的权值),这里采用的是随机梯度下降法,来实现极小化目标函数。

我们已知损失函数是L(ω,b) =

机器学习之神经网络(1)机器学习之神经网络(1)

,损失函数对ω进行求导,得到:

机器学习之神经网络(1)机器学习之神经网络(1)

。同理我们对b进行求导,可以得到梯度:

机器学习之神经网络(1)机器学习之神经网络(1)

我们先初定一组权值,然后通过计算理论输出与实际输出的误差来进行调参。每次调整的量根据公式Δω = ηyixi 来确定,其中Δωi表示第i次权值的变化量,η是学习率,然后ωi = ωi+Δωi

下面我们来举个例子

机器学习之神经网络(1)机器学习之神经网络(1)
机器学习之神经网络(1)机器学习之神经网络(1)

在一家工厂生产的一批零件中随机选取了三个样本进行检验,如下:

零件编号 宽度(wid)z 1 长度(len)z 2 检验类别
1 7 5 正品
2 6 4 正品
3 2 1 次品

令x1 = (7,5),y1 = 1;x2 = (6,4),y2=1;x3 = (2,1),y3=-1

Step1

设置初始值ω0 = (0,0),b0 = 0,η = 1

Step2

对于样本一号x1 = (7,5),y1(ωx1+b) = 0未能被正确分类,则更正模型:

​ ω1=ω0+y1x1=(7,5) , b1 = b0 + y1 = 1

Step3

此时根据模型可得x1 = (4,3),x2 = (5,4)可以被正确分类,x3 = (2,1)未被正确分类,所以继续更正模型:

ω2=ω1+y3x3 = (5,4),b2 = b1 + y3 = 0;

此时根据模型可得x3 = (2,1)未被正确分类,所以继续更正模型

ω3=ω2+y3x3 = (3,3),b3 = b2 + y3 = -1;

此时根据y3(ωx3+b) = 0得x3 = (2,3)未被正确分类。所以继续更正模型

ω4=ω3+y3x3 = (1,2),b4 = b3 + y3 = -2;

此时x3 = (2,3)未被正确分类,继续更正模型

ω5=ω4+y3x3 = (-1,1),b5 = b4 + y3 = -3;

此时x1 = (7,5)未被正确分类,继续更正模型

ω6=ω5+y1x1 = (8,7),b6 = b5 + y1 = -2;

此时x3 = (2,3)未被正确分类,继续更正模型

ω7=ω6+y3x3= (6,6),b7 = b6 + y3 = -3;

此时x3 = (2,3)未被正确分类,继续更正模型

ω8=ω7+y3x3= (4,5),b6 = b5 + y1 = -4;

此时x3 = (2,3)未被正确分类,继续更正模型

ω9=ω8+y3x3= (2,4),b6 = b5 + y1 = -5;

此时x3 = (2,3)未被正确分类,继续更正模型

ω9=ω8+y3x3= (0,2),b6 = b5 + y1 = -6;

此时x3 = (2,3)被正确分类,模型符合要求!

Step4

所以最终确定的感知机为函数y = f(x) = sign(ωx+b),其中ω = (0,2),b = -6;

机器学习之神经网络(1)机器学习之神经网络(1)

感知机不断试错修改的过程就是其学习的过程,感知机是1958年由FrankRosenblatt提出的,是第一个具有学习能力的神经网络。(可以细细体会一下~)

由此,神经网络的理论开始大放异彩,再加上如今硬件设备的发达以及网络结构的不断简化,神经网络得到了很好的发展。

多层前馈神经网络

单层感知器也就是“神经元”是所有神经网络的核心,由上面的介绍可以知道,其主要由一个加法器和一个激活函数组成。

但是单层感知机有一个缺点,只能对线性样本进行分类。由此类推到多层感知层(MLP)。MLP有一个或者多个隐藏层。如下图所示,每一层的神经元都与下一层的神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,称为多层前馈神经网络。

机器学习之神经网络(1)机器学习之神经网络(1)

每个隐藏层的神经元都具有相同的激活函数。

那么MLP的学习是什么样的过程呢?

当网络增加到多层的时候,单层感知机的那一套算法不再适用,所以需要更强大的算法:误差逆传播算法(简称BP算法)

给定训练集D={(x1,y1),(x2,y2),…,(xm,ym)},x∈Rd,y∈Rl,这里的d代表输入有d维的特征向量,l表示输出层有l维向量,激活函数选用的是Sigmoid函数

机器学习之神经网络(1)机器学习之神经网络(1)

下图是最简单的双层神经网络:

机器学习之神经网络(1)机器学习之神经网络(1)

上图清晰明了,具体的学习策略就不细说了。

需要注意的是,隐层和输出层每个神经元都有阈值,隐层的阈值是βh,输出层的阈值是θj.

BP算法的优化过程

BP算法的优化过程就是先初始化网络中的所有连接权与阈值,然后采用梯度下降法,迭代更新每个参数,直到所有的样本都判别正确。

深度学习算法三大类

神经网络根据中间层功能的不同分为不同的神经网络。

首先是全连接神经网络(FNN),也就是我们上面分析的那一种,多个全连接层可以从不同角度提取特征,缺点也很明显,权重太多,计算量太大。

卷积神经网络(CNN)

CNN? 美国有线电视新闻网?

机器学习之神经网络(1)机器学习之神经网络(1)

Emmm此CNN非彼CNN。这里的CNN是Convolutional neural network,中文叫卷积神经网络。

卷积神经网络是一种前馈神经网络,通常包含:输入层,卷积层,激励层,池化层,全连接层,输出层。

  • 输入层:用于输入原始样本数据
  • 卷积层:

    要理解卷积层的逻辑,首先我们要先理解什么是卷积。卷积本身是一个十分抽象的概念

    它的数学定义是:

    机器学习之神经网络(1)机器学习之神经网络(1)

    卷积可以理解为某一结果是多种因素影响叠加得到的。

    比如说

    掷两枚骰子

    要求两个加起来数字是5,求概率是多少。最终结果取决于两个骰子的数字分别是多少,受两种因素影响。最后的表达式就是卷积的形式。

    卷积常用在图像处理上,在图像上,f(τ)可以理解为原始像素点,也就是输入的数据矩阵,g(x)是对图像的作用点,所有的作用点合起来就是我们所说的卷积核,也就是权重系数矩阵。

    机器学习之神经网络(1)机器学习之神经网络(1)

    (是啊,这是啥呀)

    所谓卷积核,就是在图像处理时,给定输入图像,其中一个小区域中像素加权平均以后输出为图像中的某一个像素。决定各像素权值的函数就是卷积核。那么卷积核作用在各像素上是一个计算方式呢?

    机器学习之神经网络(1)机器学习之神经网络(1)

    卷积核与原始矩阵乘积实际就是在卷积核绕中心元素旋转180°以后进行对应元素的相乘相加。

    这是卷积的基本概念,在卷积神经网络中的卷积,是为了提取图像特征。在图像处理的时候输入的图像数据是由RGB三通道构成的三个矩阵。首选从输入的图像中取一个和卷积核大小一样的区块,进行卷积运算得到一个像素,然后输入图像中的区块移动一个像素,继续进行卷积操作…

    通常卷积神经网络中会同时学习多层级的多个核,这样可以快速获取较全面的有用的特征。

    篇幅有限,就先介绍这么多~

    有兴趣的可以看我主页加我微信一起交流一起学习。

继续阅读