数据集
分为两部分
6000行的训练数据集 (mnist.train)
1000行的测试数据集(mnist.test)
在机器学习模型设计时必须要有一个单独的测试数据集不用来训练而是用来评估这个模型的性能,从而更加容易把设计的模型推广到其他数据集上 (泛化)
每个mnist数据单元有两部分组成 手写数字的图片(xs)和一个与之对应的标签(ys)训练数据集和测试数据集都包含xs ys
例 训练数据集的图片是mnist.train.images
训练数据集的标签是mnist.train.labels
每一张图片 包含28X28像素 用数组来表示这张照片我们把数组展开成一个向量 长度是28X28=784 每个照片用相同方式展开 mnist数据集的图片就是在784维向量空间里的点(拥有比较复杂的结构 此类数据的可视化是计算密集型的)
展开图片的数字数组会丢失图片的二维结构信息 优秀的计算机视觉方法会挖掘并利用这些结构信息 (后面学) 此次忽略这些结构 使用简单数学模型 softmax回归 不会利用这些结构信息。
在mnist训练数据集中,mnist.train.images是一个形状为 60000,784的张量, 第一维度数字用来索引图片 第二维度数字用来索引每张图片上的像素点,在此张量里的每个元素 都表示某张图片里的某个像素的强度值,0-1之间
相对应的mnist数据集的标签是介于0到9的数字 用来描述给定图片里表示的数字 使标签数据是one-hot vectors 一个One-hot向量除了某一位的数字是1以外其余各维度数字都是0 所以在此教程中数字n将表示成一个只有在第n维度数字为1的10维向量 比如 标签将表示成([1,0,0,0,0,0,0,0,0,0])因此 mnist.train.labels是一个[6000,10]的数字矩阵
Softmax 回归介绍(更多的关于Softmax函数的信息,可以参考Michael Nieslen的书里面的这个部分,其中有关于softmax的可交互式的可视化解释。)
Mnist的每一张图片都表示一个数字, 0-9 我们的训练模型可能推测一张包含9的图片代表数字9的概率是80 但是判断8的概率是5 (上半部分都是小圆) 然后给予它代表其他数字的概率更小的值。
这是一个使用softmax回归模型的经典案例。Softmax模型可以用来给不同的对象分配概率。 即使在训练更加精细的模型时,最后一步也需要用softmax来分配概率。
Softmax(二步)
第一步:对图片像素值进行加权求和(为了得到一张给定图片属于某个特定数字类的证据) 如果这个像素具有很强的证据说明这张图片不属于该类 那么相应的权值为负数相反 如果这个像素拥有有利的证据支持这张图片属于这个类,那么权值是正数。
下面图片显示了一个模型学习到的图片上每个像素对于特定数字类的权值。 红色表示负数权值 蓝色代表正数权值。
我们也需要 加入一个额外的偏执量(bias)因为输入往往会带来一些无关的干扰量,因此对于给定的输入图片X它代表的是数字id证据可以表示为
其中Wi 代表权重
bi:数字i类的偏执量
J: 给定图片X的像素索引用于像素求和
然后用softmax函数可以把这些证据转换成概率Y:
这里的softmax 可以看出是一个激励(activation)函数或者链接(link)函数, 把我们定义的线性函数的输出转换成我们需要的格式,也就是关于10个数字类的概率分布。因此 给定一张照片 它对于每一个数字的吻合度可以被softmax函数转换成为一个概率值
Softm