吴恩达机器学习笔记及作业代码实现中文版
第六章 神经网络学习
特征和直观理解
-
从本质上讲,神经网络能够通过学习得出其自身的一系列特征。
-
神经网络中,单层神经元( 无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。
-
逻辑与(AND):下图中左半部分是神经网络的设计与 output 层表达式,右边上部分是 sigmod 函数,下半部分是真值表。
- 我们可以用这样的一个神经网络表示 AND 函数:
- 其中θ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+20x1+20x2)ℎ\theta(x)=g(−30+20x1+20x2)hθ(x)=g(−30+20x1+20x2)。
- g(x)g(x)g(x)的图像是:
- 所以我们有:hθ(x)≈x1ANDx2ℎ_\theta(x) ≈ x_1ANDx_2hθ(x)≈x1ANDx2,这就是 AND 函数。
- 我们可以用这样的一个神经网络表示 AND 函数:
-
OR 函数:OR 与 AND 整体一样,区别只在于的取值不同。
样本和直观理解
-
二元逻辑运算符( BINARY LOGICAL OPERATORS)当输入特征为布尔值( 0 或 1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。
-
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
-
下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
-
下图的神经元(两个权重分别为10,-20)可以被视为作用等同于逻辑非(NOT):
-
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。
- 例如我们要实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:XNOR = (x1x_1x1ANDx2x_2x2) OR((NOTx1x_1x1)AND(NOTx2x_2x2))。
- 首先构造一个能表达(NOTx1x_1x1)AND(NOTx2x_2x2)部分的神经元:
- 然后将表示AND的神经元和表示(NOTx1x_1x1)AND(NOTx2x_2x2)的神经元以及表示 OR 的神经元进行组合:
- 我们就得到了一个能实现 XNOR 运算符功能的神经网络。
- 按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。
多元分类
-
当我们有不止两种分类时(也就是y=1,2,3….y=1, 2, 3….y=1,2,3….),如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有 4 个值。例如,第一个值为 1 或 0 用于预测是否是行人,第二个值用于判断是否为汽车。
-
输入向量xxx有三个维度,两个中间层,输出层 4 个神经元分别用来表示 4类,也就是每一个数据在输出层都会出现[a,b,c,d]T[a, b, c, d]^T[a,b,c,d]T,且a,b,c,da, b, c, da,b,c,d中仅有一个为 1,表示当前类。
-
下面是该神经网络的可能结构示例:
-
神经网络算法的输出结果为四种可能情形之一: