第四周 神经元、神经网络和前向传播算法
第四周课程回顾
1. 神经元
1.1 神经元
为了构建神经网络模型,我们需要首先思考大脑中的神经网络是怎样的?每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。
1.2 神经元间的沟通
神经元之间通过电信号进行沟通(微弱的电流)。所以如果神经元想要传递一个消息,它就会就通过它的轴突,发送一段微弱电流给其他神经元的树突。
接收到信号的神经元会对消息进行处理,处理后可能会通过自己的轴突再将信息传递出去给其他神经元。这就是神经元之间信号传递的简要概述。
2. 神经网络
神经网络是模仿大脑神经元,建立的模型。模型中的每个神经元都是一个单独的【学习模型】,这些神经元也叫做**单元(activation unit)
2.1 Sigmod神经元
以下示例为逻辑回归模型中常用的,sigmoid神经元的简单示例:
中间的神经元(**单元)是一个sigmoid函数,它将左边输入的和参数θ相乘后作为输入,经过自身的计算得到结果
,在神经网络中,参数又可被成为权重(weight)。
2.2 三层神经网络和前向传播算法
在Sigmod神经元的基础上,我们可以设计出一个简单的三层神经网络:
作为神经网络的第一层,被称为输入层(Input Layer),输入层中的每个节点即输入单元,每个输入单元即包含着原始的输入值,
作为中间单元,构成了神经网络的第二层,也称为中间层/隐藏层(Hidden Layers),他们的作用是:负责将数据进行处理,然后呈递到下一层;最后一层被称为输出层(Output Layer)
神经网络模型中,通常只有一个输入层,一个输出层,中间层/隐藏层可以有任意多个。所有层加起来构成了整个神经网络模型。每一层的输出变量都是下一层的输入变量。
对于上述模型,给每一层添加偏差单位(bias unit)后,图像如下:
中间层**单元的表达式:
代表第i层的第j个**单元;
右上角 j 代表是从第j层映射到第 j + 1层时权重的矩阵;右下角mn代表该参数在θ矩阵中的位置
其中,θ 矩阵的形态m = 第 j + 1层**单元数 ;n = 第 j 层**单元数 + 1。
例如:
第一层θ参数矩阵的形态3 x 4
m = 第二层**单元数 = 3;n = 第一层**单元数 3 + 1 = 4
第二层θ参数矩阵的形态1 x 4
m = 第三层**单元数 = 1;n = 第二层**单元数 3 + 1 = 4
输出层表达式:
总表达式:
从式子里可以看出,对于每个ai,都依赖上层的x以及x对应的参数θ,这样从左至右逐级依赖的算法模型,称为:前向传播算法
( FORWARD PROPAGATION )
2.3 神经网络的优势
从2.2节我们可以看到,位于神经网络模型输出层的预测函数可以写作:
我们可以把 a0,a1,a2,a3看成更为高级的特征值,也就是x0,x1,x2,x3的进化体,虽然他们是由x决定的,但由于是梯度下降的,所以a是变化的,并且变化的越来越厉害,所以这些高级的特征值比普通的逻辑回归/线性回归模型中仅仅将x次方厉害,也能更好地预测新数据。
从本质上来讲,神经网络能够通过学习得出其自身的一系列特征。在普通的逻辑回归中,我们被限制为使用数据中的原始特征x0,x1,x2,x3...xn我们虽然可以使用一些二项式项来组合这些特征,但是我们仍然受到这些原始特征的限制。在神经网络中,原始特征只是输入层,在我们上面三层的神经网络例子中,第三层也就是输出层做出的预测利用的是第二层的特征,而非输入层中的原始特征,我们可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征。
这就是神经网络模型相比于逻辑回归和线性回归的优势。
3.样本和直观理解
我们可以用一个单一的**单元 + 不同的权重即可描三种二元逻辑运算符(BINARY LOGICAL OPERATORS) :
逻辑与(AND)、 逻辑或(OR)、逻辑非(NOT)
4.多类分类
当我们要用神经网络模型来实现多分类,譬如训练一个模型来识别路人、汽车、摩托车和卡车。那么神经网络模型改如何构成?
假设我们的输入有三个维度、输出根据上述可知有4个分类,并且是4个互斥的分类。那么我们的神经网络模型可以设计成如下的形状:
即总共4层、中间有两层隐藏层的网络结构。结果是4 x 1维矩阵。
我们可以用 来分别表示输出:
路人、汽车、摩托、卡车。