《Python 神经网络编程》共 3 章。第一章先讲神经网络是如何工作的,会涉及到矩阵运算。第二章用 Python 将第一章实操,搭建神经网络,使用手写数字数据集 MNIST 的一部分进行训练和测试。第三章做一些拓展延伸。
这本书的英文名是 Make Your Own Neural Network,中文翻成「Python 神经网络编程」属实相去甚远。好在小红书上有人大力推荐此书,还做了详细的介绍,不然以这中文名我可能都不会有机会翻开。
思维方式决定行为,接触机器学习后新增的思维方式便是「迭代」。从小的教育引导我们记住公式定理,去套用解决问题。机器学习1则相反:我们有关于问题的数据,通过迭代去挖掘解决问题的「公式定理」。这也正是我们处在社会中学习的路径:观察 + 总结 + 反思。
第二章用 Python 构建神经网络,这是俺第一次处理图像数据。数据存储在 CSV 文件中,每行代表一条样本记录。每条记录有 1 + 28 * 28 = 785 个数字,其中第一个数字是标签,表示该条记录对应的真实数字,后面 784 个数字是图像中每个像素点的灰度值。整个数据处理的过程非常灵活有趣。
虽然神经网络学会了如何求解问题,但本质是个黑盒子,不能帮助我们加深对问题的理解。在拓展延伸中,作者使用向后查询(在数学上是激活函数求逆)的方法查看每个数字对应的输入节点,真是疯狂的想法,但让我对神经网络有了更形象的认识。
人类大脑在遭受损害后,其能力依然能够得到良好发挥,科学家对此深感震惊。这暗示着,神经网络将它们所学到的知识分布在几条链接权重上,也就是说,如果若干链接权重遭受了一定损害,神经网络也可以表现得相当好。这同时意味着,如果输入图像被损坏或不完整,神经网络也可以表现得相当好。
这段话虽然翻得差了点,但是大致意思还是可以理解的:神经网络具有一定的抗干扰性,在其内部受到损害或者输入异常的时候,还可以表现良好。
真是神奇。
-
这里指有监督学习。 ↩︎