矩阵我认为是最伟大的发明之一。而矩阵乘法我认为是是神经网络的具体体现。想象一张数表。
我们把每一行想象成一个测试数据,每一列想象成一个特征值,我们的任务是如何对每一个测试数据进行分类。我们把问题抽象画位对一个给定的测试样本(有一些特征值)如何进行分类,直接的思想是假如每一个测试样本只有可能属于10个类别,我们如何建立特征值和分类的映射关系。通俗一点就是找一个函数,我们输入特征值,函数返回样本的类别。而神经网络就是这个函数,只不过稍微有点小复杂。
假如测试样本属于10个类别,那么对测试样本的预测中输出的是一个长度为10的向量,代表样本属于每个类别的概率。接下来矩阵乘法登场。
如图,我们只要找到一个矩阵让让他与数据矩阵进行乘法就能得到一个长为10的向量,然而右边的矩阵太简单了我们可以把右边的矩阵进行分解。
这样我们假设第一个矩阵进行数据的特征提取,第2个进行特征分解然后一直进行乘法,最后得到了每一个样本的输出。然而在数学上这一些矩阵等价为一个矩阵,如何让这个等式不成立呢,进行非线性变换,在两个矩阵进行乘法之后,对矩阵里的每个数进行一次函数变换,例如进行relu函数变换。
这样就相当于进行了一次神经网络的提取。我们在神经网络中把一个矩阵和一次非线性激活叫做神经网络的一层。注意最后一次矩阵乘法之后不用进行非线性激活,我们已经得到了结果。这就是基本的神经网络。这种结构也叫做MLP(多层感知机)。
下一篇文章,我们进行实战利用MLP进行mnist识别。
我的代码在,GitHub - NICERTYU/MyAILearning: a library record my ai learning,已经写好了。