问题描述
Github地址
1 2 3 4 5 6 7 8 9 10 11
| 0.8 0.8 0 0.6 0.6 0 0.4 0.4 0 ......... 0.2 0.2 0 ......... 1.0 0.8 1 1.0 0.6 1 0.12 0.23 1 ......... 0.89 0.99 1
|
这是一个数据集, 它的第一项和第二项是输入x1,x2, 第三项是输出y, 构建一个前馈神经网路模型并采用反向传播算法训练它的参数.
前馈神经网路的数学描述
激活函数
f(x)=1+e−x1
f′(x)=(1+e−x)2e−x=(1+e−x1)(1−1+e−x1)=f(x)(1−f(x))
输入层
输入层输入有x1和x2
中间层
- 中间层输入q1,q2,q3
q1=x1ω11+x2ω12−β1q2=x1ω21+x2ω22−β2q3=x1ω31+x2ω32−β3
- 中间层输出h1,h2,h3
h1=f(q1)=f(x1ω11+x2ω12−β1)h2=f(q2)=f(x1ω21+x2ω22−β2)h3=f(q3)=f(x1ω31+x2ω32−β3)
输出层
u=h1v1+h2v2+h3v3−λ
y^=f(u)=f(h1v1+h2v2+h3v3−λ)
损失函数
y ---- 真实值
y^ ---- 预测值
Loss=21(y−y^)2
反向传播梯度下降法
中间层到输出层的参数更新
η ---- 学习率(步长)
Δλ=−η∂λ∂Loss=−η∂y^∂Loss∂u∂y^∂λ∂u=η(y−y^)y^(1−y^)(−1)
Δvi=−η∂vi∂Loss=−η∂y^∂Loss∂u∂y^∂vi∂u=η(y−y^)y^(1−y^)(hi)i=1,2,3
输入层到中间层的参数更新
Δβi=−η∂βi∂Loss=−η∂y^∂Loss∂u∂y^∂hi∂u∂qi∂hi∂βi∂qi=η(y−y^)y^(1−y^)vihi(1−hi)(−1)i=1,2,3
Δωij==−η∂ωij∂Loss=−η∂y^∂Loss∂u∂y^∂hi∂u∂qi∂hi∂ωij∂qi=η(y−y^)y^(1−y^)vihi(1−hi)(xj)i=1,2,3j=1,2