识别数字在机器学习任务中的地位和 Hello World 在编程中是一样的。
主要步骤:
- 获得数据:from Yann LeCun’s website
- 建立模型:softmax
- 定义 tensor,variable:X,W,b
- 定义损失函数,优化器:cross-entropy,gradient descent
- 训练模型:loop,batch
- 评价:准确率
1. 获得数据
- 来自 Yann LeCun’s website:http://yann.lecun.com/exdb/mnist/
- 分为 train,test,validate,每个 X 代表一个图片,y 是它的 label
- 其中图片由
28*28
像素组成,转化成 array 的形式,变成1*784
维 - y 变为 one-hot 的形式,即属于哪个数字,就在哪个位置上为 1, 其余为 0
目标:给了 X 后,预测它的 label 是属于 0~9 类中的哪一类
如果想要看数据属于多类中的哪一类,首先可以想到用 softmax 来做。
2. 建立模型
softmax regression 有两步:
- 把 input 转化为某类的 evidence
- 把 evidence 转化为 probabilities
1. 把 input 转化为某类的 evidence
- 某一类的 evidence 就是像素强度的加权求和,再加上此类的 bias。
- 如果某个 pixel 可以作为一个 evidence 证明图片不属于此类,则 weight 为负,否则的话 weight 为正。
下图中,红色代表负值,蓝色代表正值:
2. 把 evidence 转化为 probabilities
简单看,softmax 就是把 input 先做指数,再做一下归一:
- 归一的作用:好理解,就是转化成概率的性质
- 为什么要取指数:在 《常用激活函数比较》写过