近期学习计划

首先从非常小的任务开始。

从 CNN 和 MNIST 数据库开始。

首先基于 Python 和 Keras,然后忘掉 Keras。

读取 MNIST 数据库并显示每张图片,数值和可视化两种形式。

分别用 Softmax、单层神经网络、两层全连接网络和 CNN 识别 MNIST 数字,并手写数字拍照识别。

Softmax 等价于不含隐层的神经网络。观察其学习到的权值,reshape 成 $28\times28$ 再可视化,看看不同数字对应的 w 有着什么样的模式。试着改进,如添加正则项等,看看准确率与学习到的权值模式的关系。看看优化算法怎么才能更快,在优化过程中看看权值梯度图像的分布和变化情况,如果可以,观察其 solution path。

单层神经网络包含一个隐层。观察两组权值矩阵的图像模式,看看隐层神经元个数对分类效果的影响,体会反向传播,输出错误率下降曲线,把每次迭代过程中权值的梯度显示成图像,观察那些影响最大的高梯度值位置分布在哪些地方。看看不同的 Initialization 和优化算法等对收敛速度和质量的影响。

两层神经网络类似,观察学习过程和结果,体会和思考优化的方式。

CNN 也是,验证其每一个假设,观察不同成分的修改对过程和结果的影响。

在 MNIST 上分析完毕后,花两天的时间总结记录。

然后在 CIFAR10 和 100 的图像分类数据集上尝试。

MNIST + Softmax 1 天
MNIST + 单层网络 2 天
MNIST + 双层网络 2 天
MNIST + CNN 1 周
总结记录 2 天
CIFAR 1 周
此过程中的编程基础:3 天

大概需要 1 个月的时间完成以上验证。Worthwile!

过程中的学习笔记会留在本博客。

先实现,再观察,比较,假设,验证,优化,查找资料扩展。在多个数据集上验证思路。