上一篇 ※※※※※※※※ 【回到目录】 ※※※※※※※※ 下一篇
9.1 非线性假设
在之前的内容中,我们采取非线性的多项式是来建立更好的分类模型。
但其实无论是线性回归还是逻辑回归,都存在一个缺点:即当特征非常多时,计算量过大。举个例子,当我们需要识别一张灰度图片(单通道,非RGB)上是否存在汽车时,假设这张图片为50x50像素的小图片,我们如果把每一个像素点都视为特征,那么就有2500个特征。我们采用逻辑回归的方法来进行判断:如果将两两特征组合构成一个多项式模型,那么也将会有25002/2(接近300万)个特征,这样计算量就太大了,普通的逻辑回归模型无法处理这么多的特征,这时候我们需要神经网络。
9.2 神经元与大脑
神经网络是一个有悠久历史的算法,它最初产生的目的是制造能模拟大脑的机器。 其兴起于二十世纪八九十年代,但由于各种原因,在90年代的后期应用减少。
但是最近,神经网络又东山再起了。其中的主要原因在于:(1)CPU计算、GPU计算等计算力的提升;(2)与日俱增的数据量。
9.3 模型展示 Ⅰ
为了构建神经网络模型,我们需要首先思考大脑中的神经网络是怎样的?每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互连接并通过电脉冲来交流的一个网络。
神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被称为权重(weight)。
我们设计出了类似于神经元的神经网络,效果如下:
其中????1, ????2, ????3是输入单元(input units),我们将原始数据输入给它们。 ????1, ????2, ????3是中间单元,它们负责将数据进行处理,然后呈递到下一层。 最后是输出单元,它负责计算ℎ????(????)。
神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
下面引入一些标记法来帮助描述模型:
????????(????)代表第 ???? 层的第 ???? 个激活单元。????(????)代表从第 ???? 层映射到第???? + 1层时的权重的矩阵,例如????(1)代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第???? + 1层的激活单元数量为行数,以第 ???? 层的激活单元数量加一为列数的矩阵。例如:上图所示的神经网络中????(1)的尺寸为3*4。
总结来说:上标表示与第几层相关,下标与该层的第几个激活单元相关。权重矩阵尺寸为:(后一层激活单元数,前一层激活单元数+1)
对于上图所示的模型,激活单元和输出分别表达为:
以上仅仅是将特征矩阵的一行(一个训练实例)喂给了神经网络,我们需要将整个训练集都喂给我们的神经网络算法来学习模型。
以上从左到右的算法被称为前向传播算法。我们可以向量化表示:????·X = a。
9.4 模型展示 Ⅱ
在前向传播的计算中,利用向量化的实现方法使得计算更加便捷、高效。
前向传播的计算过程:
(1) z(2) = ????(1) · X(即A(1))
(2) a(2) = g( z(2) )
(3) Add a0(2) = 1
(4) z(3) = ????(2) · a(2)
(5) h????(x) =a(3) = g( z(3) )
9.5 例子和直观理解 Ⅰ
从本质上讲,神经网络能够通过学习得出其自身的一系列特征。在普通的逻辑回归中,我们被限制为使用数据中的原始特征????1, ????2, . . . , ????????,我们虽然可以使用一些二项式项来组合这些特征,但是我们仍然受到这些原始特征的限制。在神经网络中,原始特征只是输入层,在我们上面三层的神经网络例子中,第三层也就是输出层做出的预测利用的是第二层的特征,而非输入层中的原始特征,我们可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征。
无隐含层的单层神经元可以进行逻辑运算,比如逻辑与、逻辑或、取反:
逻辑与:
逻辑或:
取反:
9.6 例子和直观理解 Ⅱ
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算,即加入隐含层后的神经网络,可以实现同或和异或。
异或:相同得0,相异得1
同或:相同得1,相异得0
9.7 多元分类
当我们有不止两种分类时(也就是???? = 1,2,3 ….),比如以下这种情况,该怎么办?如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有 4 个值。例如,第一个值为 1 或 0 用于预测是否是行人,第二个值用于判断是否为汽车。
在多元分类的情况下,我们的输出层将不止有一个输出,而是有多个输出。
举个例子,当要分辨一张图片上是否是行人、卡车、汽车、摩托车,则输出可以为:
有四种分类标签,从而进行多元分类。
以上,就是吴恩达机器学习课程第九章的主要内容。