问题:如何实现数字“5”的识别?O(∩_∩)O~
手写数字“5”的例子:写法因人而异,五花八门
方案: 从图像中提取特征量-----用及其学习技术学习这些特征量的模式
神经网络的学习中所用到的指标称为损失函数。
可以用作损失函数的函数很多,最有名的是均方误差(mean squared error)。
均方误差的表达式:
yk -----------神经网络输出
tk -----------监督数据,one-hot表示
这里的神经网络的输出y是softmax函数的输出。softmax函数的输出可以理解为概率。
用python实现均方误差:
def mean_squared_error(y-t):
return 0.5*np.sum((y-t)**2)
除了均方误差,交叉熵误差(cross entropy error)也经常被用作损失函数。
交叉熵误差的表达式:
比如,假设正确解标签的索引是“2”,与之对应的神经网络的输出是 0.6,则交叉熵误差是 -log 0.6 = 0.51;若“2”对应的输出是 0.1,则交叉熵误差为 -log 0.1 = 2.30。也就是说,交叉熵误差的值是由正确解标签所对应的输出结果决定的。
自然对数的图像如图所示:
1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 #生成数据 5 x=np.arange(0.01,1.01,0.01) 6 y=np.log(x) 7 8 #绘制图像 9 plt.plot(x,y) 10 plt.xlabel('x') 11 plt.ylabel('y') 12 plt.show()
代码实现交叉熵误差:
def cross_entropy_error(y,t): delta=1e-7 return -np.sum(t*np.log(y+delta))