Neural Network-Softmax function-Cross Entropy Cost function的公式推导过程
方程组中的第一个等式表示的是损失函数,该损失函数的交叉熵函数Cross-Entropy Cost function
方程组中的第二个等式表示的是每一个神经元的输出函数,其中在输出层使用SoftMax函数,其他层使用sigmoid函数
方程组中的第三个等式表示的是由上一层的神经元的输出和权重得到的加权和
那个现在的问题还是之前的老问题,对参数w和b求偏导,,
,然后通过梯度下降算法训练这两个参数。
在求偏导的过程中有一个很重要的一个点就是,每一个,全都包含了
所以才会有求导过程中第一步公式的转化。
下面给一些提示性代码:
def softmax(Z):
sum = 0.0
len_Z = len(Z)
for i in range(len_Z):
sum += np.exp(Z[i])
for i in range(len_Z):
Z[i] = np.exp(Z[i]) / sum
return Z
def feedforward(self, a):
zL = a
for w, b in zip(self.weights, self.biases):
zL = np.dot(w, a) + b
a = sigmoid(zL)
return softmax(zL)
下面这段代码是在BackPropagation中feedforward和最后一层,也就是输出层的更新代码:
#feedforward
zL = x
for w, b in zip(self.weights, self.biases):
zL = np.dot(w, activation) + b
activation = sigmoid(zL)
activations.append(activation)
#last layer
delta = softmax(zL) - y
nabla_w[-1] = np.dot(delta, activations[-1-1].transpose())
nabla_b[-1] = delta