吴恩达机器学习----神经网络:表述

吴恩达机器学习教程学习笔记 (6/16)

吴恩达教授(Andrew Ng)的机器学习可以说是一门非常重视ML理论基础的课程,做做一些简单的笔记加上个人的理解。本笔记根据吴恩达的课程顺序,以每章内容作为节点进行记录。(共18章,其中第3章“线性代数回顾”与第5章“Octava教程”的笔记就不总结了)

第八章 神经网络:表述(Neural Networks:Representation)

1、非线性假设

我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
例子
吴恩达机器学习----神经网络:表述_第1张图片
当我们使用x1, x2 的多次项式进行预测时,我们可以应用的很好。
之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。假设我们有非常多的特征,例如大于100个变量,我们希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合(x1x2+x1x3+x1x4+…+x2x3+x2x4+…+x99x100),我们也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了。
假设我们希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车),我们怎样才能这么做呢?一种方法是我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
假如我们只选用灰度图片,每个像素则只有一个值(而非RGB值),我们可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车:
吴恩达机器学习----神经网络:表述_第2张图片
假使我们采用的都是50x50像素的小图片,并且我们将所有的像素视为特征,则会有 2500个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约2500^2/2个(接近3百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络。

2、模型表示

神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight)。
吴恩达机器学习----神经网络:表述_第3张图片
设计出了类似于神经元的神经网络,效果如下:
吴恩达机器学习----神经网络:表述_第4张图片
其中x1, x2, x3是输入单元(input units),我们将原始数据输入给它们。
a1, a2, a3是中间单元,它们负责将数据进行处理,然后呈递到下一层。
最后是输出单元,它负责计算hθ (x)。
神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
吴恩达机器学习----神经网络:表述_第5张图片
对于上图所示的模型,激活单元和输出分别表达为:
a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_1^{(2)}=g(Θ_{10}^{(1)}x_0+Θ_{11}^{(1)}x_1+Θ_{12}^{(1)}x_2+Θ_{13}^{(1)}x_3) a1(2)=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3) a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_2^{(2)}=g(Θ_{20}^{(1)}x_0+Θ_{21}^{(1)}x_1+Θ_{22}^{(1)}x_2+Θ_{23}^{(1)}x_3) a2(2)=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3) a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_3^{(2)}=g(Θ_{30}^{(1)}x_0+Θ_{31}^{(1)}x_1+Θ_{32}^{(1)}x_2+Θ_{33}^{(1)}x_3) a3(2)=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3) h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_Θ (x)=g(Θ_{10}^{(2)} a_0^{(2)}+Θ_{11}^{(2)} a_1^{(2)}+Θ_{12}^{(2)} a_2^{(2)}+Θ_{13}^{(2)} a_3^{(2)}) hΘ(x)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
上面进行的讨论中只是将特征矩阵中的一行(一个训练实例)喂给了神经网络,我们需要将整个训练集都喂给我们的神经网络算法来学习模型。可以知道:每一个a都是由上一层所有的x和每一个x所对应的决定的。(把这样从左到右的算法称为前向传播算法( Forward Propagation ))
相对于使用循环来编码,利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值:吴恩达机器学习----神经网络:表述_第6张图片
在这里插入图片描述
我们令 z(2)(1)x,则 a(2)=g(z(2)) ,计算后添加 a0(2)=1。计算输出的值为:在这里插入图片描述
我们令 z(3)(2)a(2),则 hθ(x)=a(3)=g(z(3))
为了更好了了解Neuron Networks的工作原理,我们先把左半部分遮住:
吴恩达机器学习----神经网络:表述_第7张图片
右半部分其实就是以a0,a1,a2,a3, 按照Logistic Regression的方式输出hθ (x):
在这里插入图片描述
其实神经网络就像是logistic regression,只不过我们把logistic regression中的输入向量[x1∼x3 ] 变成了中间层的[a1(2)∼a3(2)], 即: h Θ ( x ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) h_Θ (x)=g(Θ_{10}^{(2)} a_0^{(2)}+Θ_{11}^{(2)} a_1^{(2)}+Θ_{12}^{(2)} a_2^{(2)}+Θ_{13}^{(2)} a_3^{(2)}) hΘ(x)=g(Θ10(2)a0(2)+Θ11(2)a1(2)+Θ12(2)a2(2)+Θ13(2)a3(2))
我们可以把a0,a1,a2,a3看成更为高级的特征值,也就是x0,x1,x2,x3的进化体,并且它们是由 x与决定的,因为是梯度下降的,所以a是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将x次方厉害,也能更好的预测新数据。

3、样本和直观理解

神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。
举例说明:逻辑与(AND);下图中左半部分是神经网络的设计与output层表达式,右边上部分是sigmod函数,下半部分是真值表。
我们可以用这样的一个神经网络表示AND 函数:
吴恩达机器学习----神经网络:表述_第8张图片
其中θ0=-30, θ1=20, θ2=20 我们的输出函数hθ(x)即为:hΘ(x)=g(-30+20x1+20x2 )
我们知道g(x)的图像是:
吴恩达机器学习----神经网络:表述_第9张图片吴恩达机器学习----神经网络:表述_第10张图片
所以我们有:hΘ(x) ≈ x1 AND x2
所以我们的:
这就是AND函数。
接下来再介绍一个OR函数:
吴恩达机器学习----神经网络:表述_第11张图片OR与AND整体一样,区别只在于的取值不同。
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
吴恩达机器学习----神经网络:表述_第12张图片
下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
吴恩达机器学习----神经网络:表述_第13张图片
下图的神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT):
在这里插入图片描述
们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实现XNOR 功能(输入的两个值必须一样,均为1或均为0),即:XNOR=(x1 AND x2) OR((NOT x1 )AND(NOT x2 ))
首先构造一个能表达(NOT x1 )AND(NOT x2 )部分的神经元:
吴恩达机器学习----神经网络:表述_第14张图片
然后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元以及表示 OR 的神经元进行组合:
吴恩达机器学习----神经网络:表述_第15张图片
我们就得到了一个能实现 XNOR 运算符功能的神经网络。

4、多类分类

当我们有不止两种分类时(也就是y=1,2,3….),比如以下这种情况,该怎么办?如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有4个值。例如,第一个值为1或0用于预测是否是行人,第二个值用于判断是否为汽车。
输入向量x有三个维度,两个中间层,输出层4个神经元分别用来表示4类,也就是每一个数据在输出层都会出现[a b c d]^T,且a,b,c,d中仅有一个为1,表示当前类。下面是该神经网络的可能结构示例:
在这里插入图片描述在这里插入图片描述
神经网络算法的输出结果为四种可能情形之一:
吴恩达机器学习----神经网络:表述_第16张图片
感谢黄海广博士团队的翻译和笔记
END

你可能感兴趣的:(吴恩达机器学习笔记,神经网络,机器学习,吴恩达)