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 minf(x) ,
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 都需要为向量形式,而神经网络中的参数为矩阵形式:

\Theta^{(1)},\Theta^{(2)},\Theta^{(3)},... (权重矩阵)

D^{(1)},D^{(2)},D^{(3)},... (梯度矩阵)

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

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


⬇️ 扫描下方二维码关注公众号【数据池塘】 ⬇️

回复【算法】,获取最全面的机器学习算法网络图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风控大鱼

如果帮到了您,请我喝杯咖啡吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值