《机器学习》神经网络算法分析

神经网络的前向传播
不得不承认,假设函数的格式很大程度上决定了我们所获得图像的样式,对于线性回归是与样本数据尽可能重合的那条直线,而在逻辑回归中就是所谓的决策边界。
我们观察逻辑回归中的sigmoid函数在这里插入图片描述
不难发现对于theta*X这一项的存在,若是只输入单一的一次特征值,你只能得到一条为直线的决策边界。
在这里插入图片描述 然而我们在特征数较少时,可以人为构造二次项,三次项…再通过正则化得到一个比较符合分类的曲线。
在这里插入图片描述 然而当特征值众多时,二次项三次项的数量成几何级上升,训练成本昂贵。
但神经网络的出现,恰恰解决了这个问题,使得得到非线性边界变得十分方便。

在这里插入图片描述由输入特征x_1经过第一层权重的处理后得到a_1,a_1现在仅仅是简单的特征值的线性组合。然而经过g函数(sigmoid)的处理再进行第二层权重的线性处理后,原本的x_1_之间的关系就变成非线性的了。这就有利于我们处理非线性问题。
在这里插入图片描述

由于神经网络用于处理分类问题,最后的输出结果,一般是一个0~1的值(单一分类)或者是一个向量(多种分类)。如下是一个样本特征下的h_θ_x的处理结果。
在这里插入图片描述
在matlab中通过代码 [value,index]=max(A) 可以读出每列元素的最大值和对应索引(索引值代表样本类型)。

代价函数
对于多元分类,因为最后的输出结果是一个向量而非逻辑单元中的一个结果。
在这里插入图片描述
所以对于一个K元分类,代价函数在训练集的一个样本中要累计K个单元的全部误差。所以代价函数如下:
在这里插入图片描述
i=1开始是因为正则化不涉及偏置单元系数。

反向传播
在实现梯度下降算法中,需要对代价函数进行求导操作
在这里插入图片描述
我们通过反向传播算法实现对于每个θ系数的求导。
步骤如下:
在这里插入图片描述

如上图所示,对于一个4层神经网络,经过一次正向传播后,我们将最后得到的结果与实际值做差,作为反向传播的新的输入量。(反向传播就是正向传播的镜像过程。)

在这里插入图片描述

δ(4)作为新的输入变量进过一次原权重不变的向量相乘过程
在这里插入图片描述
还要再进行一次运算才能得到新的δ(3)
在这里插入图片描述
因为
在这里插入图片描述
为了便于计算
在这里插入图片描述
传播终止于δ(2),因为δ可以理解为是一个与实际结果的偏差值,而作为第一层输入的是特征值,并没有偏差。
导数与δ关系如下
在这里插入图片描述
以下是实现梯度计算的代码思路
在这里插入图片描述

最后两项中j=0 不添加正则项。

θ初始化问题
在这里插入图片描述如图所示,因为每条线上的权重都一样,所以不管正向反向得到的每列θ和δ都是一样的。
又因为
在这里插入图片描述
所以每列的θ值最终都相同。

代码实现

在这里插入图片描述在这里插入图片描述在这里插入图片描述

代码实现-反向传播
第三层输出单元为k,则y的结果亦对应一个k元向量 ,y是一个K x M的矩阵,y=
在这里插入图片描述
我们求出δ(3)向量,亦是一个K x M的矩阵。
在这里插入图片描述
在这里插入图片描述

因为θ(2)的大小为 (P+1)x K,因此θδ大小为(P+1)x M,且a(2)大小也为(p+1)x m
delta应减去首行
在这里插入图片描述
delta大小为p x m
我们利用for循环 每次取出一个样本值。设取出的第一个样本值为
在这里插入图片描述

在这里插入图片描述
利用for循环对这个θ(2)矩阵不断累加。可得所求D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值