吴恩达EX4
ex4
该题目主要难点在于实现后向传播算法。该算法步骤如下:
1、针对每个样本(X(i),Y(i))
令a_1 = X(i), 分别计算出Z_2 、a_2、Z_3、a_3;
Z_i = Theta(i-1)*a(i-1);
a_i = 补充1 + sigmoid(Z_i); 注意补充1!
2、计算 J
注意 将y(i)转换成y(i) =[0;0;0;....0] 的10*1的列向量,Y为转换后的矩阵m*n(m :样本数,n:类型数),此处求和不是之前的矩阵相乘,此外正则化项应当忽略第一列!而是点乘矩阵形式如下:
J = -1/m[sum(sum(Y.*log(h)+(1-Y) .* log(h) ))] + lambda/2/m*(sum(sum(Theta1(:,2:end).^2))+sum(sum(Theta2(:,2:end).^2)))
该等式写了蛮久没弄出来,惭愧。。。。
3 、计算 δ Δ
L 层,则有2......L个δ。
δ(L) = h(x(i)) - y(i) 得到该问题的一列向量;
δ(L-1) = θ(:,2:end)T * δ(L) . * sigmoid(Z_L-1)' (')代表导数。此处θ(:,2:end)T 因为要除去δ0(L-1) 用不上δ0(L-1)
Δ (l)= Δ (l)+ δ(l+1) *a_lT
以上步骤带入m次循环中;
最后梯度 注意 老师ppt中lambda少除以m了
D(:,1) = Δ(:,1)/m;
D(:,2:end) = Δ(:,2:end)/m; +lambda/m*θ(:,2:end);