神经网络算法
Posted 止一之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神经网络算法相关的知识,希望对你有一定的参考价值。
1
算法的计算过程
神经网络算法的计算过程具体是怎么样的呢?
假如我们有这么一个神经网络:
首先我们了解一下这些标记:
这里使用的公式依然是逻辑函数:
那么对于每一个输入的计算方式如下:
其中 x0 = 1 和 a0 = 1 。
从上面的计算可以看到,后面每一层的输出结果是以前面一层的输出结果为特征,并和参数以及计算得到。
a(2) 的特征是 X ,参数是 θ(1) ;a(3) 的特征是 a(2) , 参数是 θ(2) 。
如果后面还有层级,那就以此类推。
在这里,如果第 j 层有 sj 个单元,第 j+1 层有 sj+1 个单元,那么 θ(j) 就是一个 sj+1 × ( sj + 1 ) 的矩阵。
这里,输入的特征是包括了的 x0 、 a0 这些偏差节点的,而输出是不包括这些节点的。
就以上面的图片为例:
θ(1) 是一个 3 × 4 的矩阵,θ(2) 是一个 1 × 4 的矩阵。
如果把逻辑函数中的 z 也提取出来,作为一个参数的话,对于第二层来说,例如前面图中的隐藏层,那就是:
其中:
如果设置 x = a(1) ,向量化的表达就是:
z( j ) = θ( j - 1 )a( j - 1 )
其中:
2
一个具体的例子
看了上面这么多,可能不好理解,我们看一些例子好了。
例如我们有这样一个图形,想要将图中的蓝圈和红叉区分开来:
具体是怎么做的呢?
首先我们看看问题的简化版本:
我们设定 x1 和 x2 只能从 0 和 1 中取值。那么:
蓝圈代表着 x1 = 1 & x2 = 0 ,或者 x1 = 0 & x2 = 1 ,就是 y = x1 XOR x2 ;
红叉代表着 x1 = 1 & x2 = 1 ,或者 x1 = 0 & x2 = 0 ,就是 y = x1 XNOR x2 。
我们先看看一些单个的神经元,对于以下所有的神经元,都有对于 x ∈ { 0,1 } , 也就是 x 只能从 0 或者 1 中取值。
我们先看一下 y = x1 AND x2 :
对于这样的参数,有: hθ = g( -30 + 20x1 + 20x2 ) 。
还记得逻辑函数 g( z ) 的图形么:
z 越大 g( z ) 越趋近于 1 , z 越小 g( z ) 越趋近于 0 。
所以, g( 10 ) ≈ 1 ,g( -10 ) ≈ 0 。我们可以得到下表:
类似的,对于 y = x1 OR x2 ,有以下图片:
对于这样的参数,有: hθ = g( -10 + 20x1 + 20x2 ) 。可以得到下表:
对于 y = NOT x1 ,有以下图片:
对于这样的参数,有: hθ = g( 10 - 20x1 ) 。可以得到下表:
对于 y = x1 NOR x2 (也就是 NOT( y = x1 OR x2 ) ),有以下图片:
对于这样的参数,有: hθ = g( 10 - 20x1 - 20x2 ) 。可以得到下表:
为了实现前面将蓝圈和红叉区分开来,我们对于 y = x1 XNOR x2,可以这样构造神经网络进行实现:
然后得到下表:
3
多类别分类处理
多类别处理和单类别处理起来非常类似,就是输出结果稍微有点改变,从常量变成了向量。
例如有这样的图片需要识别:
输入的数据一样,而输出的结果 hθ(x) 是一个四维的向量:
也就是说, hθ(x) 分别为:
iOS 用户快速赞赏通道
长按二维码赞赏
止一之路
和您一起走上财务自由的正道
以上是关于神经网络算法的主要内容,如果未能解决你的问题,请参考以下文章