从0到1:神经网络实现图像识别(中)

本文介绍了如何从二类分类的感知机模型扩展到多类分类的全连接神经网络,应用于MNIST手写数字识别。通过Softmax转换输出并使用交叉熵作为损失函数,通过反向传播进行参数更新。文章还探讨了正则化处理以缓解过拟合风险,并添加隐藏层以处理非线性问题,实现在验证集上达到98%以上的识别准确率。
摘要由CSDN通过智能技术生成

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

”. . .  we may have knowledge of the past and cannot control it; we may control the future but have no knowledge of it.” — Claude Shannon 1959

往者可知然不可谏,来者可追或未可知

 

上篇介绍了神经网络的理论基石 - 感知机(perceptron)模型;感知机模型是一个简洁的二类分类模型,在中篇里,我们把它推广到多类分类问题,不借助计算框架,构建一个全连接神经网络,再应用于MNIST数据集手写数字识别场景。

 

MNIST数据集

能正确的提出问题,你已经解决了问题的一半。

这里“正确的问题”是MNIST,一个手写数字图片集数据的识别问题。

你可以在 Yann LeCun的官网下载这套数据集,共四个文件包:

train-images-idx3-ubyte.gz:  训练图片集 (9912422 bytes)  

train-labels-idx1-ubyte.gz: 训练图片集的正确标签 (28881 bytes) 

t10k-images-idx3-ubyte.gz:   测试图片 (1648877 

bytes) t10k-labels-idx1-ubyte.gz:   测试图片的正确标签  (4542 bytes)

每张图片包含一个手写数字。

数据集包含6万张图片用于训练,1万张用于测试验证。

 

图像数据格式和图向量

每张图片表达了[0,9]这是10个数字中的一个,有28X28=784个像素,每个像素根据灰度取整数值[0,255];把每张图片看作具有784个特征的图向量,问题就变成:根据D个特征维度,对图像做K分类的问题,这里D=784,K=10。

 

从二分类到多分类问题

一种思路是把 K 类分类问题,视为 K 个二类分类问题:第一次,把样本数据集的某一个类别,和余下的K-1类(合并成一个大类)做二类分类划分,识别出某一类;第 i 次,划分第i类和余下的K-i类;经过 K 次 二类分类迭代,最终完成 K 类分类。

 

这里,我们选用一种更直接的思路,回忆感知机二类分类模型,只包含了一个输出节点;现在把输出节点扩展为K个 ;权值向量w扩展为 D x K的权值矩阵W,偏置(bias) b扩展为长度为K的数组;这样一来,一个样本点经过模型处理,会得到这个样本点在所有K个类别上的归类可能性得分 z。

\displaystyle p_j = softmax ( z_j ) = \frac {e^{z_j}}{\sum _{k=1}^Ke^{z_k}}

z同样是长度为K的数组,某一个元素z [j]的数值越大,输入样本点属于对应分类类别j的可能性也越高。

 

Softmax

Softmax方法,用于把输出z进一步标准化(normalize),得到某个样本点,归属于各个类别的概率分布;

 

例如,归属于类别 j 的概率为:

\displaystyle H( p_{ \hat y},p ) = - \sum _{j=1}^{K} p_{\hat y_j} log(p_j)

这个结果满足了概率分布的标准化要求:在所有类别上的输出概率都不小0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值