目录

  • 1. 初识神经网络(伟大的人工智能)
  • 1.1 问题引出
  • 1.2 e.g. 视觉对象识别模型(识别图片中的物体)
  • 1.3 什么是神经网络?
  • 2. 模型表示
  • 3. 前向传播算法的向量化计算
  • 4.神经网络的特征
  • 4.1 逻辑回归和神经网络的特征值对比
  • 4.2 神经网络中的逻辑运算
  • 5. 神经网络的样本
  • 6. 神经网络中的多分类


1. 初识神经网络(伟大的人工智能)

1.1 问题引出

  1. 线性回归和逻辑回归的缺点: 当特征值太多时,计算负荷会非常大,导致计算效率降低。所以,神经网络将完美的解决这一问题。
  2. 例如: 有100个特征值,需要希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合:神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多,也会有5000个组合而成的特征,这对于逻辑回归来说需要计算的特征太多。

1.2 e.g. 视觉对象识别模型(识别图片中的物体)

  1. 使用很多汽车的图片和很多非汽车的图片,再使用图片上的像素值(饱和度或亮度)来作为特征。只选用灰度图片(非RGB),每个像素则只有一个值,再选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法,利用这两个像素值来判断图片上是否是汽车:


    采用 50x50 像素的小图片,并且将所有像素视为特征,则会有
    2500 个特征,如果进一步将两两特征组合构成一个多项式模型,则会有约 神经网络输入层节点数过多 神经网络输入太多_机器学习_02

1.3 什么是神经网络?

  神经网络的诞生是人们想尝试设计出模仿大脑的算法(人脑是最好的学习机器)。假设:大脑做所有事情和不同的方法,不需要用上千个不同的程序去实现。相反,大脑处理的方法,只需要一个单一的学习算法就可以了。因为人体有同一块脑组织可以处理光、声或触觉信号,那么也许存在一种学习算法(而不是成千上万种算法),可以同时处理视觉、听觉和触觉。

神经网络输入层节点数过多 神经网络输入太多_神经网络_03

2. 模型表示

  1. 神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。如一个类似于神经元的神经网络:
  2. 神经网络输入层节点数过多 神经网络输入太多_计算机视觉_04


  3. 神经网络输入层节点数过多 神经网络输入太多_神经网络_05

  4. 神经网络输入层节点数过多 神经网络输入太多_计算机视觉_06 是输入单元,将原始数据输入给它们。
    神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_07 是中间单元,负责数据的处理,然后呈递到下一层。
    最后是输出单元,它负责计算 神经网络输入层节点数过多 神经网络输入太多_神经网络_08
  5. 神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。第一层作为输入层(Input Layer),中间一层成为隐藏层(Hidden Layers),最后一层称为输出层(Output Layer)。并且为每一层都增加一个偏差单位(bias unit):
  6. 神经网络输入层节点数过多 神经网络输入太多_特征值_09

  7. 模型介绍:
    神经网络输入层节点数过多 神经网络输入太多_特征值_10:代表第𝑗 层的第 𝑖 个激活单元。
    神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_11:代表从第 𝑗 层映射到第𝑗 + 1 层时的权重矩阵,例如,𝜃(1)代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 𝑗 + 1层的激活单元数量为行数,以第 𝑗 层的激活单元数加一为列数的矩阵。例如,上图的神经网络中 神经网络输入层节点数过多 神经网络输入太多_机器学习_12 的尺寸为 3 * 4
    激活单元和输出分别表达为:
  8. 神经网络输入层节点数过多 神经网络输入太多_机器学习_13

  9. 权重矩阵:
  10. 神经网络输入层节点数过多 神经网络输入太多_机器学习_14

  11. 所以,每一个 𝑎 都是由上一层所有的 𝑥 和每一个 𝑥 所对应的决定的,所以这种从左到右的算法称为前向传播算法( FORWARD PROPAGATION )
    𝑥, 𝜃, 𝑎 分别用矩阵表示,我们可以得到 𝜃 ⋅ 𝑋 = 𝑎
  12. 神经网络输入层节点数过多 神经网络输入太多_特征值_15

3. 前向传播算法的向量化计算

  首先,神经网络第二层的计算:

