算法工程师修仙之路:吴恩达机器学习(八)

吴恩达机器学习笔记及作业代码实现中文版

第六章 神经网络学习


特征和直观理解

  • 从本质上讲,神经网络能够通过学习得出其自身的一系列特征。

  • 神经网络中,单层神经元( 无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。

  • 逻辑与(AND):下图中左半部分是神经网络的设计与 output 层表达式,右边上部分是 sigmod 函数,下半部分是真值表。

    • 我们可以用这样的一个神经网络表示 AND 函数:
      算法工程师修仙之路:吴恩达机器学习(八)_第1张图片
    • 其中 θ 0 = − 30 , θ 1 = 20 , θ 2 = 20 \theta_0=−30, \theta_1=20, \theta_2=20 θ0=30,θ1=20,θ2=20,我们的输出函数 h θ ( x ) ℎ_\theta(x) hθ(x)即为 h θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 ) ℎ\theta(x)=g(−30+20x1+20x2) hθ(x)=g(30+20x1+20x2)
    • g ( x ) g(x) g(x)的图像是:
      算法工程师修仙之路:吴恩达机器学习(八)_第2张图片算法工程师修仙之路:吴恩达机器学习(八)_第3张图片 - 所以我们有: h θ ( x ) ≈ x 1 A N D x 2 ℎ_\theta(x) ≈ x_1ANDx_2 hθ(x)x1ANDx2,这就是 AND 函数。
  • OR 函数:OR 与 AND 整体一样,区别只在于的取值不同。
    算法工程师修仙之路:吴恩达机器学习(八)_第4张图片

样本和直观理解

  • 二元逻辑运算符( BINARY LOGICAL OPERATORS)当输入特征为布尔值( 0 或 1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。

  • 下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
    算法工程师修仙之路:吴恩达机器学习(八)_第5张图片

  • 下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
    算法工程师修仙之路:吴恩达机器学习(八)_第6张图片

  • 下图的神经元(两个权重分别为10,-20)可以被视为作用等同于逻辑非(NOT):
    算法工程师修仙之路:吴恩达机器学习(八)_第7张图片

  • 我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。

    • 例如我们要实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:XNOR = ( x 1 x_1 x1AND x 2 x_2 x2) OR((NOT x 1 x_1 x1)AND(NOT x 2 x_2 x2))。
    • 首先构造一个能表达(NOT x 1 x_1 x1)AND(NOT x 2 x_2 x2)部分的神经元:
      算法工程师修仙之路:吴恩达机器学习(八)_第8张图片
    • 然后将表示AND的神经元和表示(NOT x 1 x_1 x1)AND(NOT x 2 x_2 x2)的神经元以及表示 OR 的神经元进行组合:
      算法工程师修仙之路:吴恩达机器学习(八)_第9张图片
    • 我们就得到了一个能实现 XNOR 运算符功能的神经网络。
    • 按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。

多元分类

  • 当我们有不止两种分类时(也就是 y = 1 , 2 , 3 … . y=1, 2, 3…. y=1,2,3.),如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有 4 个值。例如,第一个值为 1 或 0 用于预测是否是行人,第二个值用于判断是否为汽车。

  • 输入向量 x x x有三个维度,两个中间层,输出层 4 个神经元分别用来表示 4类,也就是每一个数据在输出层都会出现 [ a , b , c , d ] T [a, b, c, d]^T [a,b,c,d]T,且 a , b , c , d a, b, c, d a,b,c,d中仅有一个为 1,表示当前类。

  • 下面是该神经网络的可能结构示例:
    算法工程师修仙之路:吴恩达机器学习(八)_第10张图片

  • 神经网络算法的输出结果为四种可能情形之一:
    算法工程师修仙之路:吴恩达机器学习(八)_第11张图片

你可能感兴趣的:(教学,课程)