机器学习day07——神经网络及其模型

非线性假设

假设我们希望训练一个模型来识别视觉对象,比如识别图片内容是否是汽车。
一种方法是我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
假如我们只选用灰度图片,每个像素则只有一个值(而非 RGB 值),我们可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车:

假使我们采用的都是 50x50 像素的小图片,并且我们将所有的像素视为特征,则会有2500 个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约25002/2个(接近 3 百万个)特征。
普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络
如果人体有同一块脑组织可以处理光、声或触觉信号,那么也许存在一种学习算法,可以同时处理视觉、听觉和触觉,而不是需要运行上千个不同的程序,或者上千个不同的算法来做这些大脑所完成的成千上万的美好事情。也许我们需要做的就是找出一些近似的或实际的大脑学习算法,然后实现它大脑通过自学掌握如何处理这些不同类型的数据。在很大的程度上,可以猜想如果我们把几乎任何一种传感器接入到大脑的几乎任何一个部位的话,大脑就会学会处理它。

神经网络模型

神经网络模仿了大脑中的神经元或者神经网络。
人脑的神经元
每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。

神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。在人工神经网络模型中,我们将神经元模拟一个逻辑单元,采纳一些特征作为输出,并且根据本身的模型提供一个输出。在神经网络中,模型参数𝜃又可被成为权重(weight)。
模型
记号解释:
𝑎𝑖(𝑗) 代表第𝑗 层的第 𝑖 个激活项。激活项指一个具体的神经元计算并输出的值。
𝜃(𝑗)代表从第 𝑗 层映射到第𝑗 + 1 层时的权重矩阵,例如𝜃(1)代表从第一层映射到第二层的权重矩阵。其尺寸为:以第 𝑗 + 1层的激活项数量为行数,以第 𝑗 层的激活项数+1为列数的矩阵。例如:上图所示的神经网络中𝜃(1)的尺寸为 3*4。
计算步骤:
对于上图所示的模型,激活项和输出分别表达为:
在这里插入图片描述
这个计算hx的过程,也称为前向传播。我们输入单元的激活项开始,进行向前传播给隐藏层,计算隐藏层的激活项,继续向前传播,并计算输出层的激活项, 这个依次计算激活项,从输入层到隐藏层再到输出层的传播叫做向前传播。
这一过程的向量化实现方法:
在这里插入图片描述
在这里插入图片描述

向量化神经网络模型
对于神经网络模型,若遮住输入层,就隐藏层和输出层而言,跟逻辑回归函数相似;但又不同的是逻辑回归函数是直接把x1、x2、x3作为特征输入,而神经网络模型是通过隐藏层计算这些数值把a1、a2、a3作为新的特征。
a1、a2、a3是学习得到的函数输入值,可以看成更为高级的特征值,也就是𝑥0, 𝑥1, 𝑥2, 𝑥3的进化体,并且它们是由 𝑥决定的,因为是梯度下降的,所以𝑎是变化的,并且变得越来越厉害,所以这些能更好的预测新数据。这就是神经网络相比于逻辑回归和线性回归的优势。
神经网络模型具体来说就是从第一层映射到第二层的函数,利用隐藏层计算更复杂的特征,并输入到最后的输出层。
神经网络中不同神经元的连接方式称为神经网络的架构
多层隐藏层的架构

使用神经网络计算复杂非线性函数的例子

我们可以用这样的一个神经网络表示 AND 函数
x1、x2是二进制特征在这里插入图片描述在这里插入图片描述y为逻辑AND函数。
在神经网络模型中,加上偏执单元X0(=1),模型如图:在这里插入图片描述,各个权重参数为中𝜃0 = −30, 𝜃1 = 20, 𝜃2 = 20,即输出函数数ℎ𝜃(𝑥)为:ℎ𝜃(𝑥) = 𝑔(−30 + 20𝑥1 +20𝑥2)。
已知𝑔(𝑥)的图像是:在这里插入图片描述,接着讨论x1、x2分别取0、1对应的四种情况:在这里插入图片描述,得到AND 函数 的结果。
二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0 或 1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND)
逻辑与(AND)

下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR)
逻辑或(OR)
下图的神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT)
逻辑非(NOT)
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。
例如我们要实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为 0),即:XNOR = (x1 ANDx2) OR((NOT x1)AND(NOT x2))首先构造一个能表达**(NOT x1)AND(NOT x2)部分的神经元:
(NOT x1)AND(NOT x2)
再添加一个神经元表达
x1 AND x2**部分的神经元:
x1 AND x2
然后将表示 AND 的神经元和表示(NOT x1)AND(NOT x2)的神经元用表示 OR 的神经元进行组合:
XNOR
计算结果:
在这里插入图片描述
其中:a1表示x1 AND x2的输出结果,a2表示(NOT x1)AND(NOT x2)的输出结果,ℎ𝜃(𝑥)表示整个XNOR逻辑函数的输出结果。

我们就得到了一个能实现 XNOR 运算符功能的神经网络。

利用神经网络解决多类别分类问题

多类别识别问题也就是有多个类别需要分类,比如数字识别有0-9,10个数字需要识别。
用神经网络中实现多类别分类,采用的方法本质上是一对多法的扩展
在图像识别的例子中,我们需要识别别路人、汽车、摩托车和卡车,即在输出层我们应该有 4 个值,输出值为一个四维变量,仅有一个为 1,表示当前类。神经网络算法的输出结果为四种可能情形之一:在这里插入图片描述
主要是构造一个神经网络,使得假设函数ℎ𝜃(𝑥)的输出值为4维向量,且仅有一位为 1,表示当前类别。
下一节将 讲解如何构造我们的训练集,以及让神经网络学习这些参数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值