深度学习——多层神经网络

目录

线性函数和多层神经元

1.神经网络

2.神经元与矩阵

3.神经元的串联

激活函数

1.激活函数和非线性因素

2.激活函数的位置

3.激活函数的作用


线性函数和多层神经元

        在上一篇文章(深度学习-CSDN博客)了解了线性函数和神经元后,我们来聊一聊多层神经网络。

       在上一篇文章中,我们知道了,神经元是这样的:,它表示的线性函数是:ŷ=wx+b ,由一个个这样的神经元就可以组成一个多层神经网络:

这样的神经网络依然可以由线性函数表示:例如y1=w11 * x1+b1+ w12 * x2 + b2 + w13 * x3+b3,

把b1,b2,b3合并后,y1= w11 * x1 + w12 * x2 +  w13 * x3 + b 。 y2,y3,y4......都可以由形如y1这样的线性函数表示。最后输出的也是线性函数。

1.神经网络

        在讲这样的大型神经网络前,我们先来谈谈人类大脑神经与神经元。因为神经网络最开始叫做人工神经网络或者人工神经元,它起初就是想模仿人的大脑,从而形成的网络,AI和人的大脑很像。

        当我们看到“蜻蜓低飞”这样的场景,大脑接收到信息,输出“要下雨了”这个想法;当我们要解某一道题,大脑经过计算,得到了这道题的答案。这些跟人工智能其实是很像的。

        当我们叫“SiRi”,人工智能一判断,就知道这是在叫它;当我们让人工智能画一个图,AI根据你输入的语言描述,就画出了你想要的图。

        通过对比,我们知道了,神经元就是模仿人的大脑存在的。我们来看一下更为具体的结构:

这是一条人的神经元,它的末梢能够感知到一些情况,比如:温度、湿度、压力、干燥情况等,这些情况通过神经元传输给大脑。

        对于AI,也是这样的。有一个例子是这样的:一个大学生在4个方面的特征决定了他的恋爱次数:外貌X1,性格X2,财富X3,内涵X4 , 给这4个方面进行赋分,想得到他在大学里的恋爱次数。这个时候神经元接收到外部的信息,从而进行一个判断,得到恋爱次数,这个公式写起来也很简单:

        我们都知道,人的神经元不是只有一条的,是有多条的,也就是说,多条神经元接收到相同的外部信息,再把信息传输给大脑,让大脑做出决断。我们的人工智能也是一样,也是有多条神经元传输信息。这样子,整个神经元就变宽了,由上述的一个神经元变成了三个;也变深了,从一层变成了两层。

2.神经元与矩阵

我们知道一个神经元:,它可以写成 ŷ=wx+b ,那上述的这个复杂网络又该怎么表示呐?

 r1,r2,r3可以这样表示:

        r1 = b1 +w11 * x1 +w12 * x2 + w13 * x3 + w14 * x4

        r2 = b2 +w21 * x1 +w22 * x2 + w23 * x3 + w24 * x4

        r3 = b3 +w31 * x1 +w32 * x2 + w33 * x3 + w34 * x4

你们是否对这个东西感到熟悉,其实它就是线代中,线性方程组的表示方法,可以写成下面这样的形式:

这样,我们就把复杂的神经网络图,写成了矩阵相乘的形式。这里,又不得不说到 神经元:,它是 ŷ=wx+b ,只不过,这里的w和b是一个数。但是,这与神经网络图的表示方式是一模一样的,只不过,换成了矩阵的形式。实际上,神经网络的背后就是矩阵的运算。

最后,我们得到的上述神经网络的表示就是:

(这里的b是一个数,上面的b是一个矩阵。通常用粗体表示矩阵,细的表示数)

3.神经元的串联

人的神经元不是一根直接连到大脑,它是一根接一根的连到大脑的。神经网络和人类的神经元一样,在经过一次处理后,它不是直达终点,而是再传输给下一条神经网络处理,依次传递,最后到达终点

如果全等的传输信息,即从外界获取到5个信息,经过神经元的传输后,大脑也接收到5个信息,那么串联的神经元似乎只有传递的作用,,那么一根和多根似乎没有区别了。对于神经网络也是一模一样的,我们加深层数,是为了多进行一点计算,让神经网络变得更好,但如果只是单纯的线性加深网络,这没有任何意义。例如,在 上一篇文章(深度学习-CSDN博客)最后的例子:我们无法用一条直线分隔出正方形和三角形。

为什么说单纯的加深没有意义,我们可以算一下,以2层的神经网络为例:

可以算出:

r1 = b1 + w11 * x1 + w12 * x2   

r2 = b2 + w21 * x1 + w22 * x2

z1= _b1 + _w11 * r1 + _w12 * r2

    =_b1 +_w11(b1 + w11 * x1 + w12 * x2) + _w12(b2 + w21 * x1 + w22 * x2)

    =b + u1 * x1 + u2 * x2

也就是刚才的两层神经网络变成了一层。

人类的神经元不是全等的传递信息的,它有自己的决定权。当接收到的刺激高于一定的阈值时,才会把信息传递给大脑。神经网络也有与人的刺激阈值相对应的东西,即激活函数。

激活函数

人的神经元有突触,突触在传递信息时会进行筛选,超过阈值的才传递,低于这个阈值的都抑制。

激活函数的作用也一样,在得到r1后,对r1进行一次激活函数的运算。

1.激活函数和非线性因素

(1)如果没有激活函数,无论网络多么复杂,最后的输出都是输入的线性组合,而纯粹的线性组合并不能解决更为复杂的问题。这一点我们在前面已经验证过。

(2)引入激活函数之后,由于激活函数都是非线性的,这样就给神经元引入了非线性元素,使得神经网络可以逼近任何非线性函数,这样使得神经网络应用到更多非线性模型中。

(3)常见的且简单的激活函数:sigmoid() 和 relu()

(4)激活函数最重要的特性:能求导

2.激活函数的位置

激活函数在每个神经元的输出上:

3.激活函数的作用

有这样的一个神经网络:

1)当没有激活函数,线性函数是线性时,预测函数和真实函数是这样的:

 从图中,我们可以清楚的看到预测函数和真实函数是贴着的,也就是说,当真实函数是线性函数时,即使模型没有激活函数,它也能够准确的预测。

2)当没有激活函数,真实函数y = x^3 + 2 * x^2 ,预测函数和真实函数是这样的:

从图中我们看到,预测函数完全不能预测真实函数。因为无论怎么画,它都是一条直线,它怎么样都无法贴近曲线。

3)在模型上加一个激活函数sigmoid(),此时,预测函数变成了曲线。

4) 在模型上加两个激活函数sigmoid(),此时,预测函数和真实函数贴的很紧。

当然啦,我们也可以加激活函数relu():

通过此,我们感受到了激活函数的强大作用。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值