bp神经网络算法步流程_BP神经网络算法:将参数矩阵向量化

上一篇《机器学习:神经网络的代价函数及反向传播算法》记录了如何使用反向传播算法计算代价函数的导数,其中一个细节就是需要把参数的矩阵表达式展开成向量的形式,以便在后来使用高级的优化算法。Ng 老师在讲展开参数(Unrolling Parameters)这部分时,比较粗略。自己补了一下视频里提到的内容,在这里总结记录一下~

基于 Matlab 实现 unrolling parameters,有以下步骤:

function[jVal, gradient] = costFunction(theta)
optTheta = fminunc(@costFunction, initialTheta, options)

其中,fminunc() 是 Matlab 中内置的一个函数,其官方介绍如下:

Find minimum of unconstrained multivariable function
Nonlinear programming solver.
Finds the minimum of a problem specified by
,

where f(x) is a function that returns a scalar. x is a vector or a matrix.

fminunc() 可以用来解决无约束非线性优化问题,帮助我们找到多变量函数的最小值,其中一种形式为:

x = fminunc(fun,x0,options)

那么再回头看 optTheta = fminunc(@costFunction, initialTheta, options) 这个式子,其中第一个输入参数 fun 定义为 @costFunction (@ 是Matlab中的句柄函数的标志符,即间接的函数调用方法);第二个参数定义为 initialTheta,它是一个向量,是需要用户来自定义的,使用前需要初始化;第三个参数 options 是一个结构体,可以通过 optimset 来设置它,包括 GradObj 和 Maxlter 两个参数,GradObj 指明知否使用用户自定义的梯度下降公式,Maxlter 用来设置迭代次数。

设置 options 的小例子:

options = optimset('GradObj', 'on', 'MaxIter', 100);

介绍完了 fminunc() 方法,再看这两个式子:

function[jVal, gradient] = costFunction(theta)
optTheta = fminunc(@costFunction, initialTheta, options)

其中 gradient、theta、initialTheta 都需要为向量形式,而神经网络中的参数为矩阵形式:

(权重矩阵)

(梯度矩阵)

所以,为了方便使用高级的算法对神经网络参数进行优化,我们就需要将这些矩阵形式的参数向量化,就可以将其传入 initialTheta 和 theta,并且得到梯度的返回值 gradient 了~

Ng 老师在课程中使用 Octave 做了过程的演示,很简单就不在此赘述了。


注:Advanced optimization 的过程:

function[jVal, gradient] = costFunction(theta)

jVal = [code to compute

]

gradient(1) = [code to compute

];

gradient(2) = [code to compute

];

...

gradient(n+1) = [code to compute

]

欢迎大家关注微信公众号【数据池塘】:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值