机器学习第四周
神经网络
模型表示1
先来看看大脑里面神经元结构图,如下图:
会发现神经元的中心部分就相当于我们的 h(x),神经元的“树突”等效于 input 端的输入特征 xn,“轴突”等效于 output。再来看看前面讲了两种模型:线性回归模型跟逻辑回归模型,其中都绕不开一个 hθ(x) ,这里的 x 是我们 input 的特征,hθ(x) 的值是我们模型 output 出来的值。下图是一个逻辑回归模型图:
会发现前面所讲的模型跟神经元很相似,而我们大脑是很多个这种神经元组合的,基于此有人想到用多个这种基础模型互相连接组成一个神经网络。对应的每一个神经元其实也是一个学习模型,这些神经元也成为**单元,因此 hθ(x) 也称为**函数,这里的 θ 我们经常称为权重。- 偏置项:前面两周所讲的两个模型中都会有一个 x0,这个是我们的偏置项,其实也可以称为截距项,因为它其实是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。因此神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。这里的 W 就是前面说的 θ,b 就是前面的 x0。
常见的神经网络如下图:
上图中,有三层,其中第一层为输入层,第三层为输出层,中间的一层因为结果值对我们是不可见的,故称为隐藏层。
图中的每一个**函数可以用如下表示:
假如 j 层的神经元数
模型表示2
上一节通过如下的方式不停的迭代下去去计算最后的输出
本节介绍另外一种使用向量的方法,会使得计算变得简单。
第二层的隐藏层的计算可以用如下的向量表示来计算:
第三层的输出层:
不难发现:第 j 层可以用如下向量表达式计算:
神经网络的应用
简单应用1
用神经元来表示一个 and 操作。我们知道只有
可以用如下的神经元表示一个 and 操作。
上图不难理解它的实现,同理 or 等其它逻辑运算都可以通过神经元来实现。
简单应用2
用几个神经元来表示一个 xnor[异或非门] 操作。也就是只有
可以用如下几个神经元表示:
那么更复杂的运算也是可以通过很多的神经元组成的神经网络进行计算。
多类分类
神经网络就是由一个个逻辑回归模型连接而成的,它们彼此作为输入和输出。最终输出结果可表示为:
这与之前逻辑回归中的多类分类表示不同,在逻辑回归中,输出y属于类似于{1, 2, 3, 4}中的某个值,而这里输出的是一个向量。因此,神经网络解决多类分类问题的本质是把原分类问题分解为一类对其他类(one-vs-all)的二类分类问题。
神经网络比直接使用Logistic回归的优势在于:如果给定基础特征的数量为100,那么在利用Logistic回归解决复杂分类问题时会遇到特征项爆炸增长,造成过拟合以及运算量过大问题。而对于神经网络,可以通过隐藏层数量和隐藏单元数量来控制假设函数的复杂程度,并且在计算时只计算一次项特征变量。其实本质上来说,神经网络是通过这样一个网络结构隐含地找到了所需要的高次特征项,从而化简了繁重的计算。