回归问题为例,最多只需要全局+1个维度,也就是n+1宽度的模型。

第一版的思路不太好(甚至有错误),我们换一种解释方式。

首先针对回归问题,我们通过n维的特征得到一个预测值,这里的这个预测值就可以解释为多出来的一个维度。

然后是分类问题,我们使用的是softmax方法进行类别的预测,于是维度多出了待分类数量个维度。

什么是模型的宽度?

一个模型宽度有几就代表着模型某一层有几个神经节点。每一个神经节点是通过对输入的高维度点进行一个基础变换得到的一个数值;一层有几个这样的数值,就代表着有多少次的基础变换行为(线性映射)。

k1x1+k2x2+...+b=yK×X+B=Yk_1 * x_1 + k_2 * x_2 + ... + b = y\\ K\times X+B=Y

可以实现低维特征域向高维特征域的映射。

为什么要升维?

我们在看二维平面上的物体时,我们很容易就能理解点与点之间的关系,而这层关系是在二维世界中的人很难去认识到的。升维的意义就在这里。可以将本来远在天边的两个特征点在新的维度上拉近。

那么模型的内部需要多少维度(宽度)呢?

还是先针对回归问题

回归问题本质就是一个高维向低维的映射,所以我们其实是不需要对输入的特征空间进行变换。但是因为我们的矩阵模型是一个实打实的超平面,无法拟合所有到 特征分布,因此,我们还是需要一次的特征空间的变换将输入数据的分布转化成一个超平面分布。一层隐藏层是有必要的。

然后解决分类问题

我是这样思考的,首先我们有两个点新引入的一个维度上数值相近,然后我们有第三个点,这个点不在刚才两个点的附近,所以理应在数值上有很大的偏差。但是这个偏差该是什么样的方向呢?这是没有办法讲的。这个时候我们需要引入一个新的维度将这个点和之前的两个点分开。我们可以定义每一维的“重力”的中心(正态分布的平局值)是原点,不在原点附近的点都属于另一个类别(这里的这个定义正是激活函数的服务对象)。

所以我们可以这样做二分类,模型在训练的时候首先在同一维度进行变换,直到模型成功得到一个可以在激活函数帮助下被二分类的特征空间。同一维度是为了使保证信息的完整。所以模型的形状至少是个长方形,严谨一点讲就是一隐藏层。

同理,我们如果要进行多分类,我们需要进行多次完美的二分类变换,然后把这些小模型进行融合(矩阵运算-append),最后组合得到一个多维度输出的多分类模型。

注:这样的模型还具有可成长的特点。而且可以根据语义树进行采用迁移学习技术,进行有层次的学习。

根本思想

可以这样思考,如果我们要观察一个拥有3维特征物体的所有状态,我们可以把这些状态的物体并排放在一起。组成可能性数量或长度为n3n^3的线,nn为其中一个维度的可能性数量。只要找到一种规则,将这些状态进行有序排列,那么就可以实现回归问题的求解。

如何定义有序的标准?

有序是有一个指标作为根据的。为什么一个状态要比另一个状态在这个维度大,是我们的模型需要学习的。

为什么是回归问题?分类问题不可以吗?

针对分类问题,如果考虑边界状态,轻微的误差就会导致类别的变动。但问题并不在这里,而是在可以变动到的类别数量。如果只是一个维度的变动,那么最多也只有两种可能的变动,左或者右。而事实上这样的边界问题,在轻微的误差影响下可以变动到任意的或者任意数量的类别,这才是合理的。

推理得出,为了实现任意类别间的任意转换,对于分类问题,我们至少需要

封面画师:时辰