您的位置:首页 > 理论基础 > 计算机网络

神经网络的学习 机器学习基础(4)

2016-02-19 20:38 423 查看
神经网络包含前向传播与反向传播。

1 代价函数与反向传播

1.1 代价函数

二类别分类:0 或 1,记 k=2

多类别分类: Rk,记 k>2



神经网络的代价函数,与逻辑回归的代价函数类似,记做



注意点:

神经网络中的 hθ(x) 的定义形式未知,或可参考 hθ(x)=g(θx)(逻辑回归)。

1.2 反向传播算法(BP)

求解神经网络代价函数的梯度可采用梯度算法或反向传播算法。

计算神经网络代价函数的最小值,即

min J(θ)

要求计算代价函数的值及其梯度值,即

⎧⎩⎨⎪⎪⎪⎪J(θ)∂∂θ(l)ijJ(θ)

其中,定义梯度值

D(l)ij=∂∂θ(l)ijJ(θ)



1.3 反向传播直观的表达



2 反向传递实践

2.1 实现:参数展开

参数展开便于变量的存储与运算,实质是使“矩阵与向量”转换方便。

2.1.1 高级优化算法

代价函数与优化方法的形式:

Function [jval, gradient] = costFunction(theta)
…
optTheta = fminunc(@costFunction, initialThetam options)


其中 gradient∈Rn+1, theta∈Rn+1。

神经网络模型(L=4),

θ(1),θ(2),θ(3)−matrices(Theta1,Theta2,Theta3)

D(1),D(2),D(3)−matrices(D1,D2,D3)

2.1.2 例子

S1=10,S2=10,S3=1

θ(1)∈R10×11,θ(2)∈R10×11,θ(3)∈R1×11



2.2 梯度检验

神经网络BP的梯度计算相对复杂,可通过梯度检查的方法来避免梯度计算上出现的小错误,用于确认反向梯度计算是否正确。该方法仅用于测试,系统正式使用时应关闭。

2.2.1 梯度的数值计算



ddθJ(θ)≈J(θ+ε)−J(θ−ε)2ε,ε=10−4.

2.2.2 向量 θ

当 θ∈Rn,即 θ=[θ1,⋯,θn]

∂∂θiJ(θ)≈J(θ1,⋯,θi+ε,⋯,θn)−J(θ1,⋯,θi−ε,⋯,θn)2ε

这种数值偏微分的近似计算方法,计算量很大,不适用于神经网络中的梯度计算。它的代码表达方式为

thetaPlus(i) = theta(i) + EPSILON;
thetaPlus(i) = theta(i) - EPSILON;
gradApprox(i) = (J(thetaPlus) – J(thetaPlus)) / (2*EPSILON);


检查 gradApprox≈DVec,即对比数值梯度与偏导梯度,当偏导梯度近似数值梯度时,则可认为梯度的反向传递计算正确。

该方法可以作梯度验证(Gradient checking)。

2.3 随机初始化

θ 参数都初始化为 0 或者同一数,可能不利于参数学习(即求解 θ),这样的问题可以通过破坏对称性(Symmetry Breaking)来改善。

随机初始化是破坏对称性的一种方法,即初始化 θ(l)ij 为 [−ε,ε] 的任意值,其代码表达方式为

Theta1 = rand(10,11) * (2*INIT_EPSILON) – INIT_EPSILON;
Theta2 = rand(1,11) * (2*INIT_EPSILON) – INIT_EPSILON;


2.4 总体回顾

2.4.1 训练一个神经网络



输入单元:x(i),特征向量

隐藏单元:层数与单元个数

输出单元:y,类别

例如 y∈{1,2,3,⋯,n}

y=⎡⎣⎢⎢⎢⎢⎢⎢⎢100⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥n×1or⎡⎣⎢⎢⎢⎢⎢⎢⎢010⋮0⎤⎦⎥⎥⎥⎥⎥⎥⎥n×1or…

算法的训练步骤:

随机初始化 θ

前向传播求解 hθ(x(i))

计算代价函数 J(θ)

反向传播计算梯度 ∂∂θ(l)jkJ(θ)

梯度检查 ∂∂θ(l)jkJ(θ),采用数值计算的方法来检验(检验后,舍弃该步骤);

采用梯度下降法或高级的优化算法(基于反向神经网络求解梯度)

计算 minθJ(θ)

备注:J(θ) 会是一个非凸函数,但局部极小值对训练结果的影响并不是很大。

3 神经网络的应用

应用:基于图像处理的自动驾驶车辆。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息