Neural Networks: Representation
理论上我们可以用多项式函数去近似任意函数(泰勒极数(Taylor series)),从而可得到任意问题的拟合曲线。
在数学中,泰勒级数(英语:Taylor series)用无限项连加式——级数来表示一个函数,这些相加的项由函数在某一点的导数求得。泰勒级数可以用来近似计算函数的值.
在实际处理时,特征量通常会很多,如果再构造高阶多项式等,特征数量将会急剧增加,这使得回归模型的复杂度太高,可见并不合适。神经网络无需构造高阶多项式,在特征量很大时也可以处理的很好。
那特征能有多大呢?下面是一个计算机视觉中的例子:
。
灰度指黑白图像中点的颜色深度,范围一般从0到255(这个设定范围,已经够用了)。白色为255,黑色为0.。故黑白图片也成为了灰度图片。255是2的8次方(包含0)。所以又叫8位图。(这里的黑白表示颜色的亮度,而不是原色)。假如我们只选用灰度图片,每个像素则只有一个值(而非 RGB 值).
- RGB 值。任何颜色都是有红、绿、蓝三原色组成。对于一张像素值表示的图,他本身就是灰度图像(一般是8位灰度图像)。像素值就是它的灰度值。(灰度名字就是因为黑白混合,也就是亮度混个,造成了灰色。)
- 这三个原色就是x(输入),而灰度就是y(输出),一般按照不同的算法,分配给三个x的加权不同,则计算方法不同。。
假使我们采用的都是 50x50 像素的小图片,并且我们将所有的像素视为特征,则会有
2500 个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约 25002/2 个(接近 3 百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络(非普通的逻辑回归模型)。
Neurons and the Brain
脑科学家通过对动物实验,发现大脑中专用于处理听觉信号的脑皮层也能处理其他诸如视觉等信号,即如果切断其与耳朵的联系,将其与眼睛相连,则这块负责听觉的脑皮层区域也能接受并处理视觉信号,从而学会“看”。脑科学家通过这类换源实验,就推论假设大脑的学习算法只有一种(“one learning algorithm” hypothesis)。那么如果能找出这种学习算法并应用于计算机中,那梦想中和人一样的人工智能就成真了。
神经网络就源于模拟人类大脑,但其需要的计算量很大。随着计算机硬件性能的提高,神经网络逐渐从衰落变为流行,如今已广泛地被应用在各行各业中。
Model Representation I
每一个神经元都可以被认为是一个处理单元/神经核( processing unit/ Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。
神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元
(也叫**单元, activation unit)采纳一些特征作为输入,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被称为权重(weight)。
人工神经网络中,树突对应输入(input),细胞核对应**单元(activation unit),轴突对应输出(output)。一般把神经网络划分为三部分(注意,不是只有三层!),即输入层(input layer),隐藏层(hidden layer)和输出层(output layer)。
>注意这里的规定用法,u和v标的位置,u表示前面一层的各单元,但是标在下标的后面,而v表示后面一层的单元,却标在前面。
我们可以知道:每一个 a 都是由上一层所有的 x 和每一个 x 所对应的决定的。
(我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION ))
向量化推倒过程
对上图分析得:
Model Representation II
对于multiclass 的复杂非线性分类,逻辑回归中的拟合函数是
其实神经网络就像是 logistic regression,只不过我们把 logistic regression 中的输入向量
[x1x3]变成了中间层的[a(2)1a(2)3], 即
我们可以把 a0,a1,a2,a3看成更为高级的特征值,也就是 x0,x1,x2,x3的进化体,并且它们是由 x 与决定的,因为是梯度下降的,所以 a 是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将 x 次方厉害,也能更好的预测新数据。这就是神经网络相比于逻辑回归和线性回归的优势。
Examples and Intuitions I
从本质上讲,神经网络能够通过学习得出其自身的一系列特征。在普通的逻辑回归中,
我们被限制为使用数据中的原始特征 x1,x2,…,xn,我们虽然可以使用一些二项式项来组合这些特征,但是我们仍然受到这些原始特征的限制。在神经网络中,原始特征只是输入层,在我们上面三层的神经网络例子中,第三层也就是输出层做出的预测利用的是第二层的特征,而非输入层中的原始特征,我们可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征。
神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑 AND、逻辑或 OR 。
举例说明:逻辑与 AND;下图中左半部分是神经网络的设计与 output 层表达式,右边
上部分是 sigmod 函数,下半部分是真值表。
我们可以用这样的一个神经网络表示 AND 函数:
其中 θ0 =-30, θ1 =20, θ2 =20
我们的输出函数 h(x)即为:
我们知道 g(x)的图像是:
即
这样就实现了一个能够进行与运算的神经网络。
Examples and Intuitions II
二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0 或 1)时,我们可以用一个单一的**层可以作为二元逻辑运算符,为了表示不同的运算符,我们之需要选择不同的权重即可。
下图的神经元(三个权重分别为-30, 20, 20)可以被视为作用同于逻辑与(AND):
下图的神经元(三个权重分别为-10, 20, 20)可以被视为作用等同于逻辑或(OR):
下图的神经元(两个权重分别为 10, -20)可以被视为作用等同于逻辑非(NOT):
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实
现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即 XNOR=( x1ANDx2)OR((NOTx1)AND(NOTx2))
首先构造一个能表达(NOTx1)AND(NOTx2)部分的神经元:
然后将表示 AND 的神经元和表示(NOTx1)AND(NOTx2)的神经元以及表示 OR 的神经元进行组合:
Multiclass Classification
之前讨论的都是预测结果为单值情况下的神经网络,要实现多类别分类,其实只要修改一下输出层,让输出层包含多个输出单元即可。