深度学习中的前置知识神经网络

在学习深度学习的过程中,我对整个深度学习的过程的理解非常的混乱,所以我查阅了许多的资料,给自己划分了一个自己认为还好的思路(以上仅为个人理解,如有偏差,请多多指正.)

说起深度学习,就离不开神经网络.神经网络的知识与线性代数息息相关,我们来看下面那个图:

 上面这个图有输入层、隐藏层、输出层。

输入层,就是输入消息用的,假如一张图片为32x32x3的图片,我们要通过一系列的操作,将他变成1x3072,然后放入输入层。

在输入层与隐藏层中间,有个W1参数矩阵,输入层与W1矩阵相乘,就可以得到隐藏层的输入参数了。

隐藏层,与输入层其实原理一样,都是接收前面的参数,然后根据W(参数)矩阵来确定中间的输入值。但是我们仔细想,如果一直都是线性运算,这样子的网络没什么用,因为一系列线性方程的运算最终都可以用一个线性方程表示。如果一直用线性的方式,就是网络深度加到几千层,效果也不大。所以在隐藏层中,里面有着名称叫做激活层的层。

所谓的激活层,就是为矩阵运算的结果添加非线性的要素,激活函数一般有3个阶跃函数,Sigmoid和ReLU。下面是这三个函数的图像。

 令人吃惊的是,ReLU是用的最多的,这个函数的意思是当输入小于0时,输出0;输入大于0时,输出的输入。

需要注意的是,每个隐藏层计算(矩阵线性运算)之后,都需要加一层激活层,要不然该层线性计算是没有意义的。

到此,神经网络通过一系列的操作得到了结果值,如果这个神经网络是用来“使用”的,那求到这个结果值就已经结束了。但是如果这个神经网络用来“训练”那还不够。

输出层上的正则化:

在输出的结果中,如果得到类似(3,1,0.1,0.5)的结果,虽然我们可以找到里面的最大值3,但是不够直观,如果有一种方法,得到的结果为概率,如(90%,5%,2%,3%)这样的结果,那就好了。

所以,我们有个用来正则化的函数:

我们对这个公式进行拆分:

首先:Sigmoid函数

这个公式就是用来归一化的, 该函数的图像如下图:

 

这个就可以将得到的值压缩在0~1之间。

为什么又公式下面的累加呢?

因为在得到的结果集中,预测的各个结果差别并不大,所以我们需要使用exp函数将其结果放大,然后再放入Sigmoid函数中映射到0~1之间。

所以才有上面的计算公式。

在得到中Sigmoid函数的值后,虽然每个数都是在0~1之间,但是各个数加到一起不等于1,所以我们还用一个巧妙的方法求对数的负数。

可以想象一些log的图像,概率越接近100%,该计算结果值越接近于0,说明结果越准确,该输出叫做“交叉熵损失(Cross Entropy Error)”。

 到这里,一个神经网络就已经解释完毕了,一个完整的神经网络如下图。

这个也叫做神经网络的正向传播,是在深度学习中,都要做的事情。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值