吴恩达机器学习课程-第四周

1.非线性假设

对于下图中的两类点,如果只考虑两个特性,需要使用非线性的多项式才能很好的建立一个分类模型,如 g ( θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 x 2 + . . . ) g(\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x_1^2x_2+...) g(θ0+θ1x1+θ2x2+θ3x1x2+θ4x12x2+...)

吴恩达机器学习课程-第四周_第1张图片

但是假如存在成百上千的相关特征,如果希望使用这些特征来构建一个非线性的多项式模型,特征组合后的数量十分惊人。比如将100个特征进行两两组合为 x 1 x 2 、 x 1 x 3 、 . . . 、 x 99 x 100 x_1x_2、x_1x_3、...、x_{99}x_{100} x1x2x1x3...x99x100,也存在近5000个组合,更别提为了获取更多的相关性而采取三三组合等等。

多于多特征的数据,增加特征并不是一个好的选择。以汽车分类为例,汽车图片为50*50像素大小,将每个像素视为一个特征,图中模型通过汽车图片的两个像素点构建模型。但是光靠两个像素点(即两个特征),分类效果肯定很差。如果此时两两特征进行组合构建一个多项式模型,会出现约三百万的特征:

吴恩达机器学习课程-第四周_第2张图片

2.神经网络

2.1 模型表示1

下图中整个流程被称为前向传播:

  • x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1x2x3是输入单元(input units),第一层layer1称为输入层(input layer)
  • a 1 、 a 2 、 a 3 a_1、a_2、a_3 a1a2a3是中间单元,负责将数据处理并传递给下一层,中间层layer2(可以是多层)称为隐藏层(hidden layers)
  • 第三层layer3为输出层(output layer)
  • 输出层经过 h θ ( x ) h_\theta(x) hθ(x)(之前的逻辑回归中称为逻辑函数,在神经网络中称为激活函数)处理后输出最终结果(其实在每一层间都使用了激活函数)
  • 输入层和隐藏层会增加一个偏差单位(bias unit),相当于 y = w x + b y=wx+b y=wx+b中的 b b b

吴恩达机器学习课程-第四周_第3张图片

关于图中的标记如下:

  • a i ( j ) a_i^{(j)} ai(j)表示第 j j j层的第i个激活单元
  • θ ( j ) \theta^{(j)} θ(j)表示第 j j j层映射到第 j + 1 j+1 j+1层的权重矩阵(权重即之前模型中系数的概念),上图中的 θ ( 1 ) \theta^{(1)} θ(1)的大小为3*4,其中3为第2层的激活单元数,4为第1层的激活单元数加上1

吴恩达机器学习课程-第四周_第4张图片

2.2 模型表示2

将上述公式转换为向量表示会更加简便:

  • 以第一个式子为例,将其转换为 a 1 ( 2 ) = g ( z 1 ( 2 ) ) a^{(2)}_1=g(z_1^{(2)}) a1(2)=g(z1(2)),其中 z 1 ( 2 ) z_1^{(2)} z1(2)的2表示和第二层相关。以此类推,上述隐藏层单元的计算式子变为:

    a 1 ( 2 ) = g ( z 1 ( 2 ) ) a^{(2)}_1=g(z_1^{(2)}) a1(2)=g(z1(2))

    a 2 ( 2 ) = g ( z 2 ( 2 ) ) a^{(2)}_2=g(z_2^{(2)}) a2(2)=g(z2(2))

    a 3 ( 2 ) = g ( z 3 ( 2 ) ) a^{(2)}_3=g(z_3^{(2)}) a3(2)=g(z3(2))

x = [ x 0 , x 1 , x 2 , x 3 ] T , z ( 2 ) = [ z 1 ( 2 ) , z 2 ( 2 ) , z 3 ( 2 ) ] T x=[x_0,x_1,x_2,x_3]^T,z^{(2)}=[z_1^{(2)},z_2^{(2)},z_3^{(2)}]^T x=[x0,x1,x2,x3]T,z(2)=[z1(2),z2(2),z3(2)]T时:

z ( 2 ) = θ ( 1 ) x z^{(2)}=\theta^{(1)}x z(2)=θ(1)x

a ( 2 ) = g ( z ( 2 ) ) a^{(2)}=g(z^{(2)}) a(2)=g(z(2))

将向量展开后如下:

吴恩达机器学习课程-第四周_第5张图片

  • 隐藏层到输出层的向量表示和前面类似,其中 a 0 ( 2 ) = 1 a^{(2)}_0=1 a0(2)=1

    z ( 3 ) = θ ( 2 ) a ( 2 ) z^{(3)}=\theta^{(2)}a^{(2)} z(3)=θ(2)a(2)

    h θ ( x ) = a ( 3 ) = g ( z ( 3 ) ) h_\theta(x)=a^{(3)}=g(z^{(3)}) hθ(x)=a(3)=g(z(3))

吴恩达机器学习课程-第四周_第6张图片

  • 以上过程全部针对的是训练集中的一个样例,如果需要将整个训练集进行前向传播,则需要将向量 x x x替换为矩阵 X X X

2.3 神经网络和逻辑回归的区别

神经网络和逻辑回归有着许多相似的地方,以隐藏层到输出层为例:在逻辑回归中的 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1x2x3变为神经网络中的 a 1 ( 2 ) 、 a 2 ( 2 ) 、 a 3 ( 2 ) a^{(2)}_1、a^{(2)}_2、a^{(2)}_3 a1(2)a2(2)a3(2)。由于 a ( 2 ) a^{(2)} a(2)中的每个值都是经过第一层计算后的值,可以视为更加高级的特征值(相较于 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1x2x3),而不同的 θ ( 1 ) \theta^{(1)} θ(1)可以学习到不同的高级特征

综上,在逻辑回归中只能使用数据中的原始特征,虽然可以使用组合这些特征,但是会依旧会受到原始特征的限制。在神经网络中,原始特征作为输入层,后面不断深入的网络层会使用到前一层的高级特征,并非原始特征

2.4 多分类

在上述网络中,最终输出层只有一个神经元,即只能表示二分类,为了表示多分类的结果,可以在输出层多设置几个神经元,比如当 h θ ( x ) = [ 1 , 0 , 0 , 0 ] T h_\theta(x)=[1,0,0,0]^T hθ(x)=[1,0,0,0]T时表示预测结果为第一类:

吴恩达机器学习课程-第四周_第7张图片

3.参考

https://www.bilibili.com/video/BV164411b7dx?p=43-49

http://www.ai-start.com/ml2014/html/week4.html

你可能感兴趣的