[Machine Learning] 6 神经网络:表述(Neural Networks: Representation)

在这里插入图片描述

6 Neural Networks: Representation(神经网络:表述)

6.1 Non-linear hypotheses(非线性假设)

无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。

假设希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车),应该怎么做?一种方法是利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
在这里插入图片描述
假如只选用灰度图片,每个像素则只有一个值(而非 RGB 值),可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车:
在这里插入图片描述
假使采用的都是 50x50 像素的小图片,并且将所有的像素视为特征,则会有2500 个特征,如果要进一步将两两特征组合构成一个多项式模型,则会有约25002/2个(接近 3 百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候需要神经网络。

6.2 Model Representation(模型表示)

神经网络是一种很古老的算法,它最初产生的目的是制造能模拟大脑的机器。

为了构建神经网络模型,首先需要思考大脑中的神经网络是怎样的?每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。
在这里插入图片描述
神经元利用微弱的电流进行沟通。这些弱电流也称作动作电位,其实就是一些微弱的电流。所以如果神经元想要传递一个消息,它就会就通过它的轴突,发送一段微弱电流给其他神经元。

下图是一条连接到输入神经,或者连接另一个神经元树突的神经,接下来这个神经元接收这条消息,做一些计算,它有可能会反过来将在轴突上的自己的消息传给其他神经元。这就是所有人类思考的模型:我们的神经元把自己的收到的消息进行计算,并向其他神经元传递消息。这也是感觉和肌肉运转的原理。如果想活动一块肌肉,就会触发一个神经元给肌肉发送脉冲,并引起你的肌肉收缩。如果一些感官:比如说眼睛想要给大脑传递一个消息,那么它就像这样发送电脉冲给大脑的。
在这里插入图片描述
神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight)。
在这里插入图片描述
设计出了类似于神经元的神经网络,效果如下:
在这里插入图片描述
其中𝑥1, 𝑥2, 𝑥3是输入单元(input units),我们将原始数据输入给它们。𝑎1, 𝑎2, 𝑎3是中间单元,它们负责将数据进行处理,然后呈递到下一层。最后是输出单元,它负责计算ℎ𝜃(𝑥)。

神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个 3 层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。为每一层都增加一个偏差单位(bias unit):
在这里插入图片描述
注:𝑎𝑖(𝑗) 代表第𝑗 层的第 𝑖 个激活单元。𝜃(𝑗)代表从第 𝑗 层映射到第𝑗 + 1 层时的权重的矩阵,例如𝜃(1)代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 𝑗 + 1层的激活单元数量为行数,以第 𝑗 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中𝜃(1)的尺寸为 3*4。

对于上图所示的模型,激活单元和输出分别表达为:
在这里插入图片描述
上面进行的讨论中只是将特征矩阵中的一行(一个训练实例)传递给了神经网络,我们需要将整个训练集都传递给神经网络算法进行学习。

我们可以知道:每一个𝑎都是由上一层所有的𝑥和每一个𝑥所对应的决定的。
(我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION ))

把𝑥, 𝜃, 𝑎 分别用矩阵表示,我们可以得到𝜃 ⋅ 𝑋 = a :
在这里插入图片描述
相对于使用循环来编码,利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值:
在这里插入图片描述
在这里插入图片描述
为了更好了了解 Neuron Networks 的工作原理,先把左半部分遮住:
在这里插入图片描述
右半部分其实就是以𝑎0, 𝑎1, 𝑎2, 𝑎3, 按照 Logistic Regression 的方式输出ℎ𝜃(𝑥):

在这里插入图片描述
其实神经网络就像是 logistic regression,只不过把 logistic regression 中的输入向量[𝑥1 ∼ 𝑥3] 变成了中间层的[𝑎1(2)∼ 𝑎3(2)], 即:
在这里插入图片描述
可以把𝑎0, 𝑎1, 𝑎2, 𝑎3看成更为高级的特征值,也就是𝑥0, 𝑥1, 𝑥2, 𝑥3的进化体,并且它们是由 𝑥与决定的,因为是梯度下降的,所以𝑎是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将 𝑥次方厉害,也能更好的预测新数据。这就是神经网络相比于逻辑回归和线性回归的优势。

从本质上讲,神经网络能够通过学习得出其自身的一系列特征。在普通的逻辑回归中,被限制为使用数据中的原始特征𝑥1, 𝑥2, . . . , 𝑥𝑛,虽然可以使用一些二项式项来组合这些特征,但是仍然受到这些原始特征的限制。在神经网络中,原始特征只是输入层,在上面三层的神经网络例子中,第三层也就是输出层做出的预测利用的是第二层的特征,而非输入层中的原始特征,可以认为第二层中的特征是神经网络通过学习后自己得出的一系列用于预测输出变量的新特征

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

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

可以用这样的一个神经网络表示 AND 函数:
在这里插入图片描述
OR 函数:
在这里插入图片描述
OR 与 AND 整体一样,区别只在于的取值不同。

利用神经元来组合成更为复杂的神经网络可以实现更复杂的运算。例如要实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:
XNOR = (x1 ANDx2) OR((NOT x1)AND(NOT x2))

首先构造能表达(x1 ANDx2)和(NOT x1)AND(NOT x2)部分的神经元:
在这里插入图片描述
在这里插入图片描述
然后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元以及表示 OR 的神经元进行组合:
在这里插入图片描述
这样就得到了一个能实现 XNOR 运算符功能的神经网络。

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

6.3 Multi-class Classification(多元分类)

当有不止两种分类时(也就是𝑦 = 1,2,3 ….)
在这里插入图片描述

上一篇:5 正则化(Regularization)
下一篇:6 神经网络的学习(Neural Networks: Learning)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值