Fourth and fifth week of machine learning on Coursera

Fourth and fifth week of machine learning on Coursera

@(Coursera)


第四周和第五周主要都是在讲解神经网络的知识点,理解有限,自己的内容主要是些零碎的知识点,系统性的讲解可参考我贴出的博客。
神经网络(Representation)
神经网络(learning)
反向传播算法解析


知识点:

α(j)i 表示第 j 层第i个神经元的激励函数,一般为 sigmoid(input)
Θ(j) 表示第 j 层第j+1层的权重系数矩阵;

jsjj+1sj+1Θ(j)sj+1×(sj+1)

相当于第j层多出了一个输入单元 x0 ,导致计算下一层各unit值时候,多乘以 x0 作用的情况,矩阵看起来多出了一列。如下图所示:
这里写图片描述


反向传播算法&损失函数
  • L: 神经网络中的总层数;
  • sl: l 层单元的数量;
  • K:输出单元的数量;

损失函数沿用逻辑回归的形式:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j

神经网络的损失函数为:
J(Θ)=1mi=1mk=1K[y(i)klog((hΘ(x(i)))k)+(1y(i)k)long(1(hΘ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(Θ(l)j,i)2

这里写图片描述
对于反向传播算法的梯度计算:
定义 δ(l)jlj
例如: 4δ(4)j=α(4)jyj
上图可知,第4层含有4个输出单元,所以第4层输出单元的误差可以写为向量形式:
δ(4)=α(4)y

误差反向传播:
δ(3)=(Θ(3))Tδ(4).g(z(3))

δ(2)=(Θ(2))Tδ(3).g(z(2))

注:上面误差逆传播推导我没有推导出来,视频中也是直接给出的。
sigmoid()导数有个性质是:
f(x)=f(x)(1f(x))f(x)

所以上述的
g′′(z(3))=α(3).(1α(3))

g′′(z(2))=α(2).(1α(2))


这里写图片描述
上图误差反向传播的时候, δ(2)2δ(3)1δ(3)2


矩阵和向量转换:

ABCsize(A)=1011,size(B)=1011,size(C)=111,thetaVec=[A(:);B(:);C(:)];size(thetaVec)=2311;
如果想从 thetaVecABC 可以使用
reshape(thetaVec(1:110),10,11);A


梯度检查

反向传播算法计算梯度值非常快,但是有的时候容易出错误,所以需要进行梯度检查。

ΘjJ(Θ)J(Θ1,...,+Θj+ϵ,...,Θn)J(Θ1,...,Θjϵ,...,Θn)2ϵ

Matlab程序:

epsilon = 1e-4;
for i = 1:n,
  thetaPlus = theta;
  thetaPlus(i) += epsilon;
  thetaMinus = theta;
  thetaMinus(i) -= epsilon;
  gradApprox(i) = (J(thetaPlus) - J(thetaMinus))/(2*epsilon)
end;

将求出的梯度值 gradApprox 和反向传播求出的 deltaVector 相比较,如果近似相等,证明反向传播算法计算是对的,由于上述校验计算梯度非常,验证正确后即可从程序段中去除验证部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值