1非线性假设(Non-linear Hypotheses)
之前学习的线性回归和逻辑回归都是线性的模型,并且它的的特征都不会太多,这也是它们的缺点,就是如果训练集的特征太多的话,那么计算效率就不好。如下面的例子
如果我们使用逻辑回归进行分类的话,假设有非常多的特征。例如大于100个变量,希望用这些特征构建一个非线性的多项式模型,那么可能出现非常多的特征组合(比如这种怪异的组合),假如只采用两两特征组合()也会有很多的特征组合,这种计算对于逻辑回归来讲显然有些吃力。
2模型表示(Model Representation )
神经网络建立在神经元的基础上,神经元类似于人的大脑中的神经元。它从别处神经元或者其他部位接受信息,并进行处理然后传递给下一个神经元。机器学习的神经网络也类似这样,接受输入,根据自己的模型处理数据,然后将处理结果输入给下一个神经元。单个逻辑回归的神经元的模型如下所示
这些神经元(也叫激活单元,activation unit)用一些特征作为输入,并提供一个输出。也可用向量化表示, ,在单个神经元中为表示出来,我们像之前一样假设 ,并称之为偏差单位(bias unit),在神经网络中,参数 又被称为权重(weight)。神经网络的结构如下
其中是输入单元(input units),这些代表着原始数据。 是中间单元,它们会像之前所说,将数据进行处理,然后呈递到下一层,最后输出单元(out units)它负责计算。下图为三层的神经网络
第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit)。为了更好的描述模型引入一些标记: 表示第 层的第个激活单元。表示从层映射到第 层时的权重的矩阵,其大小为:行数为第 层的激励单元的个数,列数为 第 层的激励单元的个数加1
比如上图中的为第1层到第2层的矩阵,它的大小为:。对于上图所示的模型,激活单元和输出分别表示为
每一个都是有上一层的和其对于的矩阵的权值所决定的。我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION )。把 分别用矩阵表示:
3向量化表示
在机器学习过程的计算中,相比较于循环,使用向量化的方法会使得计算更加的便捷。这是一种很重要的思想,希望自己以后也锻炼出这种思维。以上面的神经网络为例子,试着计算第二层的值:
如上图所示,我们都用向量进行表示,令,则 ,计算后添加。则它们的计算如下所示
令,则 。更直观的理解,我们把左半部分遮住,如下所示
我们可以把 看成更高级的特征值,但是它们都是由 和 决定的。因为是梯度下降的,所以是变化的,而且会变得越来越厉害,所以这些更高级的特征值远比上一层的输入更为厉害,也能更好的预测新数据。这就是神经网络相比较于逻辑回归和线性回归的优势。
4 特征和直观理解
从本质上来讲,神经网络可以学习自身的一系列特征。在普通的逻辑回归中,我们只能使用数据中的原始特征,虽然可以使用一些多项式来组合这些特征,但是依然受这些原始特征的限制。而在神经网络中,这些原始特征只是输入层,在最后输出层的输入数据是上一层的特征,而不是这些原始特征。
举例说明,在神经网络中,单个神经元可以用来表示逻辑运算,比如逻辑与(AND),或者逻辑或(OR),如下所示,可以用这样一个神经网络表示AND函数:
其中 ,那么输出函数即为:,为sigmoid函数,如下
所以既有:。下面是OR函数示意图,原理是一样的
我们可以用神经网络依靠这些单个神经元的运算做更为复杂的逻辑运算,比如使用AND,OR,NOT结合起来做XNOR运算(输入的两个值必须一样,均为1或者为0)。AND,OR,都如上所示,NOT函数如下所示,,权值分别为-10和20
则XNOR的神经网络如下所示
5多类分类
举例说明,我们要训练一个神经网络用来识别路人,汽车,摩托车和卡车,在输出层我们应该有4个值。神经网络的结构如下所示
输入向量有三个维度,两个中间层,输出层4个神经单元表示4类。即每一个数据在输出层都会出现 ,且中有且仅有一个为1.表示当前类。如下所示