美文网首页@产品
机器学习之神经网络

机器学习之神经网络

作者: 没名字的蓝猫 | 来源:发表于2018-02-02 22:11 被阅读0次

    一、神经元的构成

    神经元可以说是深度学习中最基本的单位元素,所有深度学习的网络都是由神经元通过不同的方式组合起来。

    一个完整的神经元由两部分构成,分别是“线性模型”与“激励函数”。如果看过之前的文章,相信可以回忆起其中“线性回归”和“激励函数”的概念

    单个神经元

    1.线性模型

    (1)构成

    假设这个线性模型的函数:  y=wx+b(有木有很熟悉),其中x是一个1 x n的向量矩阵,矩阵中的每个向量值即代表样本一个特征的值,w为n x 1的权重矩阵(对应向量的所占的比重),b为偏置项。

    (2)工作流程

    以判定一个苹果的品质为例,我们假定y代表品质变量,x为1x3矩阵,w为3x1矩阵(偏置忽略为0的情况下),具体如下

    输入数据特征矩阵

    x矩阵里的向量值“1、2、3”分别代表一个数据中提取出来的特征向量的值。

    权重特征矩阵

    w矩阵里的“0.2、0.6、0.7”分别代表每个特征向量的权重取值大小。

    这两个矩阵相乘,最终会得到一个实数(如果涉及到数学矩阵运算,并非所有的结果都会是实数哦~)

                                                1X0.2+2X0.6+3X0.7=3.5

    得到的3.5即我们拟合出来的一个苹果的品质假定为y1,用这个值与已经标定好的真实品质y0做差,就可以得到一个数据的拟合值与真实值的误差,当然真实的计算这可是海量数据计算

    全局性误差函数Loss

    通过这个函数来描述所有数据拟合值与真实值之间的关系,最终是要找到一个符合要求的Loss与w,b之间的映射关系

    以上单个神经元中“线性模型”的运算流程

    2.激励函数

    (1)激励函数的作用

    激励函数位于一个神经元线性模型之后,它的作用有两个:

    ·加入“非线性”因素

    ·根据不同训练目的的需要,进行数学函数映射,起到对单个神经元的“激励作用”

    为什么要加入“非线性”因素,那是因为“现实世界”的数据不可能都是线性的,如果你强行用“线性模型”去拟合非线性数据,最后得到的结果肯定是“欠拟合”

    怎么理解数学函数映射呢,在这里拿最常用的Sigmoid函数举例

    Sigmoid函数定义:    

    Sigmoid函数

    激励函数之前的线性模型“y=wx+b”已经经过运算得到了一个实数(即前面的3.5)

    可以作如下的推导

    则激励函数sigmoid变为

    下图为Sigmoid函数图形,由图像可以看出,最初的x经过“线性模型”映射为z(z理论上可以为任意大小的实数),而z经过激励函数的再一次映射,最后的输出必然为了【0,1】区间的实数,这就实现了一次数学函数的映射。

    它可以实现一个简单的概率分类判断,假定“0”和“1”各代表一个概念,那么最后的输出在区间【0,1】,更接近“1”,就代表它是更可能是“1”所代表的概念

    (2)激励函数的种类

    激励函数的种类实在很多,应用的场景也各不相同,比较常见的除了上面提到的Sigmoid函数外,还有多用于RNN(循环神经网络)的Tanh函数,大部分用于CNN(卷积神经网络)的ReLU函数,以及Linear函数等。

    在这里就不一一列举他们的公式和函数图像了,总之每个激励函数都有自己的“个性”(特性),根据不同的算法模型和应用场景,会搭配使用不同的激励函数,当然最终的目的只有一个,就是让算法模型收敛的越快,拟合的越好

    二、人工神经网络

    1.神经网络的构成

    神经网络,其实就是多个神经元横向与纵向的堆叠,最为简单和基础的神经网络可以用下图来表示

    三层神经网络

    通常分为以下三层:

    输入层:负责直接接受输入的向量,通常情况下不对数据做处理,也不计入神经网络的层数。

    隐含层:是整个神经网络最为重要的部分,它可以是一层,也可是N层,隐含层的每个神经元都会对数据进行处理。

    输出层:用来输出整个网络处理的值,这个值可能是一个分类向量值,也可能是一个类似线性回归那样产生的连续的值。

    2.神经网络训练过程

    输入层负责接收的数据,然后把数据传入到网络的隐含层,隐含层的神经元会对数据进行特征提取和处理,隐含层传入到输出层会得到一个拟合值。通过计算拟合值与真实值的误差得到全局性误差函数Loss,如果Loss过大不符合我们的要求,那么误差就会沿着神经网络的反响进行传播。

    反响传播过程中,隐含层的每个神经元都会会修正自己的权值,迭代自己,以使得下次让误差更小。迭代常用的方法是梯度下降法,这个方法也会在后续的文章里详细介绍,梯度下降法可以说是在机器学习和深度学习中非常重要且常用的一种解决最优化的方法,虽然它并不完美,但也足以解决目前的很多问题。

    最后整个神经网络经过一步一步地训练迭代修正,当全局性误差Loss下降到符合要求的时候,就是神经网络训练大功告成!下一步就是要用测试集去验证这个神经网络模型的泛化能力咯

    关于神经元和神经网络的概念和知识就给大家介绍到这里啦,希望能对你有所帮助~

    相关文章

      网友评论

        本文标题:机器学习之神经网络

        本文链接:https://www.haomeiwen.com/subject/orkyzxtx.html