神经网络
神经网络包含输入层、隐藏层和输出层三层(隐藏层可以有多层)
在每个节点,我们选择一个函数,用以指示每个节点对输入的响应程度。
在神经网络中,我们通常选择S型函数(如tanh, logistic function)来计算神经元的输出。
以Logistic function为例
1. 模型表示
2. 前向反馈(Feeding Forward)
Θ1,Θ2
分别是输入层与隐藏层、隐藏层与输出层之间的权重。
K为输出节点的个数。
正则化的损失函数(Regularized Cost Function)
without regularization
J(θ)=1m∑i=1m∑k=1K[−y(i)klog((hθ(x(i)))k)−(1−y(i)k)log(1−(hθ(x(i)))k)]
Regularized cost function
J(θ)=1m∑i=1m∑k=1K[−y(i)klog((hθ(x(i)))k)−(1−y(i)k)log(1−(hθ(x(i)))k)]+λ2m⎡⎣⎢⎢∑j=125∑k=1400(Θ(1)j,k)2+∑j=110∑k=125(Θ(2)j,k)2⎤⎦⎥⎥
本例中,输入节点个数为400,隐藏层节点个数维25,输出层节点个数为10。
梯度(Gradient)
∂J(θ)∂θ0=1m∑i=1m(hθ(x(i))−y(i))x(i)jfor j=0
∂J(θ)∂θj=1m(∑i=1m(hθ(x(i))−y(i))x(i)j+λθj)for j⩾1
前向反馈(Feed Forward)
Input Layer:a(1)Hidden Layer:z(2)a(2)Output Layer:z(3)a(3)=x(add a(1)0)=Θ(1)a(1)=g(z(2))(add a(2)0)=Θ(2)a(2)=g(z(3))=hθ(x)
3. 反向传播(Backpropagation)
执行步骤:
1.计算每一层输出结果与期望结果之间的差距
Output Layer:δ(3)jHidden Layer:δ(2)j=a(3)j−yj=(Θ(2))Tδ(3).∗g′(z(2))(remove δ(2)0)
2.计算每一层的累积梯度
Δ(l)=Δ(l)+δ(l+1)(a(l))T
其中l指层数
3.计算得到损失函数的梯度
∂∂Θ(l)i,jJ(Θ)=D(l)i,j=1mΔ(l)i,j
4.使用梯度下降法更新权值
Θ(l)i,j=Θ(l)i,j−∂∂Θ(l)i,jJ(Θ)