神经网络输入层节点数过多 神经网络输入太多_机器学习_16


神经网络输入层节点数过多 神经网络输入太多_特征值_17


再令 𝑧(2) = 神经网络输入层节点数过多 神经网络输入太多_神经网络_18𝑥,则 𝑎(2) = 𝑔(神经网络输入层节点数过多 神经网络输入太多_神经网络_19) ,计算后添加 神经网络输入层节点数过多 神经网络输入太多_神经网络_20

神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_21


前向传播算法:

神经网络输入层节点数过多 神经网络输入太多_计算机视觉_22

  综上所得神经网络输入层节点数过多 神经网络输入太多_特征值_23,n:表示第 n 层。

  注意: 如果要对整个训练集进行计算,需要将训练集特征矩阵进行转置,使得同一个实例的特征都在同一列里。如:

神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_24

4.神经网络的特征

4.1 逻辑回归和神经网络的特征值对比

  神经网络能够通过学习得出其自身的一系列新特征

  1. 逻辑回归中,模型被限制在原始特征X中,虽然可以使用二项式项来组合这些特征(如,两两组合),但是模型仍然受到原始特征的限制。
  2. 神经网络中,原始特征只是输入层,输出层做出的预测利用的是第二层的特征,而非输入层中的原始特征,可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征

4.2 神经网络中的逻辑运算

  单层神经元(无中间层)的计算可用来表示 逻辑运算AND、OR

  1. 逻辑与(AND):
  2. 神经网络输入层节点数过多 神经网络输入太多_特征值_25

  3. 若假设 神经网络输入层节点数过多 神经网络输入太多_计算机视觉_26 ,则输出函数为:神经网络输入层节点数过多 神经网络输入太多_特征值_27
    即z为正,则为真;z为负,则为假
    综上可得,AND 函数:神经网络输入层节点数过多 神经网络输入太多_机器学习_28神经网络输入层节点数过多 神经网络输入太多_神经网络_29
  4. 逻辑或(OR):
  5. 神经网络输入层节点数过多 神经网络输入太多_特征值_30

  6. 假设 神经网络输入层节点数过多 神经网络输入太多_机器学习_31

5. 神经网络的样本

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

  1. 逻辑与(AND):两个数字同时为1,结果才为1;
  2. 神经网络输入层节点数过多 神经网络输入太多_特征值_32

  3. 逻辑或(OR):只要有一个数字为1,结果就为1;
  4. 神经网络输入层节点数过多 神经网络输入太多_机器学习_33

    神经网络输入层节点数过多 神经网络输入太多_神经网络_34

  5. 逻辑非(XOR):两个数不同为1,相同为0;
  6. 神经网络输入层节点数过多 神经网络输入太多_特征值_35

  7. 逻辑同或(XNOR):相同为1,不同为0;神经网络输入层节点数过多 神经网络输入太多_机器学习_36
    首先构造出表达神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_37部分的神经元:
  8. 神经网络输入层节点数过多 神经网络输入太多_机器学习_38

  9. XNOR 运算符实现:
  10. 神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_39

  11. Andrew NG给出的图片:
  12. 神经网络输入层节点数过多 神经网络输入太多_特征值_40

    神经网络输入层节点数过多 神经网络输入太多_神经网络输入层节点数过多_41

  按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。这就是神经网络的厉害之处!

6. 神经网络中的多分类

  例如,训练一个神经网络算法来识别路人(pedestrian)、汽车(car)、摩托车(motorcycle)和卡车(truck),在输出层我们应该有 4 个值。例如,第一个值为 1 或 0 用于预测是否是行人,第二个值用于判断是否为汽车。
  输入向量 𝑥 有三个维度,两个中间层,输出层 4 个神经元分别用来表示 4 类,也就是每一个数据在输出层都会出现 [𝑎 𝑏 𝑐 𝑑]𝑇,且 𝑎, 𝑏, 𝑐, 𝑑 中仅有一个为 1,表示当前类。下面是该神经网络的结构:

神经网络输入层节点数过多 神经网络输入太多_计算机视觉_42


神经网络算法的输出结果为四种可能情形之一:

神经网络输入层节点数过多 神经网络输入太多_神经网络_43