这次练习的重点是多分类问题和神经网络的实现
randperm(n):随机打乱一个数字序列,结果是从1到n随机打乱得到的一个数字序列。
首先需要了解one VS all的核心思想和步骤。
这就是之前学习的线性拟合的升级版。
对于之前的线性拟合来说,指的是知道X和y,不断调整参数使得X向量经过计算可以得到对应的y。
这次的应用背景是对20X20的图片进行识别。所以每一个X向量共有401个属性(有一个属性衡为1)。
这里的all指的是10个数字(10变成0来处理)。one指的是每一个数字的识别。
所以问题就变成了先将这些数字分类为10类,分别得到theta。将这些theta整合在一个矩阵中。然后对于测试矩阵的X做相乘,会得到十维的一个向量,即y。每一个取值的含义都是区对应位置数字的可能性。所以找出可能性最大的 ,就是最后预估出来的数字。
当然,在这里没有什么新添加的代码。重要的是解决这个问题的思路。
第二部分就是一个简单的神经网络的模拟。
等到下一个习题中会有具体的神经网络的学习,在这里就是一个简单的热身。
源代码地址:
http://download.youkuaiyun.com/detail/yinyanting1/9906481